5 TITLE SELECT
- DOS
- SELECT
.EXE
;AN000;
6 SUBTTL SELECT2
.asm
;AN000;
8 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
10 ; SELECT2.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 :
27 ; - Program/Memory workspace screen
28 ; - Predefined country/keyboard screen
31 ; - Alternate Keyboard screen
32 ; - Load the specified keyboard
33 ; - Install drive screen
34 ; - DOS location screen
39 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
40 DATA SEGMENT BYTE PUBLIC 'DATA' ;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;
56 PUBLIC WORKSPACE_SCREEN
;AN000;
57 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
60 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
61 SELECT
SEGMENT PARA
PUBLIC 'SELECT' ;AN000;
62 ASSUME
CS:SELECT
,DS:DATA ;AN000;
64 INCLUDE CASEXTRN
.INC ;AN000;
66 EXTRN EXIT_DOS
:NEAR ;AN000;
67 EXTRN EXIT_SELECT
:NEAR ;AN000;
68 EXTRN PROCESS_ESC_F3
:NEAR ;AN000;
69 EXTRN INTRO_SCREEN
:NEAR ;AN000;
70 EXTRN DOS_LOC_SCREEN
:NEAR ;AN000;
71 EXTRN DEALLOCATE_MEMORY_CALL
:FAR ;AN000;DT
72 EXTRN GET_OVERLAY
:NEAR ;AN000;DT
73 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
75 ; ������������������������������������Ŀ
78 ; ��������������������������������������
80 ; The User Function and Memory Workspace Needs Screen is always presented.
81 ; The screen allows the user to define the memory requirements for
82 ; the install process. Default values for DOS commands will be assigned based
84 ; Valid keys are ENTER, ESC, F1, cursor up/down and numeric 1 to 3.
86 ; All values are re-initialized the second time round only if the new option
87 ; is different from the previously selected option.
89 ; �����������������������������������������������������������������Ŀ
90 ; � � I_WORKSPACE=1 � I_WORKSPACE=2 � I_WORKSPACE=3 �
91 ; �����������������������������������������������������������������Ĵ
92 ; � P_BREAK � 'ON' � 'ON' � 'ON' �
93 ; � P_BUFFERS � ' ' � '20' � '50,4' �
94 ; � P_CPSW � 'OFF' � 'OFF' � 'OFF' �
95 ; � F_CPSW � no � no � no �
96 ; � P_FCBS � ' ' � ' ' � '20,8' �
97 ; � P_FILES � '8' � '20' � '20' �
98 ; � P_LASTDRIVE � 'E' � 'E' � 'E' �
99 ; � P_STACKS � ' ' � ' ' � ' ' �
100 ; � P_VERIFY � 'OFF' � 'OFF' � 'OFF' �
101 ; � P_PROMPT � '$P$G' � '$P$G' � '$P$G' �
102 ; � F_PROMPT � no � no � no �
103 ; � P_PATH � ' ' � ' ' � ' ' �
104 ; � F_PATH � no � no � no �
105 ; � P_APPEND � ' ' � ' ' � ' ' �
106 ; � F_APPEND � no � no � no �
107 ; � P_ANSI � ' ' � ' ' � '/X' �
108 ; � F_ANSI � no � yes � yes �
109 ; � P_FASTOPEN � ' ' � 'C:=(50,25)' � 'C:=(100,200)'�
110 ; � F_FASTOPEN � no � yes � yes �
111 ; � F_GRAFTABL � no � no � no �
112 ; � P_GRAPHICS � ' ' � ' ' � ' ' �
113 ; � F_GRAPHICS � no � yes � yes �
114 ; � P_SHARE � ' ' � ' ' � ' ' �
115 ; � F_SHARE � no � no � no �
116 ; � P_SHELL � '/R' � '/R' � '/R' �
117 ; � F_SHELL � yes � yes � yes �
118 ; � P_VDISK � ' ' � ' ' � ' ' �
119 ; � F_VDISK � no � no � no �
120 ; � P_XMAEM � ' ' � ' ' � ' ' �
121 ; � DOS_LOC � 'DOS' � 'DOS' � 'DOS' �
122 ; � F_XMA � yes � yes � yes �
123 ; � P_XMA2EMS � 'FRAME=D000 P254=C800 P255=CC00' for all options�
124 ; �������������������������������������������������������������������
125 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
126 WORKSPACE_SCREEN: ;AN000;
127 INIT_PQUEUE PAN_WORKSPACE
;AN000; initialize queue
128 PREPARE_PANEL PAN_HBAR
;AN000; prepare horizontal bar
129 PREPARE_CHILDREN
;AN000; prepare child panels
130 INIT_SCROLL SCR_DOS_SUPPORT
,I_WORKSPACE
;AN000;
131 DISPLAY_PANEL
;AN000; display WORKSPACE panel
133 GET_SCROLL SCR_DOS_SUPPORT
,I_WORKSPACE
,FK_SCROLL
;AN000; get user entered option
134 .IF < N_USER_FUNC
eq E_F3
> ;AN027;SEH Added to prevent going to Intro Screen
135 GOTO EXIT_DOS
;AN027;SEH when F3 hit
136 .ELSEIF
< N_USER_FUNC
eq E_ENTER
> near ;AN000; if user entered ENTER key
138 PUSH_HEADING WORKSPACE_SCREEN
;AN000; save screen address on SELECT STACK
139 COMP_WORDS N_WORK_PREV
, I_USER_INDEX
;AN000; compare previous and new options
140 .IF nz
near ;AN000; if new option is different
142 COPY_WORD I_WORKSPACE
, I_USER_INDEX
;AN000; set current option = new option
143 COPY_WORD N_WORK_PREV
, I_USER_INDEX
;AN000; set previous option = new option
147 .WHEN
< I_WORKSPACE
eq E_WORKSPACE_MIN
> near ;AN000; option = minimize DOS functions
148 INIT_VAR_MINIMIZE
;AN000; initialize variables
150 .WHEN
< I_WORKSPACE
eq E_WORKSPACE_BAL
> near ;AN000; option = balance DOS functions
151 INIT_VAR_BALANCE
;AN000; initialize variables
153 .OTHERWISE
;AN000; option = maximize DOS functions
154 INIT_VAR_MAXIMIZE
;AN000; initialize variables
159 GOTO CTY_KYBD_SCREEN
;AN000; goto the next screen (CTY-KYBD)
161 GOTO INTRO_SCREEN
;AN001;GHG; user entered ENTER or ESC, take action
163 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
165 ; ������������������������������������Ŀ
168 ; ��������������������������������������
170 ; The COUNTRY and KEYBOARD support screen is always presented.
171 ; The screen allows the user to choose the pre-defined country and
172 ; keyboard displayed or to select a country specific support.
173 ; When the screen is presented for the first time, the pre-defined
174 ; country is the country code in the CONFIG.SYS file obtained by a DOS call.
175 ; The pre-defined keyboard is the
176 ; default keyboard associated with the pre-defined country. If there is no
177 ; valid keyboard association, "None" is displayed. Subsequent presentation of
178 ; this screen will display the user selected support.
179 ; Two keyboards are associated with the Swiss country code; French and
180 ; German. The keyboard code to be used will be identified during translation
181 ; and will be saved in the form of a panel.
182 ; Valid keys are ENTER, ESC, F1, F3, cursor up/down, numeric 1 to 2.
183 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
184 CTY_KYBD_SCREEN: ;AN000;
185 COPY_WORD N_WORD_1
, I_COUNTRY
;AN000; scroll list item = country index
186 .IF < N_CTY_LIST
eq E_CTY_LIST_2
> ;AN000; if country list = 2
188 ADD_WORD N_WORD_1
, CTY_A_ITEMS
;AN000; add items in list 1
191 .IF < N_KYBD_ALT
eq E_KYBD_ALT_NO
> near ;AN000; if no alt kyb id
193 COPY_WORD N_WORD_2
, I_KEYBOARD
;AN000; scroll list item = keyboard index
194 .IF < N_KYBD_LIST
eq E_KYBD_LIST_2
> ;AN000; if kybd list = 2
196 ADD_WORD N_WORD_2
, KYBD_A_ITEMS
;AN000; add items in list 1
200 INIT_VAR N_WORD_2
, KYBD_A_ITEMS
;AN000; scroll list item = items in list 1
201 ADD_WORD N_WORD_2
, KYBD_B_ITEMS
;AN000; + items in list 2
202 ADD_WORD N_WORD_2
, 1 ;AN000; + 1st item in French alt kybd
203 .IF < ALT_KYB_ID gt ALT_FRENCH
> ;AN000; if alt kybd id > French
205 ADD_WORD N_WORD_2
, ALT_FR_ITEMS
;AN000; add items in French alt kybd to list
207 .IF < ALT_KYB_ID gt ALT_ITALIAN
> ;AN000;GHG if alt kybd id > Italian
209 ADD_WORD N_WORD_2
, ALT_IT_ITEMS
;AN000; add items in Italian alt kybd to list
212 DEC N_WORD_2
;AN090;GHG These two lines were moved inside the
213 ADD_WORD N_WORD_2
, I_KYBD_ALT
;AN090;GHG ELSE clause.
218 INIT_PQUEUE PAN_CTY_KYB
;AN000; initialize queue
219 PREPARE_PANEL PAN_HBAR
;AN000; prepare horizontal bar
220 PREPARE_CHILDREN
;AN000; prepare child panels
221 INIT_SCROLL SCR_ACC_CTY
, N_WORD_1
;AN000; display current country
222 INIT_SCROLL SCR_ACC_KYB
, N_WORD_2
;AN000; display current keyboard
223 INIT_SCROLL SCR_CTY_KYB
, I_CTY_KYBD
;AN000;
224 DISPLAY_PANEL
;AN000; display screen
226 GET_SCROLL SCR_CTY_KYB
,I_CTY_KYBD
,FK_SCROLL
;AN000; get new option
228 .IF < N_USER_FUNC
eq E_ENTER
> ;AN000; if user entered ENTER key
230 COPY_WORD I_CTY_KYBD
, I_USER_INDEX
;AN000; save new option
231 PUSH_HEADING CTY_KYBD_SCREEN
;AN000; save screen address on SELECT STACK
232 GOTO COUNTRY_SCREEN
;AN000; goto the next screen (COUNTRY)
234 GOTO PROCESS_ESC_F3
;AN000; user entered ESC or F3, take action
236 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
238 ; ������������������������������������Ŀ
241 ; ��������������������������������������
243 ; The COUNTRY CODE screen is presented if the user selected to define
244 ; country specific support (CTY_KYBD_SCREEN).
245 ; When this screen is presented for the first time, the current
246 ; country obtained from DOS will be highlighted. Subsequent presentations
247 ; of this screen will highlight the user selected country.
248 ; Code Page to be used will be determined by the selected country code.
249 ; Valid keys are ENTER, ESC, F1, F3, cursor up/down.
250 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
251 COUNTRY_SCREEN: ;AN000;
252 .IF < I_CTY_KYBD
eq E_CTY_KB_PREDEF
> ;AN000; if accept pre-defined support
254 GOTO LOAD_KEYBOARD
;AN000; goto load specified kybd id
257 INIT_PQUEUE PAN_COUNTRY
;AN000; initialize queue
258 PREPARE_PANEL PAN_HBAR
;AN000; prepare horizontal bar
259 PREPARE_CHILDREN
;AN000; prepare child panels
260 INIT_SCROLL SCR_CTY_1
, 0 ;AN000; init 1st scroll list
261 INIT_SCROLL SCR_CTY_2
, 0 ;AN000; init 2nd scroll list
262 DISPLAY_PANEL
;AN000; display COUNTRY panel
264 .IF < N_CTY_LIST
eq E_CTY_LIST_1
> ;AN000; if country is in list 1
266 GET_SCROLL SCR_CTY_1
,I_COUNTRY
, FK_SCROLL
;AN000; highlight country in list 1 & get new choice
268 GET_SCROLL SCR_CTY_2
, I_COUNTRY
, FK_SCROLL
;AN000; highlight country in list 2 & get new choice
271 .REPEAT ;AN000; repeat code block: CASS cannot do this automatically
272 .IF < N_USER_FUNC
eq UPARROW
> near ;AN000; if user entered cursor up
274 .IF < N_CTY_LIST
eq E_CTY_LIST_1
> near ;AN000; if country list = 1
276 INIT_VAR N_CTY_LIST
, E_CTY_LIST_2
;AN000; set country list = 2
277 GET_SCROLL SCR_CTY_2
,CTY_B_ITEMS
,FK_SCROLL
;AN000; point to last item in list 2
278 .ELSE near ;AN000; else
279 INIT_VAR N_CTY_LIST
, E_CTY_LIST_1
;AN000; set country list = 1
280 GET_SCROLL SCR_CTY_1
,CTY_A_ITEMS
,FK_SCROLL
;AN000; point to last item in list 1
282 .ELSEIF
< N_USER_FUNC
EQ DNARROW
> near ;AN000; else if user entered cursor down
284 .IF < N_CTY_LIST
eq E_CTY_LIST_1
> near ;AN000; if country list = 1
286 INIT_VAR N_CTY_LIST
, E_CTY_LIST_2
;AN000; set country list = 2
287 GET_SCROLL SCR_CTY_2
, 1, FK_SCROLL
;AN000; point to 1st item in list 2
288 .ELSE near ;AN000; else
289 INIT_VAR N_CTY_LIST
, E_CTY_LIST_1
;AN000; set country list = 1
290 GET_SCROLL SCR_CTY_1
, 1, FK_SCROLL
;AN000; point to 1st item in list 1
292 .ELSE near ;AN000; else
293 .LEAVE ;AN000; break away from repeat loop
295 .UNTIL
;AN000; end of repeat block
297 .IF < N_USER_FUNC
eq E_ENTER
> near ;AN000; if user entered ENTER key
299 COPY_WORD I_COUNTRY
, I_USER_INDEX
;AN000; save new country
300 PUSH_HEADING COUNTRY_SCREEN
;AN000; save screen address on SELECT STACK
301 GET_COUNTRY_DEFAULTS N_CTY_LIST
, I_COUNTRY
;AN000; get country default parameters
302 .IF < N_DISPLAY
eq E_CPSW_DISP
> ;AN000;
304 .IF < N_CPSW
eq E_CPSW_NOT_VAL
> ;AN000; if cpsw not valid
306 INIT_VAR F_CPSW
, E_CPSW_NA
;AN000; set cpsw = not available
307 .ELSEIF
< N_CPSW
eq E_CPSW_NOT_REC
> ;AN000; else if cpsw not recommended
309 INIT_VAR F_CPSW
, E_CPSW_NO
;AN000; set cpsw = no
311 INIT_VAR F_CPSW
, E_CPSW_YES
;AN000; set cpsw = yes
314 INIT_VAR F_CPSW
, E_CPSW_NA
;AN000;
317 ;;; get keyboard from input field if country = Swiss ;
318 COMPARE_STRINGS S_KEYBOARD
,S_SWISS
;AN000;GHG is default KB=SF?
321 RETURN_STRING STR_SWISS_KEYB
,S_KEYBOARD
,M_KEYBOARD
+2;AN000;GHG
324 GET_KEYBOARD_INDEX S_KEYBOARD
,N_KYBD_LIST
,I_KEYBOARD
,N_KYBD_ALT
;AN000; get index into keyboard tables
325 GOTO KEYBOARD_SCREEN
;AN000; goto the next screen (KEYBOARD)
327 GOTO PROCESS_ESC_F3
;AN000; user entered ESC or F3, action
329 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
331 ; ������������������������������������Ŀ
334 ; ��������������������������������������
335 ; The KEYBOARD CODE screen is presented if the user had selected to
336 ; define country specific support and the country code selected has a valid
337 ; keyboard code association.
338 ; The keyboard code associated with the selected country code will be
340 ; For keyboards that have more than one valid keyboard code, a second
341 ; level keyboard code screen will be presented to the user.
342 ; Valid keys are ENTER, ESC, F1, F3, cursor up/down.
344 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
345 KEYBOARD_SCREEN: ;AN000;
346 .IF < N_KYB_LOAD
eq E_KYB_LOAD_ERR
> ;AN000; if KEYB load status is error
348 INIT_VAR N_KYB_LOAD
, E_KYB_LOAD_UND
;AN000; set KEYB loaded status = undefined
349 POP_HEADING
;AN000; goto previous screen
352 .IF < N_KYBD_VAL
eq E_KYBD_VAL_NO
> ;AN000; if keyboard id not valid
354 GOTO LOAD_KEYBOARD
;AN000; goto load specified kybd id
357 INIT_PQUEUE PAN_KEYBOARD
;AN000; initialize queue
358 PREPARE_PANEL PAN_HBAR
;AN000; prepare horizontal bar
359 PREPARE_CHILDREN
;AN000; prepare child panels
360 INIT_SCROLL SCR_KYB_1
, 0 ;AN000; init 1st scroll list
361 INIT_SCROLL SCR_KYB_2
, 0 ;AN000; init 2nd scroll list
362 DISPLAY_PANEL
;AN000; display KEYBOARD panel
364 .IF < N_KYBD_LIST
eq E_KYBD_LIST_1
> ;AN000; if keyboard is in list 1
366 GET_SCROLL SCR_KYB_1
,I_KEYBOARD
, FK_SCROLL
;AN000; highlight kybd in list 1 & get new choice
368 GET_SCROLL SCR_KYB_2
,I_KEYBOARD
, FK_SCROLL
;AN000; highlight kybd in list 2 & get new choice
371 .REPEAT ;AN000; repeat code block: CASS cannot do this automatically
372 .IF < N_USER_FUNC
eq UPARROW
> near ;AN000; if user entered cursor up
374 .IF < N_KYBD_LIST
eq E_KYBD_LIST_1
> near ;AN000; if kybd list = 1
376 INIT_VAR N_KYBD_LIST
, E_KYBD_LIST_2
;AN000; set kybd list = 2
377 GET_SCROLL SCR_KYB_2
,KYBD_B_ITEMS
,FK_SCROLL
;AN000; point to last item in list 2
378 .ELSE near ;AN000; else
379 INIT_VAR N_KYBD_LIST
, E_KYBD_LIST_1
;AN000; set kybd list = 1
380 GET_SCROLL SCR_KYB_1
,KYBD_A_ITEMS
,FK_SCROLL
;AN000; point to last item in list 1
382 .ELSEIF
< N_USER_FUNC
EQ DNARROW
> near ;AN000; else if user entered cursor down
384 .IF < N_KYBD_LIST
eq E_KYBD_LIST_1
> near ;AN000; if kybd list = 1
386 INIT_VAR N_KYBD_LIST
, E_KYBD_LIST_2
;AN000; set kybd list = 2
387 GET_SCROLL SCR_KYB_2
, 1, FK_SCROLL
;AN000; point to 1st item in list 2
388 .ELSE near ;AN000; else
389 INIT_VAR N_KYBD_LIST
, E_KYBD_LIST_1
;AN000; set kybd list = 1
390 GET_SCROLL SCR_KYB_1
, 1, FK_SCROLL
;AN000; point to 1st item in list 1
392 .ELSE near ;AN000; else
393 .LEAVE ;AN000; break away from repeat loop
395 .UNTIL
;AN000; end of repeat block
397 .IF < N_USER_FUNC
eq E_ENTER
> near ;AN000; if user entered ENTER key
399 COPY_WORD I_KEYBOARD
, I_USER_INDEX
;AN000; save new kybd
400 PUSH_HEADING KEYBOARD_SCREEN
;AN000; save screen address on SELECT STACK
401 GET_KEYBOARD N_KYBD_LIST
,I_KEYBOARD
,S_KEYBOARD
,N_KYBD_ALT
;AN000; get keyboard code
402 GOTO ALT_KYB_SCREEN
;AN000; goto next screen (ALT_KYBD)
404 GOTO PROCESS_ESC_F3
;AN000; user entered ENTER or ESC, take action
406 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
408 ; ������������������������������������Ŀ
411 ; ��������������������������������������
413 ; The ALTERNATE KEYBOARD CODE screen is presented if the selected keyboard
414 ; has different keyboard layouts.
415 ; The screen allows the user to enter the desired keyboard when the
416 ; language supports different keyboard layouts. The following languages
417 ; have different keyboard layouts:
421 ; Valid keys are ENTER, ESC, F1, F3, cursor up/down.
422 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
423 ALT_KYB_SCREEN: ;AN000;
424 .IF < N_KYB_LOAD
eq E_KYB_LOAD_ERR
> ;AN000; if KEYB load status is error
426 POP_HEADING
;AN000; goto previous screen
429 .IF < N_KYBD_ALT
eq E_KYBD_ALT_NO
> ;AN000; if no alternate keyboard
431 GOTO LOAD_KEYBOARD
;AN000; goto load specified kybd id
434 GET_ALT_KYBD_TABLE S_KEYBOARD
, ALT_TAB_PTR
, ALT_KYB_ID
;AN000; get alternate keyboard id
438 .WHEN
< ALT_KYB_ID
eq ALT_FRENCH
> ;AN000; kybd id = French
439 INIT_VAR N_WORD_1
, SCR_FR_KYB
;AN000; set scroll list id = French
441 .WHEN
< ALT_KYB_ID
eq ALT_ITALIAN
> ;AN000; kybd id = Italian
442 INIT_VAR N_WORD_1
, SCR_IT_KYB
;AN000; set scroll list id = Italian
444 .OTHERWISE
;AN000; kybd id = UK English
445 INIT_VAR N_WORD_1
, SCR_UK_KYB
;AN000; set scroll list id = UK English
449 COMP_BYTES ALT_KYB_ID
, ALT_KYB_ID_PREV
;AN000; if current alt kyb id different
452 INIT_VAR I_KYBD_ALT
, 2 ;AN090; set index into list = 1
453 COPY_BYTE ALT_KYB_ID_PREV
, ALT_KYB_ID
;AN000; set prev id = current id
456 INIT_PQUEUE PAN_KYBD_ALT
;AN000; initialize queue
457 PREPARE_PANEL PAN_HBAR
;AN000; prepare horizontal bar
458 PREPARE_CHILDREN
;AN000; prepare child panels
459 INIT_SCROLL N_WORD_1
, 0 ;AN000; init scroll list
460 DISPLAY_PANEL
;AN000; display ALTERNATE keyboard panel
462 GET_SCROLL N_WORD_1
, I_KYBD_ALT
, FK_SCROLL
;AN000; get new alt kyb id
464 .IF < N_USER_FUNC
eq E_ENTER
> ;AN000; if user entered ENTER key
466 COPY_WORD I_KYBD_ALT
, I_USER_INDEX
;AN000; save new alternate keyboard
467 PUSH_HEADING ALT_KYB_SCREEN
;AN000; push screen address on SELECT STACK
468 GET_ALT_KEYBOARD ALT_TAB_PTR
,ALT_KYB_ID
,I_KYBD_ALT
,S_KYBD_ALT
;AN000;get alternate keyboard code
469 GOTO LOAD_KEYBOARD
;AN000; goto load specified kybd id
471 GOTO PROCESS_ESC_F3
;AN000; user entered ESC or F3, take action
473 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
475 ; � � � � � � � � � � � � � � � � � � �
478 ; � This will execute the keyboard �
479 ; program to load the requested
480 ; � keyboard routine. �
481 ; � � � � � � � � � � � � � � � � � � �
483 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
484 LOAD_KEYBOARD: ;AN000;
485 .IF < N_KYBD_LIST
eq E_KYBD_LIST_2
> and ;AN000; if kybd is none
486 .IF < I_KEYBOARD
eq KYBD_B_ITEMS
> ;AN000;
488 INIT_VAR N_KYBD_VAL
, E_KYBD_VAL_DEF
;AN000; set kybd id = default id
491 .IF < N_KYBD_VAL
eq E_KYBD_VAL_YES
> near ;AN000; if kybd id is valid
493 .IF < N_KYBD_ALT
eq E_KYBD_ALT_NO
> ;AN000; if alt kybd not valid
495 COPY_STRING S_STR120_1
,M_STR120_1
,S_KEYBOARD
;AN000; set par = kybd id
497 COPY_STRING S_STR120_1
,M_STR120_1
,S_KYBD_ALT
;AN000; set par = alt kybd id
499 INIT_VAR N_WORD_1
, E_KYB_LOAD_SUC
;AN000;
501 COPY_STRING S_STR120_1
,M_STR120_1
,S_US
;AN000;
502 INIT_VAR N_WORD_1
, E_KYB_LOAD_US
;AN000;
505 .IF < N_KYB_LOAD
eq E_KYB_LOAD_US
> and ;AN000;
506 .IF < N_WORD_1
eq E_KYB_LOAD_US
> ;AN000;
510 .IF < MEM_SIZE
eq 256 > ;AN000;DT this includes support for PC Convertible (SEH)
511 DEALLOCATE_MEMORY
;AN000;DT
514 CALL HOOK_INT_24
;AN000;
515 EXEC_PROGRAM S_KEYB
,S_STR120_1
,PARM_BLOCK
,EXEC_DIR
;AN000; load specified kybd id
516 .IF < MEM_SIZE
eq 256 > ;AN063;SEH
517 CALL GET_OVERLAY
;AN063;SEH
519 .IF < EXEC_ERR
eq TRUE
> ;AC063;SEH ;AN000;
521 HANDLE_ERROR ERR_KEYB
,E_RETURN
;AN000;
522 INIT_VAR N_KYB_LOAD
, E_KYB_LOAD_ERR
;AN000;
525 CALL RESTORE_INT_24
;AN000;
526 COPY_WORD N_KYB_LOAD
, N_WORD_1
;AN000;
528 .IF < MEM_SIZE
eq 256 > and ;AC063;SEH ;AN000;DT
529 .IF < N_DISKETTE_A ne E_DISKETTE_720
> ;AN063;SEH
530 INSERT_DISK SUB_REM_DOS_A
, S_DOS_COM_360
;AN000;JW Insert the INSTALL diskette
535 .IF < N_KYBD_LIST
eq E_KYBD_LIST_2
> and ;AN000; if kybd is US ENGLISH JW
536 .IF < I_KEYBOARD
eq 8 > ;AN000; JW
538 INIT_VAR N_KYBD_VAL
, E_KYBD_VAL_YES
;AN000; set kybd id = US KEYBOARD JW
541 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
543 ; ������������������������������������Ŀ
544 ; �DEST_DRIVE_SCREEN �
546 ; ��������������������������������������
548 ; The DESTINATION DRIVE screen is presented when there is an option for
549 ; the destination drive. Possible options are:
552 ; Valid keys are ENTER, ESC, F1, F3, cursor up/down, numeric 1 to 2.
553 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
554 DEST_DRIVE_SCREEN: ;AN000;
555 .IF < N_DEST_DRIVE
eq E_DEST_SELECT
> ;AN000; if default destination drive
557 GOTO DOS_LOC_SCREEN
;AN000; goto next screen (DOS_LOC)
560 .IF < N_DRIVE_OPTION
eq E_OPTION_B_C
> ;AN111;JW
561 INIT_VAR N_WORD_1
, SCR_DEST_B_C
;AN111;JW
563 INIT_VAR N_WORD_1
, SCR_DEST_A_C
;AN111;JW
566 INIT_PQUEUE PAN_DEST_DRIVE
;AN000; initialize queue
567 PREPARE_PANEL PAN_HBAR
;AN000; prepare horizontal bar
568 PREPARE_CHILDREN
;AN000; prepare child panels
569 INIT_SCROLL N_WORD_1
, I_DEST_DRIVE
;AN000; init scroll list
570 DISPLAY_PANEL
;AN000; display DEST_DRIVE panel
572 GET_SCROLL N_WORD_1
,I_DEST_DRIVE
,FK_SCROLL
;AN000; get new install destination
574 .IF < N_USER_FUNC
eq E_ENTER
> ;AN000; if user entered ENTER key
576 .IF < N_DRIVE_OPTION
eq E_OPTION_A_C
> and ;AN111;JW
577 .IF < I_USER_INDEX
eq 2 > ;AN111;JW
578 INIT_VAR I_DEST_DRIVE
, E_DEST_DRIVE_A
;AN111;JW
580 COPY_WORD I_DEST_DRIVE
, I_USER_INDEX
;AN000; save new install destination drive
582 PUSH_HEADING DEST_DRIVE_SCREEN
;AN000; save screen address on the SELECT STACK
583 GOTO DOS_LOC_SCREEN
;AN000; goto the next screen (DOS_LOC)
585 GOTO PROCESS_ESC_F3
;AN000; user entered ESC OR F3, take action
587 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;