summaryrefslogtreecommitdiff
path: root/v4.0/src/SELECT/SELECT5.ASM
diff options
context:
space:
mode:
Diffstat (limited to 'v4.0/src/SELECT/SELECT5.ASM')
-rw-r--r--v4.0/src/SELECT/SELECT5.ASM576
1 files changed, 576 insertions, 0 deletions
diff --git a/v4.0/src/SELECT/SELECT5.ASM b/v4.0/src/SELECT/SELECT5.ASM
new file mode 100644
index 0000000..68920be
--- /dev/null
+++ b/v4.0/src/SELECT/SELECT5.ASM
@@ -0,0 +1,576 @@
1
2
3PAGE 55,132 ;AN000;
4NAME SELECT ;AN000;
5TITLE SELECT - DOS - SELECT.EXE ;AN000;
6SUBTTL SELECT5.asm ;AN000;
7.ALPHA ;AN000;
8;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
9;
10; SELECT5.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; � SELECT2.ASM
20; � SELECT3.ASM
21; � SELECT4.ASM
22; � SELECT5.ASM
23; � SELECT6.ASM
24;
25; Module contains code for :
26; - VDISK screen
27; - CONFIG.SYS screen
28; - Fixed disk partition screen
29; - Date/Time screen
30;
31; CHANGE HISTORY:
32;
33; ;AN002; for DCR225 by G.G.
34;
35;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
36DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000;
37 EXTRN SEL_FLG:BYTE ;AN000;
38 EXTRN EXEC_DEALLOC:BYTE ;AN000;
39 EXTRN EXEC_FDISK:BYTE ;AN000;DT
40 EXTRN EXEC_ERR:BYTE ;AN000;DT
41 EXTRN BCHAR:BYTE ;AN000;DT
42DATA ENDS ;AN000;
43 ;
44.XLIST ;AN000;
45 INCLUDE PANEL.MAC ;AN000;
46 INCLUDE SELECT.INC ;AN000;
47 INCLUDE CASTRUC.INC ;AN000;
48 INCLUDE STRUC.INC ;AN000;
49 INCLUDE MACROS.INC ;AN000;
50 INCLUDE EXT.INC ;AN000;
51 INCLUDE VARSTRUC.INC ;AN000;
52 INCLUDE ROUT_EXT.INC ;AN000;
53 INCLUDE PAN-LIST.INC ;AN000;
54.LIST ;AN000;
55;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
56 ;
57 EXTRN DEALLOCATE_HELP:FAR ;AN000;DT
58 EXTRN ALLOCATE_HELP:FAR ;AN000;DT
59 EXTRN DEALLOCATE_BLOCK:FAR ;AN000;DT
60 EXTRN ALLOCATE_BLOCK:FAR ;AN000;DT
61 EXTRN DEALLOCATE_MEMORY_CALL:FAR ;AN000;DT
62 EXTRN ALLOCATE_MEMORY_CALL:FAR ;AN000;DT
63 EXTRN PM_BASECHAR:BYTE ;AN000;
64 EXTRN PM_BASEATTR:BYTE ;AN000;
65 EXTRN CRD_CCBVECOFF:WORD ;AN000;
66 EXTRN CRD_CCBVECSEG:WORD ;AN000;
67 ;
68 ;
69;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
70SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000;segment for far routine
71 ASSUME CS:SELECT,DS:DATA ;AN000;
72 ;
73 INCLUDE CASEXTRN.INC ;AN000;
74 ;
75 EXTRN CREATE_AUTOEXEC_BAT:NEAR ;AN000;
76 EXTRN CREATE_CONFIG_SYS:NEAR ;AN000;
77 EXTRN CREATE_SHELL_BAT:NEAR ;AN000;DT
78 EXTRN SCAN_INFO_CALL:NEAR ;AN000;DT
79 EXTRN DATE_TIME_SCREEN:NEAR ;AN000;DT
80 ;
81 PUBLIC FIRST_DISK_SCREEN ;AN000;
82 PUBLIC VDISK_SCREEN ;AN000;
83 EXTRN PROCESS_ESC_F3:near ;AN000;
84 EXTRN FORMAT_DISK_SCREEN:near ;AN000;
85 EXTRN EXIT_DOS:near ;AN000;
86 EXTRN INSTALL_ERROR:near ;AN000;
87 EXTRN EXIT_SELECT:NEAR ;AN000;
88;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
89;
90; ������������������������������������Ŀ
91; �VDISK_SCREEN �
92; � �
93; ��������������������������������������
94;
95; The VDISK PARAMETERS SCREEN is presented if the user selected to
96; install virtual disk support and the user wants to view/change parameters.
97; Note.The view/change parameters condition is not specified in the May 5, 1987
98; Functional Specification.
99; The screen gets parameters for the VDISK command.
100; Valid keys are ENTER, ESC, F1, F3 and ASCII characters.
101; Note.User entered parameter values are not checked for validity.
102;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
103VDISK_SCREEN: ;AN000;
104 .IF < F_VDISK eq E_VDISK_NO > ;AN000; if VDISK support not required
105 GOTO CONFIG_SYS_SCREEN ;AN000; goto the next screen (CONFIG.SYS)
106 .ENDIF ;AN000;
107 ;
108 INIT_PQUEUE PAN_VDISK ;AN000; initialize queue
109 PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar
110 PREPARE_CHILDREN ;AN000; prepare child panels
111 INIT_STRING STR_VDISK,S_VDISK,M_VDISK ;AN000; get new parameters for VDISK
112 DISPLAY_PANEL ;AN000; display VDISK panel
113 ;
114 GET_STRING STR_VDISK,S_VDISK,M_VDISK,FK_TEXT ;AN000; get new parameters for VDISK
115 ;
116 .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key
117 COPY_STRING S_VDISK, M_VDISK, S_USER_STRING ;AN000; save new parameters for VDISK
118 PUSH_HEADING VDISK_SCREEN ;AN000; save screen address on SELECT STACK
119 GOTO CONFIG_SYS_SCREEN ;AN000; goto the next screen (CONFIG.SYS)
120 .ELSE ;AN000;
121 GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action
122 .ENDIF ;AN000;
123;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
124;
125; ������������������������������������Ŀ
126; �CONFIG_SYS_SCREEN �
127; � �
128; ��������������������������������������
129;
130; The CONFIG.SYS PARAMETERS SCREEN is presented if the user selected to
131; view/change SELECT generated commands ( F_REVIEW = 2 ).
132; The screen gets parameters for CONFIG.SYS commands ( BREAK, BUFFERS,
133; FCBS, FILES, LASTDRIVE, STACKS, VERIFY ).
134; The TAB key is used to move to the next item on the parameter list.
135; If the cursor is on the last item in the parameter list, TAB key
136; will cause the cursor to wrap around to the first item of the parameter list.
137; When the TAB key is depressed, the current parameter value is saved in
138; a temporary location. The temporary parameter values are copied to actual
139; values only when the ENTER key is depressed.
140; Valid keys are ENTER, ESC, F1, F3, TAB and ASCII characters.
141; Note.User entered parameter values are not checked for validity.
142;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
143CONFIG_SYS_SCREEN: ;AN000;
144 COPY_STRING ST_BREAK, MT_BREAK, S_BREAK ;AN000; copy BREAK par to temp location
145 COPY_STRING ST_BUFFERS,MT_BUFFERS,S_BUFFERS ;AN000; copy BUFFERS par to temp location
146 COPY_STRING ST_FCBS, MT_FCBS, S_FCBS ;AN000; copy FCBS par to temp location
147 COPY_STRING ST_FILES, MT_FILES, S_FILES ;AN000; copy FILES par to temp location
148 COPY_STRING ST_LASTDRIVE,MT_LASTDRIVE,S_LASTDRIVE ;AN000; copy LASTDRIVE par to temp location
149 COPY_STRING ST_STACKS, MT_STACKS, S_STACKS ;AN000; copy STACKS par to temp location
150 COPY_STRING ST_VERIFY, MT_VERIFY, S_VERIFY ;AN000; copy VERIFY par to temp location
151 ;
152 INIT_PQUEUE PAN_CONFIG_PARS ;AN000; initialize queue
153 PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar
154 PREPARE_CHILDREN ;AN000; prepare child panels
155 INIT_STRING STR_BREAK, ST_BREAK, MT_BREAK ;AN000; display BREAK parameters
156 INIT_STRING STR_BUFFERS,ST_BUFFERS,MT_BUFFERS ;AN000; display BUFFERS parameters
157 INIT_STRING STR_FCBS, ST_FCBS, MT_FCBS ;AN000; display FCBS parameters
158 INIT_STRING STR_FILES, ST_FILES, MT_FILES ;AN000; display FILES parameters
159 INIT_STRING STR_LASTDRIVE,ST_LASTDRIVE,MT_LASTDRIVE ;AN000; display LASTDRIVE parameters
160 INIT_STRING STR_STACKS,ST_STACKS, MT_STACKS ;AN000; display STACKS parameters
161 INIT_STRING STR_VERIFY,ST_VERIFY, MT_VERIFY ;AN000; display VERIFY parameters
162 DISPLAY_PANEL ;AN000; display CONFIG.SYS parameters panel
163 ;
164 INIT_VAR N_COUNTER, 1 ;AN000;
165 ;
166 .REPEAT ;AN000; repeat code block
167 ;
168 .SELECT ;AN000;
169 ;
170 .WHEN < N_COUNTER eq 1 > ;AN000;
171 GET_STRING STR_BREAK,ST_BREAK,MT_BREAK,FK_TAB ;AN000; get new parameter for BREAK
172 COPY_STRING ST_BREAK,MT_BREAK,S_USER_STRING ;AN000; save new BREAK parameter
173 ;
174 .WHEN < N_COUNTER eq 2 > ;AN000;
175 GET_STRING STR_BUFFERS,ST_BUFFERS,MT_BUFFERS,FK_TAB ;AN000; get new parameter for BUFFERS
176 COPY_STRING ST_BUFFERS,MT_BUFFERS,S_USER_STRING ;AN000; save new BUFFERS parameter
177 ;
178 .WHEN < N_COUNTER eq 3 > ;AC000;JW
179 GET_STRING STR_FCBS,ST_FCBS,MT_FCBS,FK_TAB ;AN000; get new parameter for FCBS
180 COPY_STRING ST_FCBS, MT_FCBS, S_USER_STRING ;AN000; save new FCBS parameter
181 ;
182 .WHEN < N_COUNTER eq 4 > ;AC000;JW;
183 GET_STRING STR_FILES,ST_FILES,MT_FILES,FK_TAB ;AN000; get new parameter for FILES
184 COPY_STRING ST_FILES,MT_FILES,S_USER_STRING ;AN000; save new FILES parameter
185 ;
186 .WHEN < N_COUNTER eq 5 > ;AC000;JW;
187 GET_STRING STR_LASTDRIVE,ST_LASTDRIVE,MT_LASTDRIVE, FK_TAB ;AN000; get new parameter for LASTDRIVE
188 COPY_STRING ST_LASTDRIVE,MT_LASTDRIVE,S_USER_STRING ;AN000;save new LASTDRIVE parameter
189 ;
190 .WHEN < N_COUNTER eq 6 > ;AC000;JW;
191 GET_STRING STR_STACKS,ST_STACKS,MT_STACKS,FK_TAB ;AN000;get new parameter for STACKS
192 COPY_STRING ST_STACKS,MT_STACKS,S_USER_STRING ;AN000; save new STACKS parameter
193 ;
194 .OTHERWISE ;AN000;
195 GET_STRING STR_VERIFY,ST_VERIFY,MT_VERIFY,FK_TAB ;AN000;get new parameter for VERIFY
196 COPY_STRING ST_VERIFY,MT_VERIFY,S_USER_STRING ;AN000; save new VERIFY parameter
197 ;
198 .ENDSELECT ;AN000;
199 ;
200 INC_VAR N_COUNTER ;AN000; inc counter
201 ;
202 .IF < N_COUNTER a 7 > ;AC000;JW; if counter > 8
203 INIT_VAR N_COUNTER, 1 ;AN000; set counter = 1
204 .ENDIF ;AN000;
205 ;
206 .UNTIL < N_USER_FUNC eq E_ENTER > or near ;AN000; break if loop if ENTER entered
207 .UNTIL < N_USER_FUNC eq E_ESCAPE > or near ;AN000; or ESCAPE entered
208 .UNTIL < N_USER_FUNC eq E_F3 > near ;AN000; or F3 entered
209 ;
210 .IF < N_USER_FUNC eq E_ENTER > near ;AN000; if user entered ENTER key
211 COPY_STRING S_BREAK, M_BREAK, ST_BREAK ;AN000; save BREAK parameter
212 COPY_STRING S_BUFFERS,M_BUFFERS, ST_BUFFERS ;AN000; save BUFFERS parameter
213 COPY_STRING S_FCBS, M_FCBS, ST_FCBS ;AN000; save FCBS parameter
214 COPY_STRING S_FILES, M_FILES, ST_FILES ;AN000; save FILES parameter
215 COPY_STRING S_LASTDRIVE,M_LASTDRIVE,ST_LASTDRIVE ;AN000;save LASTDRIVE parameter
216 COPY_STRING S_STACKS, M_STACKS, ST_STACKS ;AN000; save STACKS parameter
217 COPY_STRING S_VERIFY, M_VERIFY, ST_VERIFY ;AN000; save VERIFY parameter
218 PUSH_HEADING CONFIG_SYS_SCREEN ;AN000; save screen address on SELECT STACK
219 GOTO FIRST_DISK_SCREEN ;AN000; goto the first fixed disk screen
220 .ELSE ;AN000;
221 GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action
222 .ENDIF ;AN000;
223;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
224;
225; ������������������������������������Ŀ
226; �FIRST_DISK_SCREEN �
227; � �
228; ��������������������������������������
229;
230; The PARTITION FIXED DISK SCREEN is presented if the first fixed drive
231; exists and is completely unused.
232; When SELECT is invoked, the system configuration is checked and if fixed
233; disks exist, the fixed disk status is obtained and variables are initialized.
234; The screen allows the user to create partitions for the fixed drive.
235; If the user chooses to let SELECT define partition sizes, the first fixed
236; disk will be partitioned as follows:
237; - A Primary DOS partition is created using the entire disk.
238; SELECT will partition the second fixed disk if it exists as follows:
239; - An Extended DOS partition is created using the entire disk space and a
240; logical drive is created using the entire Extended DOS partition.
241; Valid keys are ENTER, ESC, F1, F3, cursor up/down, 1/2.
242; Note.After FDISK, the partitions have to formatted. Since the system is going
243; to reboot, SELECT must know if the user had created his own partitions or not
244; so that the partitions can be automatically formatted. The MENU parameter
245; in the AUTOEXEC.BAT file is changed FDISK.
246;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
247FIRST_DISK_SCREEN: ;AN000;
248 .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C > or ;AC111;JW
249 .IF < N_DISK_1 eq E_DISK_INV > ;AN000; if first fixed disk not present
250 GOTO DATE_TIME_SCREEN ;AN000; goto DATE_TIME screen
251 .ENDIF ;AN000;
252;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
253;
254; ������������������������������������Ŀ
255; �MAKE_BACKUP_DISKETTE �
256; � �
257; � �
258; ��������������������������������������
259;
260; WE NEED TO MAKE A DUPLICATE OF THE SELECT/SHELL DISKETTE
261; FOR R/W PURPOSES!
262;
263;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
264MAKE_BACKUP_DISKETTE: ;AN000;
265 ;
266 .REPEAT ;AN000;JW
267 .REPEAT ;AN000;
268 ;
269 INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue
270 PREPARE_PANEL PAN_DISKCOPY ;AN000;
271 PREPARE_PANEL PAN_HBAR ;AN000;
272 PREPARE_CHILDREN ;AN000;
273 DISPLAY_PANEL ;AN000;
274 ;
275 GET_FUNCTION FK_ENT_ESC_F3 ;AN002;GHG get user entered function (ENTER or ESC )
276 ;
277 .IF < N_USER_FUNC ne E_ENTER > ;AN002;GHG if user entered ENTER key
278 GOTO PROCESS_ESC_F3 ;AN002;GHG exit to DOS command line
279 .ENDIF ;AN002;GHG
280 ;
281 FIND_FILE S_AUTO_REBOOT, E_FILE_ATTR ;AN000;DT Look for AUTOEXEC.BAT (INSTALL diskette)
282 .LEAVE < nc > ;AN000;DT
283 HANDLE_ERROR ERR_DOS_DISK, E_RETURN ;AN000;DT
284 ;
285 .UNTIL ;AN000;DT
286 ;
287 .IF < MEM_SIZE ne 256 > near ;AN000;DT
288 CALL HOOK_INT_2F ;AN000;GHG
289 .ELSE ;AN000;
290 DEALLOCATE_MEMORY ;AN000;
291 CALL HOOK_INT_2F_256KB ;AN000;
292 .ENDIF ;AN000;
293 ;
294 INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK ;AN000;JW
295 EXEC_PROGRAM S_DISKCOPY,S_DISKCOPY_PARM,PARM_BLOCK,EXEC_NO_DIR;AN000; control will not return
296 .IF < c > ;AN000;
297 MOV EXEC_ERR,TRUE ;AN000;
298 .ENDIF ;AN000;
299 CALL RESTORE_INT_2F ;AN000;GHG
300 ;
301 .UNTIL < N_DSKCPY_ERR ne E_DSKCPY_RETRY > near ;AN000;JW
302 ;
303 .IF < MEM_SIZE eq 256 > near ;AN000;DT
304 CLEAR_SCREEN ;AN000;
305 DISPLAY_MESSAGE 12 ;AN000;DT Insert SELECT diskette
306 .REPEAT ;AN000;
307 CALL GET_ENTER_KEY ;AN000; get user entered function
308 FIND_FILE S_DOS_SEL_360, E_FILE_ATTR ;AN000;
309 .LEAVE < nc > ;AN000;
310 DISPLAY_MESSAGE 11 ;AN000;DT Beep
311 .UNTIL ;AN000;
312 ALLOCATE_MEMORY ;AN000;
313 CALL INITIALIZE ;AN000;DT and read them in
314 INITIALIZE_BCHAR BCHAR ;AN000;Initialize the background character
315 INSERT_DISK SUB_INSTALL_COPY, S_DOS_COM_360 ;AN000;JW
316 .ENDIF ;AN000;
317 .IF < EXEC_ERR eq TRUE > ;AN000;
318 HANDLE_ERROR ERR_GENERAL, E_RETURN ;AN000;
319 GOTO MAKE_BACKUP_DISKETTE ;AN000;
320 .ENDIF ;AN000;
321 CALL CURSOROFF ;AN000; set cursor off
322 ;
323 OR SEL_FLG,INSTALLRW ;AN000; indicate INSTALL diskette is R/W
324;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
325; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
326; � Create the CONFIG.340, AUTOEXEC.340, and SHELL.BAT on the �
327; � INSTALL COPY diskette in drive A: �
328; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
329;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
330 CREATE_CONFIG S_CONFIG_NEW, N_RETCODE ;AN000;
331 .IF c ;AN000;
332 GOTO INSTALL_ERROR ;AN000;
333 .ENDIF ;AN000;
334 ;
335 INIT_VAR N_HOUSE_CLEAN,E_CLEAN_YES ;AN000; set to perform cleanup on exit
336 ;
337 CREATE_AUTOEXEC S_AUTO_NEW,E_DEST_SHELL,N_RETCODE ;AN000; create autoexec with SHELL commands
338 .IF c ;AN000;
339 GOTO INSTALL_ERROR ;AN000;
340 .ENDIF ;AN000;
341 ;
342 CREATE_SHELL S_SHELL_NEW, N_RETCODE ;AN000;DT
343 .IF c ;AN000;DT
344 GOTO INSTALL_ERROR ;AN000;DT
345 .ENDIF ;AN000;DT
346 ;
347;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
348; ������������������������������������Ŀ
349; �DISK_PARTITION_OPTION �
350; � �
351; � �
352; ��������������������������������������
353;
354; If the first fixed disk is not new (existing partition)
355; goto different screen. Else present screen with partition
356; options.
357;
358;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
359 .IF < N_DISK_1 eq E_DISK_VAL_PART > ;AN000; if first disk has partitions
360 GOTO BOTH_DISK_SCREEN ;AN000; goto next screen (BOTH_DISK)
361 .ENDIF ;AN000;
362 ;
363DISK_PARTITION_OPTION: ;AN000;
364 INIT_VAR N_DISK_NUM, '1' ;AN000;JW
365 INIT_CHAR N_DISK_NUM, E_DISK_ROW, E_DISK_COL, SUB_FIXED_1 ;AN000; display the disk number JW
366 ;
367 INIT_PQUEUE PAN_FIXED_FIRST ;AN000; initialize queue
368 PREPARE_PANEL SUB_FIXED_1 ;AN000; prepare fixed disk 1 message
369 PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar
370 PREPARE_CHILDREN ;AN000; prepare child panels
371 INIT_SCROLL SCR_FIXED_FIRST, F_PARTITION ;AN000;
372 DISPLAY_PANEL ;AN000; display first fixed disk partition screen
373 ;
374 GET_SCROLL SCR_FIXED_FIRST,F_PARTITION,FK_SCROLL ;AN000; get user selected option for creating partitions
375 ;
376 PROCESS_F3 ;AN000;
377 PROCESS_ESC ;AN000;
378 ;
379 COPY_WORD F_PARTITION, I_USER_INDEX ;AN000;
380 .IF < F_PARTITION eq E_PART_DEFAULT > ;AN000;
381 INIT_VAR N_FORMAT_MODE, E_FORMAT_SELECT ;AN000;
382 .ELSE ;AN000;
383 INIT_VAR N_FORMAT_MODE, E_FORMAT_NEW ;AN000;
384 .ENDIF ;AN000;
385 ;
386 SAVE_PARAMETERS S_SELECT_TMP, N_RETCODE ;AN000;
387 .IF c ;AN000;
388 GOTO INSTALL_ERROR ;AN000;
389 .ENDIF ;AN000;
390 ;
391 CHANGE_AUTOEXEC S_AUTO_REBOOT, S_AUTO_FDISK ;AN000;
392 .IF c ;AN000;
393 GOTO INSTALL_ERROR ;AN000;
394 .ENDIF ;AN000;
395 ;
396 .IF < MEM_SIZE eq 256 > ;AN000;DT
397 DEALLOCATE_MEMORY ;AN000;
398 .ENDIF ;AN000;DT
399 ;
400 .IF < F_PARTITION eq E_PART_USER > near ;AN000; if user selected to define his own partition sizes
401 ;
402 SAVE_PANEL_LIST ;AN000; save panel list for test team
403 INIT_VAR S_STR120_1, 0 ;AN000;
404 APPEND_STRING S_STR120_1,M_STR120_1,S_SLASH_Q ;AN000;DT add /Q parameter (no insert disk at end)
405 CALL CURSORON ;AN000; set cursor to show
406 EXEC_PROGRAM S_FDISK,S_STR120_1,PARM_BLOCK,EXEC_NO_DIR ;AN000; control will not return
407 .IF c ;AN000;
408 GOTO FDISK_ERROR ;AN000;
409 .ENDIF ;AN000;
410 ;
411 GOTO FDISK_REBOOT ;AN000;DT
412 .ENDIF ;AN000;
413 ;
414 INIT_VAR N_WORD_1, 1 ;AN000;
415 SCAN_DISK_TABLE E_DISK_1, N_WORD_1, N_RETCODE ;AN000;
416 .IF < N_RETCODE eq 0 > and ;AN000;
417 .IF < N_NAME_PART eq E_FREE_MEM_DISK > ;AN000;
418 WORD_TO_CHAR N_SIZE_PART, S_STR120_2 ;AN000;
419 MERGE_STRING S_STR120_1,M_STR120_1,SC_1,SC_PRI ;AN000;
420 APPEND_STRING S_STR120_1,M_STR120_1,S_STR120_2;AN000;
421 APPEND_STRING S_STR120_1,M_STR120_1,S_SLASH_Q ;AN000;DT add /Q parameter (no insert disk at end)
422 EXEC_PROGRAM S_FDISK,S_STR120_1,PARM_BLOCK,EXEC_NO_DIR ;AN000;
423 .IF c ;AN000;
424 GOTO FDISK_ERROR ;AN000;
425 .ENDIF ;AN000;
426 .ENDIF ;AN000;
427 ;
428 .IF < N_DISK_2 eq E_DISK_NO_PART > near ;AN000;
429 INIT_VAR N_WORD_1, 1 ;AN000;
430 SCAN_DISK_TABLE E_DISK_2, N_WORD_1, N_RETCODE ;AN000;
431 .IF < N_RETCODE eq 0 > and near ;AN000;
432 .IF < N_NAME_PART eq E_FREE_MEM_DISK > near ;AN000;
433 WORD_TO_CHAR N_SIZE_PART, S_STR120_2 ;AN000;
434 MERGE_STRING S_STR120_1,M_STR120_1,SC_2,SC_EXT ;AN000;
435 APPEND_STRING S_STR120_1,M_STR120_1,S_STR120_2;AN000;
436 APPEND_STRING S_STR120_1,M_STR120_1,SC_LOG ;AN000;
437 APPEND_STRING S_STR120_1,M_STR120_1,S_STR120_2;AN000;
438 APPEND_STRING S_STR120_1,M_STR120_1,S_SLASH_Q ;AN000;DT add /Q parameter (no insert disk at end)
439 EXEC_PROGRAM S_FDISK,S_STR120_1,PARM_BLOCK,EXEC_NO_DIR ;AN000;
440 .IF c ;AN000;
441 GOTO FDISK_ERROR ;AN000;
442 .ENDIF ;AN000;
443 .ENDIF ;AN000;
444 .ENDIF ;AN000;
445 ;
446FDISK_REBOOT: ;AN000;
447 .IF < MEM_SIZE eq 256 > ;AN000;DT
448 CLEAR_SCREEN ;AN000;
449 DISPLAY_MESSAGE 9 ;AN000;
450 .ELSE ;AN000;
451 CALL CURSOROFF ;AN000; set to hide cursor
452 INIT_PQUEUE PAN_REBOOT ;AN000; initialize queue
453 PREPARE_PANEL SUB_REBOOT_KEYS ;AN000;
454 DISPLAY_PANEL ;AN000;
455 SAVE_PANEL_LIST ;AN000; save panel list for test team
456 .ENDIF ;AN000;
457 ;
458 GET_FUNCTION FK_REBOOT ;AN000; Reboot
459 ;
460FDISK_ERROR: ;AN000;
461 .IF < MEM_SIZE eq 256 > near ;AN000;DT
462 CLEAR_SCREEN ;AN000;
463 DISPLAY_MESSAGE 12 ;AN000;DT Insert SELECT diskette
464 ;
465 .REPEAT ;AN000;
466 GET_FUNCTION FK_ENT ;AN000; get user entered function
467 FIND_FILE S_DOS_SEL_360, E_FILE_ATTR ;AN000;
468 .LEAVE < nc > ;AN000;
469 DISPLAY_MESSAGE 11 ;AN000;DT Beep
470 .UNTIL ;AN000;
471 ;
472 ALLOCATE_MEMORY ;AN000;
473 CALL INITIALIZE ;AN000;DT and read them in
474 .ENDIF ;AN000;
475 .IF < SUB_ERROR eq 1 > ;AN023; If error is because no Primary DOS partition
476 CALL CURSOROFF ;AN023; set cursor off
477 GOTO DISK_PARTITION_OPTION ;AN023; return to partition options
478 .ENDIF ;AN023;
479 GOTO INSTALL_ERROR ;AN000;
480;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
481;
482; ������������������������������������Ŀ
483; �BOTH_DISK_SCREEN �
484; � �
485; � �
486; ��������������������������������������
487;
488; Ask user if they want to change the existing partition
489; layout or leave it the same (for both disks if 2nd exists).
490;
491;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
492BOTH_DISK_SCREEN: ;AN000;
493BOTH_DISK_PART_OPTION: ;AN000;
494 ;
495 .IF < N_DISK_1_S2 eq E_SPACE_EDOS > or ;AN000;
496 .IF < N_DISK_1_S2 eq E_SPACE_DISK > ;AN000;
497 INIT_VAR N_DISK_NUM, '1' ;AN000;JW
498 .ELSEIF < N_DISK_2_S2 eq E_SPACE_EDOS > or ;AN000;
499 .IF < N_DISK_2_S2 eq E_SPACE_DISK > ;AN000;
500 INIT_VAR N_DISK_NUM, '2' ;AN000;JW
501 .ELSE ;AN000;
502 GOTO DATE_TIME_SCREEN ;AN000; no more partitions to be created
503 .ENDIF ;AN000;
504 ;
505 INIT_CHAR N_DISK_NUM, E_DISK_ROW, E_DISK_COL, SUB_FIXED_1 ;AN000; display the disk number JW
506 INIT_PQUEUE PAN_FIXED_BOTH ;AN000; initialize queue
507 PREPARE_PANEL SUB_FIXED_1 ;AN000; prepare fixed disk message JW
508 PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar
509 PREPARE_CHILDREN ;AN000; prepare child panels
510 INIT_SCROLL SCR_FIXED_BOTH, F_PARTITION ;AN000;
511 DISPLAY_PANEL ;AN000; display first fixed disk partition screen
512 ;
513 GET_SCROLL SCR_FIXED_BOTH,F_PARTITION,FK_SCROLL ;AN000; get user selected option for creating partitions
514 ;
515 PROCESS_ESC ;AN000;
516 PROCESS_F3 ;AN000;
517 ;
518 COPY_WORD F_PARTITION, I_USER_INDEX ;AN000;
519 CHANGE_AUTOEXEC S_AUTO_REBOOT, S_AUTO_FDISK ;AN000;
520 .IF c ;AN000;
521 GOTO INSTALL_ERROR ;AN000;
522 .ENDIF ;AN000;
523 ;
524 .IF < F_PARTITION eq E_PART_USER > near ;AN000; if user will define his own partition
525 ;
526 .IF < MEM_SIZE eq 256 > ;AN000;DT
527 DEALLOCATE_MEMORY ;AN000;
528 .ENDIF ;AN000;DT
529 ;
530 INIT_VAR N_FORMAT_MODE, E_FORMAT_USED ;AN000;
531 SAVE_PARAMETERS S_SELECT_TMP, N_RETCODE ;AN000;
532 SAVE_PANEL_LIST ;AN000; save panel list for test team
533 INIT_VAR S_STR120_1, 0 ;AN000;
534 APPEND_STRING S_STR120_1,M_STR120_1,S_SLASH_Q ;AN000;DT add /Q parameter (no insert disk at end)
535 CALL CURSORON ;AN000; set to show cursor
536 EXEC_PROGRAM S_FDISK,S_STR120_1,PARM_BLOCK,EXEC_NO_DIR ;AN000; control will not return
537 .IF c ;AN000;
538 .IF < SUB_ERROR eq 2 > ;AN034; SEH If user made no changes to partition
539 CALL CURSOROFF ;AN034; SEH Set cursor off
540 GOTO BOTH_DISK_SCREEN ;AN034; SEH Go to previous screen
541 .ELSE ;AN034; SEH
542 GOTO FDISK_ERROR ;AN000;
543 .ENDIF ;AN034; SEH
544 .ENDIF ;AN000;
545 ;
546 GOTO FDISK_REBOOT ;AN000;DT
547 .ELSE ;AN000;
548 GOTO DATE_TIME_SCREEN ;AN000; no more partitions to be created
549 .ENDIF ;AN000;
550;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
551;
552; GET KEY ROUTINE (256KB)
553;
554; Input: none
555;
556; Output: none
557;
558;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
559PUBLIC GET_ENTER_KEY ;AN063;SEH
560GET_ENTER_KEY PROC NEAR ;AN000;DT
561GEKEY_AGN: ;AN000;DT
562 MOV AH,0 ;AN000;DT
563 INT 16H ;AN000;DT get keystroke
564 CMP AL,13 ;AN000;DT If ENTER the continue
565 JE GEKEY_EXIT ;AN000;DT
566 DISPLAY_MESSAGE 11 ;AN000;DT BEEP
567 JMP GEKEY_AGN ;AN000;DT
568 ;
569GEKEY_EXIT: ;AN000;DT
570 RET ;AN000;DT
571GET_ENTER_KEY ENDP ;AN000;DT
572 ;
573 ;
574SELECT ENDS ;AN000;
575 END ;AN000;
576 \ No newline at end of file