PAGE 55,132 ;AN000; NAME SELECT ;AN000; TITLE SELECT - DOS - SELECT.EXE ;AN000; SUBTTL SELECT4.asm ;AN000; .ALPHA ;AN000; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; SELECT4.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 ; ; ; ; Module contains code for : ; - DOS parameters screen ; - SHELL parameters screen ; - FASTOPEN parameters screen ; - SHARE screen ; - GRAPHICS parameter screen ; - EXPANDED MEMORY parameters screen ; ; ; CHANGE HISTORY: ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DATA SEGMENT BYTE PUBLIC 'DATA' ;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; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000;segment for far routine ASSUME CS:SELECT,DS:DATA ;AN000; ; INCLUDE CASEXTRN.INC ;AN000; ; HLP_OVER EQU 00010000B ;AN000; ICB_OUT EQU 0000000100000000B ;AN000;display default and accept input ; PUBLIC DOS_PARAMETERS_SCREEN ;AN000; EXTRN EXIT_SELECT:NEAR ;AN000; EXTRN PROCESS_ESC_F3:NEAR ;AN000; EXTRN FIRST_DISK_SCREEN:NEAR ;AN000; EXTRN VDISK_SCREEN:NEAR ;AN000; EXTRN EXIT_DOS:NEAR ;AN000; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; ������������������������������������Ŀ ; �DOS_PARAMETERS_SCREENS � ; � � ; �������������������������������������� ; ; The DOS PARAMETERS SCREEN is presented if the user selected to ; view/change the selections generated by SELECT ( F_REVIEW = 2 ). ; The screen gets various DOS parameters (PATH, APPEND, PROMPT). ; The TAB 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, TAB key ; will cause the cursor to wrap around to the first item of the parameter list. ; When the TAB 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, TAB and ASCII characters. ; Since the DOS parameters APPEND and PATH are only useful for hard ; disk based systems, an additional check of install to drive C: has been ; included. This check is not specified in the Functional Specification. ; PROMPT parameter values are not checked for validity. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DOS_PARAMETERS_SCREEN: ;AN000; if user accepts choices .IF < F_REVIEW eq E_REVIEW_ACCEPT > ;AN000; .THEN ;AN000; GOTO FIRST_DISK_SCREEN ;AN000; goto FIRST_DISK_SCREEN .ENDIF ;AN000; ; .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C > ;AC000; if install to drive B: or A: JW .THEN ;AN000; GOTO SHELL_SCREEN ;AN000; goto next screen .ENDIF ;AN000; ; COPY_STRING S_STR120_1, M_STR120_1, S_PATH ;AN000; copy PATH to temp location COPY_STRING S_STR40, M_STR40, S_APPEND_P ;AN000; copy APPEND parameters to temp location JW COPY_STRING S_STR120_2, M_STR120_2,S_APPEND ;AN000; copy APPEND to temp location COPY_STRING S_STR120_3, M_STR120_3,S_PROMPT ;AN000; copy PROMPT to temp location ; INIT_PQUEUE PAN_DOS_PARAM ;AN000; initialize queue PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar PREPARE_CHILDREN ;AN000; prepare child panels INIT_STRING STR_DOS_PATH,S_STR120_1, M_PATH ;AN000; display current PATH value INIT_STRING STR_DOS_APPEND_P,S_STR40,M_APPEND_P ;AN000; display current APPEND parameters value JW INIT_STRING STR_DOS_APPEND,S_STR120_2,M_APPEND ;AN000; display current APPEND value INIT_STRING STR_DOS_PROMPT,S_STR120_3,M_PROMPT ;AN000; display current PROMPT value DISPLAY_PANEL ;AN000; display PC/DOS parameters panel ; INIT_VAR N_COUNTER, 1 ;AN000; set counter = 1 ; GET_PARAMETERS: ;AN000; ; .REPEAT ;AN000; repeat code block ; .SELECT ;AN000; ; .WHEN < N_COUNTER eq 1 > ;AN000; GET_STRING STR_DOS_PATH,S_STR120_1,M_PATH,FK_TAB ;AN000; get user parameters for PATH COPY_STRING S_STR120_1,M_STR120_1,S_USER_STRING ;AN000; save parameter in temp location ; .WHEN < N_COUNTER eq 2 > ;AN000; JW GET_STRING STR_DOS_APPEND_P,S_STR40,M_APPEND_P,FK_TAB ;AN000; get user parameters for APPEND JW COPY_STRING S_STR40,M_STR40,S_USER_STRING ;AN000; save parameter in temp location JW ; .WHEN < N_COUNTER eq 3 > ;AN000; GET_STRING STR_DOS_APPEND,S_STR120_2,M_APPEND,FK_TAB ;AN000; get user path for APPEND COPY_STRING S_STR120_2,M_STR120_2,S_USER_STRING ;AN000; save parameter in temp location ; .OTHERWISE ;AN000; GET_STRING STR_DOS_PROMPT,S_STR120_3,M_PROMPT,FK_TAB ;AN000; get user parameters for PROMPT COPY_STRING S_STR120_3,M_STR120_3,S_USER_STRING ;AN000; save parameter in temp location ; .ENDSELECT ;AN000; ; INC_VAR N_COUNTER ;AN000; inc counter ; .IF < N_COUNTER a 4 > ;AN000; if counter > 3 .THEN ;AN000; INIT_VAR N_COUNTER, 1 ;AN000; set counter = 1 .ENDIF ;AN000; ; .UNTIL < N_USER_FUNC eq E_ENTER > or near ;AN000; break loop if ENTER entered .UNTIL < N_USER_FUNC eq E_ESCAPE > or near ;AN000; or ESCAPE entered .UNTIL < N_USER_FUNC eq E_F3 > near ;AN000; or F3 entered ; PROCESS_ESC ;AN000; PROCESS_F3 ;AN000; ; CHECK_DOS_PATH S_STR120_1 ;AN000; check PATH path .IF c ;AN000; .THEN ;AN000; HANDLE_ERROR ERR_BAD_PATH, E_RETURN ;AN000; INIT_VAR N_COUNTER, 1 ;AN000; GOTO GET_PARAMETERS ;AN000; .ENDIF ;AN000; ; CHECK_DOS_PATH S_STR120_2 ;AN000; check APPEND path .IF c ;AN000; .THEN ;AN000; HANDLE_ERROR ERR_BAD_PATH, E_RETURN ;AN000; INIT_VAR N_COUNTER,2 ;AN000; GOTO GET_PARAMETERS ;AN000; .ENDIF ;AN000; ; COPY_STRING S_PATH, M_PATH, S_STR120_1 ;AN000; save PATH parameter COPY_STRING S_APPEND_P, M_APPEND_P, S_STR40 ;AN000; save APPEND parameter JW COPY_STRING S_APPEND, M_APPEND, S_STR120_2 ;AN000; save APPEND path COPY_STRING S_PROMPT, M_PROMPT, S_STR120_3 ;AN000; save PROMPT parameter PUSH_HEADING DOS_PARAMETERS_SCREEN ;AN000; save screen address on SELECT STACK GOTO SHELL_SCREEN ;AN000; goto the next screen (SHELL) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; ������������������������������������Ŀ ; �SHELL_SCREEN � ; � � ; �������������������������������������� ; ; The SHELL PARAMETERS SCREEN is presented if the user selected to ; install SHELL support and the user wants to view/change parameters. ; Note.The view/change parameters condition is not specified in the May 5, 1987 ; Functional Specification. ; The screen gets the parameters for SHELL. ; Valid keys are ENTER, ESC, F1, F3 and ASCII characters. ; Note.User entered parameter values are not checked for validity. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SHELL_SCREEN: ;AN000; .IF < F_SHELL eq E_SHELL_NO > ;AN000; if SHELL support is not required .THEN ;AN000; GOTO FASTOPEN_SCREEN ;AN000; goto the next screen (KSAM) .ENDIF ;AN000; ; INIT_PQUEUE PAN_SHELL ;AN000; initialize queue PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar PREPARE_CHILDREN ;AN000; prepare child panels INIT_STRING STR_SHELL,S_SHELL,M_SHELL ;AN000; get SHELL parameters DISPLAY_PANEL ;AN000; display SHELL panel ; GET_STRING STR_SHELL,S_SHELL,M_SHELL,FK_TEXT ;AN000; get SHELL parameters ; .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key .THEN ;AN000; COPY_STRING S_SHELL, M_SHELL, S_USER_STRING ;AN000; save new SHELL parameters PUSH_HEADING SHELL_SCREEN ;AN000; save screen address on SELECT STACK GOTO FASTOPEN_SCREEN ;AN000; goto the next screen (KSAM) .ELSE ;AN000; GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action .ENDIF ;AN000; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; ������������������������������������Ŀ ; �FASTOPEN_SCREEN � ; � � ; �������������������������������������� ; ; The FASTOPEN PARAMETERS SCREEN is presented if the user selected to ; install FASTOPEN support and the user wants to view/change the parameters. ; Note.The view/change parameters condition is not specified in the May 5, 1987 ; Functional Specification. ; The screen gets parameters for the FASTOPEN command. ; Valid keys are ENTER, ESC, F1, F3 and ASCII characters. ; Note.User entered parameter values are not checked for validity. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; FASTOPEN_SCREEN: ;AN000; .IF < F_FASTOPEN eq E_FASTOPEN_NO > or ;AN000; if FASTOPEN support not required .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C > ;AC000;JW .THEN ;AN000; GOTO SHARE_SCREEN ;AN000; goto next screen (SHARE) .ENDIF ;AN000; ; INIT_PQUEUE PAN_FASTOPEN ;AN000; initialize queue PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar PREPARE_CHILDREN ;AN000; prepare child panels INIT_STRING STR_FASTOPEN,S_FASTOPEN,M_FASTOPEN ;AN000; get new parameters for FASTOPEN DISPLAY_PANEL ;AN000; display FASTOPEN panel ; GET_STRING STR_FASTOPEN,S_FASTOPEN,M_FASTOPEN,FK_TEXT ;AN000; get new parameters for FASTOPEN ; .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key .THEN ;AN000; COPY_STRING S_FASTOPEN,M_FASTOPEN,S_USER_STRING ;AN000;save new parameters for FASTOPEN PUSH_HEADING FASTOPEN_SCREEN ;AN000; save screen address on SELECT STACK GOTO SHARE_SCREEN ;AN000; goto the next screen (SHARE) .ELSE ;AN000; GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action .ENDIF ;AN000; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; ������������������������������������Ŀ ; �SHARE_SCREEN � ; � � ; �������������������������������������� ; ; The SHARE PARAMETERS SCREEN is presented if the user selected to ; install SHARE support and the user wants to view/change parameters. ; Note.The view/change parameters condition is not specified in the May 5, 1987 ; Functional Specification. ; The screen gets parameters for the SHARE command. ; Valid keys are ENTER, ESC, F1, F3 and ASCII characters. ; Note.User entered parameter values are not checked for validity. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SHARE_SCREEN: ;AN000; .IF < F_SHARE eq E_SHARE_NO > or ;AN000; if SHARE support not required .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C > ;AC000;JW .THEN ;AN000; ;; INIT_VAR F_SHARE, E_SHARE_NO ;AN021; GOTO GRAPHICS_SCREEN ;AN000; goto the next screen (GRAPHICS) .ENDIF ;AN000; ; INIT_PQUEUE PAN_SHARE ;AN000; initialize queue PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar PREPARE_CHILDREN ;AN000; prepare child panels INIT_STRING STR_SHARE,S_SHARE,M_SHARE ;AN000; get new parameters for SHARE DISPLAY_PANEL ;AN000; display SHARE panel ; GET_STRING STR_SHARE,S_SHARE,M_SHARE,FK_TEXT ;AN000; get new parameters for SHARE ; .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key .THEN ;AN000; COPY_STRING S_SHARE, M_SHARE, S_USER_STRING ;AN000; save new parameters for SHARE PUSH_HEADING SHARE_SCREEN ;AN000; save screen address on SELECT STACK GOTO GRAPHICS_SCREEN ;AN000; goto the next screen (GRAPHICS) .ELSE ;AN000; GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action .ENDIF ;AN000; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; ������������������������������������Ŀ ; �GRAPHICS_SCREEN � ; � � ; �������������������������������������� ; ; The GRAPHICS PARAMETERS SCREEN is presented if the user selected to ; install GRAPHICS support and the user wants to view/change parameters. ; Note.The view/change parameters condition is not specified in the May 5, 1987 ; Functional Specification. ; The screen gets parameters for the GRAPHICS command. ; Valid keys are ENTER, ESC, F1, F3 and ASCII characters. ; Note.User entered parameter values are not checked for validity. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GRAPHICS_SCREEN: ;AN000; .IF < F_GRAPHICS eq E_GRAPHICS_NO > ;AN000; if GRAPHICS support not required .THEN ;AN000; GOTO EXP_MEMORY_SCREEN ;AN000; goto the next screen (EXPANDED_MEM) .ENDIF ;AN000; ; GET_PRINTER_PARAMS 0, 1, N_RETCODE ;AN000; .IF < N_RETCODE eq 1 > ;AN000; .THEN ;AN000; COPY_STRING S_GRAPHICS,M_GRAPHICS,S_GRAPH_PARM ;AN000; .ENDIF ;AN000; ; INIT_PQUEUE PAN_GRAPHICS ;AN000; initialize queue PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar PREPARE_CHILDREN ;AN000; prepare child panels INIT_STRING STR_GRAPHICS,S_GRAPHICS,M_GRAPHICS ;AN000; get new parameters for GRAPHICS DISPLAY_PANEL ;AN000; display GRAPHICS panel ; GET_STRING STR_GRAPHICS,S_GRAPHICS,M_GRAPHICS,FK_TEXT ;AN000; get new parameters for GRAPHICS ; .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key .THEN ;AN000; COPY_STRING S_GRAPHICS, M_GRAPHICS, S_USER_STRING ;AN000;save new parameters for GRAPHICS PUSH_HEADING GRAPHICS_SCREEN ;AN000; save screen address on SELECT STACK GOTO EXP_MEMORY_SCREEN ;AN000; goto next screen (EXPANDED_MEMORY) .ELSE ;AN000; GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action .ENDIF ;AN000; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; ; ������������������������������������Ŀ ; �EXP_MEMORY_SCREEN � ; � � ; �������������������������������������� ; ; The EXPANDED MEMORY PARAMETERS SCREEN is presented if the user selected to ; install expanded memory support and the user wants to view/change parameters. ; Note.The view/change parameters condition is not specified in the May 5, 1987 ; Functional Specification. ; The screen gets parameters for the XMAEM and XMA2EMS commands. ; The expanded memory commands are only supported if memory above 1000000H ; is available. ; The TAB 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, TAB key ; will cause the cursor to wrap around to the first item of the parameter list. ; When the TAB 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 and ASCII characters. ; Note.User entered parameter values are not checked for validity. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; EXP_MEMORY_SCREEN: ;AN000; .IF < F_XMA eq E_XMA_NO > or ;AN000; if XMA support not required .IF < F_XMA eq E_XMA_NA > or ;AN000; or if XMA not available .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C > ;AC000; or if install to drive B: or A: JW .THEN ;AN000; GOTO VDISK_SCREEN ;AN000; goto the next screen (VDISK) .ENDIF ;AN000; ; COPY_STRING S_STR120_1, M_STR120_1, S_XMAEM ;AN000; copy XMAEM to temp location COPY_STRING S_STR120_2,M_STR120_2,S_XMA2EMS ;AN000; copy XMA2EMS to temp location ; .IF < N_MOD80 eq E_IS_MOD80 > ;AN000; JW .THEN ;AN000; JW INIT_PQUEUE PAN_EXP_MEMORY ;AN000; initialize queue .ELSE ;AN000; JW INIT_PQUEUE PAN_EXP_MEMORY2 ;AN000; initialize queue JW .ENDIF ;AN000; JW ; PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar PREPARE_CHILDREN ;AN000; prepare child panels ; .IF < N_MOD80 eq E_IS_MOD80 > ;AN000; JW .THEN ;AN000; JW INIT_STRING STR_XMAEM,S_STR120_1,M_XMAEM ;AN000; display parameter for XMAEM .ENDIF ;AN000; JW ; INIT_STRING STR_XMA2EMS,S_STR120_2,M_XMA2EMS ;AN000; display XMA2EMS parameters DISPLAY_PANEL ;AN000; display EXPANDED_MEMORY panel ; ; .IF < N_MOD80 eq E_IS_MOD80 > near ;AN000; JW .THEN ;AN000; JW INIT_VAR N_COUNTER,1 ;AN000; set counter = 1 ; .REPEAT ;AN000; repeat block of code ; .SELECT ;AN000; ; .WHEN < N_COUNTER eq 1 > near ;AN000; GET_STRING STR_XMAEM,S_STR120_1,M_XMAEM,FK_TAB;AN000; get new parameter for XMAEM COPY_STRING S_STR120_1,M_STR120_1,S_USER_STRING;AN000; save parameter in temp location ; .OTHERWISE ;AN000; GET_STRING STR_XMA2EMS,S_STR120_2,M_XMA2EMS,FK_TAB ;AN000;get new parameter for XMA2EMS COPY_STRING S_STR120_2,M_STR120_2,S_USER_STRING ;AN000; save parameter in temp location ; .ENDSELECT ;AN000; ; INC_VAR N_COUNTER ;AN000; ; .IF < N_COUNTER a 2 > ;AN000; .THEN ;AN000; INIT_VAR N_COUNTER,1 ;AN000; .ENDIF ;AN000; ; .UNTIL < N_USER_FUNC eq E_ENTER > or near ;AN000; break loop if ENTER entered .UNTIL < N_USER_FUNC eq E_ESCAPE > or near ;AN000; or ESCAPE entered .UNTIL < N_USER_FUNC eq E_F3 > near ;AN000; or F3 entered .ELSE ;AN000; JW GET_STRING STR_XMA2EMS,S_STR120_2,M_XMA2EMS,FK_TEXT ;AN000;get new parameter for XMA2EMS JW COPY_STRING S_STR120_2,M_STR120_2,S_USER_STRING ;AN000; save parameter in temp location JW .ENDIF ;AN000; JW ; .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key .THEN ;AN000; COPY_STRING S_XMAEM, M_XMAEM, S_STR120_1 ;AN000; save new XMAEM parameter COPY_STRING S_XMA2EMS, M_XMA2EMS,S_STR120_2 ;AN000; save new XMA2EMS parameter PUSH_HEADING EXP_MEMORY_SCREEN ;AN000; save screen address on SELECT STACK GOTO VDISK_SCREEN ;AN000; goto next screen (VDISK) .ELSE ;AN000; GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action .ENDIF ;AN000; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SELECT ENDS ;AN000; END ;AN000;