summaryrefslogtreecommitdiff
path: root/v4.0/src/SELECT/SELECT6.ASM
diff options
context:
space:
mode:
authorGravatar Mark Zbikowski2024-04-25 21:24:10 +0100
committerGravatar Microsoft Open Source2024-04-25 22:32:27 +0000
commit2d04cacc5322951f187bb17e017c12920ac8ebe2 (patch)
tree80ee017efa878dfd5344b44249e6a241f2a7f6e2 /v4.0/src/SELECT/SELECT6.ASM
parentMerge pull request #430 from jpbaltazar/typoptbr (diff)
downloadms-dos-main.tar.gz
ms-dos-main.tar.xz
ms-dos-main.zip
MZ is back!HEADmain
Diffstat (limited to 'v4.0/src/SELECT/SELECT6.ASM')
-rw-r--r--v4.0/src/SELECT/SELECT6.ASM561
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
3PAGE 55,132 ;AN000;
4NAME SELECT ;AN000;
5TITLE SELECT - DOS - SELECT.EXE ;AN000;
6SUBTTL 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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
42DATA 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
46DATA ENDS ;AN000;
47;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
49;
50; Define dummy segment to calculate end of program
51;
52;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
53PARSER SEGMENT PARA PUBLIC 'PARSER' ;AN072;
54PARSER ENDS ;AN072;
55
56SET_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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
82SELECT 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;
109FORMAT_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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
560SELECT ENDS ;AN000;
561 END ;AN000;