5 TITLE SELECT
- DOS
- SELECT
.EXE
;AN000;
6 SUBTTL SELECT5
.asm
;AN000;
8 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
10 ; SELECT5.ASM : Copyright 1988 Microsoft
14 ; COMMENTS: Assemble with MASM 3.0 (using the /A option)
16 ; Panel flow is defined in the following files:
25 ; Module contains code for :
28 ; - Fixed disk partition screen
33 ; ;AN002; for DCR225 by G.G.
35 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
36 DATA 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
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;
55 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
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;
69 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
70 SELECT
SEGMENT PARA
PUBLIC 'SELECT' ;AN000;segment for far routine
71 ASSUME
CS:SELECT
,DS:DATA ;AN000;
73 INCLUDE CASEXTRN
.INC ;AN000;
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
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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
90 ; ������������������������������������Ŀ
93 ; ��������������������������������������
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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
103 VDISK_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)
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
114 GET_STRING STR_VDISK
,S_VDISK
,M_VDISK
,FK_TEXT
;AN000; get new parameters for VDISK
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)
121 GOTO PROCESS_ESC_F3
;AN000; user entered ESC or F3, take action
123 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
125 ; ������������������������������������Ŀ
126 ; �CONFIG_SYS_SCREEN �
128 ; ��������������������������������������
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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
143 CONFIG_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
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
164 INIT_VAR N_COUNTER
, 1 ;AN000;
166 .REPEAT ;AN000; repeat code block
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
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
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
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
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
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
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
200 INC_VAR N_COUNTER
;AN000; inc counter
202 .IF < N_COUNTER a
7 > ;AC000;JW; if counter > 8
203 INIT_VAR N_COUNTER
, 1 ;AN000; set counter = 1
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
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
221 GOTO PROCESS_ESC_F3
;AN000; user entered ESC or F3, take action
223 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
225 ; ������������������������������������Ŀ
226 ; �FIRST_DISK_SCREEN �
228 ; ��������������������������������������
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 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
247 FIRST_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
252 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
254 ; ������������������������������������Ŀ
255 ; �MAKE_BACKUP_DISKETTE �
258 ; ��������������������������������������
260 ; WE NEED TO MAKE A DUPLICATE OF THE SELECT/SHELL DISKETTE
263 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
264 MAKE_BACKUP_DISKETTE: ;AN000;
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;
275 GET_FUNCTION FK_ENT_ESC_F3
;AN002;GHG get user entered function (ENTER or ESC )
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
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
287 .IF < MEM_SIZE ne
256 > near ;AN000;DT
288 CALL HOOK_INT_2F
;AN000;GHG
290 DEALLOCATE_MEMORY
;AN000;
291 CALL HOOK_INT_2F_256KB
;AN000;
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
297 MOV EXEC_ERR
,TRUE
;AN000;
299 CALL RESTORE_INT_2F
;AN000;GHG
301 .UNTIL
< N_DSKCPY_ERR ne E_DSKCPY_RETRY
> near ;AN000;JW
303 .IF < MEM_SIZE
eq 256 > near ;AN000;DT
305 DISPLAY_MESSAGE
12 ;AN000;DT Insert SELECT diskette
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
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
317 .IF < EXEC_ERR
eq TRUE
> ;AN000;
318 HANDLE_ERROR ERR_GENERAL
, E_RETURN
;AN000;
319 GOTO MAKE_BACKUP_DISKETTE
;AN000;
321 CALL CURSOROFF
;AN000; set cursor off
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;
332 GOTO INSTALL_ERROR
;AN000;
335 INIT_VAR N_HOUSE_CLEAN
,E_CLEAN_YES
;AN000; set to perform cleanup on exit
337 CREATE_AUTOEXEC S_AUTO_NEW
,E_DEST_SHELL
,N_RETCODE
;AN000; create autoexec with SHELL commands
339 GOTO INSTALL_ERROR
;AN000;
342 CREATE_SHELL S_SHELL_NEW
, N_RETCODE
;AN000;DT
344 GOTO INSTALL_ERROR
;AN000;DT
347 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
348 ; ������������������������������������Ŀ
349 ; �DISK_PARTITION_OPTION �
352 ; ��������������������������������������
354 ; If the first fixed disk is not new (existing partition)
355 ; goto different screen. Else present screen with partition
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)
363 DISK_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
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
374 GET_SCROLL SCR_FIXED_FIRST
,F_PARTITION
,FK_SCROLL
;AN000; get user selected option for creating partitions
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;
383 INIT_VAR N_FORMAT_MODE
, E_FORMAT_NEW
;AN000;
386 SAVE_PARAMETERS S_SELECT_TMP
, N_RETCODE
;AN000;
388 GOTO INSTALL_ERROR
;AN000;
391 CHANGE_AUTOEXEC S_AUTO_REBOOT
, S_AUTO_FDISK
;AN000;
393 GOTO INSTALL_ERROR
;AN000;
396 .IF < MEM_SIZE
eq 256 > ;AN000;DT
397 DEALLOCATE_MEMORY
;AN000;
400 .IF < F_PARTITION
eq E_PART_USER
> near ;AN000; if user selected to define his own partition sizes
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
408 GOTO FDISK_ERROR
;AN000;
411 GOTO FDISK_REBOOT
;AN000;DT
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;
424 GOTO FDISK_ERROR
;AN000;
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;
441 GOTO FDISK_ERROR
;AN000;
446 FDISK_REBOOT: ;AN000;
447 .IF < MEM_SIZE
eq 256 > ;AN000;DT
449 DISPLAY_MESSAGE
9 ;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
458 GET_FUNCTION FK_REBOOT
;AN000; Reboot
461 .IF < MEM_SIZE
eq 256 > near ;AN000;DT
463 DISPLAY_MESSAGE
12 ;AN000;DT Insert SELECT diskette
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
472 ALLOCATE_MEMORY
;AN000;
473 CALL INITIALIZE
;AN000;DT and read them in
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
479 GOTO INSTALL_ERROR
;AN000;
480 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
482 ; ������������������������������������Ŀ
483 ; �BOTH_DISK_SCREEN �
486 ; ��������������������������������������
488 ; Ask user if they want to change the existing partition
489 ; layout or leave it the same (for both disks if 2nd exists).
491 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
492 BOTH_DISK_SCREEN: ;AN000;
493 BOTH_DISK_PART_OPTION: ;AN000;
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
502 GOTO DATE_TIME_SCREEN
;AN000; no more partitions to be created
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
513 GET_SCROLL SCR_FIXED_BOTH
,F_PARTITION
,FK_SCROLL
;AN000; get user selected option for creating partitions
518 COPY_WORD F_PARTITION
, I_USER_INDEX
;AN000;
519 CHANGE_AUTOEXEC S_AUTO_REBOOT
, S_AUTO_FDISK
;AN000;
521 GOTO INSTALL_ERROR
;AN000;
524 .IF < F_PARTITION
eq E_PART_USER
> near ;AN000; if user will define his own partition
526 .IF < MEM_SIZE
eq 256 > ;AN000;DT
527 DEALLOCATE_MEMORY
;AN000;
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
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
542 GOTO FDISK_ERROR
;AN000;
546 GOTO FDISK_REBOOT
;AN000;DT
548 GOTO DATE_TIME_SCREEN
;AN000; no more partitions to be created
550 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
552 ; GET KEY ROUTINE (256KB)
558 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
559 PUBLIC GET_ENTER_KEY
;AN063;SEH
560 GET_ENTER_KEY PROC
NEAR ;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
569 GEKEY_EXIT: ;AN000;DT
571 GET_ENTER_KEY ENDP
;AN000;DT