diff options
Diffstat (limited to 'v4.0/src/SELECT/SELECT2.ASM')
| -rw-r--r-- | v4.0/src/SELECT/SELECT2.ASM | 589 |
1 files changed, 589 insertions, 0 deletions
diff --git a/v4.0/src/SELECT/SELECT2.ASM b/v4.0/src/SELECT/SELECT2.ASM new file mode 100644 index 0000000..d6dc952 --- /dev/null +++ b/v4.0/src/SELECT/SELECT2.ASM | |||
| @@ -0,0 +1,589 @@ | |||
| 1 | |||
| 2 | |||
| 3 | PAGE 55,132 ;AN000; | ||
| 4 | NAME SELECT ;AN000; | ||
| 5 | TITLE SELECT - DOS - SELECT.EXE ;AN000; | ||
| 6 | SUBTTL SELECT2.asm ;AN000; | ||
| 7 | .ALPHA ;AN000; | ||
| 8 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 9 | ; | ||
| 10 | ; SELECT2.ASM : Copyright 1988 Microsoft | ||
| 11 | ; | ||
| 12 | ; DATE: August 8/87 | ||
| 13 | ; | ||
| 14 | ; COMMENTS: Assemble with MASM 3.0 (using the -A option) | ||
| 15 | ; | ||
| 16 | ; Panel flow is defined in the following files: | ||
| 17 | ; | ||
| 18 | ; � SELECT1.ASM | ||
| 19 | ; � SELECT2.ASM | ||
| 20 | ; � SELECT3.ASM | ||
| 21 | ; � SELECT4.ASM | ||
| 22 | ; � SELECT5.ASM | ||
| 23 | ; � SELECT6.ASM | ||
| 24 | ; | ||
| 25 | ; | ||
| 26 | ; Module contains code for : | ||
| 27 | ; - Program/Memory workspace screen | ||
| 28 | ; - Predefined country/keyboard screen | ||
| 29 | ; - Country screen | ||
| 30 | ; - Keyboard screen | ||
| 31 | ; - Alternate Keyboard screen | ||
| 32 | ; - Load the specified keyboard | ||
| 33 | ; - Install drive screen | ||
| 34 | ; - DOS location screen | ||
| 35 | ; | ||
| 36 | ; CHANGE HISTORY: | ||
| 37 | ; | ||
| 38 | ; | ||
| 39 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 40 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 41 | EXTRN EXEC_ERR:BYTE ; | ||
| 42 | DATA ENDS ;AN000; | ||
| 43 | ; | ||
| 44 | .XLIST ;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; | ||
| 54 | .LIST ;AN000; | ||
| 55 | ; | ||
| 56 | PUBLIC WORKSPACE_SCREEN ;AN000; | ||
| 57 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 58 | ; | ||
| 59 | ; | ||
| 60 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 61 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000; | ||
| 62 | ASSUME CS:SELECT,DS:DATA ;AN000; | ||
| 63 | ; | ||
| 64 | INCLUDE CASEXTRN.INC ;AN000; | ||
| 65 | ; | ||
| 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 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 74 | ; | ||
| 75 | ; ������������������������������������Ŀ | ||
| 76 | ; �WORKSPACE_SCREEN � | ||
| 77 | ; � � | ||
| 78 | ; �������������������������������������� | ||
| 79 | ; | ||
| 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 | ||
| 83 | ; on user input. | ||
| 84 | ; Valid keys are ENTER, ESC, F1, cursor up/down and numeric 1 to 3. | ||
| 85 | ; | ||
| 86 | ; All values are re-initialized the second time round only if the new option | ||
| 87 | ; is different from the previously selected option. | ||
| 88 | ; | ||
| 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 | ||
| 132 | ; | ||
| 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 | ||
| 137 | .THEN ;AN000; | ||
| 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 | ||
| 141 | .THEN ;AN000; | ||
| 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 | ||
| 144 | ; | ||
| 145 | .SELECT ;AN000; | ||
| 146 | ; | ||
| 147 | .WHEN < I_WORKSPACE eq E_WORKSPACE_MIN > near ;AN000; option = minimize DOS functions | ||
| 148 | INIT_VAR_MINIMIZE ;AN000; initialize variables | ||
| 149 | ; | ||
| 150 | .WHEN < I_WORKSPACE eq E_WORKSPACE_BAL > near ;AN000; option = balance DOS functions | ||
| 151 | INIT_VAR_BALANCE ;AN000; initialize variables | ||
| 152 | ; | ||
| 153 | .OTHERWISE ;AN000; option = maximize DOS functions | ||
| 154 | INIT_VAR_MAXIMIZE ;AN000; initialize variables | ||
| 155 | ; | ||
| 156 | .ENDSELECT ;AN000; | ||
| 157 | ; | ||
| 158 | .ENDIF ;AN000; | ||
| 159 | GOTO CTY_KYBD_SCREEN ;AN000; goto the next screen (CTY-KYBD) | ||
| 160 | .ELSE ;AN000; | ||
| 161 | GOTO INTRO_SCREEN ;AN001;GHG; user entered ENTER or ESC, take action | ||
| 162 | .ENDIF ;AN000; | ||
| 163 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 164 | ; | ||
| 165 | ; ������������������������������������Ŀ | ||
| 166 | ; �CTY_KYBD_SCREEN � | ||
| 167 | ; � � | ||
| 168 | ; �������������������������������������� | ||
| 169 | ; | ||
| 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 | ||
| 187 | .THEN ;AN000; | ||
| 188 | ADD_WORD N_WORD_1, CTY_A_ITEMS ;AN000; add items in list 1 | ||
| 189 | .ENDIF ;AN000; | ||
| 190 | ; | ||
| 191 | .IF < N_KYBD_ALT eq E_KYBD_ALT_NO > near ;AN000; if no alt kyb id | ||
| 192 | .THEN ;AN000; | ||
| 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 | ||
| 195 | .THEN ;AN000; | ||
| 196 | ADD_WORD N_WORD_2, KYBD_A_ITEMS ;AN000; add items in list 1 | ||
| 197 | .ENDIF ;AN000; | ||
| 198 | .ELSE ;AN000; else | ||
| 199 | ; | ||
| 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 | ||
| 204 | .THEN ;AN000; | ||
| 205 | ADD_WORD N_WORD_2, ALT_FR_ITEMS ;AN000; add items in French alt kybd to list | ||
| 206 | .ENDIF ;AN000;GHG | ||
| 207 | .IF < ALT_KYB_ID gt ALT_ITALIAN > ;AN000;GHG if alt kybd id > Italian | ||
| 208 | .THEN ;AN000; | ||
| 209 | ADD_WORD N_WORD_2, ALT_IT_ITEMS ;AN000; add items in Italian alt kybd to list | ||
| 210 | .ENDIF ;AN000; | ||
| 211 | ; | ||
| 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. | ||
| 214 | ; | ||
| 215 | .ENDIF ;AN000; | ||
| 216 | ; | ||
| 217 | ; | ||
| 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 | ||
| 225 | ; | ||
| 226 | GET_SCROLL SCR_CTY_KYB,I_CTY_KYBD,FK_SCROLL;AN000; get new option | ||
| 227 | ; | ||
| 228 | .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key | ||
| 229 | .THEN ;AN000; | ||
| 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) | ||
| 233 | .ELSE ;AN000; | ||
| 234 | GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action | ||
| 235 | .ENDIF ;AN000; | ||
| 236 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 237 | ; | ||
| 238 | ; ������������������������������������Ŀ | ||
| 239 | ; �COUNTRY_SCREEN � | ||
| 240 | ; � � | ||
| 241 | ; �������������������������������������� | ||
| 242 | ; | ||
| 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 | ||
| 253 | .THEN ;AN000; | ||
| 254 | GOTO LOAD_KEYBOARD ;AN000; goto load specified kybd id | ||
| 255 | .ENDIF ;AN000; | ||
| 256 | ; | ||
| 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 | ||
| 263 | ; | ||
| 264 | .IF < N_CTY_LIST eq E_CTY_LIST_1 > ;AN000; if country is in list 1 | ||
| 265 | .THEN ;AN000; | ||
| 266 | GET_SCROLL SCR_CTY_1,I_COUNTRY, FK_SCROLL ;AN000; highlight country in list 1 & get new choice | ||
| 267 | .ELSE ;AN000; else | ||
| 268 | GET_SCROLL SCR_CTY_2, I_COUNTRY, FK_SCROLL ;AN000; highlight country in list 2 & get new choice | ||
| 269 | .ENDIF ;AN000; | ||
| 270 | ; | ||
| 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 | ||
| 273 | .THEN ;AN000; | ||
| 274 | .IF < N_CTY_LIST eq E_CTY_LIST_1 > near ;AN000; if country list = 1 | ||
| 275 | .THEN ;AN000; | ||
| 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 | ||
| 281 | .ENDIF ;AN000; | ||
| 282 | .ELSEIF < N_USER_FUNC EQ DNARROW > near ;AN000; else if user entered cursor down | ||
| 283 | .THEN ;AN000; | ||
| 284 | .IF < N_CTY_LIST eq E_CTY_LIST_1 > near ;AN000; if country list = 1 | ||
| 285 | .THEN ;AN000; | ||
| 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 | ||
| 291 | .ENDIF ;AN000; | ||
| 292 | .ELSE near ;AN000; else | ||
| 293 | .LEAVE ;AN000; break away from repeat loop | ||
| 294 | .ENDIF ;AN000; | ||
| 295 | .UNTIL ;AN000; end of repeat block | ||
| 296 | ; | ||
| 297 | .IF < N_USER_FUNC eq E_ENTER > near ;AN000; if user entered ENTER key | ||
| 298 | .THEN ;AN000; | ||
| 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; | ||
| 303 | .THEN ;AN000; | ||
| 304 | .IF < N_CPSW eq E_CPSW_NOT_VAL > ;AN000; if cpsw not valid | ||
| 305 | .THEN ;AN000; | ||
| 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 | ||
| 308 | .THEN ;AN000; | ||
| 309 | INIT_VAR F_CPSW, E_CPSW_NO ;AN000; set cpsw = no | ||
| 310 | .ELSE ;AN000; else | ||
| 311 | INIT_VAR F_CPSW, E_CPSW_YES ;AN000; set cpsw = yes | ||
| 312 | .ENDIF ;AN000; | ||
| 313 | .ELSE ;AN000; | ||
| 314 | INIT_VAR F_CPSW, E_CPSW_NA ;AN000; | ||
| 315 | .ENDIF ;AN000; | ||
| 316 | ; | ||
| 317 | ;;; get keyboard from input field if country = Swiss ; | ||
| 318 | COMPARE_STRINGS S_KEYBOARD,S_SWISS ;AN000;GHG is default KB=SF? | ||
| 319 | .IF <NC> ;AN000;GHG | ||
| 320 | .THEN ;AN000;GHG | ||
| 321 | RETURN_STRING STR_SWISS_KEYB,S_KEYBOARD,M_KEYBOARD+2;AN000;GHG | ||
| 322 | .ENDIF ;AN000;GHG | ||
| 323 | ; | ||
| 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) | ||
| 326 | .ELSE ;AN000; | ||
| 327 | GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, action | ||
| 328 | .ENDIF ;AN000; | ||
| 329 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 330 | ; | ||
| 331 | ; ������������������������������������Ŀ | ||
| 332 | ; �KEYBOARD_SCREEN � | ||
| 333 | ; � � | ||
| 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 | ||
| 339 | ; highlighted. | ||
| 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. | ||
| 343 | ; | ||
| 344 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 345 | KEYBOARD_SCREEN: ;AN000; | ||
| 346 | .IF < N_KYB_LOAD eq E_KYB_LOAD_ERR > ;AN000; if KEYB load status is error | ||
| 347 | .THEN ;AN000; | ||
| 348 | INIT_VAR N_KYB_LOAD, E_KYB_LOAD_UND ;AN000; set KEYB loaded status = undefined | ||
| 349 | POP_HEADING ;AN000; goto previous screen | ||
| 350 | .ENDIF ;AN000; | ||
| 351 | ; | ||
| 352 | .IF < N_KYBD_VAL eq E_KYBD_VAL_NO > ;AN000; if keyboard id not valid | ||
| 353 | .THEN ;AN000; | ||
| 354 | GOTO LOAD_KEYBOARD ;AN000; goto load specified kybd id | ||
| 355 | .ENDIF ;AN000; | ||
| 356 | ; | ||
| 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 | ||
| 363 | ; | ||
| 364 | .IF < N_KYBD_LIST eq E_KYBD_LIST_1 > ;AN000; if keyboard is in list 1 | ||
| 365 | .THEN ;AN000; | ||
| 366 | GET_SCROLL SCR_KYB_1,I_KEYBOARD, FK_SCROLL ;AN000; highlight kybd in list 1 & get new choice | ||
| 367 | .ELSE ;AN000; else | ||
| 368 | GET_SCROLL SCR_KYB_2,I_KEYBOARD, FK_SCROLL ;AN000; highlight kybd in list 2 & get new choice | ||
| 369 | .ENDIF ;AN000; | ||
| 370 | ; | ||
| 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 | ||
| 373 | .THEN ;AN000; | ||
| 374 | .IF < N_KYBD_LIST eq E_KYBD_LIST_1 > near ;AN000; if kybd list = 1 | ||
| 375 | .THEN ;AN000; | ||
| 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 | ||
| 381 | .ENDIF ;AN000; | ||
| 382 | .ELSEIF < N_USER_FUNC EQ DNARROW > near ;AN000; else if user entered cursor down | ||
| 383 | .THEN ;AN000; | ||
| 384 | .IF < N_KYBD_LIST eq E_KYBD_LIST_1 > near ;AN000; if kybd list = 1 | ||
| 385 | .THEN ;AN000; | ||
| 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 | ||
| 391 | .ENDIF ;AN000; | ||
| 392 | .ELSE near ;AN000; else | ||
| 393 | .LEAVE ;AN000; break away from repeat loop | ||
| 394 | .ENDIF ;AN000; | ||
| 395 | .UNTIL ;AN000; end of repeat block | ||
| 396 | ; | ||
| 397 | .IF < N_USER_FUNC eq E_ENTER > near ;AN000; if user entered ENTER key | ||
| 398 | .THEN ;AN000; | ||
| 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) | ||
| 403 | .ELSE ;AN000; | ||
| 404 | GOTO PROCESS_ESC_F3 ;AN000; user entered ENTER or ESC, take action | ||
| 405 | .ENDIF ;AN000; | ||
| 406 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 407 | ; | ||
| 408 | ; ������������������������������������Ŀ | ||
| 409 | ; �ALT_KYB_SCREEN � | ||
| 410 | ; � � | ||
| 411 | ; �������������������������������������� | ||
| 412 | ; | ||
| 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: | ||
| 418 | ; French | ||
| 419 | ; Italian | ||
| 420 | ; UK English | ||
| 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 | ||
| 425 | .THEN ;AN000; | ||
| 426 | POP_HEADING ;AN000; goto previous screen | ||
| 427 | .ENDIF ;AN000; | ||
| 428 | ; | ||
| 429 | .IF < N_KYBD_ALT eq E_KYBD_ALT_NO > ;AN000; if no alternate keyboard | ||
| 430 | .THEN ;AN000; | ||
| 431 | GOTO LOAD_KEYBOARD ;AN000; goto load specified kybd id | ||
| 432 | .ENDIF ;AN000; | ||
| 433 | ; | ||
| 434 | GET_ALT_KYBD_TABLE S_KEYBOARD, ALT_TAB_PTR, ALT_KYB_ID ;AN000; get alternate keyboard id | ||
| 435 | ; | ||
| 436 | .SELECT ;AN000; | ||
| 437 | ; | ||
| 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 | ||
| 440 | ; | ||
| 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 | ||
| 443 | ; | ||
| 444 | .OTHERWISE ;AN000; kybd id = UK English | ||
| 445 | INIT_VAR N_WORD_1, SCR_UK_KYB ;AN000; set scroll list id = UK English | ||
| 446 | ; | ||
| 447 | .ENDSELECT ;AN000; | ||
| 448 | ; | ||
| 449 | COMP_BYTES ALT_KYB_ID, ALT_KYB_ID_PREV ;AN000; if current alt kyb id different | ||
| 450 | .IF nz ;AN000; | ||
| 451 | .THEN ;AN000; | ||
| 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 | ||
| 454 | .ENDIF ;AN000; | ||
| 455 | ; | ||
| 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 | ||
| 461 | ; | ||
| 462 | GET_SCROLL N_WORD_1, I_KYBD_ALT, FK_SCROLL ;AN000; get new alt kyb id | ||
| 463 | ; | ||
| 464 | .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key | ||
| 465 | .THEN ;AN000; | ||
| 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 | ||
| 470 | .ELSE ;AN000; | ||
| 471 | GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action | ||
| 472 | .ENDIF ;AN000; | ||
| 473 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 474 | ; | ||
| 475 | ; � � � � � � � � � � � � � � � � � � � | ||
| 476 | ; � LOAD_KEYBOARD � | ||
| 477 | ; | ||
| 478 | ; � This will execute the keyboard � | ||
| 479 | ; program to load the requested | ||
| 480 | ; � keyboard routine. � | ||
| 481 | ; � � � � � � � � � � � � � � � � � � � | ||
| 482 | ; | ||
| 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; | ||
| 487 | .THEN ;AN000; | ||
| 488 | INIT_VAR N_KYBD_VAL, E_KYBD_VAL_DEF ;AN000; set kybd id = default id | ||
| 489 | .ENDIF ;AN000; | ||
| 490 | ; | ||
| 491 | .IF < N_KYBD_VAL eq E_KYBD_VAL_YES > near ;AN000; if kybd id is valid | ||
| 492 | .THEN ;AN000; | ||
| 493 | .IF < N_KYBD_ALT eq E_KYBD_ALT_NO > ;AN000; if alt kybd not valid | ||
| 494 | .THEN ;AN000; | ||
| 495 | COPY_STRING S_STR120_1,M_STR120_1,S_KEYBOARD;AN000; set par = kybd id | ||
| 496 | .ELSE ;AN000; else | ||
| 497 | COPY_STRING S_STR120_1,M_STR120_1,S_KYBD_ALT;AN000; set par = alt kybd id | ||
| 498 | .ENDIF ;AN000; | ||
| 499 | INIT_VAR N_WORD_1, E_KYB_LOAD_SUC ;AN000; | ||
| 500 | .ELSE ;AN000; | ||
| 501 | COPY_STRING S_STR120_1,M_STR120_1,S_US ;AN000; | ||
| 502 | INIT_VAR N_WORD_1, E_KYB_LOAD_US ;AN000; | ||
| 503 | .ENDIF ;AN000; | ||
| 504 | ; | ||
| 505 | .IF < N_KYB_LOAD eq E_KYB_LOAD_US > and ;AN000; | ||
| 506 | .IF < N_WORD_1 eq E_KYB_LOAD_US > ;AN000; | ||
| 507 | .THEN ;AN000; | ||
| 508 | .ELSE near ;AN000; | ||
| 509 | ; | ||
| 510 | .IF < MEM_SIZE eq 256 > ;AN000;DT this includes support for PC Convertible (SEH) | ||
| 511 | DEALLOCATE_MEMORY ;AN000;DT | ||
| 512 | .ENDIF ;AN000;DT | ||
| 513 | ; | ||
| 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 | ||
| 518 | .ENDIF ;AN063;SEH | ||
| 519 | .IF < EXEC_ERR eq TRUE > ;AC063;SEH ;AN000; | ||
| 520 | .THEN ;AN000; | ||
| 521 | HANDLE_ERROR ERR_KEYB,E_RETURN ;AN000; | ||
| 522 | INIT_VAR N_KYB_LOAD, E_KYB_LOAD_ERR ;AN000; | ||
| 523 | POP_HEADING ;AN000; | ||
| 524 | .ENDIF ;AN000; | ||
| 525 | CALL RESTORE_INT_24 ;AN000; | ||
| 526 | COPY_WORD N_KYB_LOAD, N_WORD_1 ;AN000; | ||
| 527 | ; | ||
| 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 | ||
| 531 | .ENDIF ;AN000;DT | ||
| 532 | ; | ||
| 533 | .ENDIF ;AN000; | ||
| 534 | ; | ||
| 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 | ||
| 537 | .THEN ;AN000; JW | ||
| 538 | INIT_VAR N_KYBD_VAL, E_KYBD_VAL_YES ;AN000; set kybd id = US KEYBOARD JW | ||
| 539 | .ENDIF ;AN000; JW | ||
| 540 | ; | ||
| 541 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 542 | ; | ||
| 543 | ; ������������������������������������Ŀ | ||
| 544 | ; �DEST_DRIVE_SCREEN � | ||
| 545 | ; � � | ||
| 546 | ; �������������������������������������� | ||
| 547 | ; | ||
| 548 | ; The DESTINATION DRIVE screen is presented when there is an option for | ||
| 549 | ; the destination drive. Possible options are: | ||
| 550 | ; B or C | ||
| 551 | ; A or C | ||
| 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 | ||
| 556 | .THEN ;AN000; | ||
| 557 | GOTO DOS_LOC_SCREEN ;AN000; goto next screen (DOS_LOC) | ||
| 558 | .ENDIF ;AN000; | ||
| 559 | ; | ||
| 560 | .IF < N_DRIVE_OPTION eq E_OPTION_B_C > ;AN111;JW | ||
| 561 | INIT_VAR N_WORD_1, SCR_DEST_B_C ;AN111;JW | ||
| 562 | .ELSE ;AN111;JW | ||
| 563 | INIT_VAR N_WORD_1, SCR_DEST_A_C ;AN111;JW | ||
| 564 | .ENDIF ;AN111;JW | ||
| 565 | ; | ||
| 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 | ||
| 571 | ; | ||
| 572 | GET_SCROLL N_WORD_1,I_DEST_DRIVE,FK_SCROLL ;AN000; get new install destination | ||
| 573 | ; | ||
| 574 | .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key | ||
| 575 | .THEN ;AN000; | ||
| 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 | ||
| 579 | .ELSE ;AN111;JW | ||
| 580 | COPY_WORD I_DEST_DRIVE, I_USER_INDEX ;AN000; save new install destination drive | ||
| 581 | .ENDIF ;AN111;JW | ||
| 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) | ||
| 584 | .ELSE ;AN000; | ||
| 585 | GOTO PROCESS_ESC_F3 ;AN000; user entered ESC OR F3, take action | ||
| 586 | .ENDIF ;AN000; | ||
| 587 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 588 | SELECT ENDS ;AN000; | ||
| 589 | END ;AN000; | ||