5 TITLE SELECT
- DOS
- SELECT
.EXE
8 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
10 ; SELECT9.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 :
33 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
34 DATA SEGMENT BYTE PUBLIC 'DATA'
36 EXTRN DSKCPY_WHICH
:BYTE
37 EXTRN DSKCPY_OPTION
:BYTE
38 EXTRN DSKCPY_PAN1
:WORD
39 EXTRN DSKCPY_PAN2
:WORD
40 EXTRN DSKCPY_PAN3
:WORD
41 EXTRN DSKCPY_SOURCE
:WORD
43 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
45 ; Define dummy segment to calculate end of program
47 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
48 PARSER
SEGMENT PARA
PUBLIC 'PARSER'
52 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
55 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
69 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
72 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
73 SELECT
SEGMENT PARA
PUBLIC 'SELECT'
74 ASSUME
CS:SELECT
,DS:DATA
78 EXTRN EXIT_SELECT
:near
79 EXTRN CREATE_CONFIG_SYS
:NEAR
80 EXTRN CREATE_AUTOEXEC_BAT
:NEAR
81 EXTRN CREATE_SHELL_BAT
:NEAR
82 EXTRN DEALLOCATE_HELP
:FAR
83 EXTRN DEALLOCATE_MEMORY_CALL
:FAR
84 EXTRN ALLOCATE_BLOCK
:FAR
85 EXTRN ALLOCATE_LVB
:FAR
86 EXTRN GET_OVERLAY
:NEAR
87 EXTRN ALLOCATE_MEMORY_CALL
:FAR
89 PUBLIC INSTALL_TO_360_DRIVE
91 PUBLIC EXIT_DOS
,PROCESS_ESC_F3
95 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
98 .IF < MEM_SIZE
eq 256 >
105 INSERT_DISK SUB_REM_DOS_A
, S_DOS_COM_360
108 ;;;Introduction to 360KB install
109 INIT_PQUEUE PAN_INSTALL_DOS
110 PREPARE_PANEL PAN_START360
111 PREPARE_PANEL PAN_HBAR
119 .IF < I_DEST_DRIVE
eq E_DEST_DRIVE_A
> near
121 ;;;diskcopy INSTALL diskette to WORKING1
122 DISKCOPY_TO DSKCPY_TO_A_360
,NO_SOURCE1
,S_DOS_COM_360
123 DISKCOPY_PANELS SUB_REM_DOS_A
,SUB_COPYING
,SUB_INS_WORK1_S360
125 INIT_VAR N_DSKCPY_ERR
,E_DSKCPY_OK
127 EXEC_PROGRAM S_DISKCOPY
,S_DISKCOPY_PARM
,PARM_BLOCK
,EXEC_NO_DIR
132 .UNTIL
< N_DSKCPY_ERR ne E_DSKCPY_RETRY
>
133 ERASE_FILE S_AUTOEX_C
134 ERASE_FILE S_CONSYS_C
135 ERASE_FILE S_SELCOM_C
136 ERASE_FILE S_SELHLP_C
137 ERASE_FILE S_SELPRT_C
139 ;;;diskcopy OPERATING1 diskette to WORKING2
140 DISKCOPY_TO DSKCPY_TO_A_360
,SOURCE1
,S_DOS_UTIL1_DISK
141 DISKCOPY_PANELS SUB_REM_SELECT_360
,SUB_COPYING
,SUB_INS_WORK2_S360
143 INIT_VAR N_DSKCPY_ERR
,E_DSKCPY_OK
145 EXEC_PROGRAM S_DISKCOPY
,S_DISKCOPY_PARM
,PARM_BLOCK
,EXEC_NO_DIR
151 .LEAVE < N_DSKCPY_ERR ne E_DSKCPY_RETRY
>
152 INSERT_DISK SUB_REM_DOS_A
, S_DOS_COM_360
155 ;;;diskcopy OPERATING 2 diskette to WORKING3
157 INSERT_DISK SUB_REM_DOS_A
, S_DOS_COM_360
158 DISKCOPY_TO DSKCPY_TO_A_360
,NO_SOURCE1
,S_DOS_UTIL2_DISK
159 DISKCOPY_PANELS SUB_INS_OPER2
,SUB_COPYING
,SUB_INS_WORK3_A
160 INIT_VAR N_DSKCPY_ERR
,E_DSKCPY_OK
162 EXEC_PROGRAM S_DISKCOPY
,S_DISKCOPY_PARM
,PARM_BLOCK
,EXEC_NO_DIR
168 .UNTIL
< N_DSKCPY_ERR ne E_DSKCPY_RETRY
> near
170 ;;;diskcopy OPERATING 3 diskette to STARTUP
172 INSERT_DISK SUB_REM_DOS_A
, S_DOS_COM_360
173 DISKCOPY_TO DSKCPY_TO_A_360
,SOURCE1
,S_DOS_UTIL3_DISK
174 DISKCOPY_PANELS SUB_REM_UTIL1_360
,SUB_COPYING
,SUB_INS_STARTT_S360
175 INIT_VAR N_DSKCPY_ERR
,E_DSKCPY_OK
177 EXEC_PROGRAM S_DISKCOPY
,S_DISKCOPY_PARM
,PARM_BLOCK
,EXEC_NO_DIR
183 .UNTIL
< N_DSKCPY_ERR ne E_DSKCPY_RETRY
> near
184 ERASE_FILE S_RECOVER_C
185 ERASE_FILE S_FASTOPEN_C
186 ;;;create config and autoexec files on startup diskette
187 CREATE_CONFIG S_CONSYS_C
, N_RETCODE
191 CREATE_AUTOEXEC S_AUTOEX_C
,E_DEST_DOS
,N_RETCODE
196 .IF < ACTIVE
eq EGA
> or
197 .IF < ALTERNATE
eq EGA
> or
198 .IF < ACTIVE
eq LCD
> or
199 .IF < ALTERNATE
eq LCD
> near
201 .IF < F_VDISK
eq E_VDISK_NO
>
207 .IF < F_ANSI
eq E_ANSI_NO
>
213 .IF < F_APPEND
eq E_APPEND_NO
>
214 ERASE_FILE S_APPEND_C
219 .IF < F_GRAFTABL
eq E_GRAFTABL_NO
> or
220 .IF < F_GRAFTABL
eq E_GRAFTABL_NA
>
221 ERASE_FILE S_GRAFTABL_C
226 .IF < F_GRAPHICS
eq E_GRAPHICS_NO
>
227 ERASE_FILE S_GRAPHICS_C
228 ERASE_FILE S_GRAPHPRO_C
233 ;;;Insert SELECT diskette in drive A:
234 INSERT_DISK SUB_REM_SHELL_360
, S_DOS_SEL_360
236 ;;;copying files from INSTALL diskette screen
237 INIT_PQUEUE PAN_INSTALL_DOS
238 PREPARE_PANEL SUB_COPYING
241 INIT_VAR SOURCE_PANEL
, SUB_REM_SHELL_360
242 INIT_VAR DEST_PANEL
, SUB_INS_STARTT_S360
244 .IF < ACTIVE
eq EGA
> or
245 .IF < ALTERNATE
eq EGA
> near
247 .IF < MEM_SIZE
eq 256 >
250 COPY_FILES2 I_DEST_DRIVE
,COPY_SEL_EGA
,E_SEL_EGA
,S_INSTALL_PATH
252 .IF < MEM_SIZE
eq 256 >
256 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
258 .IF < MEM_SIZE
eq 256 > near
263 COPY_FILES2 I_DEST_DRIVE
,COPY_SEL_LCD
,E_SEL_LCD
,S_INSTALL_PATH
;AC111; copy files to f-disk JW
265 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
270 ;;;diskcopy MS-SHELL diskette to SHELL
271 .if <f_shell
eq e_shell_yes
> near
273 INSERT_DISK SUB_REM_DOS_A
, S_DOS_COM_360
274 DISKCOPY_TO DSKCPY_TO_A_360
,SOURCE1
,S_DOS_SHEL_DISK
275 DISKCOPY_PANELS SUB_INS_MSSHELL_A
,SUB_COPYING
,SUB_INS_SHELL_S360
276 INIT_VAR N_DSKCPY_ERR
,E_DSKCPY_OK
278 EXEC_PROGRAM S_DISKCOPY
,S_DISKCOPY_PARM
,PARM_BLOCK
,EXEC_NO_DIR
284 .UNTIL
< N_DSKCPY_ERR ne E_DSKCPY_RETRY
> near
285 CREATE_SHELL S_SHELL_NEW
, N_RETCODE
293 ;;;diskcopy INSTALL diskette to WORKING 1
294 DISKCOPY_TO DSKCPY_TO_B
,SOURCE1
,S_DOS_COM_360
295 DISKCOPY_PANELS SUB_INS_WORK1_360
,SUB_COPYING
,NOPANEL
297 INIT_VAR N_DSKCPY_ERR
,E_DSKCPY_OK
299 EXEC_PROGRAM S_DISKCOPY
,S_DSKCPY_TO_B
,PARM_BLOCK
,EXEC_NO_DIR
305 .UNTIL
< N_DSKCPY_ERR ne E_DSKCPY_RETRY
>
306 ERASE_FILE S_AUTO_NEW_B
307 ERASE_FILE S_CONFIG_NEW_B
308 ERASE_FILE S_SELCOM_NEW_B
309 ERASE_FILE S_SELHLP_NEW_B
310 ERASE_FILE S_SELPRT_NEW_B
312 ;;;diskcopy OPERATING 1 diskette to WORKING 2
313 DISKCOPY_TO DSKCPY_TO_B
,SOURCE1
,S_DOS_UTIL1_DISK
314 DISKCOPY_PANELS SUB_INS_WORK2_360
,SUB_COPYING
,NOPANEL
316 INIT_VAR N_DSKCPY_ERR
,E_DSKCPY_OK
318 EXEC_PROGRAM S_DISKCOPY
,S_DSKCPY_TO_B
,PARM_BLOCK
,EXEC_NO_DIR
324 .LEAVE < N_DSKCPY_ERR ne E_DSKCPY_RETRY
>
325 INSERT_DISK SUB_REM_DOS_A
, S_DOS_COM_360
328 ;;;diskcopy OPERATING 2 diskette to WORKING3
330 INSERT_DISK SUB_REM_DOS_A
, S_DOS_COM_360
331 DISKCOPY_TO DSKCPY_TO_B
,SOURCE1
,S_DOS_UTIL2_DISK
332 DISKCOPY_PANELS SUB_INS_WORK3_360
,SUB_COPYING
,NOPANEL
333 INIT_VAR N_DSKCPY_ERR
,E_DSKCPY_OK
335 EXEC_PROGRAM S_DISKCOPY
,S_DSKCPY_TO_B
,PARM_BLOCK
,EXEC_NO_DIR
341 .UNTIL
< N_DSKCPY_ERR ne E_DSKCPY_RETRY
> near
343 ;;;diskcopy OPERATING 3 diskette to STARTUP
345 INSERT_DISK SUB_REM_DOS_A
, S_DOS_COM_360
346 DISKCOPY_TO DSKCPY_TO_B
,SOURCE1
,S_DOS_UTIL3_DISK
347 DISKCOPY_PANELS SUB_INS_START_360
,SUB_COPYING
,NOPANEL
348 INIT_VAR N_DSKCPY_ERR
,E_DSKCPY_OK
350 EXEC_PROGRAM S_DISKCOPY
,S_DSKCPY_TO_B
,PARM_BLOCK
,EXEC_NO_DIR
356 .UNTIL
< N_DSKCPY_ERR ne E_DSKCPY_RETRY
> near
357 ERASE_FILE S_RECOVER_B
358 ERASE_FILE S_FASTOPEN_B
359 ;;;create config and autoexec files on startup diskette
360 CREATE_CONFIG S_CONFIG_NEW_B
, N_RETCODE
364 CREATE_AUTOEXEC S_AUTO_NEW_B
,E_DEST_DOS
,N_RETCODE
368 .IF < ACTIVE
eq EGA
> or
369 .IF < ALTERNATE
eq EGA
> or
370 .IF < ACTIVE
eq LCD
> or
371 .IF < ALTERNATE
eq LCD
> near
373 .IF < F_VDISK
eq E_VDISK_NO
>
379 .IF < F_ANSI
eq E_ANSI_NO
>
385 .IF < F_APPEND
eq E_APPEND_NO
>
386 ERASE_FILE S_APPEND_B
391 .IF < F_GRAFTABL
eq E_GRAFTABL_NO
> or
392 .IF < F_GRAFTABL
eq E_GRAFTABL_NA
>
393 ERASE_FILE S_GRAFTABL_B
398 .IF < F_GRAPHICS
eq E_GRAPHICS_NO
>
399 ERASE_FILE S_GRAPHICS_B
400 ERASE_FILE S_GRAPHPRO_B
405 ;;;Insert SELECT diskette in drive A:
406 INSERT_DISK SUB_INS_INSTALL_360
, S_DOS_SEL_360
407 ;;;copying files from INSTALL diskette screen
408 INIT_PQUEUE PAN_INSTALL_DOS
409 PREPARE_PANEL SUB_COPYING
411 .IF < ACTIVE
eq EGA
> or
412 .IF < ALTERNATE
eq EGA
> near
413 .IF < MEM_SIZE
eq 256 >
416 COPY_FILES2 I_DEST_DRIVE
,COPY_SEL_EGA
,E_SEL_EGA
,S_INSTALL_PATH
;AC111; copy files to f-disk JW
418 .IF < MEM_SIZE
eq 256 >
422 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
424 .IF < MEM_SIZE
eq 256 >
428 .ELSEIF
< ACTIVE
eq LCD
> or
429 .IF < ALTERNATE
eq LCD
>
430 COPY_FILES2 I_DEST_DRIVE
,COPY_SEL_LCD
,E_SEL_LCD
,S_INSTALL_PATH
;AC111; copy files to f-disk JW
432 HANDLE_ERROR ERR_COPY_DISK
, E_RETURN
437 .if <f_shell
eq e_shell_yes
> near
438 ;;;diskcopy MS-SHELL to SHELL
440 INSERT_DISK SUB_REM_DOS_A
, S_DOS_COM_360
441 DISKCOPY_TO DSKCPY_TO_B
,SOURCE1
,S_DOS_SHEL_DISK
442 DISKCOPY_PANELS SUB_INS_SHELL_DISKS
,SUB_COPYING
,NOPANEL
443 INIT_VAR N_DSKCPY_ERR
,E_DSKCPY_OK
445 EXEC_PROGRAM S_DISKCOPY
,S_DSKCPY_TO_B
,PARM_BLOCK
,EXEC_NO_DIR
451 .UNTIL
< N_DSKCPY_ERR ne E_DSKCPY_RETRY
> near
452 CREATE_SHELL S_SHELL_NEW_B
, N_RETCODE
456 .endif
; copy to shell
460 ;;;installation complete and change diskettes screen
461 INIT_PQUEUE PAN_COMPLETE3
462 PREPARE_PANEL SUB_COMP_KYS_3
465 GET_FUNCTION FK_REBOOT
467 ;;;;;;;;control will not return here. user has to reboot;;;;;;;;; end of install to 1.2M or 1.44M drive
468 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
469 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
471 ; Process the ESC/F3 keys.
473 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
475 .IF < N_USER_FUNC
eq E_ESCAPE
>
481 .IF < I_DEST_DRIVE
eq E_DEST_DRIVE_C
> and
482 .IF < N_HOUSE_CLEAN
eq E_CLEAN_YES
>
483 ERASE_FILE S_AUTO_NEW
484 ERASE_FILE S_CONFIG_NEW
485 ERASE_FILE S_SHELL_NEW
486 ERASE_FILE S_SELECT_TMP
487 CHANGE_AUTOEXEC S_AUTO_REBOOT
, S_AUTO_MENU
494 .IF < DSKCPY_ERR ne DSKCPY_EXIT
>
495 HANDLE_ERROR ERR_EXIT
, E_QUIT
511 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
515 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;