diff options
| author | 2024-04-25 21:24:10 +0100 | |
|---|---|---|
| committer | 2024-04-25 22:32:27 +0000 | |
| commit | 2d04cacc5322951f187bb17e017c12920ac8ebe2 (patch) | |
| tree | 80ee017efa878dfd5344b44249e6a241f2a7f6e2 /v4.0/src/SELECT/SELECT6.ASM | |
| parent | Merge pull request #430 from jpbaltazar/typoptbr (diff) | |
| download | ms-dos-main.tar.gz ms-dos-main.tar.xz ms-dos-main.zip | |
Diffstat (limited to 'v4.0/src/SELECT/SELECT6.ASM')
| -rw-r--r-- | v4.0/src/SELECT/SELECT6.ASM | 561 |
1 files changed, 561 insertions, 0 deletions
diff --git a/v4.0/src/SELECT/SELECT6.ASM b/v4.0/src/SELECT/SELECT6.ASM new file mode 100644 index 0000000..863aecc --- /dev/null +++ b/v4.0/src/SELECT/SELECT6.ASM | |||
| @@ -0,0 +1,561 @@ | |||
| 1 | |||
| 2 | |||
| 3 | PAGE 55,132 ;AN000; | ||
| 4 | NAME SELECT ;AN000; | ||
| 5 | TITLE SELECT - DOS - SELECT.EXE ;AN000; | ||
| 6 | SUBTTL SELECT6.asm ;AN000; | ||
| 7 | .ALPHA ;AN000; | ||
| 8 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 9 | ; | ||
| 10 | ; SELECT6.ASM : Copyright 1988 Microsoft | ||
| 11 | ; | ||
| 12 | ; DATE: August 8/87 | ||
| 13 | ; | ||
| 14 | ; COMMENTS: Assemble with MASM 3.0 (using the /A option) | ||
| 15 | ; | ||
| 16 | ; Panel flow is defined in the following files: | ||
| 17 | ; | ||
| 18 | ; � SELECT1.ASM | ||
| 19 | ; ;AN000; SELECT2.ASM | ||
| 20 | ; ;AN000; SELECT3.ASM | ||
| 21 | ; ;AN000; SELECT4.ASM | ||
| 22 | ; ;AN000; SELECT5.ASM | ||
| 23 | ; ;AN000; SELECT6.ASM | ||
| 24 | ; | ||
| 25 | ; | ||
| 26 | ; Module contains code for : | ||
| 27 | ; - Format the drives | ||
| 28 | ; - Copy files | ||
| 29 | ; | ||
| 30 | ; CHANGE HISTORY: | ||
| 31 | ; | ||
| 32 | ; ;AN009; DT added support for creation of the DOSSHELL.BAT as a | ||
| 33 | ; separately installed file. (D233) | ||
| 34 | ; ;AN002; GHG for P1146 | ||
| 35 | ; ;AN003; GHG for D234 | ||
| 36 | ; ;AN004; GHG for P65 | ||
| 37 | ; ;AN005; DT for single drive support | ||
| 38 | ; ;AN006; JW for dos location choice (global or path only) | ||
| 39 | ; ;AN007; JW for D239 - display drive letter to format | ||
| 40 | ; | ||
| 41 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 42 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 43 | EXTRN SEL_FLG:BYTE ;AN000; | ||
| 44 | EXTRN EXEC_FDISK:BYTE ;AN000;DT | ||
| 45 | EXTRN EXEC_ERR:BYTE ;AN000;DT | ||
| 46 | DATA ENDS ;AN000; | ||
| 47 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 48 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 49 | ; | ||
| 50 | ; Define dummy segment to calculate end of program | ||
| 51 | ; | ||
| 52 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 53 | PARSER SEGMENT PARA PUBLIC 'PARSER' ;AN072; | ||
| 54 | PARSER ENDS ;AN072; | ||
| 55 | |||
| 56 | SET_BLOCK equ 4AH ;AN072; | ||
| 57 | ; | ||
| 58 | ; | ||
| 59 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 60 | .XLIST ;AN000; | ||
| 61 | INCLUDE PANEL.MAC ;AN000; | ||
| 62 | INCLUDE SELECT.INC ;AN000; | ||
| 63 | INCLUDE CASTRUC.INC ;AN000; | ||
| 64 | INCLUDE STRUC.INC ;AN000; | ||
| 65 | INCLUDE MACROS.INC ;AN000; | ||
| 66 | INCLUDE MACROS7.INC ;AN009;DT | ||
| 67 | INCLUDE EXT.INC ;AN000; | ||
| 68 | INCLUDE VARSTRUC.INC ;AN000; | ||
| 69 | INCLUDE ROUT_EXT.INC ;AN000; | ||
| 70 | INCLUDE PAN-LIST.INC ;AN000; | ||
| 71 | .LIST ;AN000; | ||
| 72 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 73 | ; | ||
| 74 | EXTRN DEALLOCATE_HELP:FAR ;AN000;DT | ||
| 75 | EXTRN DEALLOCATE_BLOCK:FAR ;AN000;DT | ||
| 76 | EXTRN ALLOCATE_BLOCK:FAR ;AN000;DT | ||
| 77 | EXTRN DEALLOCATE_MEMORY_CALL:FAR ;AN000;DT | ||
| 78 | EXTRN ALLOCATE_MEMORY_CALL:FAR ;AN000;DT | ||
| 79 | EXTRN GET_OVERLAY:NEAR ;AN048;SEH | ||
| 80 | ; | ||
| 81 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 82 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000; | ||
| 83 | ASSUME CS:SELECT,DS:DATA ;AN000; | ||
| 84 | ; | ||
| 85 | INCLUDE CASEXTRN.INC ;AN000; | ||
| 86 | ; | ||
| 87 | EXTRN EXIT_SELECT:near ;AN000; | ||
| 88 | EXTRN CREATE_CONFIG_SYS:NEAR ;AN000; | ||
| 89 | EXTRN CREATE_AUTOEXEC_BAT:NEAR ;AN000; | ||
| 90 | EXTRN CREATE_SHELL_BAT:NEAR ;AN009;DT | ||
| 91 | ; EXTRN DO_PREP_FOR_ONE:NEAR ;AN009;DT | ||
| 92 | ; EXTRN DO_HOOK15:NEAR ;AN009;DT | ||
| 93 | ; EXTRN DO_UNHOOK15:NEAR ;AN009;DT | ||
| 94 | ; | ||
| 95 | EXTRN EXIT_DOS:near ;AN004;GHG | ||
| 96 | EXTRN INSTALL_ERROR:near ;AN004;GHG | ||
| 97 | EXTRN EXIT_SELECT:NEAR ;AN004;GHG | ||
| 98 | EXTRN PROCESS_ESC_F3:near ;AN004;GHG | ||
| 99 | EXTRN DISKETTE_INSTALL:NEAR ;AN111;JW | ||
| 100 | EXTRN EXIT_DOS_CONT:NEAR ;AN004;GHG | ||
| 101 | EXTRN CONTINUE_360:NEAR ;AN004;GHG | ||
| 102 | ; | ||
| 103 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 104 | ; | ||
| 105 | ; CODE CONTINUES..... | ||
| 106 | ; | ||
| 107 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 108 | PUBLIC FORMAT_DISK_SCREEN ;AN000; | ||
| 109 | FORMAT_DISK_SCREEN: ;AN000; | ||
| 110 | ; | ||
| 111 | CALL DEALLOCATE_HELP ;AN072;Help no longer needed | ||
| 112 | POS_CURSOR ;AN085;SEH position cursor at top left corner so that future "% formatted" msg appears in correct spot | ||
| 113 | CALL CURSOROFF ;AN082;SEH | ||
| 114 | ; | ||
| 115 | .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C > ;AN111;JW | ||
| 116 | GOTO DISKETTE_INSTALL ;AN111;JW | ||
| 117 | .ENDIF ;AN000; | ||
| 118 | ; | ||
| 119 | ; N_WORD_1 : disk number ; | ||
| 120 | ; N_WORD_2 : index into disk table ; | ||
| 121 | ; N_WORD_3 : sub panel number for specified disk ; | ||
| 122 | ; | ||
| 123 | INIT_VAR N_WORD_1, 1 ;AN000; set disk no = 1 | ||
| 124 | .REPEAT ;AN000; repeat code block | ||
| 125 | INIT_VAR N_WORD_2, 1 ;AN000; set index into table = 1 | ||
| 126 | .IF < N_WORD_1 eq E_DISK_1 > ;AN000; if disk = 1 | ||
| 127 | INIT_VAR N_DISK_NUM, '1' ;AN007; sub panel = fixed disk 1 JW | ||
| 128 | .ELSE ;AN000; else | ||
| 129 | INIT_VAR N_DISK_NUM, '2' ;AN007; sub panel = fixed disk 2 JW | ||
| 130 | .ENDIF ;AN000; | ||
| 131 | ; | ||
| 132 | .REPEAT ;AN000; repeat code block | ||
| 133 | SCAN_DISK_TABLE N_WORD_1,N_WORD_2,N_RETCODE ;AN000; scan disk table | ||
| 134 | .LEAVE < N_RETCODE ne 0 > near ;AN000; break loop if no more entries | ||
| 135 | ; | ||
| 136 | .IF < N_NAME_PART eq E_PART_PRI_DOS > and ;AN000; if pri part & unformatted | ||
| 137 | .IF < N_STATUS_PART eq E_PART_UNFORMAT > ;AN000; | ||
| 138 | INIT_VAR N_TYPE_PART, E_PART_FAT ;AN000; set to format as FAT | ||
| 139 | .ELSEIF < N_NAME_PART eq E_PART_LOG_DRI > near and;AN000; if log drive & unformatted | ||
| 140 | .IF < N_STATUS_PART eq E_PART_UNFORMAT > near ;AN000; | ||
| 141 | .IF < N_FORMAT_MODE eq E_FORMAT_SELECT > ;AN000; if select to format partition | ||
| 142 | INIT_VAR N_TYPE_PART, E_PART_FAT ;AN000; set to format as FAT | ||
| 143 | .ELSE near ;AN000; else | ||
| 144 | INIT_CHAR N_DISK_NUM, E_DISK_ROW, E_DISK_COL,SUB_FIXED_1 ;AN007; display the disk number JW | ||
| 145 | INIT_CHAR P_DRIVE_PART, E_DRIVE_ROW, E_DRIVE_COL,SUB_LOG_DRIVE ;AN000; display the drive letter JW | ||
| 146 | INIT_PQUEUE PAN_FORMAT ;AN000; init format panel | ||
| 147 | PREPARE_PANEL PAN_HBAR ;AN000; prepare hor. bar panel | ||
| 148 | PREPARE_PANEL SUB_FIXED_1 ;AC007; prepare disk no panel JW | ||
| 149 | PREPARE_PANEL SUB_LOG_DRIVE ;AN000;JW | ||
| 150 | PREPARE_CHILDREN ;AN000; prepare children | ||
| 151 | INIT_VAR F_FORMAT, E_FORMAT_FAT ;AN000; set option=format as FAT | ||
| 152 | INIT_SCROLL SCR_FORMAT, F_FORMAT ;AN000; init scroll list | ||
| 153 | DISPLAY_PANEL ;AN000; display panel | ||
| 154 | GET_SCROLL SCR_FORMAT,F_FORMAT,FK_FORMAT ;AN000; get option | ||
| 155 | COPY_WORD F_FORMAT, I_USER_INDEX ;AN000; save option | ||
| 156 | .IF < F_FORMAT eq E_FORMAT_FAT > ;AN000; if option=format | ||
| 157 | INIT_VAR N_TYPE_PART, E_PART_FAT ;AN000; set to format as FAT | ||
| 158 | .ENDIF ;AN000; | ||
| 159 | .ENDIF ;AN000; | ||
| 160 | .ENDIF ;AN000; | ||
| 161 | UPDATE_DISK_TABLE N_WORD_1,N_WORD_2,N_RETCODE ;AN000; update disk table | ||
| 162 | INC_VAR N_WORD_2 ;AN000; inc index into table | ||
| 163 | .UNTIL ;AN000; end of repeat block | ||
| 164 | INC_VAR N_WORD_1 ;AN000; inc disk no | ||
| 165 | .UNTIL < N_WORD_1 gt 2> near ;AN000; end of repeat block | ||
| 166 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 167 | ; | ||
| 168 | ; Format the logical drives and primary partition | ||
| 169 | ; N_WORD_1 : disk number | ||
| 170 | ; N_WORD_2 : index into disk table | ||
| 171 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 172 | INIT_VAR N_WORD_1, 1 ;AN000; set disk no = 1 | ||
| 173 | .REPEAT ;AN000; repeat code block | ||
| 174 | INIT_VAR N_WORD_2, 1 ;AN000; set index into disk table = 1 | ||
| 175 | .REPEAT ;AN000; repeat code block | ||
| 176 | SCAN_DISK_TABLE N_WORD_1,N_WORD_2,N_RETCODE ;AN000; scan disk table | ||
| 177 | .LEAVE < N_RETCODE ne 0 > near ;AN000; break loop in index not valid | ||
| 178 | .IF < N_STATUS_PART eq E_PART_UNFORMAT > and near ;AN000; if partition not unformatted and | ||
| 179 | .IF < N_TYPE_PART eq E_PART_FAT > near ;AN000; format set to FAT | ||
| 180 | COPY_BYTE P_STR120_1, P_DRIVE_PART ;AN000; save drive letter in buffer | ||
| 181 | INIT_VAR S_STR120_1, 1 ;AN000; set length of string | ||
| 182 | APPEND_STRING S_STR120_1, M_STR120_1, S_COLON ;AN000; append colon to drive | ||
| 183 | .IF < N_NAME_PART eq E_PART_PRI_DOS > and ;AN111; if primary partition and JW | ||
| 184 | .IF < N_WORD_1 eq 1 > ;AN111; first drive JW | ||
| 185 | APPEND_STRING S_STR120_1,M_STR120_1,S_SLASH_S ;AN000; append ' /s' to drive | ||
| 186 | INIT_VAR I_DESTINATION, E_ENTIRE_DISK ;AN033; SEH install to entire disk if formatting | ||
| 187 | .ENDIF ;AN000; | ||
| 188 | APPEND_STRING S_STR120_1,M_STR120_1,S_VOL_SEL ;AN000; append "/V:DOS340 /SELECT" | ||
| 189 | CLEAR_SCREEN ;AN000; pos cursor at top of screen | ||
| 190 | INIT_PQUEUE FORMAT_DISK ;AN000; initialize queue | ||
| 191 | DISPLAY_PANEL ;AN000; | ||
| 192 | ; | ||
| 193 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 194 | DEALLOCATE_MEMORY ;AN000;DT | ||
| 195 | .ENDIF ;AN000;DT | ||
| 196 | ; | ||
| 197 | EXEC_PROGRAM S_FORMAT,S_STR120_1,PARM_BLOCK,EXEC_NO_DIR ;AN000; format partition as FAT | ||
| 198 | .IF < c > ;AN000; | ||
| 199 | MOV EXEC_ERR,TRUE ;AN000; | ||
| 200 | .ENDIF ;AN000; | ||
| 201 | ; | ||
| 202 | .IF < MEM_SIZE eq 256 > near ;AN000;DT | ||
| 203 | CLEAR_SCREEN ;AN000; | ||
| 204 | DISPLAY_MESSAGE 12 ;AN000;DT Insert SELECT diskette | ||
| 205 | .REPEAT ;AN000; | ||
| 206 | GET_FUNCTION FK_ENT ;AN000; get user entered function | ||
| 207 | FIND_FILE S_DOS_SEL_360, E_FILE_ATTR;AN000; | ||
| 208 | .LEAVE < nc > ;AN000; | ||
| 209 | DISPLAY_MESSAGE 11 ;AN000;DT Beep | ||
| 210 | .UNTIL ;AN000; | ||
| 211 | ALLOCATE_MEMORY ;AN000;DT | ||
| 212 | CALL INITIALIZE ;AN000;DT and read them in | ||
| 213 | CALL DEALLOCATE_HELP ;AN072;Help no longer needed | ||
| 214 | ; | ||
| 215 | INSERT_DISK SUB_INSTALL_COPY, S_AUTO_NEW ;AN000;JW Insert INSTALL COPY diskette | ||
| 216 | ; | ||
| 217 | .ENDIF ;AN000; | ||
| 218 | ; | ||
| 219 | .IF < EXEC_ERR eq TRUE > ;AN000; | ||
| 220 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 221 | .ENDIF ;AN000; | ||
| 222 | .ENDIF ;AN000; | ||
| 223 | INC_VAR N_WORD_2 ;AN000; | ||
| 224 | .UNTIL ;AN000; | ||
| 225 | INC_VAR N_WORD_1 ;AN000; | ||
| 226 | .UNTIL < N_WORD_1 gt 2> near ;AN000; | ||
| 227 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 228 | ; | ||
| 229 | ; | ||
| 230 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 231 | GET_TIME N_HOUR, N_MINUTE, N_SECOND ;AN000; get system time | ||
| 232 | GET_DATE N_YEAR, N_MONTH, N_DAY ;AN000; get system date | ||
| 233 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 234 | ; | ||
| 235 | ; Update date/time of CONFIG.340 | ||
| 236 | ; AUTOEXEC.340 | ||
| 237 | ; DOSSHELL.BAT in drive A: ; | ||
| 238 | ; | ||
| 239 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 240 | OPEN_FILE S_CONFIG_NEW, 2, N_HANDLE ;AN000; | ||
| 241 | SET_FILE_DATE_TIME N_HANDLE,N_HOUR,N_MINUTE,N_SECOND,N_YEAR,N_MONTH,N_DAY ;AN000; | ||
| 242 | CLOSE_FILE N_HANDLE ;AN000; | ||
| 243 | .IF c ;AN000; | ||
| 244 | GOTO INSTALL_ERROR ;AN000; | ||
| 245 | .ENDIF ;AN000; | ||
| 246 | ; | ||
| 247 | OPEN_FILE S_AUTO_NEW, 2, N_HANDLE ;AN000; | ||
| 248 | SET_FILE_DATE_TIME N_HANDLE,N_HOUR,N_MINUTE,N_SECOND,N_YEAR,N_MONTH,N_DAY ;AN000; | ||
| 249 | CLOSE_FILE N_HANDLE ;AN000; | ||
| 250 | .IF c ;AN000; | ||
| 251 | GOTO INSTALL_ERROR ;AN000; | ||
| 252 | .ENDIF ;AN000; | ||
| 253 | ; | ||
| 254 | OPEN_FILE S_SHELL_NEW, 2, N_HANDLE ;AN009;DT | ||
| 255 | SET_FILE_DATE_TIME N_HANDLE,N_HOUR,N_MINUTE,N_SECOND,N_YEAR,N_MONTH,N_DAY ;AN009;DT | ||
| 256 | CLOSE_FILE N_HANDLE ;AN009;DT | ||
| 257 | .IF < c > ;AN009;DT | ||
| 258 | GOTO INSTALL_ERROR ;AN009;DT | ||
| 259 | .ENDIF ;AN009;DT | ||
| 260 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 261 | ; | ||
| 262 | ; Make sure any previous AUTOEXEC.340 or CONFIG.340 | ||
| 263 | ; are not READ-ONLY ! | ||
| 264 | ; Copy CONFIG.340 & AUTOEXEC.340 from A: to root of C: | ||
| 265 | ; | ||
| 266 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 267 | CHMOD_FILE S_AUTO_REN ;AN017; | ||
| 268 | CHMOD_FILE S_CONFIG_REN ;AN017; | ||
| 269 | COPY_FILES2 I_DEST_DRIVE,S_CONFIG_AUTO,E_FILES,S_DEST_DRIVE ;AC111;JW | ||
| 270 | .IF < c > ;AN000; | ||
| 271 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 272 | .ENDIF ;AN000; | ||
| 273 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 274 | ; | ||
| 275 | ; If the user selected to replace files throughout the fixed disk: | ||
| 276 | ; 1) Copy COMMAND.COM to root of C: | ||
| 277 | ; 2) Check if OS/2 is installed. If it is, rename CONFIG.SYS and | ||
| 278 | ; AUTOEXEC.BAT (OS2'S) to CONFIG.OS2 and AUTOEXEC.OS2. Then | ||
| 279 | ; rename CONFIG.400 and AUTOEXEC.400 to CONFIG.SYS and | ||
| 280 | ; AUTOEXEC.BAT. | ||
| 281 | ; 3) Try to locate C:\CONFIG.SYS & C:\AUTOEXEC.BAT (if OS/2 not installed) | ||
| 282 | ; If either one is already present, then leave the names | ||
| 283 | ; of the new files as CONFIG.400 and AUTOEXEC.400! | ||
| 284 | ; Otherwise, the CONFIG.400 and AUTOEXEC.400 become the | ||
| 285 | ; new user's SYS and BAT files. | ||
| 286 | ; | ||
| 287 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 288 | .IF < I_DESTINATION eq E_ENTIRE_DISK > near ;AN010;JW | ||
| 289 | ; | ||
| 290 | .IF < MEM_SIZE eq 256 > ;AN048;SEH memory must be freed up | ||
| 291 | DEALLOCATE_MEMORY ;AN048;SEH before reading COMMAND.COM | ||
| 292 | .ENDIF ;AN048;SEH | ||
| 293 | CHMOD_FILE S_COMMAND_COM ;AN017; | ||
| 294 | COPY_FILES2 I_DEST_DRIVE,COPY_SEL_SHEL,E_SEL_SHEL,S_DEST_DRIVE ;AC010;JW | ||
| 295 | .IF < c > ;AN000; | ||
| 296 | MOV EXEC_ERR,TRUE ;AN000; | ||
| 297 | .ENDIF ;AN000; | ||
| 298 | .IF < MEM_SIZE eq 256 > near ;AN000;DT | ||
| 299 | CALL GET_OVERLAY ;AC048;SEH replaced code with this proc call | ||
| 300 | INSERT_DISK SUB_INSTALL_COPY, S_DOS_COM_360 ;AN000;JW Insert INSTALL COPY diskette | ||
| 301 | CALL DEALLOCATE_HELP ;AN072;Help no longer needed | ||
| 302 | .ENDIF ;AN000;DT | ||
| 303 | .IF < EXEC_ERR eq TRUE > ;AN000; | ||
| 304 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 305 | .ENDIF ;AN000; | ||
| 306 | INIT_VAR N_WORD_1,1 ;AN065;SEH set disk no. = 1 | ||
| 307 | INIT_VAR N_WORD_2,1 ;AN065;SEH set index into disk table = 1 | ||
| 308 | SCAN_DISK_TABLE N_WORD_1,N_WORD_2,N_RETCODE ;AN065;SEH get version number | ||
| 309 | .IF < N_RETCODE eq 0 > near and ;AN065;SEH | ||
| 310 | .IF < N_LEVEL2_PART ne '4' > near ;AN065;SEH is it OS/2? 1st byte of DOS version number = blank; for OS/2 it's 1 | ||
| 311 | RENAME_FILE S_CONFIG_C, S_OS2_CONFIG_C ;AN065;SEH rename OS/2's CONFIG.SYS to CONFIG.OS2 | ||
| 312 | RENAME_FILE S_AUTO_C, S_OS2_AUTO_C ;AN065;SEH rename OS/2's AUTOEXEC.BAT to AUTOEXEC.OS2 | ||
| 313 | RENAME_FILE S_CONFIG_REN, S_CONFIG_NEW_C ;AN065;SEH rename CONFIG.400 to CONFIG.SYS | ||
| 314 | .IF < c > ;AN065;SEH | ||
| 315 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN065;SEH | ||
| 316 | .ENDIF ;AN065;SEH | ||
| 317 | RENAME_FILE S_AUTO_REN, S_AUTO_NEW_C ;AN065;SEH rename AUTOEXEC.400 to AUTOEXEC.BAT | ||
| 318 | .IF < c > near ;AN065;SEH | ||
| 319 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN065;SEH | ||
| 320 | .ENDIF ;AN065;SEH | ||
| 321 | .ELSE near ;AN065;SEH | ||
| 322 | FIND_FILE S_CONFIG_C, E_FILE_ATTR ;AN000;GHG | ||
| 323 | .IF < c > ;AN000;GHG | ||
| 324 | FIND_FILE S_AUTO_C, E_FILE_ATTR ;AN000;GHG | ||
| 325 | .IF < c > ;AN000;GHG | ||
| 326 | RENAME_FILE S_CONFIG_REN, S_CONFIG_NEW_C;AN000;GHG new CONFIG ******* | ||
| 327 | .IF < c > ;AN000;GHG | ||
| 328 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN;AN000;GHG | ||
| 329 | .ENDIF ;AN000;GHG | ||
| 330 | RENAME_FILE S_AUTO_REN, S_AUTO_NEW_C ;AN000;GHG new AUTOEXEC ******* | ||
| 331 | .IF < c > ;AN000;GHG | ||
| 332 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN;AN000;GHG | ||
| 333 | .ENDIF ;AN000;GHG | ||
| 334 | .ENDIF ;AN000;GHG | ||
| 335 | .ENDIF ;AN000;GHG | ||
| 336 | .ENDIF ;AN065;SEH | ||
| 337 | .ENDIF ;AN010;JW | ||
| 338 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 339 | ; | ||
| 340 | ; Create install path directory always ! | ||
| 341 | ; | ||
| 342 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 343 | MAKE_DIR_PATHS S_INSTALL_PATH ;AN000; | ||
| 344 | .IF c ;AN000; | ||
| 345 | GOTO INSTALL_ERROR ;AN000; | ||
| 346 | .ENDIF ;AN000; | ||
| 347 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 348 | ; | ||
| 349 | ; Make sure any previous DOSSHELL.BAT is not READ-ONLY ! | ||
| 350 | ; Copy DOSSHELL.BAT from A: to subdirectory of C: | ||
| 351 | ; | ||
| 352 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 353 | .IF < S_DOS_LOC eq 0 > ;AN058;SEH | ||
| 354 | MERGE_STRING S_STR120_1,M_STR120_1,S_DEST_DRIVE,S_SHELL_NEW ;AN058;SEH | ||
| 355 | .ELSE ;AN058;SEH | ||
| 356 | MERGE_STRING S_STR120_1,M_STR120_1,S_INSTALL_PATH,S_SLASH ;AN017; | ||
| 357 | APPEND_STRING S_STR120_1,M_STR120_1,S_SHELL_NEW ;AN017; | ||
| 358 | .ENDIF ;AN058;SEH | ||
| 359 | CHMOD_FILE S_STR120_1 ;AN017; | ||
| 360 | COPY_FILES2 I_DEST_DRIVE,S_SHELL2,SH_FILES,S_INSTALL_PATH ;AC111;JW | ||
| 361 | .IF c ;AN009; | ||
| 362 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN009; | ||
| 363 | .ENDIF ;AN009; | ||
| 364 | ; | ||
| 365 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 366 | ; | ||
| 367 | ; Erase: AUTOEXEC.340 CONFIG.340 | ||
| 368 | ; DOSSHELL.BAT SELECT.TMP from drive A: | ||
| 369 | ; | ||
| 370 | ; Then perform cleanup of AUTOEXEC.BAT on INSTALL (source) | ||
| 371 | ; diskette - ie. change to SELECT MENU!!! | ||
| 372 | ; | ||
| 373 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 374 | ERASE_FILE S_AUTO_NEW ;AN000; | ||
| 375 | ERASE_FILE S_CONFIG_NEW ;AN000; | ||
| 376 | ERASE_FILE S_SHELL_NEW ;AN000; | ||
| 377 | ERASE_FILE S_SELECT_TMP ;AN000; only present if reboot after FDISK | ||
| 378 | ; | ||
| 379 | CHANGE_AUTOEXEC S_AUTO_REBOOT, S_AUTO_MENU ;AN000; | ||
| 380 | .IF c ;AN000; | ||
| 381 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 382 | .ENDIF ;AN000; | ||
| 383 | |||
| 384 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 385 | ; | ||
| 386 | ; If 256KB machine, shrink SELECT memory below the parser | ||
| 387 | ; and pcinput code. This frees about another 11KB. | ||
| 388 | ; | ||
| 389 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 390 | |||
| 391 | .IF < MEM_SIZE eq 256 > ;AN072; | ||
| 392 | ; | ||
| 393 | DEALLOCATE_MEMORY ;AN072; | ||
| 394 | MOV AH,62H ;AN072;Get the PSP segment | ||
| 395 | INT 21H ;AN072; | ||
| 396 | MOV AX,BX ;AN072;save the PSP segment of SELECT | ||
| 397 | MOV BX,PARSER ;AN072;get last address of code | ||
| 398 | MOV ES,AX ;AN072;set PSP segment in ES | ||
| 399 | SUB BX,AX ;AN072;calc # of paragraphs in the program | ||
| 400 | MOV AH,SET_BLOCK ;AN072;setblock function number | ||
| 401 | DOSCALL ;AN072;free used memory | ||
| 402 | |||
| 403 | .IF < c > ;AN000; | ||
| 404 | CALL GET_OVERLAY ;AC048;SEH replaced code with this proc call | ||
| 405 | INSERT_DISK SUB_INSTALL_COPY, S_DOS_COM_360 ;AN000;JW Insert INSTALL COPY diskette | ||
| 406 | GOTO INSTALL_ERROR ;AN072;If error, exit | ||
| 407 | .ENDIF ;AN000; | ||
| 408 | |||
| 409 | .ENDIF | ||
| 410 | |||
| 411 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 412 | ; | ||
| 413 | ; If install is to entire disk, Exec SYS to the drive C: | ||
| 414 | ; | ||
| 415 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 416 | |||
| 417 | .IF < I_DESTINATION eq E_ENTIRE_DISK > near ;AN010; | ||
| 418 | ; | ||
| 419 | ;;;copy system files from Startup diskette to drive C: | ||
| 420 | |||
| 421 | EXEC_PROGRAM S_SYS_C,S_DRIVE_C,PARM_BLOCK,EXEC_DIR ;AN000; | ||
| 422 | .IF < c > ;AN000; | ||
| 423 | MOV EXEC_ERR,TRUE ;AN000; | ||
| 424 | .ENDIF ;AN000; | ||
| 425 | |||
| 426 | .ENDIF ;AN010;JW | ||
| 427 | |||
| 428 | .IF < MEM_SIZE eq 256 > near ;AN000;DT | ||
| 429 | CALL GET_OVERLAY ;AC048;SEH replaced code with this proc call | ||
| 430 | INSERT_DISK SUB_INSTALL_COPY, S_DOS_COM_360 ;AN000;JW Insert INSTALL COPY diskette | ||
| 431 | CALL DEALLOCATE_HELP ;AN072;DT | ||
| 432 | .ENDIF ;AN000;DT | ||
| 433 | .IF < EXEC_ERR eq TRUE > ;AN000; | ||
| 434 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 435 | .ENDIF ;AN000; | ||
| 436 | ; | ||
| 437 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 438 | ;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;; | ||
| 439 | ; | ||
| 440 | ; Display copying files from INSTALL diskette | ||
| 441 | ; | ||
| 442 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 443 | .IF < N_DISKETTE_A eq E_DISKETTE_720 > near or ;AN000;GHG | ||
| 444 | .IF < N_DISKETTE_A eq E_DISKETTE_1440 > near ;AN000;GHG | ||
| 445 | ; | ||
| 446 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 447 | PREPARE_PANEL PAN_DSKCPY_CPY ;AN000; prepare copying | ||
| 448 | DISPLAY_PANEL ;AN000; from diskette 2 msg | ||
| 449 | ; | ||
| 450 | ;;;S_STR120_1 = "a:*.* c:\path /a parameter for REPLACE | ||
| 451 | MERGE_STRING S_STR120_1,M_STR120_1,S_A_STARS,S_INSTALL_PATH ;AN000; | ||
| 452 | APPEND_STRING S_STR120_1,M_STR120_1,S_SLASH_A ;AN000; | ||
| 453 | ; | ||
| 454 | ; .IF < I_DESTINATION eq E_ENTIRE_DISK > ;AN006;JW | ||
| 455 | ; .THEN ;AN006; | ||
| 456 | ; ;;;S_STR120_3 = "a:*.* c:\ /s parameter for REPLACE | ||
| 457 | ; COPY_STRING S_STR120_3,M_STR120_3,S_REPLACE_PAR1 ;AN006;JW | ||
| 458 | ; .ELSE ;AN006; | ||
| 459 | ;;;S_STR120_3 = "a:*.* c:\<path> /r parameter for REPLACE | ||
| 460 | MERGE_STRING S_STR120_3,M_STR120_3,S_A_STARS,S_INSTALL_PATH ;AN006;JW | ||
| 461 | APPEND_STRING S_STR120_3,M_STR120_3,S_SLASH_R ;AN000;JW | ||
| 462 | ; .ENDIF ;AN006; | ||
| 463 | ; | ||
| 464 | ;;;change attributes of some files so they are not copied | ||
| 465 | CHANGE_ATTRIBUTE HIDE_SEL, E_HIDE_SEL ;AN000; | ||
| 466 | ; | ||
| 467 | ;;;replace files in drive C: with new files on INSTALL diskette | ||
| 468 | EXEC_PROGRAM S_REPLACE,S_STR120_3,PARM_BLOCK,EXEC_DIR ;AN006;JW | ||
| 469 | .IF c ;AN000; | ||
| 470 | RESTORE_ATTRIBUTE HIDE_SEL,E_HIDE_SEL ;AN000; | ||
| 471 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 472 | .ENDIF ;AN000; | ||
| 473 | ; | ||
| 474 | ;;;S_STR120_1 = "a:*.* C:\<path> /A" ; | ||
| 475 | ;;;copy new files on SELECT diskette to install path ; | ||
| 476 | EXEC_PROGRAM S_REPLACE,S_STR120_1,PARM_BLOCK,EXEC_DIR ;AN000; copy new files | ||
| 477 | .IF c ;AN000; | ||
| 478 | RESTORE_ATTRIBUTE HIDE_SEL,E_HIDE_SEL ;AN000; | ||
| 479 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 480 | .ENDIF ;AN000; | ||
| 481 | ; | ||
| 482 | ;;;restore attributes of files ; | ||
| 483 | RESTORE_ATTRIBUTE HIDE_SEL,E_HIDE_SEL ;AN000; | ||
| 484 | ; | ||
| 485 | |||
| 486 | ;------------------------------------------------------------- | ||
| 487 | ; copy files from 720k Operate diskette | ||
| 488 | ;------------------------------------------------------------- | ||
| 489 | ; NOTE: The REPLACE command is now issued from the hard disk | ||
| 490 | ; (since it is not found on any other disk) | ||
| 491 | |||
| 492 | COMPARE_STRINGS S_INSTALL_PATH, S_DEST_DRIVE ;AN000; compare to C:\ | ||
| 493 | .IF < nc > ;AN000; if the same | ||
| 494 | MERGE_STRING S_STR120_2,M_STR120_2,S_INSTALL_PATH,S_REPLACE ;AN000; | ||
| 495 | .ELSE ;AN000; | ||
| 496 | MERGE_STRING S_STR120_2,M_STR120_2,S_INSTALL_PATH,S_SLASH ;AN000; | ||
| 497 | APPEND_STRING S_STR120_2,M_STR120_2,S_REPLACE;AN000; | ||
| 498 | .ENDIF ;AN000; | ||
| 499 | |||
| 500 | INSERT_DISK SUB_REM_SEL_A, S_DOS_UTIL1_DISK ;AN000;JW Insert Operating diskette | ||
| 501 | ; | ||
| 502 | ;;;display copying files from diskette 1 screen ; | ||
| 503 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 504 | PREPARE_PANEL PAN_DSKCPY_CPY ;AN000; prepare copying from diskette 1 message | ||
| 505 | DISPLAY_PANEL ;AN000; | ||
| 506 | ; | ||
| 507 | ;;;replace files in drive C: with new files on DOS diskette | ||
| 508 | EXEC_PROGRAM S_STR120_2,S_STR120_3,PARM_BLOCK,EXEC_DIR ;AN006;JW | ||
| 509 | .IF c ;AN000; | ||
| 510 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 511 | .ENDIF ;AN000; | ||
| 512 | ; | ||
| 513 | ;;;S_STR120_1 = "a:*.* C:\<path> /A " ; | ||
| 514 | ;;;copy new files on DOS diskette to install path ; | ||
| 515 | EXEC_PROGRAM S_STR120_2,S_STR120_1,PARM_BLOCK,EXEC_DIR ;AN000; copy new files | ||
| 516 | .IF c ;AN000; | ||
| 517 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 518 | .ENDIF ;AN000; | ||
| 519 | ;------------------------------------------------------------- | ||
| 520 | ; copy files from 720k Shell diskette | ||
| 521 | ;------------------------------------------------------------- | ||
| 522 | |||
| 523 | .IF < f_shell eq e_shell_yes > near | ||
| 524 | ; | ||
| 525 | INSERT_DISK SUB_INS_MSSHELL_A, S_DOS_SHEL_DISK ;AN000;JW Insert Operating diskette | ||
| 526 | ; | ||
| 527 | ;;;display copying files from diskette 1 screen ; | ||
| 528 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 529 | PREPARE_PANEL PAN_DSKCPY_CPY ;AN000; prepare copying from diskette 1 message | ||
| 530 | DISPLAY_PANEL ;AN000; | ||
| 531 | ; | ||
| 532 | ;;;replace files in drive C: with new files on DOS diskette | ||
| 533 | EXEC_PROGRAM S_STR120_2,S_STR120_3,PARM_BLOCK,EXEC_DIR ;AN006;JW | ||
| 534 | .IF c ;AN000; | ||
| 535 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 536 | .ENDIF ;AN000; | ||
| 537 | ; | ||
| 538 | ;;;S_STR120_1 = "a:*.* C:\<path> /A " ; | ||
| 539 | ;;;copy new files on DOS diskette to install path ; | ||
| 540 | EXEC_PROGRAM S_STR120_2,S_STR120_1,PARM_BLOCK,EXEC_DIR ;AN000; copy new files | ||
| 541 | .IF c ;AN000; | ||
| 542 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 543 | .ENDIF ;AN000; | ||
| 544 | |||
| 545 | .ENDIF ; IF shell supported | ||
| 546 | |||
| 547 | |||
| 548 | .ENDIF ;AN000;GHG | ||
| 549 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 550 | ;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;; | ||
| 551 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 552 | ; End of 720KB support | ||
| 553 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 554 | GOTO CONTINUE_360 ;AN000; | ||
| 555 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 556 | ; | ||
| 557 | ; | ||
| 558 | ; | ||
| 559 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 560 | SELECT ENDS ;AN000; | ||
| 561 | END ;AN000; | ||