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