5 TITLE SELECT
- DOS
- SELECT
.EXE
;AN000;
6 SUBTTL SELECT3
.asm
;AN000;
8 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
10 ; SELECT3.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 ; The following screens are contained in this module:
27 ; - External diskette parameters
28 ; - Review selection choice
29 ; - Review selections for fixed disk
30 ; - Review selections for diskette
33 ; ;AN001; GHG changes for 0 Parallel/Serial printer ports
35 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
36 DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; Dummy DATA Seg
37 EXTRN SEG_LOC
:WORD ;AN000;
38 EXTRN NAMES_OFF
:WORD ;AN000;
39 EXTRN N_PRN_NAMES
:WORD ;AN000;
40 EXTRN MAX_NAME
:WORD ;AN000;
41 EXTRN SIZE_NAMES
:ABS
;AN000;
43 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
46 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
48 INCLUDE PANEL
.MAC
;AN000;
49 INCLUDE SELECT
.INC ;AN000;
50 INCLUDE PAN
-LIST
.INC ;AN000;
51 INCLUDE CASTRUC
.INC ;AN000;
52 INCLUDE STRUC.INC ;AN000;
53 INCLUDE MACROS
.INC ;AN000;
54 INCLUDE EXT
.INC ;AN000;
55 INCLUDE VARSTRUC
.INC ;AN000;
56 INCLUDE ROUT_EXT
.INC ;AN000;
58 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
60 ; Continuation of code ...
62 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
63 SELECT
SEGMENT PARA
PUBLIC 'SELECT' ;AN000;
64 ASSUME
CS:SELECT
,DS:DATA ;AN000;
66 INCLUDE CASEXTRN
.INC ;AN000;
68 EXTRN EXIT_SELECT
:NEAR ;AN000;
69 EXTRN INSTALL_ERROR
:NEAR ;AN000;
70 EXTRN PROCESS_ESC_F3
:NEAR ;AN000;
71 EXTRN DOS_PARAMETERS_SCREEN
:NEAR ;AN000;
72 EXTRN EXIT_DOS
:NEAR ;AN000;
73 EXTRN FIRST_DISK_SCREEN
:NEAR ;AN000;
74 PUBLIC choose_shell_screen
;AC020; SEH
75 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
77 ; ������������������������������������Ŀ
78 ; �choose_shell_screen �
80 ; ��������������������������������������
82 ; The CHOOSE SHELL SCREEN is always presented.
83 ; This screen allows the user to decide whether or not the DOS
84 ; shell will be installed.
85 ; Valid keys are ENTER, ESC, F1, F3 and numeric 1 and 2.
87 ; Note: This screen (and, hence, all shell support) can be eradicated
88 ; by defining the symbol NOSHELL.
89 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
90 choose_shell_screen: ;AN000;
92 INIT_PQUEUE PAN_choose_shell
;AN000; initialize queue
93 PREPARE_PANEL PAN_HBAR
;AN000; prepare horizontal bar
94 PREPARE_CHILDREN
;AN000; prepare child panels
95 INIT_SCROLL SCR_choose_shell
, f_shell
;AN000;
96 DISPLAY_PANEL
;AN000; display CHOOSE SHELL SCREEN
98 GET_SCROLL SCR_choose_shell
, f_shell
, FK_SCROLL
;AN000; get new shell option
100 .IF < N_USER_FUNC
eq E_ENTER
> ;AN000; if user entered ENTER key
102 COPY_WORD f_shell
, I_USER_INDEX
;AN000; save new shell option
103 PUSH_HEADING choose_shell_screen
;AN000; save address on SELECT STACK
104 GOTO REVIEW_SELECTION_SCREEN
;AN000; goto the next screen (REVIEW_SELECTION)
106 GOTO PROCESS_ESC_F3
;AN000; user entered ESC or F3, take action
109 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
111 ; ������������������������������������Ŀ
112 ; �REVIEW_SELECTION_SCREEN �
114 ; ��������������������������������������
116 ; The REVIEW SELECTION SCREEN is always presented.
117 ; The screen asks the user if SELECT generated choices are to be presented.
118 ; Valid keys are ENTER, ESC, F1, F3 and numeric 1 and 2.
119 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
120 REVIEW_SELECTION_SCREEN: ;AN000;
121 INIT_PQUEUE PAN_REVIEW
;AN000; initialize queue
122 PREPARE_PANEL PAN_HBAR
;AN000; prepare horizontal bar
123 PREPARE_CHILDREN
;AN000; prepare child panels
124 INIT_SCROLL SCR_REVIEW
, F_REVIEW
;AN000;
125 DISPLAY_PANEL
;AN000; display REVIEW SELECTION SCREEN
127 GET_SCROLL SCR_REVIEW
, F_REVIEW
, FK_SCROLL
;AN000; get new review option
129 .IF < N_USER_FUNC
eq E_ENTER
> ;AN000; if user entered ENTER key
131 COPY_WORD F_REVIEW
, I_USER_INDEX
;AN000; save new review option
132 PUSH_HEADING REVIEW_SELECTION_SCREEN
;AN000; save address on SELECT STACK
133 GOTO REVIEW_DISK_SCREEN
;AN000; goto the next screen (REVIEW_FUNCTIONS)
135 GOTO PROCESS_ESC_F3
;AN000; user entered ESC or F3, take action
137 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
139 ; ������������������������������������Ŀ
140 ; �REVIEW_DISK_SCREEN �
142 ; ��������������������������������������
144 ; The REVIEW SELECT DOS FUNCTIONS SELECTION SCREEN is presented if
145 ; the user selected to view/change the selections generated by
146 ; SELECT ( F_REVIEW = 2 )
147 ; The screen asks the user to select functions required from the
148 ; displayed list. Functions are Code Page Switching, Expanded Memory Support,
149 ; ANSI.SYS support, FASTOPEN support, GRAFTABL support, GRAPHICS support,
150 ; SHARE support, and VDISK support.
151 ; There are two versions of this screen. The screen version displayed
152 ; will depend on whether the install destination is drive B:/A: or drive C:.
153 ; This screen version will be presented if install destination is drive C:.
154 ; The screen lists the parameters for which selections have been made by
155 ; SELECT. The user may accept these choices (yes/no)
156 ; or change them by cursoring to the parameter and pressing the SPACE key.
157 ; The SPACE key will toggle the choice for the selected parameter.
158 ; The cursor key is used to move to the next item on the parameter list.
159 ; If the cursor is on the last item in the parameter list, cursor down key
160 ; will cause the cursor to wrap around to the first item of the parameter list.
161 ; If the cursor is on the first item in the parameter list, cursor up key
162 ; will cause the cursor to wrap around to the last item of the parameter list.
163 ; When the SPACE key is depressed, the current parameter value is saved in
164 ; a temporary location. The temporary parameter values are copied to actual
165 ; values only when the ENTER key is depressed.
166 ; Valid keys are ENTER, ESC, F1, F3, SPACE, cursor up and cursor down.
167 ; If a parameter is not supported due to the hardware environment, the
168 ; choice presented to the user will be NO but internally will be stored as N/A.
169 ; a N/A choice would not be toggled by the user and a beep would be issued
171 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
172 REVIEW_DISK_SCREEN: ;AN000;
173 .IF < F_REVIEW
eq E_REVIEW_ACCEPT
> ;AN000; if accept SELECT generated commands
175 GOTO FIRST_DISK_SCREEN
;AN000; skip related screens
178 .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C
> ;AC000; if install to drive B: or A: JW
180 GOTO REVIEW_DISKETTE_SCREEN
;AN000; goto disket functions screen
183 INIT_PQUEUE PAN_FUNC_DISK
;AN000; initialize queue
184 PREPARE_PANEL PAN_HBAR
;AN000; prepare horizontal bar
185 PREPARE_CHILDREN
;AN000; prepare child panels
186 INIT_SCROLL SCR_FUNC_DISK
, 0 ;AN000;
187 INIT_SUPPORT SUPPORT_STATUS
,E_CPSW_C
, F_CPSW
;AN000; cpsw support
188 INIT_SUPPORT SUPPORT_STATUS
, E_XMA_C
, F_XMA
;AN000; expanded memory support
189 INIT_SUPPORT SUPPORT_STATUS
,E_ANSI_C
, F_ANSI
;AN000; ANSI.SYS support
190 INIT_SUPPORT SUPPORT_STATUS
,E_FASTOPEN_C
,F_FASTOPEN
;AN000; FASTOPEN support
191 INIT_SUPPORT SUPPORT_STATUS
,E_GRAFTABL_C
,F_GRAFTABL
;AN000; GRAFTABL support
192 INIT_SUPPORT SUPPORT_STATUS
,E_GRAPHICS_C
,F_GRAPHICS
;AN000; GRAPHICS support
193 INIT_SUPPORT SUPPORT_STATUS
,E_SHARE_C
,F_SHARE
;AN000; SHARE support
194 INIT_SUPPORT SUPPORT_STATUS
,E_SHELL_C
,F_SHELL
;AN000; SHELL support
195 INIT_SUPPORT SUPPORT_STATUS
,E_VDISK_C
,F_VDISK
;AN000; VDISK support
196 INIT_SCROLL_STATUS SCR_FUNC_DISK
,SUPPORT_STATUS
;AN000;
197 DISPLAY_PANEL
;AN000; display functions list screen
199 INIT_VAR I_USER_INDEX
, 1 ;AN000; set counter = 1
201 .REPEAT ;AN000; repeat code block
203 GET_SCROLL SCR_FUNC_DISK
,I_USER_INDEX
,FK_REVIEW
;AN000; get new value
205 .IF < N_USER_FUNC
eq E_SPACE
> ;AN000; if user entered TAB
207 TOGGLE_SUPPORT SUPPORT_STATUS
, I_USER_INDEX
;AN000; toggle support of parameter
209 .LEAVE ;AN000; break from repeat loop
212 .UNTIL
;AN000; end of repeat loop
214 .IF < N_USER_FUNC
eq E_ENTER
> near ;AN000; if user entered ENTER key
215 .THEN
;AN000; get revised values for
216 RET_SUPPORT SUPPORT_STATUS
,E_CPSW_C
, F_CPSW
;AN000; cpsw support
217 RET_SUPPORT SUPPORT_STATUS
, E_XMA_C
, F_XMA
;AN000; expanded memory support
218 RET_SUPPORT SUPPORT_STATUS
,E_ANSI_C
, F_ANSI
;AN000; ANSI.SYS support
219 RET_SUPPORT SUPPORT_STATUS
,E_FASTOPEN_C
,F_FASTOPEN
;AN000; FASTOPEN support
220 RET_SUPPORT SUPPORT_STATUS
,E_GRAFTABL_C
,F_GRAFTABL
;AN000; GRAFTABL support
221 RET_SUPPORT SUPPORT_STATUS
,E_GRAPHICS_C
,F_GRAPHICS
;AN000; GRAPHICS support
222 RET_SUPPORT SUPPORT_STATUS
,E_SHARE_C
,F_SHARE
;AN000; SHARE support
223 RET_SUPPORT SUPPORT_STATUS
,E_SHELL_C
,F_SHELL
;AN000; SHELL support
224 RET_SUPPORT SUPPORT_STATUS
,E_VDISK_C
,F_VDISK
;AN000; VDISK support
225 PUSH_HEADING REVIEW_DISK_SCREEN
;AN000; save screen address on SELECT STACK
226 GOTO DOS_PARAMETERS_SCREEN
;AN000; goto the next screen (DOS_PARAMETERS)
228 GOTO PROCESS_ESC_F3
;AN000; user entered ESCAPE or F3, take action
230 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
232 ; ������������������������������������Ŀ
233 ; �REVIEW_DISKETTE_SCREEN �
235 ; ��������������������������������������
237 ; The REVIEW SELECT DOS FUNCTIONS SELECTION SCREEN is presented if
238 ; the user selected to view/change the selections generated by
239 ; SELECT ( F_REVIEW = 2 )
240 ; This screen version will be presented if install destination is drive A:/B:
241 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
242 REVIEW_DISKETTE_SCREEN: ;AN000;
243 INIT_PQUEUE PAN_FUNC_DISKET
;AN000; initialize queue
244 PREPARE_PANEL PAN_HBAR
;AN000; prepare horizontal bar
245 PREPARE_CHILDREN
;AN000; prepare child panels
246 INIT_SCROLL SCR_FUNC_DISKET
, 0 ;AN000;
247 INIT_SUPPORT SUPPORT_STATUS
,E_CPSW_B
, F_CPSW
;AN000; cpsw support
248 INIT_SUPPORT SUPPORT_STATUS
,E_ANSI_B
, F_ANSI
;AN000; ANSI.SYS support
249 INIT_SUPPORT SUPPORT_STATUS
,E_GRAFTABL_B
,F_GRAFTABL
;AN000; GRAFTABL support
250 INIT_SUPPORT SUPPORT_STATUS
,E_GRAPHICS_B
,F_GRAPHICS
;AN000; GRAPHICS support
251 INIT_SUPPORT SUPPORT_STATUS
,E_SHELL_B
,F_SHELL
;AN000; SHELL support
252 INIT_SUPPORT SUPPORT_STATUS
,E_VDISK_B
,F_VDISK
;AN000; VDISK support
253 INIT_SCROLL_STATUS SCR_FUNC_DISKET
, SUPPORT_STATUS
;AN000;
254 DISPLAY_PANEL
;AN000; display functions list screen
256 INIT_VAR I_USER_INDEX
, 1 ;AN000; set counter = 1
258 .REPEAT ;AN000; repeat code block
260 GET_SCROLL SCR_FUNC_DISKET
,I_USER_INDEX
,FK_REVIEW
;AN000; get new value
262 .IF < N_USER_FUNC
eq E_SPACE
> ;AN000; if user entered TAB
264 TOGGLE_SUPPORT SUPPORT_STATUS
, I_USER_INDEX
;AN000; toggle support of parameter
267 .ENDIF
;AN000; break from loop
269 .UNTIL
;AN000; end of repeat block
271 .IF < N_USER_FUNC
eq E_ENTER
> near ;AN000; if user entered ENTER key
272 .THEN
;AN000; get revised values
273 RET_SUPPORT SUPPORT_STATUS
,E_CPSW_B
, F_CPSW
;AN000; cpsw support
274 RET_SUPPORT SUPPORT_STATUS
,E_ANSI_B
, F_ANSI
;AN000; ANSI.SYS support
275 RET_SUPPORT SUPPORT_STATUS
,E_GRAFTABL_B
,F_GRAFTABL
;AN000; GRAFTABL support
276 RET_SUPPORT SUPPORT_STATUS
,E_GRAPHICS_B
,F_GRAPHICS
;AN000; GRAPHICS support
277 RET_SUPPORT SUPPORT_STATUS
,E_SHELL_B
,F_SHELL
;AN000; SHELL support
278 RET_SUPPORT SUPPORT_STATUS
,E_VDISK_B
,F_VDISK
;AN000; VDISK support
279 PUSH_HEADING REVIEW_DISKETTE_SCREEN
;AN000; save screen address onto SELECT STACK
280 GOTO DOS_PARAMETERS_SCREEN
;AN000; goto the next screen (DOS_PARAMETERS)
282 GOTO PROCESS_ESC_F3
;AN000; user entered ESC or E3, take action
284 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;