5 TITLE SELECT
- DOS
- SELECT
.EXE
;AN000;
6 SUBTTL SELECT6
.asm
;AN000;
8 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
10 ; SELECT6.ASM : Copyright 1988 Microsoft
14 ; COMMENTS: Assemble with MASM 3.0 (using the /A option)
16 ; Panel flow is defined in the following files:
26 ; Module contains code for :
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
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
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
47 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
48 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
50 ; Define dummy segment to calculate end of program
52 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
53 PARSER
SEGMENT PARA
PUBLIC 'PARSER' ;AN072;
56 SET_BLOCK equ 4
AH ;AN072;
59 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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;
72 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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
81 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
82 SELECT
SEGMENT PARA
PUBLIC 'SELECT' ;AN000;
83 ASSUME
CS:SELECT
,DS:DATA ;AN000;
85 INCLUDE CASEXTRN
.INC ;AN000;
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
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
103 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
105 ; CODE CONTINUES.....
107 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
108 PUBLIC FORMAT_DISK_SCREEN
;AN000;
109 FORMAT_DISK_SCREEN: ;AN000;
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
115 .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C
> ;AN111;JW
116 GOTO DISKETTE_INSTALL
;AN111;JW
119 ; N_WORD_1 : disk number ;
120 ; N_WORD_2 : index into disk table ;
121 ; N_WORD_3 : sub panel number for specified disk ;
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
129 INIT_VAR N_DISK_NUM
, '2' ;AN007; sub panel = fixed disk 2 JW
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
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
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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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
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;
193 .IF < MEM_SIZE
eq 256 > ;AN000;DT
194 DEALLOCATE_MEMORY
;AN000;DT
197 EXEC_PROGRAM S_FORMAT
,S_STR120_1
,PARM_BLOCK
,EXEC_NO_DIR
;AN000; format partition as FAT
199 MOV EXEC_ERR
,TRUE
;AN000;
202 .IF < MEM_SIZE
eq 256 > near ;AN000;DT
204 DISPLAY_MESSAGE
12 ;AN000;DT Insert SELECT diskette
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
211 ALLOCATE_MEMORY
;AN000;DT
212 CALL INITIALIZE
;AN000;DT and read them in
213 CALL DEALLOCATE_HELP
;AN072;Help no longer needed
215 INSERT_DISK SUB_INSTALL_COPY
, S_AUTO_NEW
;AN000;JW Insert INSTALL COPY diskette
219 .IF < EXEC_ERR
eq TRUE
> ;AN000;
220 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
;AN000;
223 INC_VAR N_WORD_2
;AN000;
225 INC_VAR N_WORD_1
;AN000;
226 .UNTIL
< N_WORD_1 gt
2> near ;AN000;
227 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
235 ; Update date/time of CONFIG.340
237 ; DOSSHELL.BAT in drive A: ;
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;
244 GOTO INSTALL_ERROR
;AN000;
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;
251 GOTO INSTALL_ERROR
;AN000;
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
258 GOTO INSTALL_ERROR
;AN009;DT
260 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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:
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
271 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
;AN000;
273 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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
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.
287 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
288 .IF < I_DESTINATION
eq E_ENTIRE_DISK
> near ;AN010;JW
290 .IF < MEM_SIZE
eq 256 > ;AN048;SEH memory must be freed up
291 DEALLOCATE_MEMORY
;AN048;SEH before reading COMMAND.COM
293 CHMOD_FILE S_COMMAND_COM
;AN017;
294 COPY_FILES2 I_DEST_DRIVE
,COPY_SEL_SHEL
,E_SEL_SHEL
,S_DEST_DRIVE
;AC010;JW
296 MOV EXEC_ERR
,TRUE
;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
303 .IF < EXEC_ERR
eq TRUE
> ;AN000;
304 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
;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
315 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
;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
321 .ELSE near ;AN065;SEH
322 FIND_FILE S_CONFIG_C
, E_FILE_ATTR
;AN000;GHG
324 FIND_FILE S_AUTO_C
, E_FILE_ATTR
;AN000;GHG
326 RENAME_FILE S_CONFIG_REN
, S_CONFIG_NEW_C
;AN000;GHG new CONFIG *******
328 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
;AN000;GHG
330 RENAME_FILE S_AUTO_REN
, S_AUTO_NEW_C
;AN000;GHG new AUTOEXEC *******
332 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
;AN000;GHG
338 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
340 ; Create install path directory always !
342 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
343 MAKE_DIR_PATHS S_INSTALL_PATH
;AN000;
345 GOTO INSTALL_ERROR
;AN000;
347 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
349 ; Make sure any previous DOSSHELL.BAT is not READ-ONLY !
350 ; Copy DOSSHELL.BAT from A: to subdirectory of C:
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
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;
359 CHMOD_FILE S_STR120_1
;AN017;
360 COPY_FILES2 I_DEST_DRIVE
,S_SHELL2
,SH_FILES
,S_INSTALL_PATH
;AC111;JW
362 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
;AN009;
365 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
367 ; Erase: AUTOEXEC.340 CONFIG.340
368 ; DOSSHELL.BAT SELECT.TMP from drive A:
370 ; Then perform cleanup of AUTOEXEC.BAT on INSTALL (source)
371 ; diskette - ie. change to SELECT MENU!!!
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
379 CHANGE_AUTOEXEC S_AUTO_REBOOT
, S_AUTO_MENU
;AN000;
381 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
;AN000;
384 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
386 ; If 256KB machine, shrink SELECT memory below the parser
387 ; and pcinput code. This frees about another 11KB.
389 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
391 .IF < MEM_SIZE
eq 256 > ;AN072;
393 DEALLOCATE_MEMORY
;AN072;
394 MOV AH,62H
;AN072;Get the PSP segment
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
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
411 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
413 ; If install is to entire disk, Exec SYS to the drive C:
415 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
417 .IF < I_DESTINATION
eq E_ENTIRE_DISK
> near ;AN010;
419 ;;;copy system files from Startup diskette to drive C:
421 EXEC_PROGRAM S_SYS_C
,S_DRIVE_C
,PARM_BLOCK
,EXEC_DIR
;AN000;
423 MOV EXEC_ERR
,TRUE
;AN000;
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
433 .IF < EXEC_ERR
eq TRUE
> ;AN000;
434 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
;AN000;
437 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
438 ;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;
440 ; Display copying files from INSTALL diskette
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
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
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;
454 ; .IF < I_DESTINATION eq E_ENTIRE_DISK > ;AN006;JW
456 ; ;;;S_STR120_3 = "a:*.* c:\ /s parameter for REPLACE
457 ; COPY_STRING S_STR120_3,M_STR120_3,S_REPLACE_PAR1 ;AN006;JW
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
464 ;;;change attributes of some files so they are not copied
465 CHANGE_ATTRIBUTE HIDE_SEL
, E_HIDE_SEL
;AN000;
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
470 RESTORE_ATTRIBUTE HIDE_SEL
,E_HIDE_SEL
;AN000;
471 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
;AN000;
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
478 RESTORE_ATTRIBUTE HIDE_SEL
,E_HIDE_SEL
;AN000;
479 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
;AN000;
482 ;;;restore attributes of files ;
483 RESTORE_ATTRIBUTE HIDE_SEL
,E_HIDE_SEL
;AN000;
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)
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;
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;
500 INSERT_DISK SUB_REM_SEL_A
, S_DOS_UTIL1_DISK
;AN000;JW Insert Operating diskette
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;
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
510 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
;AN000;
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
517 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
;AN000;
519 ;-------------------------------------------------------------
520 ; copy files from 720k Shell diskette
521 ;-------------------------------------------------------------
523 .IF < f_shell
eq e_shell_yes
> near
525 INSERT_DISK SUB_INS_MSSHELL_A
, S_DOS_SHEL_DISK
;AN000;JW Insert Operating diskette
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;
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
535 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
;AN000;
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
542 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
;AN000;
545 .ENDIF
; IF shell supported
549 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
550 ;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;
551 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
552 ; End of 720KB support
553 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
554 GOTO CONTINUE_360
;AN000;
555 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
559 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;