diff options
Diffstat (limited to 'v4.0/src/SELECT')
80 files changed, 43544 insertions, 0 deletions
diff --git a/v4.0/src/SELECT/ASM2C.ASM b/v4.0/src/SELECT/ASM2C.ASM new file mode 100644 index 0000000..f74da98 --- /dev/null +++ b/v4.0/src/SELECT/ASM2C.ASM | |||
| @@ -0,0 +1,191 @@ | |||
| 1 | page 60,132 ;AN000; | ||
| 2 | name asm2c ;AN000; | ||
| 3 | title Limited assembler to C interface;AN000; | ||
| 4 | ;------------------------------------------------------------------- | ||
| 5 | ; | ||
| 6 | ; MODULE: asm2c | ||
| 7 | ; | ||
| 8 | ; PURPOSE: | ||
| 9 | ; This routine is used as to map the assembly language | ||
| 10 | ; call made by xxx to a C language call. | ||
| 11 | ; | ||
| 12 | ; INPUT: | ||
| 13 | ; | ||
| 14 | ; ES:DI points to the buffer area where the table data | ||
| 15 | ; will be copied | ||
| 16 | ; | ||
| 17 | ; CALLING FORMAT: | ||
| 18 | ; | ||
| 19 | ; DATE: 7-16-87 | ||
| 20 | ; | ||
| 21 | ;------------------------------------------------------------------- | ||
| 22 | |||
| 23 | |||
| 24 | public gget_status ;AN000; | ||
| 25 | public asm2cInRegs ;AN000; | ||
| 26 | public asm2coutregs ;AN000; | ||
| 27 | public asm2csegregs ;AN000; | ||
| 28 | |||
| 29 | _TEXT segment byte public 'CODE' ;AN000; | ||
| 30 | _TEXT ends ;AN000; | ||
| 31 | _DATA segment word public 'DATA' ;AN000; | ||
| 32 | _DATA ends ;AN000; | ||
| 33 | CONST segment word public 'CONST' ;AN000; | ||
| 34 | CONST ends ;AN000; | ||
| 35 | _BSS segment word public 'BSS' ;AN000; | ||
| 36 | _BSS ends ;AN000; | ||
| 37 | DGROUP GROUP CONST, _BSS, _DATA ;AN000; | ||
| 38 | |||
| 39 | _DATA segment word public 'DATA' ;AN000; | ||
| 40 | |||
| 41 | ;------------------------------------------------------------------- | ||
| 42 | ; define an assembly language version of the C regs structure | ||
| 43 | ;------------------------------------------------------------------- | ||
| 44 | |||
| 45 | asm2cInRegs equ $ ;AN000; | ||
| 46 | |||
| 47 | i_ax dw 0 ;AN000; | ||
| 48 | i_bx dw 0 ;AN000; | ||
| 49 | i_cx dw 0 ;AN000; | ||
| 50 | i_dx dw 0 ;AN000; | ||
| 51 | i_si dw 0 ;AN000; | ||
| 52 | i_di dw 0 ;AN000; | ||
| 53 | i_cflag dw 0 ;AN000; | ||
| 54 | |||
| 55 | Asm2cOutRegs equ $ ;AN000; | ||
| 56 | |||
| 57 | o_ax dw 0 ;AN000; | ||
| 58 | o_bx dw 0 ;AN000; | ||
| 59 | o_cx dw 0 ;AN000; | ||
| 60 | o_dx dw 0 ;AN000; | ||
| 61 | o_si dw 0 ;AN000; | ||
| 62 | o_di dw 0 ;AN000; | ||
| 63 | o_cflag dw 0 ;AN000; | ||
| 64 | |||
| 65 | |||
| 66 | Asm2cSegRegs equ $ ;AN000; | ||
| 67 | s_es dw 0 ;AN000; | ||
| 68 | s_cs dw 0 ;AN000; | ||
| 69 | s_ss dw 0 ;AN000; | ||
| 70 | s_ds dw 0 ;AN000; | ||
| 71 | |||
| 72 | extrn _end:far ;AN000; | ||
| 73 | |||
| 74 | _DATA ends ;AN000; | ||
| 75 | |||
| 76 | _TEXT segment byte public 'CODE' ;AN000; | ||
| 77 | |||
| 78 | extrn _get_status:near ;AN000; | ||
| 79 | |||
| 80 | ASSUME CS: _TEXT ;AN000; | ||
| 81 | assume ds: nothing ;AN000; | ||
| 82 | assume es: nothing ;AN000; | ||
| 83 | ;------------------------------------------------------------------- | ||
| 84 | ;------------------------------------------------------------------- | ||
| 85 | page ;AN000; | ||
| 86 | ;------------------------------------------------------------------- | ||
| 87 | ; ggetstatus | ||
| 88 | ; | ||
| 89 | ; This routine will reside in the C code segment | ||
| 90 | ; | ||
| 91 | ;------------------------------------------------------------------- | ||
| 92 | |||
| 93 | segment_of_dgroup dw seg dgroup;AN000; | ||
| 94 | |||
| 95 | SAVE_STACK LABEL DWORD ;AN000; | ||
| 96 | SAVE_SP DW 0 ;AN000; | ||
| 97 | SAVE_SS DW 0 ;AN000; | ||
| 98 | |||
| 99 | SAVE_DS DW 0 ;AN000; | ||
| 100 | SAVE_ES DW 0 ;AN000; | ||
| 101 | |||
| 102 | gget_status proc far ;AN000; | ||
| 103 | |||
| 104 | MOV SAVE_DS,DS ;AN000; | ||
| 105 | MOV SAVE_ES,ES ;AN000; | ||
| 106 | |||
| 107 | MOV SAVE_SS,SS ;AN000; | ||
| 108 | MOV SAVE_SP,SP ;AN000; | ||
| 109 | |||
| 110 | mov ss,segment_of_dgroup ;AN000; | ||
| 111 | add sp,offset DGROUP:_end ;AN000; | ||
| 112 | ASSUME SS: DGROUP ;AN000; | ||
| 113 | |||
| 114 | MOV DS,segment_of_dgroup ;AN000; | ||
| 115 | ASSUME DS: DGROUP ;AN000; | ||
| 116 | |||
| 117 | ;------------------------------------------------------------------- | ||
| 118 | ; set up InRegs | ||
| 119 | ;------------------------------------------------------------------- | ||
| 120 | |||
| 121 | mov i_ax,ax ;AN000; make InRegs look like real registers | ||
| 122 | mov i_bx,bx ;AN000; | ||
| 123 | mov i_cx,cx ;AN000; | ||
| 124 | mov i_dx,dx ;AN000; | ||
| 125 | mov i_si,si ;AN000; | ||
| 126 | mov i_di,di ;AN000; | ||
| 127 | |||
| 128 | ;------------------------------------------------------------------- | ||
| 129 | ; set up SegRegs | ||
| 130 | ;------------------------------------------------------------------- | ||
| 131 | |||
| 132 | IRP XX,<ES,SS,DS> ;AN000; | ||
| 133 | MOV AX,SAVE_&XX ;AN000; | ||
| 134 | MOV S_&XX,AX ;AN000; | ||
| 135 | ENDM ;AN000; | ||
| 136 | |||
| 137 | mov s_cs,cs ;AN000; | ||
| 138 | |||
| 139 | ;------------------------------------------------------------------- | ||
| 140 | ; put far pointers on stack | ||
| 141 | ;------------------------------------------------------------------- | ||
| 142 | |||
| 143 | ; push ds ; push far pointer to SegRegs | ||
| 144 | lea ax,DGROUP:Asm2cSegRegs;AN000; | ||
| 145 | push ax ;AN000; | ||
| 146 | |||
| 147 | ; push ds ; push far pointer to OutRegs | ||
| 148 | lea ax,DGROUP:Asm2cOutRegs;AN000; | ||
| 149 | push ax ;AN000; | ||
| 150 | |||
| 151 | ; push ds ; push far pointer to InRegs | ||
| 152 | lea ax,DGROUP:Asm2cInRegs;AN000; | ||
| 153 | push ax ;AN000; | ||
| 154 | |||
| 155 | ;------------------------------------------------------------------- | ||
| 156 | call _get_status ;AN000; | ||
| 157 | ;------------------------------------------------------------------- | ||
| 158 | add sp,6 ;AN000; | ||
| 159 | ;------------------------------------------------------------------- | ||
| 160 | ; set up real registers | ||
| 161 | ;------------------------------------------------------------------- | ||
| 162 | |||
| 163 | mov ax,o_ax ;AN000; make real registers look like OutRegs | ||
| 164 | mov bx,o_bx ;AN000; | ||
| 165 | mov cx,o_cx ;AN000; | ||
| 166 | mov dx,o_dx ;AN000; | ||
| 167 | mov si,o_si ;AN000; | ||
| 168 | mov di,o_di ;AN000; | ||
| 169 | |||
| 170 | ;------------------------------------------------------------------- | ||
| 171 | ; must remove the things we put on the stack | ||
| 172 | ;------------------------------------------------------------------- | ||
| 173 | |||
| 174 | MOV DS,SAVE_DS ;AN000; | ||
| 175 | MOV ES,SAVE_ES ;AN000; | ||
| 176 | MOV SS,SAVE_SS ;AN000; | ||
| 177 | MOV SP,SAVE_SP ;AN000; | ||
| 178 | |||
| 179 | ret ;AN000; | ||
| 180 | |||
| 181 | |||
| 182 | gget_status endp ;AN000; | ||
| 183 | |||
| 184 | _TEXT ends ;AN000; end code segment | ||
| 185 | |||
| 186 | ;------------------------------------------------------------------- | ||
| 187 | ;------------------------------------------------------------------- | ||
| 188 | |||
| 189 | |||
| 190 | end ;AN000; | ||
| 191 | |||
diff --git a/v4.0/src/SELECT/BRIDGE.ASM b/v4.0/src/SELECT/BRIDGE.ASM new file mode 100644 index 0000000..75c682d --- /dev/null +++ b/v4.0/src/SELECT/BRIDGE.ASM | |||
| @@ -0,0 +1,25 @@ | |||
| 1 | CODE SEGMENT PARA PUBLIC 'CODE' ;AN000;segment for near routine | ||
| 2 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3 | PUBLIC _MAIN ;AN000; | ||
| 4 | _MAIN PROC FAR ;AN000; | ||
| 5 | RET ;AN000; | ||
| 6 | _MAIN ENDP ;AN000; | ||
| 7 | ; | ||
| 8 | PUBLIC INDBC ;AN000; | ||
| 9 | INDBC PROC FAR ;AN000; | ||
| 10 | RET ;AN000; | ||
| 11 | INDBC ENDP ;AN000; | ||
| 12 | ; | ||
| 13 | PUBLIC BOXDR ;AN000; | ||
| 14 | BOXDR PROC FAR ;AN000; | ||
| 15 | RET ;AN000; | ||
| 16 | BOXDR ENDP ;AN000; | ||
| 17 | ; | ||
| 18 | PUBLIC GRAPH ;AN000; | ||
| 19 | GRAPH PROC FAR ;AN000; | ||
| 20 | RET ;AN000; | ||
| 21 | GRAPH ENDP ;AN000; | ||
| 22 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 23 | CODE ENDS ;AN000; | ||
| 24 | END ;AN000; | ||
| 25 | |||
diff --git a/v4.0/src/SELECT/CASERVIC.ASM b/v4.0/src/SELECT/CASERVIC.ASM new file mode 100644 index 0000000..4d1ed7b --- /dev/null +++ b/v4.0/src/SELECT/CASERVIC.ASM | |||
| @@ -0,0 +1,2644 @@ | |||
| 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2 | ; | ||
| 3 | ; | ||
| 4 | ; CASERVIC.ASM | ||
| 5 | ; | ||
| 6 | ; | ||
| 7 | ; | ||
| 8 | ; CAS SERVICES....FROM TSUISRD.ASM | ||
| 9 | ; | ||
| 10 | ; | ||
| 11 | ; DATE: MAY 15, 1987 | ||
| 12 | ; | ||
| 13 | ; | ||
| 14 | ; | ||
| 15 | ; ;AN004; for PTM 1064 temporary fix until the CASSFAR.LIB | ||
| 16 | ; is fixed. The HELP routines of CAS, zero out the | ||
| 17 | ; frequency value. | ||
| 18 | ; | ||
| 19 | ; ;AN005; The help text comes up blank. No checking was done | ||
| 20 | ; for invalid helps (HRD_ERROR & HRD_DOSERROR). Now, | ||
| 21 | ; there is checking added to PCHLPRD_CALL! | ||
| 22 | ; | ||
| 23 | ; ;AN006; for PTM 1756 - added error checking for wrong diskette | ||
| 24 | ; when help accessed. JW | ||
| 25 | ; | ||
| 26 | ; ;AN007; for PTM 1810 - during a help request processing, any error | ||
| 27 | ; caused a problem because the manage_help routine would | ||
| 28 | ; try to remove a help panel which had not been displayed. | ||
| 29 | ; | ||
| 30 | ; ;AN008; for PTM 2191 - added code to display selected option when | ||
| 31 | ; selection is made by numeric input. | ||
| 32 | ; | ||
| 33 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 34 | .ALPHA ;AN000; | ||
| 35 | INCLUDE STRUC.INC ;AN000; | ||
| 36 | INCLUDE MACROS.INC ;AN006;JW | ||
| 37 | INCLUDE PANEL.MAC ;AN000; | ||
| 38 | INCLUDE PAN-LIST.INC ;AN000; | ||
| 39 | INCLUDE SELECT.INC ;AN000; | ||
| 40 | INCLUDE CASTRUC.INC ;AN000; | ||
| 41 | INCLUDE DATA.MAC ;AN000; | ||
| 42 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 43 | ; | ||
| 44 | ; Variable(s) for Conditional Assembly | ||
| 45 | ; | ||
| 46 | ; These conditional assembly values are declared and set in an external | ||
| 47 | ; file and included during assembly. | ||
| 48 | ; | ||
| 49 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 50 | INCLUDE CASVAR.INC ;AN000; | ||
| 51 | ; | ||
| 52 | EXTRN DISK_PANEL:WORD ;AN000; | ||
| 53 | EXTRN SEARCH_FILE:WORD;AN000; | ||
| 54 | EXTRN FK_ENT:BYTE ;AN000; | ||
| 55 | EXTRN FK_ENT_LEN:ABS ;AN000; | ||
| 56 | EXTRN E_FILE_ATTR:ABS ;AN000; | ||
| 57 | EXTRN E_RETURN:ABS ;AN000; | ||
| 58 | EXTRN ACTIVE:BYTE ;AN000; | ||
| 59 | EXTRN ALTERNATE:BYTE ;AN000; | ||
| 60 | EXTRN LCD:ABS ;AN000; | ||
| 61 | EXTRN E_RETURN:ABS ;AN000; | ||
| 62 | EXTRN ERROR_ACTIVE:BYTE;AN000; | ||
| 63 | EXTRN MEM_SIZE:WORD ;AN024; | ||
| 64 | ;;;;;;;;; | ||
| 65 | EXTRN DISPLAY_MESSAGE_ROUTINE:FAR ;AN024; | ||
| 66 | EXTRN HOOK_INT_24:FAR ;AN000; | ||
| 67 | EXTRN RESTORE_INT_24:FAR ;AN000; | ||
| 68 | EXTRN FIND_FILE_ROUTINE:FAR ;AN000; | ||
| 69 | EXTRN GET_FUNCTION_CALL:NEAR ;AN000; | ||
| 70 | EXTRN HANDLE_CHILDREN:NEAR ;AN000; | ||
| 71 | EXTRN PREPARE_PANEL_CALL:NEAR ;AN000; | ||
| 72 | EXTRN ALLOCATE_HELP:FAR ;AN024; | ||
| 73 | EXTRN DEALLOCATE_HELP:FAR ;AN024; | ||
| 74 | EXTRN ALLOCATE_LVB:FAR ;AN024; | ||
| 75 | EXTRN DEALLOCATE_LVB:FAR ;AN024; | ||
| 76 | |||
| 77 | ; | ||
| 78 | ; Table at OFFSET 0 of panel file | ||
| 79 | ; | ||
| 80 | EXT_FILE STRUC ;AN024; | ||
| 81 | PCBS DW 0 ;AN024;offset of PCB vector table | ||
| 82 | NPCBS DW 0 ;AN024;number of PCBs | ||
| 83 | SCBS DW 0 ;AN024;offset of SCB vector table | ||
| 84 | NSCBS DW 0 ;AN024;number of SCBs | ||
| 85 | COLTBL DW 0 ;AN024;offset of COLOR attribute table | ||
| 86 | NCOLTBL DW 0 ;AN024;number of COLOR attribute sets | ||
| 87 | MONTBL DW 0 ;AN024;offset of MONO attribute table | ||
| 88 | NMONTBL DW 0 ;AN024;number of MONO attribute sets | ||
| 89 | EXT_FILE ENDS ;AN024; | ||
| 90 | ; | ||
| 91 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN024; | ||
| 92 | CFILE DB 'SELECT.DAT',0 ;AN024;compressed panel file | ||
| 93 | REPCHAR EQU 255 ;AN024;character used as repeat flag | ||
| 94 | DATA ENDS ;AN024; ;AN000; | ||
| 95 | ; | ||
| 96 | IF CASFAR ;AN000; | ||
| 97 | IFE CASRM ;AN000; | ||
| 98 | EXTRN INPUT:FAR ;AN000; | ||
| 99 | EXTRN HLPRD:FAR ;AN000; | ||
| 100 | EXTRN SLCTP:FAR ;AN000; | ||
| 101 | EXTRN PANEL:FAR ;AN000; | ||
| 102 | EXTRN DISPQ:FAR ;AN000; | ||
| 103 | EXTRN INCHA:FAR ;AN000; | ||
| 104 | EXTRN MBEEP:FAR ;AN000; | ||
| 105 | EXTRN INSTRN:FAR ;AN000; | ||
| 106 | EXTRN GVIDO:FAR ;AN000; | ||
| 107 | EXTRN WWRAP:FAR ;AN000; | ||
| 108 | ENDIF ;AN000; | ||
| 109 | ; | ||
| 110 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000;segment for far routine | ||
| 111 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 112 | ; | ||
| 113 | ; IF NEAR procedure, then define segment and EXTRN | ||
| 114 | ; | ||
| 115 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 116 | ELSE ;AN000; | ||
| 117 | ; | ||
| 118 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000;segment for far routine | ||
| 119 | IFE CASRM ;AN000; | ||
| 120 | EXTRN INPUT:NEAR ;AN000; | ||
| 121 | EXTRN HLPRD:NEAR ;AN000; | ||
| 122 | EXTRN SLCTP:NEAR ;AN000; | ||
| 123 | EXTRN PANEL:NEAR ;AN000; | ||
| 124 | EXTRN DISPQ:NEAR ;AN000; | ||
| 125 | EXTRN INCHA:NEAR ;AN000; | ||
| 126 | EXTRN MBEEP:NEAR ;AN000; | ||
| 127 | EXTRN INSTRN:NEAR ;AN000; | ||
| 128 | EXTRN GVIDO:NEAR ;AN000; | ||
| 129 | EXTRN WWRAP:NEAR ;AN000; | ||
| 130 | ENDIF ;AN000; | ||
| 131 | ENDIF ;AN000; | ||
| 132 | ASSUME CS:SELECT,DS:DATA,ES:DATA ;AN000; | ||
| 133 | |||
| 134 | PUBLIC CURSOROFF,PCGVIDO_CALL,INITIALIZE;AN000; | ||
| 135 | PUBLIC GET_KEY,PCDISPQ_CALL,PCPANEL_CALL;AN000; | ||
| 136 | PUBLIC GET_SCROLL_CALL,PCINPUT_CALL,CURSORON;AN000; | ||
| 137 | PUBLIC GET_SCB,GET_PCB,GET_ICB,PCMBEEP_CALL,PCSLCTP_CALL;AN000; | ||
| 138 | EXTRN GET_HELP_ID:NEAR ;AN000; | ||
| 139 | EXTRN ADJUST_DOWN:NEAR ;AN000; | ||
| 140 | EXTRN ADJUST_UP:NEAR ;AN000; | ||
| 141 | EXTRN INIT_SCROLL_CALL:NEAR ;AN000; | ||
| 142 | EXTRN INIT_PQUEUE_CALL:NEAR ;AN000; | ||
| 143 | EXTRN DISPLAY_PANEL_CALL:NEAR ;AN000; | ||
| 144 | EXTRN HANDLE_ERROR_CALL:FAR ;AN006;JW | ||
| 145 | EXTRN EXIT_SELECT:NEAR ;AN006;JW | ||
| 146 | ; | ||
| 147 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 148 | ; | ||
| 149 | ; GET_SCROLL_CALL | ||
| 150 | ; | ||
| 151 | ; Process scroll field relative to current active panel. | ||
| 152 | ; Automatically handle help request, display and interaction. | ||
| 153 | ; | ||
| 154 | ; Entry: WR_DRETSEG = Segment of dynamic return key string | ||
| 155 | ; WR_DRETOFF = Offset of dynamic return key string | ||
| 156 | ; WR_DRETLEN = Length of dynamic return key string | ||
| 157 | ; | ||
| 158 | ; WR_HCBCONT = ID of the desired contextual help text | ||
| 159 | ; | ||
| 160 | ; WR_SCBID = SCB Number of scroll field | ||
| 161 | ; | ||
| 162 | ; AX 0 = Use default highlight and scroll list position | ||
| 163 | ; 1 = Initialize highlight and scroll list position | ||
| 164 | ; to the top of the list | ||
| 165 | ; | ||
| 166 | ; Exit: AX = Contains keystroke | ||
| 167 | ; BX = Current element | ||
| 168 | ; | ||
| 169 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 170 | PUSHH MACRO REG_LIST ;;AN000; | ||
| 171 | IRP REG,<REG_LIST> ;;AN000; | ||
| 172 | PUSH REG ;;AN000; save registers | ||
| 173 | ENDM ;;AN000; | ||
| 174 | ENDM ;;AN000; | ||
| 175 | ;; | ||
| 176 | POPP MACRO REG_LIST ;;AN000; | ||
| 177 | IRP REG,<REG_LIST> ;;AN000; | ||
| 178 | POP REG ;;AN000; return registers to initial state | ||
| 179 | ENDM ;;AN000; | ||
| 180 | ENDM ;;AN000; | ||
| 181 | ;; | ||
| 182 | DOSCALL MACRO ;;AN000; | ||
| 183 | INT 21H ;;AN000; call to DOS | ||
| 184 | ENDM ;;AN000; | ||
| 185 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 186 | ; | ||
| 187 | ; | ||
| 188 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 189 | GET_SCROLL_CALL PROC NEAR ;AN000; | ||
| 190 | PUSH CX ;AN000; | ||
| 191 | PUSH DX ;AN000; | ||
| 192 | PUSH SI ;AN000; | ||
| 193 | PUSH DI ;AN000; | ||
| 194 | PUSH ES ;AN000; | ||
| 195 | ; ; | ||
| 196 | ; Initialize to top ; | ||
| 197 | ; ; | ||
| 198 | MOV BX,WR_SCBID ;AN000;get PCSLCTP field | ||
| 199 | CALL GET_SCB ;AN000;ES:DI points to SCB | ||
| 200 | ; ; | ||
| 201 | CMP AX,0 ;AN000;check to start list & highlight | ||
| 202 | JE GS10 ;AN000; at top | ||
| 203 | ; ; | ||
| 204 | MOV ES:[DI]+SCB_TOPELE,1;AN000;intialize parameters | ||
| 205 | MOV ES:[DI]+SCB_CURELE,AX;AN000; | ||
| 206 | ; ; | ||
| 207 | ; Locate PCB data and initialize SCB ; | ||
| 208 | ; ; | ||
| 209 | GS10: MOV BX,QM_ACTIVEPAN ;AN000;get the active panel number | ||
| 210 | CALL GET_PCB ;AN000;ES:DI address of panel PCB | ||
| 211 | ; | ||
| 212 | PUSH ES:[DI]+PCB_UROW ;AN000; ;get active panel row | ||
| 213 | PUSH ES:[DI]+PCB_UCOL ;AN000; ;get active panel column | ||
| 214 | PUSH ES:[DI]+PCB_CCBID ;AN000;get active panel color index | ||
| 215 | ; | ||
| 216 | MOV BX,WR_SCBID ;AN000;get PCSLCTP field | ||
| 217 | CALL GET_SCB ;AN000;ES:DI points to SCB | ||
| 218 | ; | ||
| 219 | POP ES:[DI]+SCB_CCBID ;AN000;get the panel's current color ind | ||
| 220 | POP ES:[DI]+SCB_RELCOL ;AN000;set the panel's relative column | ||
| 221 | POP ES:[DI]+SCB_RELROW ;AN000;set the panel's relative row | ||
| 222 | ; | ||
| 223 | ; Build actual return string in complete buffer | ||
| 224 | ; | ||
| 225 | CALL SET_RETKEYS ;AN000;create complete return string | ||
| 226 | CALL SET_NUMKEYS ;AN000;GHG | ||
| 227 | |||
| 228 | PUSH WR_CRETSEG ;AN000;initialize SCB with complete | ||
| 229 | POP ES:[DI]+SCB_RLSEG ;AN000; return string information | ||
| 230 | |||
| 231 | PUSH WR_CRETOFF ;AN000; | ||
| 232 | POP ES:[DI]+SCB_RLOFF ;AN000; | ||
| 233 | |||
| 234 | PUSH WR_CRETLEN ;AN000; | ||
| 235 | POP ES:[DI]+SCB_RLLEN ;AN000; | ||
| 236 | ; | ||
| 237 | ; Process scroll field | ||
| 238 | ; | ||
| 239 | AND ES:[DI]+SCB_OPT1,NOT SCB_UKS;AN000; | ||
| 240 | ;set to not use keystrokes | ||
| 241 | CALL PCSLCTP_CALL ;AN000;display scroll field | ||
| 242 | |||
| 243 | MOV BX,ES:[DI]+SCB_CURELE ;AN000;get last current element | ||
| 244 | MOV AX,ES:[DI]+SCB_KS ;AN000;get last keystroke | ||
| 245 | ; | ||
| 246 | ; | ||
| 247 | ; determine if current element has specific contextual help text | ||
| 248 | ; | ||
| 249 | MOV WR_HLPOPT,HLP_OVER ;AN000;GHG position help panel with default | ||
| 250 | PUSH AX ;AN000;GHG | ||
| 251 | MOV BX,WR_SCBID ;AN000;GHG | ||
| 252 | MOV AX,ES:[DI]+SCB_CURELE ;AN000;GHG | ||
| 253 | CALL ADJUST_DOWN ;AN000;GHG | ||
| 254 | MOV CX,AX ;AN000;GHG | ||
| 255 | MOV AX,2 ;AN000;GHG | ||
| 256 | CALL GET_HELP_ID ;AN000;GHG | ||
| 257 | MOV WR_HCBCONT,AX ;AN000;GHG get current contextual help ID | ||
| 258 | XOR AH,AH ;AN000;GHG | ||
| 259 | MOV AL,DH ;AN000;GHG | ||
| 260 | MOV WR_HLPROW,AX ;AN000;GHG row override of 6 | ||
| 261 | MOV AL,DL ;AN000;GHG | ||
| 262 | MOV WR_HLPCOL,AX ;AN000;GHG row override of 6 | ||
| 263 | POP AX ;AN000;GHG | ||
| 264 | |||
| 265 | CALL CHK_NUMKEYS ;AN000;GHG | ||
| 266 | CALL CHK_RETKEYS ;AN000;check if used by other routine | ||
| 267 | JCXZ GS20 ;AN000;keystroke not used elsewhere | ||
| 268 | |||
| 269 | JMP GS10 ;AN000;keystroke used elswhere, continu | ||
| 270 | ; from last position | ||
| 271 | ; | ||
| 272 | ; Exit | ||
| 273 | ; | ||
| 274 | GS20: MOV BX,ES:[DI]+SCB_CURELE ;AN000;return current element | ||
| 275 | ; | ||
| 276 | ; display the selected option and exit immediately | ||
| 277 | ; | ||
| 278 | PUSH AX ;AN008;JW | ||
| 279 | PUSH BX ;AN008;JW | ||
| 280 | OR ES:[DI]+SCB_OPT1,SCB_RD ;AN008;JW | ||
| 281 | CALL PCSLCTP_CALL ;AN008;JW display scroll field and exit | ||
| 282 | AND ES:[DI]+SCB_OPT1,NOT SCB_RD ;AN008;JW | ||
| 283 | POP BX ;AN008;JW | ||
| 284 | POP AX ;AN008;JW | ||
| 285 | |||
| 286 | POP ES ;AN000; | ||
| 287 | POP DI ;AN000; | ||
| 288 | POP SI ;AN000; | ||
| 289 | POP DX ;AN000; | ||
| 290 | POP CX ;AN000; | ||
| 291 | |||
| 292 | RET ;AN000; | ||
| 293 | GET_SCROLL_CALL ENDP ;AN000; | ||
| 294 | PAGE ;AN000; | ||
| 295 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 296 | ; | ||
| 297 | ; GET_INPUT_CALL | ||
| 298 | ; | ||
| 299 | ; Process input field relative to current active panel. | ||
| 300 | ; Automatically handle help request, display and interaction. | ||
| 301 | ; | ||
| 302 | ; Entry: WR_DRETSEG = Segment of dynamic return key string | ||
| 303 | ; WR_DRETOFF = Offset of dynamic return key string | ||
| 304 | ; WR_DRETLEN = Length of dynamic return key string | ||
| 305 | ; | ||
| 306 | ; WR_HCBCONT = ID of the desired contextual help text | ||
| 307 | ; | ||
| 308 | ; IN_ICBID = ICB Number of input field | ||
| 309 | ; | ||
| 310 | ; Exit: AX = Contains keystroke | ||
| 311 | ; | ||
| 312 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 313 | PUBLIC GET_INPUT_CALL ;AN000;GHG | ||
| 314 | GET_INPUT_CALL PROC NEAR ;AN000;GHG | ||
| 315 | PUSH CX ;AN000;GHG | ||
| 316 | PUSH DX ;AN000;GHG | ||
| 317 | PUSH SI ;AN000;GHG | ||
| 318 | PUSH DI ;AN000;GHG | ||
| 319 | PUSH ES ;AN000;GHG | ||
| 320 | ;GHG | ||
| 321 | MOV BX,IN_ICBID ;AN000;GHG get PCSLCTP field | ||
| 322 | CALL GET_ICB ;AN000;GHG ES:DI points to SCB | ||
| 323 | ;GHG | ||
| 324 | GI10: CALL SET_RETKEYS ;AN000;GHG create complete return string | ||
| 325 | ;GHG | ||
| 326 | PUSH WR_CRETSEG ;AN000;GHG initialize SCB with complete | ||
| 327 | POP ES:[DI]+ICB_RETSEG ;AN000;GHG return string information | ||
| 328 | ;GHG | ||
| 329 | PUSH WR_CRETOFF ;AN000;GHG | ||
| 330 | POP ES:[DI]+ICB_RETOFF ;AN000;GHG | ||
| 331 | ;GHG | ||
| 332 | PUSH WR_CRETLEN ;AN000;GHG | ||
| 333 | POP ES:[DI]+ICB_RETLEN ;AN000;GHG | ||
| 334 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 335 | ; | ||
| 336 | ; Process input field | ||
| 337 | ; | ||
| 338 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 339 | CALL PCINPUT_CALL ;AN000;GHG display input field | ||
| 340 | ;GHG | ||
| 341 | PUSHH <SI,DI,ES,DS> ;AN000;GHG | ||
| 342 | PUSH ES:[DI]+ICB_FIELDOFF ;AN000;GHG | ||
| 343 | PUSH ES:[DI]+ICB_FIELDSEG ;AN000;GHG | ||
| 344 | PUSH ES:[DI]+ICB_DEFOFF ;AN000;GHG | ||
| 345 | PUSH ES:[DI]+ICB_DEFSEG ;AN000;GHG | ||
| 346 | ;GHG | ||
| 347 | MOV CX,ES:[DI]+ICB_FIELDLEN;AN000;GHG | ||
| 348 | OR CX,CX ;AN000;GHG | ||
| 349 | JE GI_11 ;AN000;GHG | ||
| 350 | ;GHG | ||
| 351 | POP ES ;AN000;GHG | ||
| 352 | POP DI ;AN000;GHG | ||
| 353 | POP DS ;AN000;GHG | ||
| 354 | POP SI ;AN000;GHG | ||
| 355 | CLD ;AN000;GHG | ||
| 356 | REP MOVSB ;AN000;GHG | ||
| 357 | GI_11: POPP <DS,ES,DI,SI> ;AN000;GHG | ||
| 358 | PUSH ES:[DI]+ICB_ENDBYTE ;AN000;GHG | ||
| 359 | POP ES:[DI]+ICB_DEFLEN ;AN000;GHG | ||
| 360 | ;GHG | ||
| 361 | MOV AX,ES:[DI]+ICB_KEYRET ;AN000;GHG get last keystroke | ||
| 362 | ; GHG | ||
| 363 | ; | ||
| 364 | ; determine if current element has specific contextual help text | ||
| 365 | ; | ||
| 366 | ;GHG | ||
| 367 | MOV WR_HLPOPT,HLP_OVER ;AN000;GHG position help panel with default | ||
| 368 | PUSH AX ;AN000;GHG | ||
| 369 | MOV AX,1 ;AN000;GHG | ||
| 370 | MOV BX,IN_ICBID ;AN000;GHG | ||
| 371 | CALL GET_HELP_ID ;AN000;GHG | ||
| 372 | MOV WR_HCBCONT,AX ;AN000;GHG get current contextual help ID | ||
| 373 | XOR AH,AH ;AN000;GHG | ||
| 374 | MOV AL,DH ;AN000;GHG | ||
| 375 | MOV WR_HLPROW,AX ;AN000;GHG row override | ||
| 376 | MOV AL,DL ;AN000;GHG | ||
| 377 | MOV WR_HLPCOL,AX ;AN000;GHG col override | ||
| 378 | POP AX ;AN000;GHG | ||
| 379 | ;GHG | ||
| 380 | CALL CURSOROFF ;AN000;GHG Turn cursor OFF!!!! | ||
| 381 | CALL CHK_RETKEYS ;AN000;GHG check if used by other routine | ||
| 382 | JCXZ GI20 ;AN000;GHG keystroke not used elsewhere | ||
| 383 | ;GHG | ||
| 384 | JMP GI10 ;AN000;GHG keystroke used elswhere, continue | ||
| 385 | ;GHG from last position | ||
| 386 | GI20: POP ES ;AN000;GHG | ||
| 387 | POP DI ;AN000;GHG | ||
| 388 | POP SI ;AN000;GHG | ||
| 389 | POP DX ;AN000;GHG | ||
| 390 | POP CX ;AN000;GHG | ||
| 391 | ;GHG | ||
| 392 | RET ;AN000;GHG | ||
| 393 | GET_INPUT_CALL ENDP ;AN000;GHG | ||
| 394 | PAGE ;AN000;GHG | ||
| 395 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GHG | ||
| 396 | ; | ||
| 397 | ; GET_INPUT | ||
| 398 | ; | ||
| 399 | ; Process input field relative to current active panel. | ||
| 400 | ; Automatically handle help request, display and interaction. | ||
| 401 | ; | ||
| 402 | ; | ||
| 403 | ; Entry: WR_DRETSEG = Segment of call's return key string | ||
| 404 | ; WR_DRETOFF = Offset of call's return key string | ||
| 405 | ; WR_DRETLEN = Length of call's return key string | ||
| 406 | ; | ||
| 407 | ; WR_HCBCONT = ID of the desired contextual help text | ||
| 408 | ; | ||
| 409 | ; | ||
| 410 | ; Exit: AX = Contains Keystroke | ||
| 411 | ; | ||
| 412 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 413 | GET_INPUT PROC NEAR ;AN000; | ||
| 414 | RET ;AN000; | ||
| 415 | GET_INPUT ENDP ;AN000; | ||
| 416 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 417 | ; | ||
| 418 | ; GET_KEY | ||
| 419 | ; | ||
| 420 | ; Get a keystroke from the keyboard and return to calling routine | ||
| 421 | ; if not used. This routine uses the string of return keys and | ||
| 422 | ; builds the complete set of return keys. Once the complete set of | ||
| 423 | ; return keys is built, the CAS keyboard routine is called to look | ||
| 424 | ; for a keystroke. When a keystroke is pressed, the CAS routine | ||
| 425 | ; returns and the keystroke is checked to determine if help should | ||
| 426 | ; be processed. If the keystroke is not used by help, then it is | ||
| 427 | ; returned to the calling routine for use. | ||
| 428 | ; | ||
| 429 | ; Entry: WR_DRETSEG = Segment of call's return key string | ||
| 430 | ; WR_DRETOFF = Offset of call's return key string | ||
| 431 | ; WR_DRETLEN = Length of call's return key string | ||
| 432 | ; | ||
| 433 | ; Exit: AX = Contains unused keystroke returned from call | ||
| 434 | ; | ||
| 435 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 436 | GET_KEY PROC NEAR ;AN000; | ||
| 437 | |||
| 438 | PUSH CX ;AN000;save registers | ||
| 439 | ; | ||
| 440 | ; Create complete return key string | ||
| 441 | ; | ||
| 442 | CGK10: MOV AX,0 ;AN000;clear to zero | ||
| 443 | ; | ||
| 444 | CALL SET_RETKEYS ;AN000;create complete return string | ||
| 445 | ; | ||
| 446 | PUSH WR_CRETSEG ;AN000;initialize PCINSTR parameters | ||
| 447 | POP INS_SSEG ;AN000; with complete return string data | ||
| 448 | ; | ||
| 449 | PUSH WR_CRETOFF ;AN000; | ||
| 450 | POP INS_SOFF ;AN000; | ||
| 451 | ; | ||
| 452 | PUSH WR_CRETLEN ;AN000; | ||
| 453 | POP INS_SLEN ;AN000; | ||
| 454 | ; ; | ||
| 455 | ; Get keystroke from keyboard ; | ||
| 456 | ; ; | ||
| 457 | CGK20: MOV INC_OPT,INC_KWAIT ;AN000;wait for keystroke | ||
| 458 | CALL PCINCHA_CALL ;AN000;call CAS routine | ||
| 459 | ; | ||
| 460 | ; Check if keystroke is a valid return key | ||
| 461 | ; | ||
| 462 | MOV INS_OPT,INS_FKS ;AN000;set find keystroke option | ||
| 463 | MOV AX,INC_KS ;AN000;set keystroke to PCINSTR | ||
| 464 | MOV INS_KS,AX ;AN000; parameter | ||
| 465 | ; | ||
| 466 | CALL PCINSTR_CALL ;AN000;check if good key | ||
| 467 | ; | ||
| 468 | TEST INS_RSLT,0FFFFH ;AN000;check if key found | ||
| 469 | JNE CGK30 ;AN000;yes | ||
| 470 | ; | ||
| 471 | CALL PCMBEEP_CALL ;AN000;no | ||
| 472 | JMP CGK20 ;AN000;try again | ||
| 473 | ; | ||
| 474 | ; Check if help keystroke and process if yes | ||
| 475 | ; | ||
| 476 | CGK30: CALL CHK_RETKEYS ;AN000;check keystroke | ||
| 477 | JCXZ CGKEXIT ;AN000;not used return to calling routin | ||
| 478 | JMP CGK10 ;AN000;if used by help, get another key | ||
| 479 | ; | ||
| 480 | CGKEXIT: POP CX ;AN000;restore registers | ||
| 481 | RET ;AN000; | ||
| 482 | GET_KEY ENDP ;AN000; | ||
| 483 | PAGE ;AN000; | ||
| 484 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 485 | ; | ||
| 486 | ; SET_RETKEYS | ||
| 487 | ; | ||
| 488 | ; Combine the calling routine's dynamic return key string with | ||
| 489 | ; the return keys of the child panels currently displayed into | ||
| 490 | ; one complete return string. | ||
| 491 | ; | ||
| 492 | ; Entry: WR_DRETSEG = Segment of call's dynamic return key string | ||
| 493 | ; WR_DRETOFF = Offset of call's dynamic return key string | ||
| 494 | ; WR_DRETLEN = Length of call's dynamic return key string | ||
| 495 | ; | ||
| 496 | ; Exit: WR_CRETSEG = Segment of complete return key string to use | ||
| 497 | ; WR_CRETOFF = Offset of complete return key string to use | ||
| 498 | ; WR_CRETLEN = Length of complete return key string to use | ||
| 499 | ; | ||
| 500 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 501 | SET_RETKEYS PROC NEAR ;AN000; | ||
| 502 | PUSH CX ;AN000; | ||
| 503 | PUSH DX ;AN000; | ||
| 504 | PUSH DI ;AN000; | ||
| 505 | PUSH SI ;AN000; | ||
| 506 | PUSH ES ;AN000; | ||
| 507 | PUSH DS ;AN000; | ||
| 508 | ; | ||
| 509 | ; do not exceed WR_MAXRETKSZ buffer length | ||
| 510 | ; | ||
| 511 | ; | ||
| 512 | ; Move keystrokes from dynamic return key string to complete return strg buffer | ||
| 513 | ; | ||
| 514 | CLD ;AN000;auto increment | ||
| 515 | PUSH WR_CRETSEG ;AN000;get segment of complete return | ||
| 516 | POP ES ;AN000; buffer | ||
| 517 | ; | ||
| 518 | MOV DI,WR_CRETOFF ;AN000;get offset of complete return | ||
| 519 | ; | ||
| 520 | MOV CX,WR_DRETLEN ;AN000;get length of dynamic return strg | ||
| 521 | MOV DX,CX ;AN000; and initialize DX counter | ||
| 522 | ; | ||
| 523 | MOV SI,WR_DRETOFF ;AN000;get offset of dynamic return strg | ||
| 524 | ; | ||
| 525 | PUSH DS ;AN000;save data segment | ||
| 526 | ; | ||
| 527 | PUSH WR_DRETSEG ;AN000;get offset of dynamic return strg | ||
| 528 | POP DS ;AN000; | ||
| 529 | ; | ||
| 530 | REP MOVSB ;AN000;copy dynamic return key string | ||
| 531 | ; to complete return key buffer | ||
| 532 | POP DS ;AN000;restore data segment | ||
| 533 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 534 | ; | ||
| 535 | ; Add assigned keys from displayed child panels to complete return buffer | ||
| 536 | ; | ||
| 537 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 538 | MOV SI,QM_RETKEYSOFF ;AN000;get offset of return buffer | ||
| 539 | ; | ||
| 540 | MOV CX,QM_RETKEYSLEN ;AN000; | ||
| 541 | ADD DX,CX ;AN000;add length of return keys | ||
| 542 | ; | ||
| 543 | PUSH DS ;AN000;save data segment | ||
| 544 | ; | ||
| 545 | PUSH QM_RETKEYSSEG ;AN000; | ||
| 546 | POP DS ;AN000;get segment of return buffer | ||
| 547 | ; | ||
| 548 | REP MOVSB ;AN000;copy string sent | ||
| 549 | ; | ||
| 550 | POP DS ;AN000;restore data segment | ||
| 551 | ; | ||
| 552 | MOV CX,WR_MAXRETKSZ ;AN061; | ||
| 553 | SUB CX,DX ;AN061; | ||
| 554 | MOV AL,0 ;AN061; | ||
| 555 | REP STOSB ;AN061; | ||
| 556 | ; | ||
| 557 | MOV WR_CRETLEN,DX ;AN000;initialize current return string | ||
| 558 | ; ; | ||
| 559 | ; Exit ; | ||
| 560 | ; ; | ||
| 561 | SRK30: POP DS ;AN000;restore registers | ||
| 562 | POP ES ;AN000; | ||
| 563 | POP SI ;AN000; | ||
| 564 | POP DI ;AN000; | ||
| 565 | POP DX ;AN000; | ||
| 566 | POP CX ;AN000; | ||
| 567 | RET ;AN000; | ||
| 568 | SET_RETKEYS ENDP ;AN000; | ||
| 569 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 570 | ; | ||
| 571 | ; SET_NUMKEYS | ||
| 572 | ; | ||
| 573 | ; Entry: WR_CRETSEG = Segment of call's dynamic return key string | ||
| 574 | ; WR_CRETOFF = Offset of call's dynamic return key string | ||
| 575 | ; WR_CRETLEN = Length of call's dynamic return key string | ||
| 576 | ; | ||
| 577 | ; Exit: WR_CRETSEG' = Segment of complete return key string to use | ||
| 578 | ; WR_CRETOFF' = Offset of complete return key string to use | ||
| 579 | ; WR_CRETLEN' = Length of complete return key string to use | ||
| 580 | ; | ||
| 581 | ; GORD GIDDINGS | ||
| 582 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 583 | NUMKEYS DB '123456789' ;AN000; | ||
| 584 | ; | ||
| 585 | SET_NUMKEYS PROC NEAR ;AN000; | ||
| 586 | PUSH AX ;AN000;save registers | ||
| 587 | PUSH BX ;AN000; | ||
| 588 | PUSH CX ;AN000; | ||
| 589 | PUSH DI ;AN000; | ||
| 590 | PUSH SI ;AN000; | ||
| 591 | PUSH ES ;AN000; | ||
| 592 | PUSH DS ;AN000; | ||
| 593 | ; | ||
| 594 | ; Move numeric keystrokes into completed return strg buffer | ||
| 595 | ; | ||
| 596 | MOV BX,WR_SCBID ;AN000;get PCSLCTP field | ||
| 597 | CALL GET_SCB ;AN000;ES:DI points to SCB | ||
| 598 | ; | ||
| 599 | TEST ES:[DI]+SCB_OPT3,SCB_NUMS;AN000; | ||
| 600 | JZ SNK_30 ;AN000; | ||
| 601 | ; | ||
| 602 | PUSH ES:[DI]+SCB_SELSEG ;AN000; | ||
| 603 | PUSH ES:[DI]+SCB_SELOFF ;AN000; | ||
| 604 | PUSH ES:[DI]+SCB_NUMELE ;AN000; | ||
| 605 | POP CX ;AN000; | ||
| 606 | POP DI ;AN000; | ||
| 607 | POP ES ;AN000; | ||
| 608 | XOR AX,AX ;AN000; | ||
| 609 | ; | ||
| 610 | SNR_10: MOV BX,SCB_ACTIVEON ;AN000; | ||
| 611 | CMP ES:[DI],BX ;AN000; | ||
| 612 | JNE SNR_15 ;AN000; | ||
| 613 | INC AX ;AN000; | ||
| 614 | SNR_15: INC DI ;AN000; | ||
| 615 | INC DI ;AN000; | ||
| 616 | LOOP SNR_10 ;AN000; | ||
| 617 | ; | ||
| 618 | CMP AX,9 ;AN000; | ||
| 619 | JBE SNR_20 ;AN000; | ||
| 620 | MOV AX,9 ;AN000; | ||
| 621 | SNR_20: MOV CX,AX ;AN000; | ||
| 622 | ; | ||
| 623 | PUSH WR_CRETOFF ;AN000;get offset of complete return | ||
| 624 | PUSH WR_CRETSEG ;AN000;get segment of complete return | ||
| 625 | POP ES ;AN000; | ||
| 626 | POP DI ;AN000; | ||
| 627 | ; | ||
| 628 | ADD DI,WR_CRETLEN ;AN000;get length of dynamic return strg | ||
| 629 | ADD WR_CRETLEN,CX ;AN000; | ||
| 630 | LEA SI,NUMKEYS ;AN000; | ||
| 631 | PUSH CS ;AN000; | ||
| 632 | POP DS ;AN000; | ||
| 633 | ; | ||
| 634 | CLD ;AN000;auto increment | ||
| 635 | REP MOVSW ;AN000; | ||
| 636 | ; | ||
| 637 | SNK_30: POP DS ;AN000;restore registers | ||
| 638 | POP ES ;AN000; | ||
| 639 | POP SI ;AN000; | ||
| 640 | POP DI ;AN000; | ||
| 641 | POP CX ;AN000; | ||
| 642 | POP BX ;AN000; | ||
| 643 | POP AX ;AN000; | ||
| 644 | RET ;AN000; | ||
| 645 | SET_NUMKEYS ENDP ;AN000; | ||
| 646 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 647 | ; | ||
| 648 | ; CHK_RETKEYS | ||
| 649 | ; | ||
| 650 | ; Check return key for active function keys | ||
| 651 | ; | ||
| 652 | ; Note: That currently this routine searchs for only the help | ||
| 653 | ; function keys (F1=Help, F5=Index, F7=Keys); however, other | ||
| 654 | ; function keys could be searched for and processed in this | ||
| 655 | ; routine before returning to the main dialog. | ||
| 656 | ; | ||
| 657 | ; Entry: AX = Keystroke | ||
| 658 | ; | ||
| 659 | ; Exit: CX = 0= keystroke not used | ||
| 660 | ; 1= keystroke used | ||
| 661 | ; | ||
| 662 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 663 | CHK_RETKEYS PROC NEAR ;AN000; | ||
| 664 | PUSHF ;AN000;save registers and variables | ||
| 665 | PUSH AX ;AN000; | ||
| 666 | PUSH BX ;AN000; | ||
| 667 | PUSH DX ;AN000; | ||
| 668 | PUSH SI ;AN000; | ||
| 669 | PUSH DI ;AN000; | ||
| 670 | PUSH ES ;AN000; | ||
| 671 | PUSH DS ;AN000; | ||
| 672 | PUSH WR_HCBCONT ;AN000;save contextual help ID | ||
| 673 | PUSH QM_ACTIVEPAN ;AN000;save current active panel | ||
| 674 | PUSH WR_SCBID ;AN000;save current SCB ID | ||
| 675 | PUSH WR_DRETSEG ;AN000;save dynamic return key vars | ||
| 676 | PUSH WR_DRETOFF ;AN000; | ||
| 677 | PUSH WR_DRETLEN ;AN000; | ||
| 678 | PUSH MB_FREQUENCY ;AN004;GHG for PTM 1064 | ||
| 679 | ; | ||
| 680 | ; Check if keystroke pressed displays, processes, or removes contextual help | ||
| 681 | ; | ||
| 682 | CALL MANAGE_HELP ;AN000; | ||
| 683 | ; | ||
| 684 | CMP CX,0 ;AN000;check if keystroke used by help | ||
| 685 | JE CHK10 ;AN000;no, check other functions | ||
| 686 | ; | ||
| 687 | JMP CHKEXIT ;AN000;yes, exit | ||
| 688 | ; | ||
| 689 | ; Keys may be check here and processed for other functions | ||
| 690 | ; | ||
| 691 | CHK10: ;AN000; | ||
| 692 | ; | ||
| 693 | ; Exit to calling routine | ||
| 694 | ; | ||
| 695 | CHKEXIT: POP MB_FREQUENCY ;AN004;GHG for PTM 1064 | ||
| 696 | POP WR_DRETLEN ;AN000;save dynamic return key vars | ||
| 697 | POP WR_DRETOFF ;AN000; | ||
| 698 | POP WR_DRETSEG ;AN000; | ||
| 699 | POP WR_SCBID ;AN000;restore current SCB ID | ||
| 700 | POP QM_ACTIVEPAN ;AN000;restore current active panel | ||
| 701 | POP WR_HCBCONT ;AN000;restore contextual help ID | ||
| 702 | POP DS ;AN000; | ||
| 703 | POP ES ;AN000; | ||
| 704 | POP DI ;AN000; | ||
| 705 | POP SI ;AN000; | ||
| 706 | POP DX ;AN000; | ||
| 707 | POP BX ;AN000; | ||
| 708 | POP AX ;AN000; | ||
| 709 | POPF ;AN000; | ||
| 710 | RET ;AN000; | ||
| 711 | CHK_RETKEYS ENDP ;AN000; | ||
| 712 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 713 | ; | ||
| 714 | ; CHK_NUMKEYS | ||
| 715 | ; | ||
| 716 | ; Check return key for numeric keys | ||
| 717 | ; | ||
| 718 | ; Entry: AX = Keystroke | ||
| 719 | ; | ||
| 720 | ; Exit: AX = The first character in the completed return key string | ||
| 721 | ; WR_CRETSEG:WR_CRETOFF | ||
| 722 | ; | ||
| 723 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 724 | CHK_NUMKEYS PROC NEAR ;AN000; | ||
| 725 | PUSH ES ;AN000; | ||
| 726 | PUSH DI ;AN000; | ||
| 727 | PUSH BX ;AN000; | ||
| 728 | MOV BX,WR_SCBID ;AN000; | ||
| 729 | CALL GET_SCB ;AN000; | ||
| 730 | TEST ES:[DI]+SCB_OPT3,SCB_NUMS ;AN000; | ||
| 731 | JZ CNK_20 ;AN000; | ||
| 732 | OR AH,AH ;AN000; | ||
| 733 | JNZ CNK_20 ;AN000; | ||
| 734 | CMP AL,'1' ;AN000; | ||
| 735 | JB CNK_20 ;AN000; | ||
| 736 | CMP AL,'9' ;AN000; | ||
| 737 | JA CNK_20 ;AN000; | ||
| 738 | ; | ||
| 739 | MOV BX,AX ;AN000; now form the index value | ||
| 740 | SUB BX,'0' ;AN000; from the keystroke! | ||
| 741 | ; | ||
| 742 | PUSHH <ES,DI> ;AN000;GHG | ||
| 743 | PUSHH <WR_CRETSEG,WR_CRETOFF> ;AN000;GHG | ||
| 744 | POPP <DI,ES> ;AN000;GHG | ||
| 745 | MOV AL,ES:[DI] ;AN000;GHG | ||
| 746 | POPP <DI,ES> ;AN000;GHG | ||
| 747 | ; ; | ||
| 748 | MOV ES:[DI]+SCB_KS,AX ;AN000; | ||
| 749 | PUSH AX ;AN000; | ||
| 750 | MOV AX,BX ;AN000;get PCSLCTP field | ||
| 751 | MOV BX,WR_SCBID ;AN000; | ||
| 752 | CALL ADJUST_UP ;AN000; | ||
| 753 | MOV ES:[DI]+SCB_CURELE,AX ;AN000; | ||
| 754 | POP AX ;AN000; | ||
| 755 | ; | ||
| 756 | CNK_20: POP BX ;AN000; | ||
| 757 | POP DI ;AN000; | ||
| 758 | POP ES ;AN000; | ||
| 759 | RET ;AN000; | ||
| 760 | CHK_NUMKEYS ENDP ;AN000; | ||
| 761 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 762 | ; | ||
| 763 | ; MANAGE_HELP | ||
| 764 | ; | ||
| 765 | ; Manage contextual, indexed and keys help. This routine is used : | ||
| 766 | ; to display, process and remove help from the screen. | ||
| 767 | ; | ||
| 768 | ; Entry: AX = Keystroke pressed | ||
| 769 | ; | ||
| 770 | ; WR_HLPOPT = Help display and operation options | ||
| 771 | ; WR_HLPROW = Override row for help panel | ||
| 772 | ; WR_HLPCOL = Override column for help panel | ||
| 773 | ; | ||
| 774 | ; WR_HCBCONT = Current contextual help ID | ||
| 775 | ; WR_HCBHELP = Help-on-help ID | ||
| 776 | ; WR_HCBKEYS = Keys help ID | ||
| 777 | ; | ||
| 778 | ; WR_PCBHPAN = Help panel ID | ||
| 779 | ; | ||
| 780 | ; WR_SCBCONT = Scroll ID for context forms of help | ||
| 781 | ; WR_SCBINDX = Scroll ID for indexed forms of help | ||
| 782 | ; | ||
| 783 | ; WR_KEYQUIT = Quit keystroke (Esc) | ||
| 784 | ; WR_KEYKEYS = Keys help keystroke (F7=Keys) | ||
| 785 | ; WR_KEYHELP = Help-on-help keystroke (F1=Help) | ||
| 786 | ; WR_KEYCONT = Contextual help keystroke (F1=Help) | ||
| 787 | ; WR_KEYINDX = Indexed help keystroke (F5=Index) | ||
| 788 | ; WR_KEYSWIT = Switch keystroke (F2=Switch) | ||
| 789 | ; | ||
| 790 | ; HRD_FILSPOFF = Offset of contextual help file path name | ||
| 791 | ; HRD_FILSPSEG = Segment of contextual help file path name | ||
| 792 | ; | ||
| 793 | ; Exit: AX = Keystroke | ||
| 794 | ; CX 0 = Keystroke not used | ||
| 795 | ; 1 = Keystroke used | ||
| 796 | ; | ||
| 797 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 798 | MANAGE_HELP PROC NEAR ;AN000; | ||
| 799 | ; | ||
| 800 | ; Check if help is displayed | ||
| 801 | ; | ||
| 802 | MOV CX,0 ;AN000; | ||
| 803 | |||
| 804 | PUSH DS ;AN007;JW | ||
| 805 | PUSH CS ;AN007;JW | ||
| 806 | POP DS ;AN007;JW | ||
| 807 | CMP ERROR_ACTIVE,1 ;AN007;JW is an error being processed? | ||
| 808 | POP DS ;AN007;JW | ||
| 809 | JNE MH00 ;AN007;JW no, continue | ||
| 810 | JMP MHEXIT ;AN007;JW yes, exit | ||
| 811 | |||
| 812 | MH00: CMP WR_HLPDIS,0 ;AN000;check if help is displayed | ||
| 813 | JE MH30 ;AN000; | ||
| 814 | |||
| 815 | CMP AX,WR_KEYSWIT ;AN000;check if any key but switch | ||
| 816 | JNE MH10 ;AN000; and remove help | ||
| 817 | |||
| 818 | TEST WR_HLPDIS,HLP_INDX ;AN000;check if index displayed | ||
| 819 | JNE MH05 ;AN000;yes | ||
| 820 | |||
| 821 | MOV QM_OPT1,QM_RVMCHD ;AN000;remove child panel | ||
| 822 | MOV AX,WR_PCBENTR ;AN000;Enter panel | ||
| 823 | MOV QM_ID,AX ;AN000;parent PCB number | ||
| 824 | CALL PCDISPQ_CALL ;AN000; | ||
| 825 | |||
| 826 | MH05: MOV QM_OPT1,QM_PUSHCHD ;AN000;add child panel | ||
| 827 | MOV AX,WR_PCBHELP ;AN000;F1=Help panel | ||
| 828 | MOV QM_ID,AX ;AN000;parent PCB number | ||
| 829 | CALL PCDISPQ_CALL ;AN000; | ||
| 830 | JMP MH20 ;AN000; | ||
| 831 | |||
| 832 | MH10: CALL REMOVE_HELP ;AN000;restore original display queues | ||
| 833 | JMP MH80 ;AN000;exit | ||
| 834 | ; | ||
| 835 | ; Process read help text | ||
| 836 | ; | ||
| 837 | MH20: CALL PROCESS_HELP ;AN000;process contextual help | ||
| 838 | |||
| 839 | MOV CX,1 ;AN000;set keystroke used flag | ||
| 840 | |||
| 841 | CMP AX,WR_KEYSWIT ;AN000;check if help should be left | ||
| 842 | JNE MH25 ;AN000; on the screen | ||
| 843 | |||
| 844 | MOV QM_OPT1,QM_RVMCHD ;AN000;remove child panel | ||
| 845 | MOV AX,WR_PCBHELP ;AN000;F1=Help | ||
| 846 | MOV QM_ID,AX ;AN000;parent PCB number | ||
| 847 | CALL PCDISPQ_CALL ;AN000; | ||
| 848 | |||
| 849 | MOV AX,WR_PCBHELP ;AN000;F1=Help | ||
| 850 | MOV QM_ID,AX ;AN000;parent PCB number | ||
| 851 | CALL PCDISPQ_CALL ;AN000; | ||
| 852 | |||
| 853 | TEST WR_HLPDIS,HLP_INDX ;AN000;check if index displayed | ||
| 854 | JNE MH22 ;AN000;yes | ||
| 855 | |||
| 856 | MOV QM_OPT1,QM_PUSHCHD ;AN000;add child panel | ||
| 857 | MOV AX,WR_PCBENTR ;AN000;Enter panel | ||
| 858 | MOV QM_ID,AX ;AN000;parent PCB number | ||
| 859 | CALL PCDISPQ_CALL ;AN000; | ||
| 860 | |||
| 861 | MH22: JMP MH80 ;AN000;exit | ||
| 862 | |||
| 863 | MH25: CMP AL,01BH ;AN000;check for quit key | ||
| 864 | JNE MH30 ;AN000; refresh display | ||
| 865 | |||
| 866 | CALL REMOVE_HELP ;AN000;restore original display queues | ||
| 867 | JMP MH80 ;AN000;exit | ||
| 868 | |||
| 869 | ; Read help if requested | ||
| 870 | |||
| 871 | MH30: CMP AX,WR_KEYHELP ;AN000;check if F1=help requested | ||
| 872 | JNE MH60 ;AN000; | ||
| 873 | |||
| 874 | CMP WR_HLPDIS,0 ;AN000;is help already displayed | ||
| 875 | JE MH40 ;AN000;no | ||
| 876 | |||
| 877 | CALL REMOVE_HELP ;AN000;restore original display queues | ||
| 878 | |||
| 879 | MH40: TEST WR_HLPDIS,HLP_CONT ;AN000;check if contextual help already | ||
| 880 | JE MH50 ;AN000; on | ||
| 881 | |||
| 882 | MOV WR_HLPPAN,HLP_KEYS ;AN000;turn on help on keys | ||
| 883 | OR WR_HLPPAN,HLP_CONT ;AN000;turn on contextual help | ||
| 884 | OR WR_HLPPAN,HLP_INDX ;AN000;turn on help index | ||
| 885 | |||
| 886 | PUSH WR_HCBHELP ;AN000;set help-on-help ID | ||
| 887 | POP HRD_ID ;AN000; | ||
| 888 | |||
| 889 | MOV WR_HLPDIS,HLP_HELP ;AN000;turn help-on-help status on | ||
| 890 | CALL READ_HELP ;AN000;prepare help text | ||
| 891 | JMP MH20 ;AN000;loop to process | ||
| 892 | |||
| 893 | MH50: MOV WR_HLPPAN,HLP_KEYS ;AN000;turn on help on keys | ||
| 894 | OR WR_HLPPAN,HLP_HELP ;AN000;turn on help-on-help | ||
| 895 | OR WR_HLPPAN,HLP_INDX ;AN000;turn on help index | ||
| 896 | |||
| 897 | PUSH WR_HCBCONT ;AN000;get current contextual help text | ||
| 898 | POP HRD_ID ;AN000; ID | ||
| 899 | |||
| 900 | MOV WR_HLPDIS,HLP_CONT ;AN000;turn contextual help status on | ||
| 901 | CALL READ_HELP ;AN000;prepare help text | ||
| 902 | JMP MH20 ;AN000;loop to process | ||
| 903 | ; | ||
| 904 | ; Check if indexed help requested for display | ||
| 905 | ; | ||
| 906 | MH60: CMP AX,WR_KEYINDX ;AN000;check if index selected | ||
| 907 | JNE MH70 ;AN000; | ||
| 908 | |||
| 909 | CMP WR_HLPDIS,0 ;AN000;is help already displayed | ||
| 910 | JE MH65 ;AN000;no | ||
| 911 | |||
| 912 | CALL REMOVE_HELP ;AN000;restore original display queues | ||
| 913 | |||
| 914 | MH65: MOV WR_HLPPAN,HLP_CONT ;AN000;turn on contextual help | ||
| 915 | OR WR_HLPPAN,HLP_KEYS ;AN000;turn on help on keys | ||
| 916 | |||
| 917 | MOV HRD_ID,0 ;AN000;set contextual help ID | ||
| 918 | |||
| 919 | MOV WR_HLPDIS,HLP_INDX ;AN000;turn index status on | ||
| 920 | CALL READ_HELP ;AN000;prepare help text | ||
| 921 | JMP MH20 ;AN000;loop to process | ||
| 922 | ; | ||
| 923 | ; Check if keys help requested for display | ||
| 924 | ; | ||
| 925 | MH70: CMP AX,WR_KEYKEYS ;AN000;check for help on keys | ||
| 926 | JNE MHEXIT ;AN000; | ||
| 927 | |||
| 928 | CMP WR_HLPDIS,0 ;AN000;is help already displayed | ||
| 929 | JE MH75 ;AN000;no | ||
| 930 | |||
| 931 | CALL REMOVE_HELP ;AN000;restore original display queues | ||
| 932 | |||
| 933 | MH75: MOV WR_HLPPAN,HLP_CONT ;AN000;turn on contextual help | ||
| 934 | OR WR_HLPPAN,HLP_INDX ;AN000;turn on help index | ||
| 935 | |||
| 936 | PUSH WR_HCBKEYS ;AN000;set keys help ID | ||
| 937 | POP HRD_ID ;AN000; | ||
| 938 | |||
| 939 | MOV WR_HLPDIS,HLP_KEYS ;AN000;turn keys help status on | ||
| 940 | CALL READ_HELP ;AN000;prepare help text | ||
| 941 | JMP MH20 ;AN000;loop to process | ||
| 942 | ; | ||
| 943 | ; Help was processed restore original active panel and return key string | ||
| 944 | ; | ||
| 945 | MH80: MOV QM_OPT1,0 ;AN000;make original panel active | ||
| 946 | CALL PCDISPQ_CALL ;AN000; and update the return keys | ||
| 947 | |||
| 948 | CALL SET_RETKEYS ;AN000;restore original return keys | ||
| 949 | |||
| 950 | PUSH AX ;AN000;save keystroke | ||
| 951 | |||
| 952 | MOV AX,1 ;;AN000;;;;;;;;;;0 ;set break option off | ||
| 953 | |||
| 954 | CMP WR_HLPDIS,0 ;AN000;is help displayed | ||
| 955 | JE MH90 ;AN000; | ||
| 956 | |||
| 957 | MOV AX,1 ;AN000;turn break option on | ||
| 958 | |||
| 959 | MH90: CALL PCPANEL_CALL ;AN000;make original panel the active | ||
| 960 | ; panel with the child panels | ||
| 961 | POP AX ;AN000;restore keystroke | ||
| 962 | ; | ||
| 963 | ; Exit | ||
| 964 | ; | ||
| 965 | MHEXIT: ;AN000;exit | ||
| 966 | ; | ||
| 967 | RET ;AN000; | ||
| 968 | MANAGE_HELP ENDP ;AN000; | ||
| 969 | |||
| 970 | PAGE ;AN000; | ||
| 971 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 972 | ; | ||
| 973 | ; READ_HELP | ||
| 974 | ; | ||
| 975 | ; Read Help Text and Prepare for Display: | ||
| 976 | ; | ||
| 977 | ; o Read the specified contextual help text into the help buffer : | ||
| 978 | ; | ||
| 979 | ; o Save the current parent and child display queues | ||
| 980 | ; | ||
| 981 | ; o Add the contextual help panel to the new display queue | ||
| 982 | ; | ||
| 983 | ; o Exit without updating display | ||
| 984 | ; | ||
| 985 | ; | ||
| 986 | ; Entry: WR_PCBHPAN = Help panel ID | ||
| 987 | ; WR_SCBCONT = Scroll ID for context forms of help | ||
| 988 | ; WR_SCBINDX = Scroll ID for indexed forms of help | ||
| 989 | ; | ||
| 990 | ; HRD_ID = Current contextual help ID to read | ||
| 991 | ; HRD_FILSPOFF = Offset of help file path name | ||
| 992 | ; HRD_FILSPSEG = Segment of help file path name | ||
| 993 | ; | ||
| 994 | ; WR_HLPOPT = Help options | ||
| 995 | ; WR_HLPDIS = Help display status | ||
| 996 | ; WR_HLPPAN = Active help panels | ||
| 997 | ; WR_HLPROW = Override row for help panel | ||
| 998 | ; WR_HLPCOL = Override column for help panel | ||
| 999 | ; | ||
| 1000 | ; Exit: None | ||
| 1001 | ; | ||
| 1002 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1003 | READ_HELP PROC NEAR ;AN000; | ||
| 1004 | PUSH BX ;AN000;save registers | ||
| 1005 | PUSH DX ;AN000; | ||
| 1006 | PUSH DI ;AN000; | ||
| 1007 | PUSH QM_ACTIVEPAN ;AN000; | ||
| 1008 | ; | ||
| 1009 | ; Read specified help text from file into memory buffer | ||
| 1010 | ; | ||
| 1011 | MOV HRD_OPT1,HRD_TEXT ;AN000;set the contextual option | ||
| 1012 | ; | ||
| 1013 | TEST WR_HLPDIS,HLP_INDX ;AN000;check if index status on | ||
| 1014 | JE RH05 ;AN000; | ||
| 1015 | ; | ||
| 1016 | MOV HRD_OPT1,HRD_TOPIC ;AN000;set the indexed help option | ||
| 1017 | ; | ||
| 1018 | RH05: CALL HOOK_INT_24 ;AN000; | ||
| 1019 | ; | ||
| 1020 | RH06: PUSH HRD_BUFOFF ;AN000; | ||
| 1021 | PUSH HRD_BUFLEN ;AN000;save help buffer length | ||
| 1022 | ; | ||
| 1023 | CALL PCHLPRD_CALL ;AN005;GHG call help read routine | ||
| 1024 | JNC RH07 ;AN006;JW | ||
| 1025 | ; | ||
| 1026 | POP HRD_BUFLEN ;AN006;JW restore help buffer length | ||
| 1027 | POP HRD_BUFOFF ;AN006;JW | ||
| 1028 | MOV BX,ERR_INS_INSTALL ;AN060;JW | ||
| 1029 | MOV CX,E_RETURN ;AN000; | ||
| 1030 | CALL HANDLE_ERROR_CALL ;AN000; | ||
| 1031 | JNC RH06 ;AN000; | ||
| 1032 | CLEAR_SCREEN2 ;AN000; | ||
| 1033 | JMP EXIT_SELECT ;AN000; | ||
| 1034 | ; | ||
| 1035 | RH07: POP HRD_BUFLEN ;AN000;restore help buffer length | ||
| 1036 | POP HRD_BUFOFF ;AN000; | ||
| 1037 | CALL RESTORE_INT_24 ;AN006;JW | ||
| 1038 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1039 | ; | ||
| 1040 | ; Handle error for help text not found | ||
| 1041 | ; | ||
| 1042 | ; Perform WORD WRAP on help buffer... | ||
| 1043 | ; | ||
| 1044 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1045 | PUSH HRD_TEXTSEG ;AN000;GHG | ||
| 1046 | POP WWP_SRCTXTSEG ;AN000;GHG | ||
| 1047 | ;GHG | ||
| 1048 | PUSH HRD_TEXTOFF ;AN000;GHG | ||
| 1049 | POP WWP_SRCTXTOFF ;AN000;GHG | ||
| 1050 | ;GHG | ||
| 1051 | PUSH HRD_TEXTLEN ;AN000;GHG | ||
| 1052 | POP WWP_SRCTXTLEN ;AN000;GHG | ||
| 1053 | ;GHG | ||
| 1054 | PUSH WR_MAXHELPSZ ;AN000;GHG | ||
| 1055 | POP WWP_SRCBUFLEN ;AN000;GHG | ||
| 1056 | ;GHG | ||
| 1057 | PUSH ES ;AN000;GHG | ||
| 1058 | PUSH DI ;AN000;GHG | ||
| 1059 | MOV BX,WR_SCBCONT ;AN000;GHG get help scroll ID | ||
| 1060 | CALL GET_SCB ;AN000;GHG ES:DI points to SCB | ||
| 1061 | MOV BX,ES:[DI]+SCB_WIDTH ;AN000;GHG calculate number of help text | ||
| 1062 | MOV WWP_WIDTH,BX ;AN000;GHG | ||
| 1063 | POP DI ;AN000;GHG | ||
| 1064 | POP ES ;AN000;GHG | ||
| 1065 | ;GHG | ||
| 1066 | ;GHG | ||
| 1067 | XOR AX,AX ;AN000;GHG | ||
| 1068 | MOV WWP_NUMLINES,AX ;AN000;GHG | ||
| 1069 | MOV WWP_ERROR,AX ;AN000;GHG | ||
| 1070 | MOV WWP_OPT1,WWP_LEFTJUST+WWP_HYPHEN+WWP_SRCBUFFER ;AN000;GHG | ||
| 1071 | ;GHG | ||
| 1072 | CALL PCWWRAP_CALL ;AN000;GHG | ||
| 1073 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1074 | ; | ||
| 1075 | ; Determine position and add help panel to parent display queue | ||
| 1076 | ; | ||
| 1077 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1078 | MOV QM_OPT1,QM_PUSHPQU ;AN000;push parent queue | ||
| 1079 | OR QM_OPT1,QM_PUSHCQU ;AN000;push child queue | ||
| 1080 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 1081 | |||
| 1082 | TEST WR_HLPOPT,HLP_OVER ;AN000;check for help panel position | ||
| 1083 | JE RH10 ;AN000; override | ||
| 1084 | |||
| 1085 | PUSH WR_HLPCOL ;AN000;set override | ||
| 1086 | POP QM_COLUMOVER ;AN000; | ||
| 1087 | |||
| 1088 | PUSH WR_HLPROW ;AN000;set override | ||
| 1089 | POP QM_ROWOVER ;AN000; | ||
| 1090 | |||
| 1091 | RH10: MOV QM_OPT1,QM_RVMCHD ;AN000;remove child panel | ||
| 1092 | MOV AX,WR_PCBENTR ;AN000;Enter panel | ||
| 1093 | MOV QM_ID,AX ;AN000;parent PCB number | ||
| 1094 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 1095 | |||
| 1096 | MOV AX,WR_PCBQUIT ;AN000;Quit panel | ||
| 1097 | MOV QM_ID,AX ;AN000;parent PCB number | ||
| 1098 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 1099 | |||
| 1100 | MOV QM_OPT1,QM_PUSHPAN ;AN000;add help panel | ||
| 1101 | OR QM_OPT2,QM_BREAKON ;AN000;break on | ||
| 1102 | MOV BX,WR_PCBHPAN ;AN000; | ||
| 1103 | MOV QM_ID,BX ;AN000;get help panel number | ||
| 1104 | MOV QM_ACTIVEPAN,BX ;AN000;make help panel active | ||
| 1105 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 1106 | |||
| 1107 | MOV QM_OPT2,0 ;AN000;set options off | ||
| 1108 | MOV QM_ROWOVER,0 ;AN000;deactivate overrides | ||
| 1109 | MOV QM_COLUMOVER,0 ;AN000; | ||
| 1110 | ; | ||
| 1111 | ; Check if help panel's children are active and add to display queue | ||
| 1112 | ; | ||
| 1113 | MOV QM_OPT1,QM_PUSHCHD ;AN000;add child panels option | ||
| 1114 | |||
| 1115 | MOV BX,WR_PCBQUIT ;AN000;Esc=Quit | ||
| 1116 | MOV QM_ID,BX ;AN000;get help panel number | ||
| 1117 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 1118 | |||
| 1119 | TEST WR_HLPPAN,HLP_CONT ;AN000;check if contextual help active | ||
| 1120 | JE RH15 ;AN000; | ||
| 1121 | |||
| 1122 | MOV BX,WR_PCBHELP ;AN000;F1=Help panel | ||
| 1123 | MOV QM_ID,BX ;AN000;get help panel number | ||
| 1124 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 1125 | |||
| 1126 | RH15: TEST WR_HLPPAN,HLP_HELP ;AN000;check if help-on-help active | ||
| 1127 | JE RH20 ;AN000; | ||
| 1128 | |||
| 1129 | MOV BX,WR_PCBHELP ;AN000;F1=Help panel | ||
| 1130 | MOV QM_ID,BX ;AN000;get help panel number | ||
| 1131 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 1132 | |||
| 1133 | RH20: TEST WR_HLPPAN,HLP_INDX ;AN000;check if help index active | ||
| 1134 | JE RH30 ;AN000; | ||
| 1135 | |||
| 1136 | MOV BX,WR_PCBINDX ;AN000;F5=Index panel | ||
| 1137 | MOV QM_ID,BX ;AN000;get help panel number | ||
| 1138 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 1139 | |||
| 1140 | RH30: TEST WR_HLPPAN,HLP_KEYS ;AN000;check if help keys active | ||
| 1141 | JE RH40 ;AN000; | ||
| 1142 | |||
| 1143 | MOV BX,WR_PCBKEYS ;AN000; | ||
| 1144 | MOV QM_ID,BX ;AN000;get help panel number | ||
| 1145 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 1146 | ; | ||
| 1147 | ; Locate help panel PCB data and initialize common data | ||
| 1148 | ; | ||
| 1149 | RH40: MOV BX,WR_PCBHPAN ;AN000;get help panel ID | ||
| 1150 | CALL GET_PCB ;AN000;ES:DI points to PCB | ||
| 1151 | |||
| 1152 | PUSH ES:[DI]+PCB_UROW ;AN000;get help panel row | ||
| 1153 | PUSH ES:[DI]+PCB_UCOL ;AN000;get help panel column | ||
| 1154 | ; | ||
| 1155 | ; Initialize for indexed form of help | ||
| 1156 | ; | ||
| 1157 | TEST WR_HLPDIS,HLP_INDX ;AN000;check is index help status is on | ||
| 1158 | JE RH50 ;AN000; | ||
| 1159 | |||
| 1160 | LEA AX,WR_REFBUF ;AN000;get address of refresh table | ||
| 1161 | MOV WR_REFOFF,AX ;AN000; | ||
| 1162 | |||
| 1163 | LEA AX,WR_REFBUF ;AN000;get address of refresh table | ||
| 1164 | MOV WR_REFOFF,AX ;AN000; | ||
| 1165 | |||
| 1166 | MOV QM_OPT1,QM_PUSHCHD ;AN000;push child | ||
| 1167 | MOV AX,WR_PCBENTR ;AN000;Enter panel | ||
| 1168 | MOV QM_ID,AX ;AN000;parent PCB number | ||
| 1169 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 1170 | |||
| 1171 | MOV BX,WR_SCBINDX ;AN000;get help scroll ID | ||
| 1172 | CALL GET_SCB ;AN000;ES:DI points to SCB | ||
| 1173 | |||
| 1174 | POP ES:[DI]+SCB_RELCOL ;AN000;set panel's relative column | ||
| 1175 | POP ES:[DI]+SCB_RELROW ;AN000;set panel's relative row | ||
| 1176 | |||
| 1177 | MOV ES:[DI]+SCB_TOPELE,1 ;AN000;set top element | ||
| 1178 | MOV ES:[DI]+SCB_CURELE,1 ;AN000;set current line | ||
| 1179 | MOV ES:[DI]+SCB_CURCOL,1 ;AN000;display offset into opt strings | ||
| 1180 | |||
| 1181 | ; | ||
| 1182 | ; adjust scrolling field width to be contained within panel | ||
| 1183 | ; | ||
| 1184 | |||
| 1185 | MOV AX,HRD_TOPICLEN ;AN000;get topic length | ||
| 1186 | MOV ES:[DI]+SCB_OASLEN,AX ;AN000;fixed string length | ||
| 1187 | MOV ES:[DI]+SCB_NUMCOL,AX ;AN000;maximum number of cols to scroll | ||
| 1188 | |||
| 1189 | ; | ||
| 1190 | ; adjust scrolling field number of display lines to be | ||
| 1191 | ; contained within panel | ||
| 1192 | ; | ||
| 1193 | |||
| 1194 | PUSH HRD_TOPICNUM ;AN000;set number of elements | ||
| 1195 | POP ES:[DI]+SCB_NUMELE ;AN000; | ||
| 1196 | |||
| 1197 | MOV AX,HRD_TOPICSEG ;AN000;set segment of topic vector | ||
| 1198 | MOV ES:[DI]+SCB_OAPSEG,AX ;AN000; | ||
| 1199 | MOV ES:[DI]+SCB_OASSEG,AX ;AN000;set option array string segment | ||
| 1200 | |||
| 1201 | PUSH HRD_TOPICOFF ;AN000;set offset of topic vector | ||
| 1202 | POP ES:[DI]+SCB_OAPOFF ;AN000; | ||
| 1203 | |||
| 1204 | JMP RHEXIT ;AN000;index initialized | ||
| 1205 | ; | ||
| 1206 | ; Initialize for contextual forms of help (cont, help, and keys) | ||
| 1207 | ; | ||
| 1208 | RH50: LEA AX,WR_REFBUF ;AN000;get address of refresh table | ||
| 1209 | MOV WR_REFOFF,AX ;AN000; | ||
| 1210 | ; | ||
| 1211 | MOV BX,WR_SCBCONT ;AN000;get help scroll ID | ||
| 1212 | CALL GET_SCB ;AN000;ES:DI points to SCB | ||
| 1213 | ; | ||
| 1214 | POP ES:[DI]+SCB_RELCOL ;AN000;set panel's relative column | ||
| 1215 | POP ES:[DI]+SCB_RELROW ;AN000;set panel's relative row | ||
| 1216 | ; | ||
| 1217 | MOV ES:[DI]+SCB_TOPELE,1 ;AN000;GHG set top element | ||
| 1218 | MOV ES:[DI]+SCB_CURELE,1 ;AN000;GHG set current line | ||
| 1219 | MOV ES:[DI]+SCB_CURCOL,1 ;AN000;display offset into opt strings | ||
| 1220 | ; | ||
| 1221 | MOV AX,WWP_NUMLINES ;AN000;GHG Use WordWrap # lines | ||
| 1222 | DEC AX ;AN000;GHG | ||
| 1223 | MOV ES:[DI]+SCB_NUMELE,AX ;AN000;initialize number of elements | ||
| 1224 | |||
| 1225 | PUSH HRD_TEXTSEG ;AN000;set segment of help text | ||
| 1226 | POP ES:[DI]+SCB_OAPSEG ;AN000; | ||
| 1227 | |||
| 1228 | PUSH HRD_TEXTOFF ;AN000;set offset of help text | ||
| 1229 | POP ES:[DI]+SCB_OAPOFF ;AN000; | ||
| 1230 | MOV BX,ES:[DI]+SCB_WIDTH ;AN000;GHG SKIP OVER FIRST ELEMENT | ||
| 1231 | ADD ES:[DI]+SCB_OAPOFF,BX ;AN000;GHG | ||
| 1232 | |||
| 1233 | RHEXIT: POP QM_ACTIVEPAN ;AN000;restore current active panel | ||
| 1234 | POP DI ;AN000;restore registers and exit | ||
| 1235 | POP DX ;AN000; | ||
| 1236 | POP BX ;AN000; | ||
| 1237 | RET ;AN000; | ||
| 1238 | READ_HELP ENDP ;AN000; | ||
| 1239 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1240 | ; | ||
| 1241 | ; PROCESS_HELP | ||
| 1242 | ; | ||
| 1243 | ; Process Help Panel and Text: | ||
| 1244 | ; o Update display to make help panel active | ||
| 1245 | ; o Configure proper return keys | ||
| 1246 | ; o Process scrolling of help text until exit key pressed | ||
| 1247 | ; | ||
| 1248 | ; Entry: WR_PCBHPAN = Help panel ID | ||
| 1249 | ; WR_SCBCONT = Scroll ID for context forms of help | ||
| 1250 | ; WR_SCBINDX = Scroll ID for indexed forms of help | ||
| 1251 | ; | ||
| 1252 | ; Exit: AX = Exit keystroke pressed | ||
| 1253 | ; | ||
| 1254 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1255 | PROCESS_HELP PROC NEAR ;AN000; | ||
| 1256 | PUSH BX ;AN000;save registers | ||
| 1257 | PUSH DI ;AN000; | ||
| 1258 | PUSH ES ;AN000; | ||
| 1259 | PUSH WR_DRETSEG ;AN000;save dynamic return key vars | ||
| 1260 | PUSH WR_DRETOFF ;AN000; | ||
| 1261 | PUSH WR_DRETLEN ;AN000; | ||
| 1262 | PUSH QM_ACTIVEPAN ;AN000; | ||
| 1263 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1264 | ; | ||
| 1265 | ; Refresh display with help panel | ||
| 1266 | ; | ||
| 1267 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1268 | PUSH WR_PCBHPAN ;AN000;set the help panel as active | ||
| 1269 | POP QM_ACTIVEPAN ;AN000; | ||
| 1270 | ; | ||
| 1271 | MOV QM_OPT1,0 ;AN000;make help panel active panel | ||
| 1272 | CALL PCDISPQ_CALL ;AN000; and update the return keys | ||
| 1273 | ; | ||
| 1274 | MOV AX,1 ;AN000;set break option on | ||
| 1275 | CALL PCPANEL_CALL ;AN000;refresh display | ||
| 1276 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1277 | ; | ||
| 1278 | ; Locate proper scroll SCB for help form | ||
| 1279 | ; | ||
| 1280 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1281 | MOV BX,WR_SCBCONT ;AN000;set for contextual help form | ||
| 1282 | ; | ||
| 1283 | TEST WR_HLPDIS,HLP_INDX ;AN000;check if indexed help status on | ||
| 1284 | JE PH10 ;AN000; | ||
| 1285 | ; | ||
| 1286 | MOV BX,WR_SCBINDX ;AN000;set for indexed help form | ||
| 1287 | ; | ||
| 1288 | PH10: CALL INIT_HELP_TITLE ;AN000;** GG | ||
| 1289 | CALL GET_SCB ;AN000;loads PCSLCTP vars with field | ||
| 1290 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1291 | ; | ||
| 1292 | ; Build return string of keystrokes and process help | ||
| 1293 | ; | ||
| 1294 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1295 | LEA AX,WR_RETHLPBUF ;AN000;set help dynamic return keys | ||
| 1296 | MOV WR_DRETOFF,AX ;AN000; | ||
| 1297 | ; | ||
| 1298 | MOV AX,WR_RETHLPLEN ;AN000; | ||
| 1299 | MOV WR_DRETLEN,AX ;AN000; | ||
| 1300 | ; | ||
| 1301 | MOV AX,DATA ;AN000; | ||
| 1302 | MOV WR_DRETSEG,AX ;AN000; | ||
| 1303 | ; | ||
| 1304 | CALL SET_RETKEYS ;AN000;create complete return string | ||
| 1305 | ; | ||
| 1306 | PUSH WR_CRETSEG ;AN000;initialize SCB with complete | ||
| 1307 | POP ES:[DI]+SCB_RLSEG ;AN000; return string information | ||
| 1308 | ; | ||
| 1309 | PUSH WR_CRETOFF ;AN000; | ||
| 1310 | POP ES:[DI]+SCB_RLOFF ;AN000; | ||
| 1311 | ; | ||
| 1312 | PUSH WR_CRETLEN ;AN000; | ||
| 1313 | POP ES:[DI]+SCB_RLLEN ;AN000; | ||
| 1314 | ; | ||
| 1315 | CALL PCSLCTP_CALL ;AN000;process help text until exit | ||
| 1316 | ; | ||
| 1317 | MOV AX,ES:[DI]+SCB_KS ;AN000;get keystroke from PCSLCTP | ||
| 1318 | ; | ||
| 1319 | TEST WR_HLPDIS,HLP_INDX ;AN000;check if index help status is on | ||
| 1320 | JE PHEXIT ;AN000; | ||
| 1321 | ; | ||
| 1322 | CMP AX,WR_KEYSELT ;AN000;check if select key pressed to | ||
| 1323 | JNE PHEXIT ;AN000; select desired topic | ||
| 1324 | ; | ||
| 1325 | MOV BX,ES:[DI]+SCB_CURELE;AN000;get current selected element | ||
| 1326 | MOV WR_HCBCONT,BX ;AN000;return new contextual help number | ||
| 1327 | ; selected from the help index | ||
| 1328 | MOV AX,WR_KEYHELP ;AN000;return contextual help key requst | ||
| 1329 | ; instead of enter key | ||
| 1330 | PHEXIT: POP QM_ACTIVEPAN ;AN000;restore current active panel | ||
| 1331 | POP WR_DRETLEN ;AN000;restore return key vars | ||
| 1332 | POP WR_DRETOFF ;AN000; | ||
| 1333 | POP WR_DRETSEG ;AN000; | ||
| 1334 | POP ES ;AN000;restore registers and exit | ||
| 1335 | POP DI ;AN000; | ||
| 1336 | POP BX ;AN000; | ||
| 1337 | RET ;AN000; | ||
| 1338 | PROCESS_HELP ENDP ;AN000; | ||
| 1339 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1340 | ; | ||
| 1341 | ; | ||
| 1342 | ; INITIALIZE_HELP_TITLE | ||
| 1343 | ; | ||
| 1344 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1345 | INIT_HELP_TITLE PROC NEAR ;AN000; | ||
| 1346 | PUSHH <AX,BX,ES,DI,WR_SCBID> ;AN000; | ||
| 1347 | ; | ||
| 1348 | MOV BX,WR_PCBHPAN ;AN000;get help panel ID | ||
| 1349 | CALL GET_PCB ;AN000;ES:DI points to PCB | ||
| 1350 | ; | ||
| 1351 | PUSH ES:[DI]+PCB_UROW ;AN000;get help panel row | ||
| 1352 | PUSH ES:[DI]+PCB_UCOL ;AN000;get help panel column | ||
| 1353 | ; | ||
| 1354 | MOV BX,SCR_TITLE_HLP ;AN000; | ||
| 1355 | MOV WR_SCBID,BX ;AN000; | ||
| 1356 | CALL GET_SCB ;AN000; | ||
| 1357 | ; | ||
| 1358 | POP ES:[DI]+SCB_RELCOL ;AN000; | ||
| 1359 | POP ES:[DI]+SCB_RELROW ;AN000; | ||
| 1360 | ; | ||
| 1361 | PUSH HRD_TEXTSEG ;AN000; | ||
| 1362 | POP ES:[DI]+SCB_OAPSEG ;AN000; | ||
| 1363 | ; | ||
| 1364 | PUSH HRD_TEXTOFF ;AN000; | ||
| 1365 | POP ES:[DI]+SCB_OAPOFF ;AN000; | ||
| 1366 | ; | ||
| 1367 | PUSH ES:[DI]+SCB_OPT1 ;AN000; | ||
| 1368 | OR ES:[DI]+SCB_OPT1,SCB_RD ;AN000; | ||
| 1369 | CALL PCSLCTP_CALL ;AN000;display scroll field | ||
| 1370 | POP ES:[DI]+SCB_OPT1 ;AN000; | ||
| 1371 | ; | ||
| 1372 | POPP <WR_SCBID,DI,ES,BX,AX> ;AN000; | ||
| 1373 | RET ;AN000; | ||
| 1374 | INIT_HELP_TITLE ENDP ;AN000; | ||
| 1375 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1376 | ; | ||
| 1377 | ; REMOVE_HELP | ||
| 1378 | ; | ||
| 1379 | ; Remove Help Panel: | ||
| 1380 | ; | ||
| 1381 | ; o Restore original parent and child display queues; thereby, | ||
| 1382 | ; removing help panels | ||
| 1383 | ; | ||
| 1384 | ; o Exit without updating display | ||
| 1385 | ; | ||
| 1386 | ; Entry: WR_KEYHELP = Help-on-help keystroke (F1=Help) | ||
| 1387 | ; | ||
| 1388 | ; Exit: WR_HLPDIS = Help status off | ||
| 1389 | ; | ||
| 1390 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1391 | REMOVE_HELP PROC NEAR ;AN000; | ||
| 1392 | PUSH BX ;AN000;save registers | ||
| 1393 | PUSH DI ;AN000; | ||
| 1394 | ; | ||
| 1395 | ; Restore original parent and child queues | ||
| 1396 | ; | ||
| 1397 | MOV QM_OPT1,QM_POPPQU ;AN000;restore parent queue | ||
| 1398 | OR QM_OPT1,QM_POPCQU ;AN000;restore child queue | ||
| 1399 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 1400 | ; | ||
| 1401 | ; Reset variables for exit | ||
| 1402 | ; | ||
| 1403 | TEST WR_HLPDIS,HLP_CONT ;AN000;check if contextual help | ||
| 1404 | JE RM20 ;AN000; already on, no set status off | ||
| 1405 | |||
| 1406 | CMP AX,WR_KEYHELP ;AN000;check if help on help request | ||
| 1407 | JE RMEXIT ;AN000; | ||
| 1408 | |||
| 1409 | RM20: MOV WR_HLPDIS,0 ;AN000;help panels not on | ||
| 1410 | ; | ||
| 1411 | ; Exit | ||
| 1412 | ; | ||
| 1413 | RMEXIT: POP DI ;AN000;restore registers and exit | ||
| 1414 | POP BX ;AN000; | ||
| 1415 | RET ;AN000; | ||
| 1416 | REMOVE_HELP ENDP ;AN000; | ||
| 1417 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1418 | ; | ||
| 1419 | ; GET_PCB | ||
| 1420 | ; | ||
| 1421 | ; Get Panel Control Block information for child or parent panel. : | ||
| 1422 | ; | ||
| 1423 | ; Entry: BX = Number of PCB vector desired. | ||
| 1424 | ; | ||
| 1425 | ; Exit: ES = Segment of desired PCB. | ||
| 1426 | ; DI = Offset of desired PCB. | ||
| 1427 | ; | ||
| 1428 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1429 | ; | ||
| 1430 | GET_PCB PROC NEAR ;AN000; | ||
| 1431 | PUSH AX ;AN000; | ||
| 1432 | PUSH BX ;AN000; | ||
| 1433 | PUSH CX ;AN000; | ||
| 1434 | PUSH DX ;AN000;GHG | ||
| 1435 | ; | ||
| 1436 | ; read panel control block vector to obtain PCB address | ||
| 1437 | ; | ||
| 1438 | PUSH QM_PCBVECSEG ;AN000;get beginning PCB vector address | ||
| 1439 | POP ES ;AN000; | ||
| 1440 | PUSH QM_PCBVECOFF ;AN000; | ||
| 1441 | POP DI ;AN000; | ||
| 1442 | |||
| 1443 | DEC BX ;AN000;make zero based | ||
| 1444 | MOV AX,VECSEGLEN ;AN000;multiply PCB element length by | ||
| 1445 | ADD AX,VECOFFLEN ;AN000; desired vector number in BX | ||
| 1446 | MUL BX ;AN000; to determine offset into PCB vec | ||
| 1447 | ADD DI,AX ;AN000;add offset inside table | ||
| 1448 | MOV BX,ES:[DI] ;AN000;get actual PCB segment | ||
| 1449 | MOV CX,ES:[DI]+VECSEGLEN ;AN000;point past PCB seg to get PCB off | ||
| 1450 | |||
| 1451 | MOV ES,BX ;AN000;set ES:DI to panel's actual | ||
| 1452 | MOV DI,CX ;AN000; PCB address | ||
| 1453 | |||
| 1454 | POP DX ;AN000;GHG | ||
| 1455 | POP CX ;AN000; | ||
| 1456 | POP BX ;AN000; | ||
| 1457 | POP AX ;AN000; | ||
| 1458 | |||
| 1459 | RET ;AN000; | ||
| 1460 | GET_PCB ENDP ;AN000; | ||
| 1461 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1462 | ; | ||
| 1463 | ; GET_SCB | ||
| 1464 | ; | ||
| 1465 | ; Get Scroll Field Control Block information. | ||
| 1466 | ; | ||
| 1467 | ; Entry: BX = Number of SCB vector desired. | ||
| 1468 | ; | ||
| 1469 | ; Exit: ES:DI = Address of desired SCB | ||
| 1470 | ; | ||
| 1471 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1472 | ; | ||
| 1473 | GET_SCB PROC NEAR ;AN000; | ||
| 1474 | ; | ||
| 1475 | PUSH AX ;AN000; | ||
| 1476 | PUSH BX ;AN000; | ||
| 1477 | PUSH CX ;AN000; | ||
| 1478 | PUSH DX ;AN000;GHG | ||
| 1479 | ; | ||
| 1480 | ; read scroll control block vector to obtain SCB address | ||
| 1481 | ; | ||
| 1482 | PUSH SRD_SCBVECSEG ;AN000;get beginning SCB vector address | ||
| 1483 | POP ES ;AN000; | ||
| 1484 | PUSH SRD_SCBVECOFF ;AN000; | ||
| 1485 | POP DI ;AN000; | ||
| 1486 | ; | ||
| 1487 | DEC BX ;AN000;make zero based | ||
| 1488 | MOV AX,VECSEGLEN ;AN000;multiply SCB element length by | ||
| 1489 | ADD AX,VECOFFLEN ;AN000; desired vector number in BX | ||
| 1490 | MUL BX ;AN000; to determine offset into SCB vec | ||
| 1491 | ADD DI,AX ;AN000;add offset inside table | ||
| 1492 | MOV BX,ES:[DI] ;AN000;get actual SCB segment | ||
| 1493 | MOV CX,ES:[DI]+VECSEGLEN ;AN000;point past SCB seg to get SCB off | ||
| 1494 | ; | ||
| 1495 | MOV ES,BX ;AN000;set ES:DI to scroll's actual | ||
| 1496 | MOV DI,CX ;AN000; SCB address | ||
| 1497 | ; | ||
| 1498 | POP DX ;AN000;GHG | ||
| 1499 | POP CX ;AN000; | ||
| 1500 | POP BX ;AN000; | ||
| 1501 | POP AX ;AN000; | ||
| 1502 | ; | ||
| 1503 | RET ;AN000; | ||
| 1504 | GET_SCB ENDP ;AN000; | ||
| 1505 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1506 | ; | ||
| 1507 | ; GET_ICB | ||
| 1508 | ; | ||
| 1509 | ; Get Input Control Block information. | ||
| 1510 | ; | ||
| 1511 | ; Entry: BX = Number of ICB vector desired. | ||
| 1512 | ; | ||
| 1513 | ; Exit: ES:DI = Address of ICB | ||
| 1514 | ; | ||
| 1515 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1516 | GET_ICB PROC NEAR ;AN000; | ||
| 1517 | PUSH AX ;AN000; | ||
| 1518 | PUSH BX ;AN000; | ||
| 1519 | PUSH CX ;AN000; | ||
| 1520 | PUSH DX ;AN000;GHG | ||
| 1521 | ; | ||
| 1522 | ; read input control block vector to obtain ICB address | ||
| 1523 | ; | ||
| 1524 | PUSH WR_ICBVECSEG ;AN000;get beginning ICB vector address | ||
| 1525 | POP ES ;AN000; | ||
| 1526 | PUSH WR_ICBVECOFF ;AN000; | ||
| 1527 | POP DI ;AN000; | ||
| 1528 | |||
| 1529 | DEC BX ;AN000;make zero based | ||
| 1530 | MOV AX,VECSEGLEN ;AN000;multiply ICB element length by | ||
| 1531 | ADD AX,VECOFFLEN ;AN000; desired vector number in BX | ||
| 1532 | MUL BX ;AN000; to determine offset into ICB vec | ||
| 1533 | ADD DI,AX ;AN000;add offset inside table | ||
| 1534 | MOV BX,ES:[DI] ;AN000;get actual ICB segment | ||
| 1535 | MOV CX,ES:[DI]+VECSEGLEN ;AN000;point past ICB seg to get ICB off | ||
| 1536 | |||
| 1537 | MOV ES,BX ;AN000;set ES:DI to field's actual | ||
| 1538 | MOV DI,CX ;AN000; ICB address | ||
| 1539 | |||
| 1540 | POP DX ;AN000;GHG | ||
| 1541 | POP CX ;AN000; | ||
| 1542 | POP BX ;AN000; | ||
| 1543 | POP AX ;AN000; | ||
| 1544 | RET ;AN000; | ||
| 1545 | GET_ICB ENDP ;AN000; | ||
| 1546 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1547 | ; | ||
| 1548 | ; REFRESH_FLDS | ||
| 1549 | ; | ||
| 1550 | ; Refresh specified input and scrolling fields in the logical video : | ||
| 1551 | ; buffer during screen build. | ||
| 1552 | ; | ||
| 1553 | ; Format = DW Panel control block number | ||
| 1554 | ; DW Number of fields in this record | ||
| 1555 | ; DW Object type ID | ||
| 1556 | ; DW Field ID | ||
| 1557 | ; | ||
| 1558 | ; DW Object type ID | ||
| 1559 | ; DW Field ID | ||
| 1560 | ; | ||
| 1561 | ; Entry: WR_REFNUM = Number of PCB entries | ||
| 1562 | ; WR_REFOFF = Offset of table | ||
| 1563 | ; WR_REFSEG = Segment of table | ||
| 1564 | ; | ||
| 1565 | ; PM_PANBRKID = Panel PCB number to refresh | ||
| 1566 | ; | ||
| 1567 | ; Exit: None | ||
| 1568 | ; | ||
| 1569 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1570 | REFRESH_FLDS PROC NEAR ;AN000; | ||
| 1571 | PUSH AX ;AN000;save registers | ||
| 1572 | PUSH BX ;AN000; | ||
| 1573 | PUSH CX ;AN000; | ||
| 1574 | PUSH DX ;AN000; | ||
| 1575 | PUSH ES ;AN000; | ||
| 1576 | PUSH DI ;AN000; | ||
| 1577 | ; | ||
| 1578 | ; Initialize for table search | ||
| 1579 | ; | ||
| 1580 | MOV CX,WR_REFNUM ;AN000;get number of refresh table recs | ||
| 1581 | CMP CX,0 ;AN000;check the number of PCB entries | ||
| 1582 | JA RF10 ;AN000; | ||
| 1583 | JMP RFEXIT ;AN000;no records, exit | ||
| 1584 | |||
| 1585 | RF10: PUSH WR_REFOFF ;AN000;get address of refresh table | ||
| 1586 | POP WR_REFCNT ;AN000; | ||
| 1587 | |||
| 1588 | PUSH WR_REFSEG ;AN000; | ||
| 1589 | POP ES ;AN000; | ||
| 1590 | ; | ||
| 1591 | ; Locate matching table and PCB break number | ||
| 1592 | ; | ||
| 1593 | RF20: MOV DI,WR_REFCNT ;AN000;set beginning address of current | ||
| 1594 | ; table record | ||
| 1595 | |||
| 1596 | MOV AX,ES:[DI]+2 ;AN000;get number of fields in record | ||
| 1597 | MOV BX,4 ;AN000;4 bytes per field entry * | ||
| 1598 | MUL BX ;AN000; number of fields in this record | ||
| 1599 | ADD WR_REFCNT,AX ;AN000; + 4 bytes for the number of | ||
| 1600 | ADD WR_REFCNT,4 ;AN000; PCB bytes and the number of flds | ||
| 1601 | |||
| 1602 | MOV BX,PM_PANBRKID ;AN000; | ||
| 1603 | CMP BX,ES:[DI] ;AN000;check if PCB match to table rec | ||
| 1604 | JE RF30 ;AN000; | ||
| 1605 | |||
| 1606 | LOOP RF20 ;AN000;check next table record | ||
| 1607 | JMP RFEXIT ;AN000;no match, exit | ||
| 1608 | ; | ||
| 1609 | ; Match found, refresh all fields | ||
| 1610 | ; | ||
| 1611 | RF30: MOV CX,ES:[DI]+2 ;AN000;get number of fields | ||
| 1612 | |||
| 1613 | RF40: ADD DI,4 ;AN000;point to field data | ||
| 1614 | MOV AX,SCROLLOBJID ;AN000;check if scroll field | ||
| 1615 | CMP AX,ES:[DI] ;AN000; | ||
| 1616 | JNE RF50 ;AN000; | ||
| 1617 | |||
| 1618 | MOV BX,ES:[DI]+2 ;AN000;get field ID | ||
| 1619 | CALL REFRESH_SCB ;AN000;update logical video buffer | ||
| 1620 | JMP RF60 ;AN000;get next field entry | ||
| 1621 | |||
| 1622 | RF50: MOV AX,INPUTOBJID ;AN000;check if input field | ||
| 1623 | CMP AX,ES:[DI] ;AN000; | ||
| 1624 | JNE RF60 ;AN000; | ||
| 1625 | |||
| 1626 | MOV BX,ES:[DI]+2 ;AN000;get field ID | ||
| 1627 | CALL REFRESH_ICB ;AN000;update logical video buffer | ||
| 1628 | |||
| 1629 | RF60: LOOP RF40 ;AN000;get next field in same record | ||
| 1630 | |||
| 1631 | RFEXIT: POP DI ;AN000;restore registers | ||
| 1632 | POP ES ;AN000; | ||
| 1633 | POP DX ;AN000; | ||
| 1634 | POP CX ;AN000; | ||
| 1635 | POP BX ;AN000; | ||
| 1636 | POP AX ;AN000; | ||
| 1637 | |||
| 1638 | RET ;AN000; | ||
| 1639 | REFRESH_FLDS ENDP ;AN000; | ||
| 1640 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1641 | ; | ||
| 1642 | ; REFRESH_SCB | ||
| 1643 | ; | ||
| 1644 | ; Refresh scroll field in logic video buffer and exit. | ||
| 1645 | ; | ||
| 1646 | ; Entry: BX = Scroll ID field number | ||
| 1647 | ; | ||
| 1648 | ; Exit: None | ||
| 1649 | ; | ||
| 1650 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1651 | REFRESH_SCB PROC NEAR ;AN000; | ||
| 1652 | PUSH ES ;AN000;save registers | ||
| 1653 | PUSH DI ;AN000; | ||
| 1654 | |||
| 1655 | CALL GET_SCB ;AN000;load SCB address | ||
| 1656 | |||
| 1657 | PUSH ES:[DI]+SCB_OPT1 ;AN000;save options | ||
| 1658 | PUSH ES:[DI]+SCB_OPT3 ;AN000; | ||
| 1659 | |||
| 1660 | OR ES:[DI]+SCB_OPT1,SCB_RD ;AN000;set display and exit option | ||
| 1661 | AND ES:[DI]+SCB_OPT1,NOT SCB_UKS;AN000; | ||
| 1662 | OR ES:[DI]+SCB_OPT3,SCB_LVBOVR;AN000; | ||
| 1663 | |||
| 1664 | PUSH PM_LVBOFF ;AN000;initialize logical video address | ||
| 1665 | POP ES:[DI]+SCB_LVBOFF ;AN000; | ||
| 1666 | |||
| 1667 | PUSH PM_LVBSEG ;AN000; | ||
| 1668 | POP ES:[DI]+SCB_LVBSEG ;AN000; | ||
| 1669 | |||
| 1670 | CALL PCSLCTP_CALL ;AN000;refresh logical video buffer | ||
| 1671 | |||
| 1672 | POP ES:[DI]+SCB_OPT3 ;AN000;restore option | ||
| 1673 | POP ES:[DI]+SCB_OPT1 ;AN000; | ||
| 1674 | |||
| 1675 | RSEXIT: POP DI ;AN000;restore registers | ||
| 1676 | POP ES ;AN000; | ||
| 1677 | |||
| 1678 | RET ;AN000; | ||
| 1679 | REFRESH_SCB ENDP ;AN000; | ||
| 1680 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1681 | ; | ||
| 1682 | ; REFRESH_ICB | ||
| 1683 | ; | ||
| 1684 | ; Refresh input field in logic video buffer and exit. | ||
| 1685 | ; | ||
| 1686 | ; Entry: BX = Input ID field number | ||
| 1687 | ; | ||
| 1688 | ; Exit: None | ||
| 1689 | ; | ||
| 1690 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1691 | REFRESH_ICB PROC NEAR ;AN000; | ||
| 1692 | PUSH AX ;AN000; | ||
| 1693 | PUSH ES ;AN000;save registers | ||
| 1694 | PUSH DI ;AN000; | ||
| 1695 | PUSH IN_ICBID ;AN000; | ||
| 1696 | ; | ||
| 1697 | MOV IN_ICBID,BX ;AN000; | ||
| 1698 | CALL GET_ICB ;AN000;load ICB address | ||
| 1699 | ; | ||
| 1700 | CMP ES:[DI]+ICB_FIELDLEN ,0;AN000; | ||
| 1701 | CMP ES:[DI]+ICB_FIELDOFF ,0;AN000; | ||
| 1702 | CMP ES:[DI]+ICB_FIELDSEG ,0;AN000; | ||
| 1703 | CMP ES:[DI]+ICB_DEFLEN ,0;AN000; | ||
| 1704 | CMP ES:[DI]+ICB_DEFOFF ,0;AN000; | ||
| 1705 | CMP ES:[DI]+ICB_DEFSEG ,0;AN000; | ||
| 1706 | |||
| 1707 | PUSH IN_OPT ;AN000; | ||
| 1708 | PUSH ES:[DI]+ICB_OPT1 ;AN000; | ||
| 1709 | OR ES:[DI]+ICB_OPT1,ICB_OUT;AN000; | ||
| 1710 | OR IN_OPT,IN_LVBOV ;AN000; | ||
| 1711 | ; | ||
| 1712 | PUSH PM_LVBOFF ;AN000;initialize logical video address | ||
| 1713 | POP IN_LVBOFF ;AN000; | ||
| 1714 | ; | ||
| 1715 | PUSH PM_LVBSEG ;AN000; | ||
| 1716 | POP IN_LVBSEG ;AN000; | ||
| 1717 | ; | ||
| 1718 | CALL PCINPUT_CALL ;AN000; | ||
| 1719 | ; | ||
| 1720 | POP ES:[DI]+ICB_OPT1 ;AN000; | ||
| 1721 | POP IN_OPT ;AN000; | ||
| 1722 | CALL CURSOROFF ;AN000; | ||
| 1723 | ; | ||
| 1724 | POP IN_ICBID ;AN000; | ||
| 1725 | POP DI ;AN000;restore registers | ||
| 1726 | POP ES ;AN000; | ||
| 1727 | POP AX ;AN000; | ||
| 1728 | RET ;AN000; | ||
| 1729 | REFRESH_ICB ENDP ;AN000; | ||
| 1730 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1731 | ; | ||
| 1732 | ; CURSOROFF | ||
| 1733 | ; | ||
| 1734 | ; Deactivates cursor from display. | ||
| 1735 | ; | ||
| 1736 | ; Entry: None | ||
| 1737 | ; | ||
| 1738 | ; Exit: None | ||
| 1739 | ; | ||
| 1740 | ;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1741 | CURSOROFF PROC NEAR ;AN000; | ||
| 1742 | PUSH AX ;AN000;save registers | ||
| 1743 | PUSH BX ;AN000; | ||
| 1744 | PUSH CX ;AN000; | ||
| 1745 | ; | ||
| 1746 | MOV AH,3 ;AN000;function to get cursor info | ||
| 1747 | MOV BH,0 ;AN000;page zero | ||
| 1748 | INT 10H ;AN000; | ||
| 1749 | OR CH,20H ;AN000;set bit 6 | ||
| 1750 | MOV AH,1 ;AN000;function to set cursor | ||
| 1751 | INT 10H ;AN000; | ||
| 1752 | ; | ||
| 1753 | POP CX ;AN000;restore registers | ||
| 1754 | POP BX ;AN000; | ||
| 1755 | POP AX ;AN000; | ||
| 1756 | RET ;AN000; | ||
| 1757 | CURSOROFF ENDP ;AN000; | ||
| 1758 | ;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1759 | ; | ||
| 1760 | ; CURSORON | ||
| 1761 | ; | ||
| 1762 | ; Activates cursor display on screen. | ||
| 1763 | ; | ||
| 1764 | ; Entry: None | ||
| 1765 | ; | ||
| 1766 | ; Exit: None | ||
| 1767 | ; | ||
| 1768 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1769 | CURSORON PROC NEAR ;AN000; | ||
| 1770 | PUSH AX ;AN000;save registers | ||
| 1771 | PUSH BX ;AN000; | ||
| 1772 | PUSH CX ;AN000; | ||
| 1773 | ; | ||
| 1774 | MOV AH,3 ;AN000;function to get cursor info | ||
| 1775 | MOV BH,0 ;AN000;page zero | ||
| 1776 | INT 10H ;AN000; | ||
| 1777 | AND CH,NOT 20H ;AN000;clear bit 6 | ||
| 1778 | MOV AH,1 ;AN000;function to set cursor | ||
| 1779 | INT 10H ;AN000; | ||
| 1780 | ; | ||
| 1781 | POP CX ;AN000;restore registers | ||
| 1782 | POP BX ;AN000; | ||
| 1783 | POP AX ;AN000; | ||
| 1784 | ; | ||
| 1785 | RET ;AN000; | ||
| 1786 | CURSORON ENDP ;AN000; | ||
| 1787 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1788 | ; | ||
| 1789 | ; PCINCHA_CALL | ||
| 1790 | ; | ||
| 1791 | ; Call to PCINCHA. | ||
| 1792 | ; | ||
| 1793 | ; Entry: PB initialized. | ||
| 1794 | ; | ||
| 1795 | ; Exit: None | ||
| 1796 | ; | ||
| 1797 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1798 | PCINCHA_CALL PROC NEAR ;AN000; | ||
| 1799 | ; | ||
| 1800 | CALL CLEAR_INBUFF ;AN088;SEH this call was moved and now replaced to exist both before and after call | ||
| 1801 | ; | ||
| 1802 | PUSH DS ;AN000;set segment | ||
| 1803 | POP ES ;AN000; | ||
| 1804 | PUSH DS ;AN000; | ||
| 1805 | PUSH DI ;AN000;save registers | ||
| 1806 | LEA DI,INC_OPT ;AN000;set DI to proper parameter block | ||
| 1807 | ; for call | ||
| 1808 | IF CASRM ;AN000; | ||
| 1809 | MOV AH,00H ;AN000;make call to CAS-RM | ||
| 1810 | MOV BX,INC_RN ;AN000;set CAS routine number | ||
| 1811 | INT CASINT ;AN000;call routine | ||
| 1812 | ELSE ;AN000; | ||
| 1813 | CALL INCHA ;AN000; | ||
| 1814 | CALL CLEAR_INBUFF ;AC083;SEH call moved to after call to INCHA in order to flush buffer ;AN059; | ||
| 1815 | ENDIF ;AN000; | ||
| 1816 | POP DI ;AN000;restore registers | ||
| 1817 | POP DS ;AN000; | ||
| 1818 | RET ;AN000; | ||
| 1819 | PCINCHA_CALL ENDP ;AN000; | ||
| 1820 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1821 | ; | ||
| 1822 | ; PCDISPQ_CALL | ||
| 1823 | ; | ||
| 1824 | ; Call to PCDISPQ. | ||
| 1825 | ; | ||
| 1826 | ; Entry: PB initialized. | ||
| 1827 | ; | ||
| 1828 | ; Exit: None | ||
| 1829 | ; | ||
| 1830 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1831 | PCDISPQ_CALL PROC NEAR ;AN000; | ||
| 1832 | PUSH DS ;AN000;set segment | ||
| 1833 | POP ES ;AN000; | ||
| 1834 | PUSH DS ;AN000; | ||
| 1835 | PUSH DI ;AN000;save registers | ||
| 1836 | LEA DI,QM_OPT1 ;AN000;set DI to proper parameter block | ||
| 1837 | IF CASRM ;AN000; | ||
| 1838 | MOV AH,00H ;AN000;make call to CAS-RM | ||
| 1839 | MOV BX,QM_RN ;AN000;set CAS routine number | ||
| 1840 | INT CASINT ;AN000;call routine | ||
| 1841 | ELSE ;AN000; | ||
| 1842 | CALL DISPQ ;AN000; | ||
| 1843 | ENDIF ;AN000; | ||
| 1844 | POP DI ;AN000;restore registers | ||
| 1845 | POP DS ;AN000; | ||
| 1846 | RET ;AN000; | ||
| 1847 | PCDISPQ_CALL ENDP ;AN000; | ||
| 1848 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1849 | ; | ||
| 1850 | ; PCPANEL_CALL | ||
| 1851 | ; | ||
| 1852 | ; Initialize for call to PCPANEL including refresh of input and | ||
| 1853 | ; scroll fields in the logical video buffer before display. | ||
| 1854 | ; | ||
| 1855 | ; Entry: PB initialized. | ||
| 1856 | ; | ||
| 1857 | ; Exit: None | ||
| 1858 | ; | ||
| 1859 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1860 | PCPANEL_CALL PROC NEAR ;AN000; | ||
| 1861 | PUSH QM_PANQUENUM ;AN000; | ||
| 1862 | POP PM_PANQUENUM ;AN000;number of panels in parent queue | ||
| 1863 | ; | ||
| 1864 | PUSH QM_CHDQUENUM ;AN000; | ||
| 1865 | POP PM_CHDQUENUM ;AN000;number panels in child queue | ||
| 1866 | ; | ||
| 1867 | PUSH QM_ACTIVEPAN ;AN000; | ||
| 1868 | POP PM_ACTIVEPAN ;AN000;active parent panel number | ||
| 1869 | ; | ||
| 1870 | MOV BX,PM_DOA ;AN000;display child panels in active | ||
| 1871 | OR BX,PM_DOV ;AN000;use child row, col, color overrid | ||
| 1872 | OR BX,PM_DOQ ;AN000;display childs in active parent | ||
| 1873 | OR BX,PM_CL ;AN000;initialize LVB to base char/attr | ||
| 1874 | ; | ||
| 1875 | CMP AX,1 ;AN000;check if break option is on | ||
| 1876 | JNE PP05 ;AN000; | ||
| 1877 | ; | ||
| 1878 | CMP WR_REFIELDCNT,0 ;AN000;GHG | ||
| 1879 | JNE PP06 ;AN000;GHG | ||
| 1880 | XOR AX,AX ;AN000;GHG | ||
| 1881 | JMP PP05 ;AN000;GHG | ||
| 1882 | ; | ||
| 1883 | PP06: OR BX,PM_BK ;AN000;set panel manager break option on | ||
| 1884 | ; | ||
| 1885 | PP05: MOV PM_OPT1,BX ;AN000;set options | ||
| 1886 | MOV PM_PANPDQNUM,1 ;AN000;beg/ending parent PDQ number | ||
| 1887 | MOV PM_PANBRKOFF,0 ;AN000;panel off in lvb of break panel | ||
| 1888 | JMP PP20 ;AN000;begin update | ||
| 1889 | ;set options to continue panel break | ||
| 1890 | PP10: AND PM_OPT1,NOT PM_CL ;AN000;turn init LVB base char/attr off | ||
| 1891 | ;do Actual PCPANEL call | ||
| 1892 | PP20: PUSH DS ;AN000;set segment | ||
| 1893 | POP ES ;AN000; | ||
| 1894 | PUSH DS ;AN000; | ||
| 1895 | PUSH DI ;AN000;save registers | ||
| 1896 | LEA DI,PM_OPT1 ;AN000;set DI to proper parameter block | ||
| 1897 | IF CASRM ;AN000; | ||
| 1898 | MOV AH,00H ;AN000;make call to CAS-RM | ||
| 1899 | MOV BX,PM_RN ;AN000;set CAS routine number | ||
| 1900 | INT CASINT ;AN000;call routine | ||
| 1901 | ELSE ;AN000; | ||
| 1902 | CALL PANEL ;AN000; | ||
| 1903 | ENDIF ;AN000; | ||
| 1904 | POP DI ;AN000;restore registers | ||
| 1905 | POP DS ;AN000; | ||
| 1906 | ; | ||
| 1907 | CMP AX,1 ;AN000;check if the break option is | ||
| 1908 | JNE PPEXIT ;AN000; active | ||
| 1909 | ; | ||
| 1910 | MOV AX,PM_PANPDQNUM ;AN000;beg/ending parent PDQ number | ||
| 1911 | DEC AX ;AN000;adjust for possible break option | ||
| 1912 | ; on last panel in PDQ | ||
| 1913 | CMP AX,PM_PANQUENUM ;AN000;check if all panels updated | ||
| 1914 | JA PPEXIT ;AN000; when complete var is 1 greater | ||
| 1915 | ; | ||
| 1916 | CALL REFRESH_FLDS ;AN000;refresh fields in break panel | ||
| 1917 | JMP PP10 ;AN000;continue to process panels | ||
| 1918 | PPEXIT: RET ;AN000; | ||
| 1919 | PCPANEL_CALL ENDP ;AN000; | ||
| 1920 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1921 | ; | ||
| 1922 | ; PCMBEEP_CALL | ||
| 1923 | ; | ||
| 1924 | ; Call to PCMBEEP. | ||
| 1925 | ; | ||
| 1926 | ; Entry: PB initialized. | ||
| 1927 | ; | ||
| 1928 | ; Exit: None | ||
| 1929 | ; | ||
| 1930 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1931 | PCMBEEP_CALL PROC NEAR ;AN000; | ||
| 1932 | PUSH DS ;AN000;set segment | ||
| 1933 | POP ES ;AN000; | ||
| 1934 | PUSH DS ;AN000; | ||
| 1935 | PUSH DI ;AN000;save registers | ||
| 1936 | LEA DI,MB_FREQUENCY ;AN000;set DI to proper parameter block | ||
| 1937 | IF CASRM ;AN000; | ||
| 1938 | MOV AH,00H ;AN000;make call to CAS-RM | ||
| 1939 | MOV BX,MB_RN ;AN000;set CAS routine number | ||
| 1940 | INT CASINT ;AN000;call routine | ||
| 1941 | ELSE ;AN000; | ||
| 1942 | CALL MBEEP ;AN000; | ||
| 1943 | ENDIF ;AN000; | ||
| 1944 | POP DI ;AN000;restore registers | ||
| 1945 | POP DS ;AN000; | ||
| 1946 | RET ;AN000; | ||
| 1947 | PCMBEEP_CALL ENDP ;AN000; | ||
| 1948 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1949 | ; | ||
| 1950 | ; PCSLCTP_CALL | ||
| 1951 | ; | ||
| 1952 | ; Call to PCSCLTP. | ||
| 1953 | ; | ||
| 1954 | ; Entry: ES:DI = beginning address of PCSLCTP parameter block. | ||
| 1955 | ; | ||
| 1956 | ; Exit: None | ||
| 1957 | ; | ||
| 1958 | ; | ||
| 1959 | ; Initialize color index vector | ||
| 1960 | ; | ||
| 1961 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1962 | PCSLCTP_CALL PROC NEAR ;AN000; | ||
| 1963 | ; | ||
| 1964 | CALL CLEAR_INBUFF ;AN059; | ||
| 1965 | ; | ||
| 1966 | PUSH PM_CCBVECNUM ;AN000;set color index number | ||
| 1967 | POP ES:[DI]+SCB_CCBVECNUM;AN000; | ||
| 1968 | |||
| 1969 | PUSH CRD_CCBVECOFF ;AN000;set color index offset | ||
| 1970 | POP ES:[DI]+SCB_CCBVECOFF;AN000; | ||
| 1971 | |||
| 1972 | PUSH CRD_CCBVECSEG ;AN000;set color index segment | ||
| 1973 | POP ES:[DI]+SCB_CCBVECSEG;AN000; | ||
| 1974 | |||
| 1975 | PUSH ES:[DI]+SCB_OPT1 ;AN000; | ||
| 1976 | PUSH ES:[DI]+SCB_OPT2 ;AN000; | ||
| 1977 | PUSH ES:[DI]+SCB_OPT3 ;AN000; | ||
| 1978 | PUSH ES:[DI]+SCB_NUMLINE ;AN000; | ||
| 1979 | AND ES:[DI]+SCB_OPT3,NOT SCB_NUMS;AN000; | ||
| 1980 | IF CASRM ;AN000; | ||
| 1981 | MOV AH,00H ;AN000;make call to CAS-RM | ||
| 1982 | MOV BX,SCB_RN ;AN000;set CAS routine number | ||
| 1983 | INT CASINT ;AN000;call slctopt | ||
| 1984 | ELSE ;AN000; | ||
| 1985 | CALL SLCTP ;AN000; | ||
| 1986 | ENDIF ;AN000; | ||
| 1987 | POP ES:[DI]+SCB_NUMLINE ;AN000; | ||
| 1988 | POP ES:[DI]+SCB_OPT3 ;AN000; | ||
| 1989 | POP ES:[DI]+SCB_OPT2 ;AN000; | ||
| 1990 | POP ES:[DI]+SCB_OPT1 ;AN000; | ||
| 1991 | RET ;AN000; | ||
| 1992 | PCSLCTP_CALL ENDP ;AN000; | ||
| 1993 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1994 | ; | ||
| 1995 | ; PCHLPRD_CALL | ||
| 1996 | ; | ||
| 1997 | ; Call to PCHLPRD. | ||
| 1998 | ; | ||
| 1999 | ; Entry: PB initialized. | ||
| 2000 | ; | ||
| 2001 | ; Exit: None | ||
| 2002 | ; | ||
| 2003 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2004 | PCHLPRD_CALL PROC NEAR ;AN000; | ||
| 2005 | PUSH DS ;AN000;set segment | ||
| 2006 | POP ES ;AN000; | ||
| 2007 | PUSH DS ;AN000; | ||
| 2008 | PUSH DI ;AN000;save registers | ||
| 2009 | LEA DI,HRD_OPT1 ;;AN000;set DI to proper parameter block | ||
| 2010 | IF CASRM ;AN000; | ||
| 2011 | MOV AH,00H ;AN000;make call to CAS-RM | ||
| 2012 | MOV BX,HRD_RN ;AN000;set CAS routine number | ||
| 2013 | INT CASINT ;AN000;call routine | ||
| 2014 | ELSE ;AN000; | ||
| 2015 | CALL HLPRD ;AN000; | ||
| 2016 | ENDIF ;AN000; | ||
| 2017 | .IF < HRD_ERROR eq 0 > and;AN005;GHG | ||
| 2018 | .IF < HRD_DOSERROR eq 0 > ;AN005;GHG | ||
| 2019 | CLC ;AN005;GHG | ||
| 2020 | .ELSE ;AN005;GHG | ||
| 2021 | STC ;AN005;GHG | ||
| 2022 | .ENDIF ;AN005;GHG | ||
| 2023 | ; | ||
| 2024 | POP DI ;AN000;restore registers | ||
| 2025 | POP DS ;AN000; | ||
| 2026 | RET ;AN000; | ||
| 2027 | PCHLPRD_CALL ENDP ;AN000; | ||
| 2028 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2029 | ; | ||
| 2030 | ; PCINSTR_CALL | ||
| 2031 | ; | ||
| 2032 | ; Call to PCINSTR. | ||
| 2033 | ; | ||
| 2034 | ; Entry: PB initialized. | ||
| 2035 | ; | ||
| 2036 | ; Exit: None | ||
| 2037 | ; | ||
| 2038 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2039 | PCINSTR_CALL PROC NEAR ;AN000; | ||
| 2040 | PUSH DS ;AN000;set segment | ||
| 2041 | POP ES ;AN000; | ||
| 2042 | PUSH DS ;AN000; | ||
| 2043 | PUSH DI ;AN000;save registers | ||
| 2044 | LEA DI,INS_OPT ;;AN000;set DI to proper parameter block | ||
| 2045 | IF CASRM ;AN000; | ||
| 2046 | MOV AH,00H ;AN000;make call to CAS-RM | ||
| 2047 | MOV BX,INS_RN ;AN000;set CAS routine number | ||
| 2048 | INT CASINT ;AN000;call routine | ||
| 2049 | ELSE ;AN000; | ||
| 2050 | CALL INSTRN ;AN000; | ||
| 2051 | ENDIF ;AN000; | ||
| 2052 | POP DI ;AN000;restore registers | ||
| 2053 | POP DS ;AN000; | ||
| 2054 | RET ;AN000; | ||
| 2055 | PCINSTR_CALL ENDP ;AN000; | ||
| 2056 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2057 | ; | ||
| 2058 | ; PCINPUT_CALL | ||
| 2059 | ; | ||
| 2060 | ; Call to PCINPUT. | ||
| 2061 | ; | ||
| 2062 | ; Entry: PB initialized. | ||
| 2063 | ; | ||
| 2064 | ; Exit: None | ||
| 2065 | ; | ||
| 2066 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2067 | PCINPUT_CALL PROC NEAR ;AN000; | ||
| 2068 | ; | ||
| 2069 | CALL CLEAR_INBUFF ;AN059; | ||
| 2070 | ; | ||
| 2071 | PUSH DS ;AN000;set segment | ||
| 2072 | POP ES ;AN000; | ||
| 2073 | PUSH DS ;AN000; | ||
| 2074 | PUSH DI ;AN000;save registers | ||
| 2075 | LEA DI,IN_OPT ;AN000;set DI to proper parameter block | ||
| 2076 | IF CASRM ;AN000; | ||
| 2077 | MOV AH,00H ;AN000;make call to CAS-RM | ||
| 2078 | MOV BX,IN_RN ;AN000;set CAS routine number | ||
| 2079 | INT CASINT ;AN000;call slctopt | ||
| 2080 | ELSE ;AN000; | ||
| 2081 | CALL INPUT ;AN000; | ||
| 2082 | ENDIF ;AN000; | ||
| 2083 | POP DI ;AN000;restore registers | ||
| 2084 | POP DS ;AN000; | ||
| 2085 | RET ;AN000; | ||
| 2086 | PCINPUT_CALL ENDP ;AN000; | ||
| 2087 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2088 | ; | ||
| 2089 | ; PCGVIDO_CALL | ||
| 2090 | ; | ||
| 2091 | ; Call to PCGVIDO. | ||
| 2092 | ; | ||
| 2093 | ; Entry: PB initialized. | ||
| 2094 | ; | ||
| 2095 | ; Exit: None | ||
| 2096 | ; | ||
| 2097 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2098 | PCGVIDO_CALL PROC NEAR ;AN000; | ||
| 2099 | PUSH DS ;AN000;set segment | ||
| 2100 | POP ES ;AN000; | ||
| 2101 | PUSH DS ;AN000; | ||
| 2102 | PUSH DI ;AN000;save registers | ||
| 2103 | LEA DI,GV_STAT1 ;AN000;set DI to proper parameter block | ||
| 2104 | IF CASRM ;AN000; | ||
| 2105 | MOV AH,00H ;AN000;make call to CAS-RM | ||
| 2106 | MOV BX,GV_RN ;AN000;set CAS routine number | ||
| 2107 | INT CASINT ;AN000;call routine | ||
| 2108 | ELSE ;AN000; | ||
| 2109 | CALL GVIDO ;AN000; | ||
| 2110 | ENDIF ;AN000; | ||
| 2111 | POP DI ;AN000;restore registers | ||
| 2112 | POP DS ;AN000; | ||
| 2113 | RET ;AN000; | ||
| 2114 | PCGVIDO_CALL ENDP ;AN000; | ||
| 2115 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2116 | ; | ||
| 2117 | ; PCWWRAP_CALL | ||
| 2118 | ; | ||
| 2119 | ; Call to PCWWRAP. | ||
| 2120 | ; | ||
| 2121 | ; Entry: PB initialized. | ||
| 2122 | ; | ||
| 2123 | ; Exit: None | ||
| 2124 | ; | ||
| 2125 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2126 | PCWWRAP_CALL PROC NEAR ;AN000; | ||
| 2127 | PUSH DS ;AN000;set segment | ||
| 2128 | POP ES ;AN000; | ||
| 2129 | PUSH DS ;AN000; | ||
| 2130 | PUSH DI ;AN000;save registers | ||
| 2131 | LEA DI,WWP_OPT1 ;AN000;set DI to proper parameter block | ||
| 2132 | IF CASRM ;AN000; | ||
| 2133 | MOV AH,00H ;AN000;make call to CAS-RM | ||
| 2134 | MOV BX,PM_RN ;AN000;set CAS routine number | ||
| 2135 | INT CASINT ;AN000;call slctopt | ||
| 2136 | ELSE ;AN000; | ||
| 2137 | CALL WWRAP ;AN000; | ||
| 2138 | ENDIF ;AN000; | ||
| 2139 | POP DI ;AN000;restore registers | ||
| 2140 | POP DS ;AN000; | ||
| 2141 | RET ;AN000; | ||
| 2142 | PCWWRAP_CALL ENDP ;AN000; | ||
| 2143 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2144 | ; | ||
| 2145 | ; | ||
| 2146 | ; INITIALIZE | ||
| 2147 | ; | ||
| 2148 | ; Initialize the DOS allocated buffer with data (color, panels | ||
| 2149 | ; scrolling fields) and reserve room for help, queue management | ||
| 2150 | ; and the logical video buffer. | ||
| 2151 | ; | ||
| 2152 | ; Entry: WR_DATA2LEN = Length of DOS allocated buffer | ||
| 2153 | ; WR_DATA2OFF = Offset of DOS allocated buffer | ||
| 2154 | ; WR_DATA2SEG = Segment of DOS allocated buffer | ||
| 2155 | ; | ||
| 2156 | ; Exit: CY=0 and WR_ERROR = 0, No error occurred, 1= error occurred | ||
| 2157 | ; WR_DATA2LEN = Amount of DOS allocated buffer remaining | ||
| 2158 | ; WR_DATA2OFF = New offset of DOS allocated buffer | ||
| 2159 | ; | ||
| 2160 | ; ELSE | ||
| 2161 | ; CY=1 and WR_ERROR = 1, Error occurred (WR_DATA2LEN/OFF are invalid) | ||
| 2162 | ; | ||
| 2163 | ; CY support added | ||
| 2164 | ; | ||
| 2165 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2166 | INITIALIZE PROC NEAR ;AN000; | ||
| 2167 | ;AN000; | ||
| 2168 | PUSH ES ;AN000; | ||
| 2169 | PUSH DI ;AN000; | ||
| 2170 | PUSH DS ;AN000; | ||
| 2171 | PUSH SI ;AN000; | ||
| 2172 | ;AN000; | ||
| 2173 | MOV WR_ERROR,0 ;AN000;reset error inidicator | ||
| 2174 | ; | ||
| 2175 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2176 | ; | ||
| 2177 | ; Read Compressed Panel file | ||
| 2178 | ; | ||
| 2179 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2180 | ; | ||
| 2181 | MOV DX,OFFSET CFILE ;AN024;filename to read , SELECT.DAT | ||
| 2182 | XOR AL,AL ;AN024; | ||
| 2183 | MOV AH,3DH ;AN024; | ||
| 2184 | INT 21H ;AN024;open file | ||
| 2185 | ;AN024; | ||
| 2186 | MOV BX,AX ;AN024;get file handle | ||
| 2187 | PUSH BX ;AN024;save it | ||
| 2188 | XOR CX,CX ;AN024; | ||
| 2189 | XOR DX,DX ;AN024; | ||
| 2190 | MOV AL,2 ;AN024;move ptr to end of file | ||
| 2191 | MOV AH,42H ;AN024;LSEEK | ||
| 2192 | INT 21H ;AN024; | ||
| 2193 | ;AN024; | ||
| 2194 | PUSH AX ;AN024;save length | ||
| 2195 | XOR CX,CX ;AN024;zero file offset | ||
| 2196 | XOR DX,DX ;AN024; " | ||
| 2197 | MOV AL,0 ;AN024;move ptr to start of file | ||
| 2198 | MOV AH,42H ;AN024;LSEEK | ||
| 2199 | INT 21H ;AN024; | ||
| 2200 | POP BX ;AN024;restore length | ||
| 2201 | PUSH BX ;AN024;save it again | ||
| 2202 | SHR BX,1 ;AN024;convert to paragraph | ||
| 2203 | SHR BX,1 ;AN024; | ||
| 2204 | SHR BX,1 ;AN024; | ||
| 2205 | SHR BX,1 ;AN024; | ||
| 2206 | INC BX ;AN024;ensure enough room | ||
| 2207 | MOV AX,BX ;AN024; | ||
| 2208 | ;AN024; | ||
| 2209 | POP CX ;AN024;restore length | ||
| 2210 | POP BX ;AN024;restore file handle | ||
| 2211 | |||
| 2212 | MOV DX,WR_DATA2SEG ;AN024;GS:DI = target | ||
| 2213 | ADD DX,MAX_MEMPAR ;AN024; | ||
| 2214 | SUB DX,AX ;AN024; | ||
| 2215 | MOV DS,DX ;AN024;get segment of read buffer | ||
| 2216 | XOR DX,DX ;AN024;get offset to read into | ||
| 2217 | MOV AH,3FH ;AN024;read it | ||
| 2218 | INT 21H ;AN024; | ||
| 2219 | ;AN024; | ||
| 2220 | MOV AH,3EH ;AN024;close it | ||
| 2221 | INT 21H ;AN024; | ||
| 2222 | ;AN024; | ||
| 2223 | PUSH DS ;AN024;save source segment | ||
| 2224 | MOV AX,DATA ;AN024; | ||
| 2225 | MOV DS,AX ;AN024;get DATA segment | ||
| 2226 | MOV AX,WR_DATA2SEG ;AN024;ES:DI = target | ||
| 2227 | MOV ES,AX ;AN024; | ||
| 2228 | MOV DI,WR_DATA2OFF ;AN024; | ||
| 2229 | POP DS ;AN024;restore source segment | ||
| 2230 | XOR SI,SI ;AN024;offset is zero | ||
| 2231 | ; | ||
| 2232 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2233 | ; | ||
| 2234 | ; Expand Panel file | ||
| 2235 | ; | ||
| 2236 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2237 | ; | ||
| 2238 | MOV DX,0 ;AN024;initialize result string | ||
| 2239 | EC1: CMP CX,0 ;AN024;any characters left? | ||
| 2240 | JNE EC2 ;AN024;yes | ||
| 2241 | JMP DONE1 ;AN024;no | ||
| 2242 | ;AN024; | ||
| 2243 | EC2: LODSB ;AN024;get character | ||
| 2244 | DEC CX ;AN024;adjust character count | ||
| 2245 | MOV BL,1 ;AN024;set default repeat | ||
| 2246 | CMP AL,REPCHAR ;AN024;is it a repeat character | ||
| 2247 | JNE EC4 ;AN024;no | ||
| 2248 | ;AN024; | ||
| 2249 | CMP CX,0 ;AN024;any characters left? | ||
| 2250 | JNE EC2_4 ;AN024; | ||
| 2251 | JMP DONE1 ;AN024;no | ||
| 2252 | ;AN024; | ||
| 2253 | EC2_4: LODSB ;AN024;get number of characters | ||
| 2254 | DEC CX ;AN024;Adjust character count | ||
| 2255 | CMP AL,REPCHAR ;AN024;is it still the repeat character | ||
| 2256 | JNE EC2_1 ;AN024;no | ||
| 2257 | JMP EC4 ;AN024; | ||
| 2258 | ;AN024; | ||
| 2259 | EC2_1: CMP AL,1 ;AN024;code <CR>? | ||
| 2260 | JNE EC2_2 ;AN024;no | ||
| 2261 | ;AN024; | ||
| 2262 | MOV AL,13 ;AN024; | ||
| 2263 | JMP EC4 ;AN024; | ||
| 2264 | ;AN024; | ||
| 2265 | EC2_2: CMP AL,2 ;AN024;code <EOF>? | ||
| 2266 | JNE EC3 ;AN024;no | ||
| 2267 | ;AN024; | ||
| 2268 | MOV AL,26 ;AN024; | ||
| 2269 | JMP EC4 ;AN024; | ||
| 2270 | ;AN024; | ||
| 2271 | EC3: MOV BL,AL ;AN024;save number of repeats | ||
| 2272 | ;AN024; | ||
| 2273 | CMP CX,0 ;AN024;any characters left? | ||
| 2274 | JNE EC3_6 ;AN024; | ||
| 2275 | JMP DONE1 ;AN024;no | ||
| 2276 | ;AN024; | ||
| 2277 | EC3_6: LODSB ;AN024;get actual character | ||
| 2278 | DEC CX ;AN024;adjust character count | ||
| 2279 | CMP AL,REPCHAR ;AN024;coded character? | ||
| 2280 | JNE EC4 ;AN024;no | ||
| 2281 | ;AN024; | ||
| 2282 | CMP CX,0 ;AN024;any characters left? | ||
| 2283 | JNE EC3_8 ;AN024; | ||
| 2284 | JMP DONE1 ;AN024;no | ||
| 2285 | ;AN024; | ||
| 2286 | EC3_8: LODSB ;AN024;yes | ||
| 2287 | DEC CX ;AN024;adjust character count | ||
| 2288 | CMP AL,REPCHAR ;AN024;coded repchar? | ||
| 2289 | JE EC4 ;AN024;yes | ||
| 2290 | ;AN024; | ||
| 2291 | CMP AL,1 ;AN024;coded <CR>? | ||
| 2292 | JNE EC3_1 ;AN024;no | ||
| 2293 | ;AN024; | ||
| 2294 | MOV AL,13 ;AN024;yes | ||
| 2295 | JMP EC4 ;AN024; | ||
| 2296 | ;AN024; | ||
| 2297 | EC3_1: CMP AL,2 ;AN024;coded <EOF>? | ||
| 2298 | JNE EC3_2 ;AN024;no | ||
| 2299 | ;AN024; | ||
| 2300 | MOV AL,26 ;AN024; | ||
| 2301 | JMP EC4 ;AN024; | ||
| 2302 | ;AN024; | ||
| 2303 | EC3_2: INC CX ;AN024;unknown, restore | ||
| 2304 | DEC SI ;AN024; | ||
| 2305 | MOV AL,REPCHAR ;AN024; | ||
| 2306 | ;AN024; | ||
| 2307 | EC4: ADD DL,BL ;AN024;adjust length | ||
| 2308 | ADC DH,0 ;AN024; | ||
| 2309 | ;AN024; | ||
| 2310 | EC7: PUSH CX ;AN024;save CX | ||
| 2311 | XOR CX,CX ;AN024;zero CX | ||
| 2312 | MOV CL,BL ;AN024;set repeat number | ||
| 2313 | ;AN024; | ||
| 2314 | EC8: REP STOSB ;AN024;store char | ||
| 2315 | POP CX ;AN024;recover CX | ||
| 2316 | JMP EC1 ;AN024; | ||
| 2317 | ; | ||
| 2318 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2319 | ; | ||
| 2320 | ; Finished expanding panel file | ||
| 2321 | ; | ||
| 2322 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2323 | ; | ||
| 2324 | DONE1: ;AN024; | ||
| 2325 | MOV AX,DATA ;AN024;restore DATA segment | ||
| 2326 | MOV DS,AX ;AN024; | ||
| 2327 | ;AN024; | ||
| 2328 | MOV DI,WR_DATA2OFF ;AN024;restore pointer to start | ||
| 2329 | ADD DX,16 ;AN024;add paragraph to expanded length | ||
| 2330 | ADD WR_DATA2OFF,DX ;AN024;save new available offset | ||
| 2331 | ;AN024; | ||
| 2332 | MOV AX,WR_DATA2LEN ;AN024;calculate remaining buffer space | ||
| 2333 | SUB AX,DX ;AN024; from required space | ||
| 2334 | MOV WR_DATA2LEN,AX ;AN024;set remaining space | ||
| 2335 | ; | ||
| 2336 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2337 | ; | ||
| 2338 | ; initialize Color Table information | ||
| 2339 | ; | ||
| 2340 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2341 | ; | ||
| 2342 | .IF < GV_VIDMODE eq 7 > or ;AN000; | ||
| 2343 | .IF < ACTIVE eq LCD > ;AN000; | ||
| 2344 | .THEN ;AN000; | ||
| 2345 | MOV AX,ES:[DI].MONTBL ;AN000; | ||
| 2346 | MOV BX,ES:[DI].NMONTBL ;AN000; | ||
| 2347 | .ELSE ;AN000; | ||
| 2348 | MOV AX,ES:[DI].COLTBL ;AN000; | ||
| 2349 | MOV BX,ES:[DI].NCOLTBL ;AN000; | ||
| 2350 | .ENDIF ;AN000; | ||
| 2351 | ;AN000; | ||
| 2352 | MOV PM_CCBVECNUM,BX ;AN000; | ||
| 2353 | MOV PM_CCBVECOFF,AX ;AN000;set color index offset to PCPANEL | ||
| 2354 | MOV CRD_CCBVECOFF,AX ;AN000;set color index offset to PCPANEL | ||
| 2355 | MOV AX,ES ;AN000;set color index segment to | ||
| 2356 | MOV PM_CCBVECSEG,AX ;AN000; PCPANEL | ||
| 2357 | MOV CRD_CCBVECSEG,AX ;AN000; PCPANEL | ||
| 2358 | ; | ||
| 2359 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2360 | ; | ||
| 2361 | ; initialize PCDISPQ information | ||
| 2362 | ; | ||
| 2363 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2364 | ; | ||
| 2365 | MOV AX,ES:[DI].NPCBS ;AN000; | ||
| 2366 | MOV QM_PCBVECNUM,AX ;AN000;number of PCB elements in vector | ||
| 2367 | ;AN000; | ||
| 2368 | MOV AX,ES:[DI].PCBS ;AN000; | ||
| 2369 | MOV QM_PCBVECOFF,AX ;AN000;offset of PCB vector | ||
| 2370 | ;AN000; | ||
| 2371 | MOV AX,ES ;AN000; | ||
| 2372 | MOV QM_PCBVECSEG,AX ;AN000;segment of PCB vector | ||
| 2373 | ; | ||
| 2374 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2375 | ; | ||
| 2376 | ; initialize PCPANEL with PCDISPQ and PCPANRD information | ||
| 2377 | ; | ||
| 2378 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2379 | ; | ||
| 2380 | MOV SI,ES:[DI].PCBS ;AN000;offset of PCB vector read from | ||
| 2381 | MOV PM_PCBVECOFF,SI ;AN000; disk | ||
| 2382 | ;AN000; | ||
| 2383 | MOV AX,ES ;AN000;segment of PCB vector read from | ||
| 2384 | MOV PM_PCBVECSEG,AX ;AN000; disk | ||
| 2385 | ;AN000; | ||
| 2386 | MOV CX,ES:[DI].NPCBS ;AN000;number of PCB vectors read from | ||
| 2387 | MOV PM_PCBVECNUM,CX ;AN000; disk | ||
| 2388 | ; | ||
| 2389 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2390 | ; | ||
| 2391 | ; add segment address to PCBs | ||
| 2392 | ; | ||
| 2393 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2394 | ; | ||
| 2395 | ADD SI,2 ;AN000;move to offset | ||
| 2396 | I_PCB_SEG: ;AN000; | ||
| 2397 | MOV BX,ES:[SI] ;AN000; | ||
| 2398 | MOV ES:[BX].PCB_EXPANDSEG,AX ;AN000; | ||
| 2399 | MOV ES:[BX].PCB_CHILDSEG,AX ;AN000; | ||
| 2400 | ADD SI,4 ;AN000; | ||
| 2401 | LOOP I_PCB_SEG ;AN000; | ||
| 2402 | ; | ||
| 2403 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2404 | ; | ||
| 2405 | ; add segment address to PCB vectors | ||
| 2406 | ; | ||
| 2407 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2408 | ; | ||
| 2409 | MOV CX,ES:[DI].NPCBS ;AN000;number of PCB vectors | ||
| 2410 | MOV SI,ES:[DI].PCBS ;AN000;offset of PCB vectors | ||
| 2411 | I_PCBVEC_SEG: ;AN000; | ||
| 2412 | MOV ES:[SI],AX ;AN000; | ||
| 2413 | ADD SI,4 ;AN000; | ||
| 2414 | LOOP I_PCBVEC_SEG ;AN000; | ||
| 2415 | ; | ||
| 2416 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2417 | ; | ||
| 2418 | ; initialize SCB vector table pointer | ||
| 2419 | ; | ||
| 2420 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2421 | ; | ||
| 2422 | MOV AX,ES ;AN000; | ||
| 2423 | MOV SRD_SCBVECSEG,AX ;AN000;get beginning SCB vector address | ||
| 2424 | MOV SI,ES:[DI].SCBS ;AN000; | ||
| 2425 | MOV SRD_SCBVECOFF,SI ;AN000; | ||
| 2426 | MOV CX,ES:[DI].NSCBS ;AN000;number of SCB vectors | ||
| 2427 | ; | ||
| 2428 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2429 | ; | ||
| 2430 | ; add segment address to SCBs | ||
| 2431 | ; | ||
| 2432 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2433 | ; | ||
| 2434 | ADD SI,2 ;AN000;move to offset | ||
| 2435 | ;AN000; | ||
| 2436 | I_SCB_SEG: ;AN000; | ||
| 2437 | MOV BX,ES:[SI] ;AN000; | ||
| 2438 | MOV ES:[BX].SCB_UASEG,AX ;AN000; | ||
| 2439 | MOV ES:[BX].SCB_DASEG,AX ;AN000; | ||
| 2440 | MOV ES:[BX].SCB_PUSEG,AX ;AN000; | ||
| 2441 | MOV ES:[BX].SCB_PDSEG,AX ;AN000; | ||
| 2442 | MOV ES:[BX].SCB_PISEG,AX ;AN000; | ||
| 2443 | MOV ES:[BX].SCB_AISEG,AX ;AN000; | ||
| 2444 | MOV ES:[BX].SCB_CISEG,AX ;AN000; | ||
| 2445 | MOV ES:[BX].SCB_UISEG,AX ;AN000; | ||
| 2446 | MOV ES:[BX].SCB_DISEG,AX ;AN000; | ||
| 2447 | MOV ES:[BX].SCB_INDEXSEG,AX ;AN000; | ||
| 2448 | MOV ES:[BX].SCB_SELSEG,AX ;AN000; | ||
| 2449 | MOV ES:[BX].SCB_OAPSEG,AX ;AN000; | ||
| 2450 | MOV ES:[BX].SCB_OASSEG,AX ;AN000; | ||
| 2451 | ADD SI,4 ;AN000; | ||
| 2452 | LOOP I_SCB_SEG ;AN000; | ||
| 2453 | ; | ||
| 2454 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2455 | ; | ||
| 2456 | ; add segment address to SCB vectors | ||
| 2457 | ; | ||
| 2458 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2459 | ; | ||
| 2460 | MOV CX,ES:[DI].NSCBS ;AN000;number of SCB vectors | ||
| 2461 | MOV SI,ES:[DI].SCBS ;AN000;offset of SCB vectors | ||
| 2462 | I_SCBVEC_SEG: ;AN000; | ||
| 2463 | MOV ES:[SI],AX ;AN000; | ||
| 2464 | ADD SI,4 ;AN000; | ||
| 2465 | LOOP I_SCBVEC_SEG ;AN000; | ||
| 2466 | ; | ||
| 2467 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2468 | ; | ||
| 2469 | ; Init 4KB for logical video buffer for PCPANEL | ||
| 2470 | ; | ||
| 2471 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2472 | ; | ||
| 2473 | ;AN000; | ||
| 2474 | MOV AX,GV_SCRWIDTH ;AN000; | ||
| 2475 | MOV PM_LVBWIDTH,AX ;AN000;width of log vid buf in bytes | ||
| 2476 | ;AN000; | ||
| 2477 | MOV AX,GV_SCRLEN ;AN000; | ||
| 2478 | MOV PM_LVBLEN,AX ;AN000;number bytes in logical video | ||
| 2479 | ;AN000; | ||
| 2480 | PUSH WR_LVBOFF ;AN000; | ||
| 2481 | POP PM_LVBOFF ;AN000;offset of logical video buffer | ||
| 2482 | ;AN000; | ||
| 2483 | PUSH WR_LVBSEG ;AN000;set the allocated segment | ||
| 2484 | POP PM_LVBSEG ;AN000; | ||
| 2485 | ;AN000; | ||
| 2486 | MOV AX,WR_LVBLEN ;AN000;calculate remaining buffer | ||
| 2487 | SUB AX,GV_SCRLEN ;AN000; | ||
| 2488 | MOV WR_LVBLEN,AX ;AN000;set remaining space | ||
| 2489 | ;AN000; | ||
| 2490 | MOV AX,GV_SCRLEN ;AN000; | ||
| 2491 | ADD WR_LVBOFF,AX ;AN000;set new free buffer offset | ||
| 2492 | ;AN000; | ||
| 2493 | MOV LVB_INITED,TRUE ;AN000;LVB always remains | ||
| 2494 | ; | ||
| 2495 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2496 | ; | ||
| 2497 | ; PCDISPQ buffer initialization option | ||
| 2498 | ; | ||
| 2499 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2500 | ; | ||
| 2501 | MOV QM_OPT1,QM_INIT ;AN000;Initialize working buffer | ||
| 2502 | ;AN000; | ||
| 2503 | PUSH WR_MAXCHDQUE ;AN000; | ||
| 2504 | POP QM_MAXCHDQUE ;AN000;max # of child queues to save | ||
| 2505 | ;AN000; | ||
| 2506 | PUSH WR_MAXPANQUE ;AN000; | ||
| 2507 | POP QM_MAXPANQUE ;AN000;max # of panel queues to save | ||
| 2508 | ;AN000; | ||
| 2509 | PUSH WR_MAXNUMCHD ;AN000; | ||
| 2510 | POP QM_MAXNUMCHD ;AN000;max # of parent panels queued | ||
| 2511 | ;AN000; | ||
| 2512 | PUSH WR_MAXNUMPAN ;AN000; | ||
| 2513 | POP QM_MAXNUMPAN ;AN000;max # of child panels queued | ||
| 2514 | ;AN000; | ||
| 2515 | PUSH WR_LVBLEN ;AN000; | ||
| 2516 | POP QM_BUFLEN ;AN000;length of avail buffer | ||
| 2517 | ;AN000; | ||
| 2518 | PUSH WR_LVBOFF ;AN000; | ||
| 2519 | POP QM_BUFOFF ;AN000;offset of buffer | ||
| 2520 | ;AN000; | ||
| 2521 | PUSH WR_LVBSEG ;AN000; | ||
| 2522 | POP QM_BUFSEG ;AN000;segment of buffer | ||
| 2523 | ;AN000; | ||
| 2524 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 2525 | ;AN000; | ||
| 2526 | MOV AX,WR_LVBLEN ;AN000;calculate remaining buffer space | ||
| 2527 | SUB AX,QM_BUFLEN ;AN000; from required space | ||
| 2528 | MOV WR_LVBLEN,AX ;AN000;set remaining space | ||
| 2529 | ;AN000; | ||
| 2530 | MOV AX,QM_BUFLEN ;AN000;add returned buffer size | ||
| 2531 | ADD WR_LVBOFF,AX ;AN000;set new free buffer offset | ||
| 2532 | ;AN000; | ||
| 2533 | PUSH QM_PANQUEOFF ;AN000;offset address of parent queue | ||
| 2534 | POP PM_PANQUEOFF ;AN000;offset address of parent queue | ||
| 2535 | ;AN000; | ||
| 2536 | PUSH QM_PANQUESEG ;AN000;segment address of parent queue | ||
| 2537 | POP PM_PANQUESEG ;AN000;segment address of parent queue | ||
| 2538 | ;AN000; | ||
| 2539 | PUSH QM_CHDQUEOFF ;AN000;offset of child queue | ||
| 2540 | POP PM_CHDQUEOFF ;AN000;offset of child queue | ||
| 2541 | ;AN000; | ||
| 2542 | PUSH QM_CHDQUESEG ;AN000;segment of child queue | ||
| 2543 | POP PM_CHDQUESEG ;AN000;segment of child queue | ||
| 2544 | ; | ||
| 2545 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2546 | ; | ||
| 2547 | ; Reserve buffer for completed return key buffer | ||
| 2548 | ; | ||
| 2549 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2550 | ; | ||
| 2551 | PUSH WR_MAXRETKSZ ;AN000;maximum number of bytes in return | ||
| 2552 | POP WR_CRETLEN ;AN000; buffer | ||
| 2553 | ;AN000; | ||
| 2554 | PUSH WR_LVBOFF ;AN000;offset of completed return buffer | ||
| 2555 | POP WR_CRETOFF ;AN000; | ||
| 2556 | ;AN000; | ||
| 2557 | PUSH WR_LVBSEG ;AN000;segment of completed return | ||
| 2558 | POP WR_CRETSEG ;AN000; buffer | ||
| 2559 | ;AN000; | ||
| 2560 | MOV AX,WR_LVBLEN ;AN000;calculate remaining buffer space | ||
| 2561 | SUB AX,WR_MAXRETKSZ ;AN000; | ||
| 2562 | MOV WR_LVBLEN,AX ;AN000;set remaining space | ||
| 2563 | ;AN000; | ||
| 2564 | MOV AX,WR_MAXRETKSZ ;AN000; | ||
| 2565 | ADD WR_LVBOFF,AX ;AN000;set new free buffer offset | ||
| 2566 | CLC ;AN000;GHG | ||
| 2567 | JMP IEXIT ;AN000; | ||
| 2568 | ;AN000; | ||
| 2569 | I110: MOV WR_ERROR,1 ;AN000;set error indicator | ||
| 2570 | STC ;AN000;GHG | ||
| 2571 | IEXIT: ;AN000;exit | ||
| 2572 | POP SI ;AN000; | ||
| 2573 | POP DS ;AN000; | ||
| 2574 | POP DI ;AN000; | ||
| 2575 | POP ES ;AN000; | ||
| 2576 | RET ;AN000; | ||
| 2577 | INITIALIZE ENDP ;AN000; | ||
| 2578 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2579 | ; | ||
| 2580 | ; INSERT_DISK_ROUTINE: Prompts user for insertion of disk into A: drive | ||
| 2581 | ; | ||
| 2582 | ; INPUT: DISK_PANEL - Panel number to be displayed | ||
| 2583 | ; SEARCH_FILE - File to search for on diskette | ||
| 2584 | ; | ||
| 2585 | ; OUTPUT: none | ||
| 2586 | ; | ||
| 2587 | ; OPERATION: Panel macros are called to display the panel and search | ||
| 2588 | ; for the file. | ||
| 2589 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2590 | PUBLIC INSERT_DISK_ROUTINE ;AN000; | ||
| 2591 | INSERT_DISK_ROUTINE PROC NEAR ;AN000; | ||
| 2592 | ; | ||
| 2593 | .REPEAT ;AN000; | ||
| 2594 | MOV AX,PAN_INST_PROMPT ;AN000; | ||
| 2595 | CALL INIT_PQUEUE_CALL ;AN000; | ||
| 2596 | MOV AX,DISK_PANEL ;AN000; | ||
| 2597 | CALL PREPARE_PANEL_CALL ;AN000; | ||
| 2598 | MOV AX,PAN_HBAR ;AN000; | ||
| 2599 | CALL PREPARE_PANEL_CALL ;AN000; | ||
| 2600 | CALL HANDLE_CHILDREN ;AN000; | ||
| 2601 | CALL DISPLAY_PANEL_CALL ;AN000; | ||
| 2602 | ; | ||
| 2603 | MOV CX,FK_ENT_LEN ;AN000; | ||
| 2604 | LEA DX,FK_ENT ;AN000; | ||
| 2605 | CALL GET_FUNCTION_CALL ;AN000; | ||
| 2606 | ; | ||
| 2607 | MOV DI, SEARCH_FILE ;AN000; | ||
| 2608 | MOV CX, E_FILE_ATTR ;AN000; | ||
| 2609 | CALL FIND_FILE_ROUTINE ;AN000; | ||
| 2610 | .LEAVE < nc > ;AN000; | ||
| 2611 | ; | ||
| 2612 | MOV BX,ERR_DOS_DISK ;AN000; | ||
| 2613 | MOV CX,E_RETURN ;AN000; | ||
| 2614 | CALL HANDLE_ERROR_CALL ;AN000; | ||
| 2615 | JNC CONTINUE ;AN000; | ||
| 2616 | CLEAR_SCREEN2 ;AN000; | ||
| 2617 | JMP EXIT_SELECT ;AN000; | ||
| 2618 | CONTINUE: ;AN000; | ||
| 2619 | .UNTIL ;AN000; | ||
| 2620 | ; | ||
| 2621 | RET ;AN000; | ||
| 2622 | INSERT_DISK_ROUTINE ENDP ;AN000; | ||
| 2623 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2624 | ; | ||
| 2625 | ; Clear the input buffer | ||
| 2626 | ; | ||
| 2627 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2628 | CLEAR_INBUFF PROC NEAR ;AN059; | ||
| 2629 | ; ; | ||
| 2630 | CI_1: MOV AH,0BH ;AN059; | ||
| 2631 | INT 21H ;AN059; | ||
| 2632 | CMP AL,0 ;AN059; | ||
| 2633 | JE CI_2 ;AN059; | ||
| 2634 | MOV AH,07H ;AN059; | ||
| 2635 | INT 21H ;AN059; | ||
| 2636 | JMP CI_1 ;AN059; | ||
| 2637 | ; | ||
| 2638 | CI_2: RET ;AN059; | ||
| 2639 | CLEAR_INBUFF ENDP ;AN059; | ||
| 2640 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2641 | ; | ||
| 2642 | ; | ||
| 2643 | SELECT ENDS ;AN000; | ||
| 2644 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/CASEXTRN.INC b/v4.0/src/SELECT/CASEXTRN.INC new file mode 100644 index 0000000..d728e32 --- /dev/null +++ b/v4.0/src/SELECT/CASEXTRN.INC | |||
| @@ -0,0 +1,39 @@ | |||
| 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2 | ; | ||
| 3 | ; | ||
| 4 | ; | ||
| 5 | ; | ||
| 6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 7 | EXTRN GET_PCB:NEAR ;AN000; | ||
| 8 | EXTRN CURSORON:NEAR ;AN000; | ||
| 9 | EXTRN CURSOROFF:NEAR ;AN000; | ||
| 10 | EXTRN ADJUST_UP:NEAR ;AN000; | ||
| 11 | EXTRN INITIALIZE:NEAR ;AN000; | ||
| 12 | EXTRN ADJUST_DOWN:NEAR ;AN000; | ||
| 13 | EXTRN PCGVIDO_CALL:NEAR ;AN000; | ||
| 14 | EXTRN HANDLE_CHILDREN:NEAR ;AN000; | ||
| 15 | EXTRN INIT_STRING_CALL:NEAR ;AN000; | ||
| 16 | EXTRN INIT_PQUEUE_CALL:NEAR ;AN000; | ||
| 17 | EXTRN EXEC_SCROLL_CALL:NEAR ;AN000; | ||
| 18 | EXTRN INIT_SCROLL_CALL:NEAR ;AN000; | ||
| 19 | EXTRN GET_STRING_CALL:NEAR ;AN000; | ||
| 20 | EXTRN INIT_SCROLL_STATUS_CALL:NEAR ;AN000; | ||
| 21 | EXTRN PREPARE_PANEL_CALL:NEAR ;AN000; | ||
| 22 | EXTRN DISPLAY_PANEL_CALL:NEAR ;AN000; | ||
| 23 | EXTRN GET_FUNCTION_CALL:NEAR ;AN000; | ||
| 24 | EXTRN TOGGLE_SUPPORT_CALL:NEAR ;AN000; | ||
| 25 | EXTRN CHECK_MIN_MAX:NEAR ;AN000; | ||
| 26 | EXTRN CONVERT_NUMERIC:NEAR ;AN000; | ||
| 27 | EXTRN CONVERT_ASCII:NEAR ;AN000; | ||
| 28 | EXTRN SET_SCROLL_COLOUR:NEAR ;AN000; | ||
| 29 | EXTRN SET_SCROLL_CALL:NEAR ;AN000; | ||
| 30 | EXTRN INIT_SCROLL_W_LIST_CALL:NEAR ;AN000; | ||
| 31 | EXTRN INIT_SCROLL_W_NUM_CALL:NEAR ;AN000; | ||
| 32 | EXTRN HANDLE_ERROR_CALL:FAR ;AN000; | ||
| 33 | EXTRN HANDLE_PANEL_CALL:FAR ;AN000; | ||
| 34 | EXTRN HANDLE_KEYSTROKE:FAR ;AN000; | ||
| 35 | EXTRN RETURN_STRING_CALL:NEAR ;AN000; | ||
| 36 | EXTRN INIT_CHAR_CALL:NEAR ;AN000;JW | ||
| 37 | EXTRN INSERT_DISK_ROUTINE:NEAR ;AN000;JW | ||
| 38 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 39 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/CASSFAR.LIB b/v4.0/src/SELECT/CASSFAR.LIB new file mode 100644 index 0000000..69cec7f --- /dev/null +++ b/v4.0/src/SELECT/CASSFAR.LIB | |||
| Binary files differ | |||
diff --git a/v4.0/src/SELECT/CASTRUC.INC b/v4.0/src/SELECT/CASTRUC.INC new file mode 100644 index 0000000..b1fef95 --- /dev/null +++ b/v4.0/src/SELECT/CASTRUC.INC | |||
| @@ -0,0 +1,239 @@ | |||
| 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2 | ; | ||
| 3 | ; CASTRUC.INC | ||
| 4 | ; | ||
| 5 | ; | ||
| 6 | ; | ||
| 7 | ; | ||
| 8 | ; | ||
| 9 | ; PCPANEL PCB Structure | ||
| 10 | ; | ||
| 11 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 12 | PCB_PB STRUC ;AN000; | ||
| 13 | PCB_OPT1 DW 0 ;AN000;option word | ||
| 14 | PCB_OPT2 DB 0 ;AN000;option 2 added | ||
| 15 | PCB_OPT3 DB 0 ;AN000;option 3 added | ||
| 16 | PCB_OPT4 DB 0 ;AN000;option 4 added | ||
| 17 | PCB_UROW DW 0 ;AN000;row location of panel | ||
| 18 | PCB_UCOL DW 0 ;AN000;column location of panel | ||
| 19 | PCB_WIDTH DW 0 ;AN000;text char width of panel | ||
| 20 | PCB_MAXSIZE DW 0 ;AN000;Max poss panel sizing in text | ||
| 21 | PCB_CCBID DW 0 ;AN000;Index number of log color | ||
| 22 | PCB_BORDER DB 8 DUP(0) ;AN000;8 log border characters | ||
| 23 | PCB_COMPLEN DW 0 ;AN000;Length compress panel in mem | ||
| 24 | PCB_COMPOFF DW 0 ;AN000;Off addr compressed panel | ||
| 25 | PCB_COMPSEG DW 0 ;AN000;Seg addr compressed panel | ||
| 26 | PCB_EXPANDLEN DW 0 ;AN000;Length expanded panel in mem | ||
| 27 | PCB_EXPANDOFF DW 0 ;AN000;Off addr of expanded panel in | ||
| 28 | PCB_EXPANDSEG DW 0 ;AN000;Seg addr of expanded panel in | ||
| 29 | PCB_MIXEDLEN DW 0 ;AN000;Len of the mixed panel in mem | ||
| 30 | PCB_MIXEDOFF DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 31 | PCB_MIXEDSEG DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 32 | PCB_LABELLEN DW 0 ;AN000;Len of the panel label | ||
| 33 | PCB_LABELOFF DW 0 ;AN000;Off addr of the panel label | ||
| 34 | PCB_LABELSEG DW 0 ;AN000;Seg addr of the panel label | ||
| 35 | PCB_LABELROW DW 0 ;AN000;Beg row of title relative to pan | ||
| 36 | PCB_LABELCOL DW 0 ;AN000;Beg col of title relative to pan | ||
| 37 | PCB_FPANLEN DW 0 ;AN000;Len of the panel stored in file | ||
| 38 | PCB_FNAMEOFF DW 0 ;AN000;Off address of full filespec | ||
| 39 | PCB_FNAMESEG DW 0 ;AN000;Seg address of full filespec | ||
| 40 | PCB_FTEXTLOCL DW 0 ;AN000;Lower off word of the beg off | ||
| 41 | PCB_FTEXTLOCH DW 0 ;AN000;High off word of the beg off | ||
| 42 | PCB_LROW DW 0 ;AN000;lower right corner (graphs only) | ||
| 43 | PCB_LCOL DW 0 ;AN000;lower left corner (graphs only) | ||
| 44 | PCB_VERTSHADE DB 0 ;AN000;vertical shadow mask (grap only) | ||
| 45 | PCB_HORZSHADE DB 0 ;AN000;horizontal shadow mask (graphs) | ||
| 46 | PCB_GFILLOFF DW 0 ;AN000;offset of wind char fill bit map | ||
| 47 | PCB_GFILLSEG DW 0 ;AN000;segmnt of wind char fill bit map | ||
| 48 | PCB_SCRSV1OFF DW 0 ;AN000;off scr buffer save 10H, 12H | ||
| 49 | PCB_SCRSV2OFF DW 0 ;AN000;off scr buffer save 11H | ||
| 50 | PCB_SCRSAVSEG DW 0 ;AN000;segment of screen buffer save | ||
| 51 | PCB_RESERVED DW 0 ;AN000;reserved | ||
| 52 | PCB_CHILDNUM DW 0 ;AN000;Number of child panel entries | ||
| 53 | PCB_CHILDOFF DW 0 ;AN000;Off address of child panel table | ||
| 54 | PCB_CHILDSEG DW 0 ;AN000;Seg address of child panel table | ||
| 55 | PCB_PB ENDS ;AN000; | ||
| 56 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 57 | ; | ||
| 58 | ; PCSLCTP Structure | ||
| 59 | ; | ||
| 60 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 61 | SCB_PB STRUC ;AN000; | ||
| 62 | SCB_OPT1 DW 0 ;AN000;option word one | ||
| 63 | SCB_OPT2 DW 0 ;AN000;option word two | ||
| 64 | SCB_OPT3 DW 0 ;AN000;option word three | ||
| 65 | SCB_OPT4 DW 0 ;AN068;SEH option word four | ||
| 66 | SCB_FREQ DW 0 ;AN000;error beep frequency | ||
| 67 | SCB_ROW DW 0 ;AN000;upper left row | ||
| 68 | SCB_COL DW 0 ;AN000;upper left column | ||
| 69 | SCB_RELROW DW 0 ;AN000;relative upper left row | ||
| 70 | SCB_RELCOL DW 0 ;AN000;relative upper left column | ||
| 71 | SCB_WIDTH DW 0 ;AN000;line width | ||
| 72 | SCB_NUMLINE DW 0 ;AN000;number of lines | ||
| 73 | SCB_TOPELE DW 0 ;AN000;number of element on top | ||
| 74 | SCB_NUMELE DW 0 ;AN000;number of elements | ||
| 75 | SCB_CURELE DW 0 ;AN000;current element | ||
| 76 | SCB_NUMCOL DW 0 ;AN000;maximun number of cols to scroll | ||
| 77 | SCB_CURCOL DW 0 ;AN000;display offset into opt strings | ||
| 78 | SCB_NLISTCOL DW 0 ;AN000;num list txt col offset in strg | ||
| 79 | SCB_NLISTSEP DB 0 ;AN000;numbered list separator | ||
| 80 | SCB_SKLEN DW 0 ;AN000;select keystroke string length | ||
| 81 | SCB_SKOFF DW 0 ;AN000;select keystroke string offset | ||
| 82 | SCB_SKSEG DW 0 ;AN000;select keystroke string segment | ||
| 83 | SCB_RLLEN DW 0 ;AN000;return/leave string length | ||
| 84 | SCB_RLOFF DW 0 ;AN000;return/leave string offset | ||
| 85 | SCB_RLSEG DW 0 ;AN000;return/leave string segment | ||
| 86 | SCB_RELEN DW 0 ;AN000;return/erase string length | ||
| 87 | SCB_REOFF DW 0 ;AN000;return/erase string offset | ||
| 88 | SCB_RESEG DW 0 ;AN000;return/erase string segment | ||
| 89 | SCB_UALEN DW 0 ;AN000;up arrow string length | ||
| 90 | SCB_UAOFF DW 0 ;AN000;up arrow string offset | ||
| 91 | SCB_UASEG DW 0 ;AN000;up arrow string segment | ||
| 92 | SCB_DALEN DW 0 ;AN000;down arrow string length | ||
| 93 | SCB_DAOFF DW 0 ;AN000;down arrow string offset | ||
| 94 | SCB_DASEG DW 0 ;AN000;down arrow string segment | ||
| 95 | SCB_LALEN DW 0 ;AN000;left arrow string length | ||
| 96 | SCB_LAOFF DW 0 ;AN000;left arrow string offset | ||
| 97 | SCB_LASEG DW 0 ;AN000;left arrow string segment | ||
| 98 | SCB_RALEN DW 0 ;AN000;right arrow string length | ||
| 99 | SCB_RAOFF DW 0 ;AN000;right arrow string offset | ||
| 100 | SCB_RASEG DW 0 ;AN000;right arrow string segment | ||
| 101 | SCB_PULEN DW 0 ;AN000;page-up string length | ||
| 102 | SCB_PUOFF DW 0 ;AN000;page-up string offset | ||
| 103 | SCB_PUSEG DW 0 ;AN000;page-up string segment | ||
| 104 | SCB_PDLEN DW 0 ;AN000;page-down string length | ||
| 105 | SCB_PDOFF DW 0 ;AN000;page-down string offset | ||
| 106 | SCB_PDSEG DW 0 ;AN000;page-down string segment | ||
| 107 | SCB_PILEN DW 0 ;AN000;pointer indicator strg length | ||
| 108 | SCB_PIOFF DW 0 ;AN000;pointer indicator string offset | ||
| 109 | SCB_PISEG DW 0 ;AN000;pointer indicator string segment | ||
| 110 | SCB_PICOL DW 0 ;AN000;pointer ind txt col off into stg | ||
| 111 | SCB_AILEN DW 0 ;AN000;active indicator strg length | ||
| 112 | SCB_AIOFF DW 0 ;AN000;active indicator string offset | ||
| 113 | SCB_AISEG DW 0 ;AN000;active indicator string segment | ||
| 114 | SCB_AICOL DW 0 ;AN000;active ind txt col off into stg | ||
| 115 | SCB_CILEN DW 0 ;AN000;check mark text string length | ||
| 116 | SCB_CIOFF DW 0 ;AN000;check mark text string offset | ||
| 117 | SCB_CISEG DW 0 ;AN000;check mark text string segment | ||
| 118 | SCB_CICOL DW 0 ;AN000;check mark offset into opt strg | ||
| 119 | SCB_UILEN DW 0 ;AN000;up indicator string length | ||
| 120 | SCB_UIOFF DW 0 ;AN000;up indicator string offset | ||
| 121 | SCB_UISEG DW 0 ;AN000;up indicator string segment | ||
| 122 | SCB_UIROW DW 0 ;AN000;up indicator row location | ||
| 123 | SCB_UICOL DW 0 ;AN000;up indicator column location | ||
| 124 | SCB_DILEN DW 0 ;AN000;down indicator string length | ||
| 125 | SCB_DIOFF DW 0 ;AN000;down indicator string offset | ||
| 126 | SCB_DISEG DW 0 ;AN000;down indicator string segment | ||
| 127 | SCB_DIROW DW 0 ;AN000;down indicator row location | ||
| 128 | SCB_DICOL DW 0 ;AN000;down indicator column locaiton | ||
| 129 | SCB_LILEN DW 0 ;AN000;left indicator string length | ||
| 130 | SCB_LIOFF DW 0 ;AN000;left indicator string offset | ||
| 131 | SCB_LISEG DW 0 ;AN000;left indicator string segment | ||
| 132 | SCB_LIROW DW 0 ;AN000;left indicator row location | ||
| 133 | SCB_LICOL DW 0 ;AN000;left indicator column location | ||
| 134 | SCB_RILEN DW 0 ;AN000;right indicator string length | ||
| 135 | SCB_RIOFF DW 0 ;AN000;right indicator string offset | ||
| 136 | SCB_RISEG DW 0 ;AN000;right indicator string segment | ||
| 137 | SCB_RIROW DW 0 ;AN000;right indicator row location | ||
| 138 | SCB_RICOL DW 0 ;AN000;right indicator column locaiton | ||
| 139 | SCB_NCRAYOFF DW 0 ;AN000;normal color array offset | ||
| 140 | SCB_NCRAYSEG DW 0 ;AN000;normal color array segment | ||
| 141 | SCB_CCBID DW 0 ;AN000;logical color index number | ||
| 142 | SCB_CCBVECNUM DW 0 ;AN000;number color index table entries | ||
| 143 | SCB_CCBVECOFF DW 0 ;AN000;offset addr of color index table | ||
| 144 | SCB_CCBVECSEG DW 0 ;AN000;segment addr of color index tabl | ||
| 145 | SCB_INDEXOFF DW 0 ;AN000;index array offset | ||
| 146 | SCB_INDEXSEG DW 0 ;AN000;index array segment | ||
| 147 | SCB_SELOFF DW 0 ;AN000;element selection array offset | ||
| 148 | SCB_SELSEG DW 0 ;AN000;element selection array segment | ||
| 149 | SCB_OAOPT DW 0 ;AN000;option array option word | ||
| 150 | SCB_OAPOFF DW 0 ;AN000;option array pointer offset | ||
| 151 | SCB_OAPSEG DW 0 ;AN000;option array pointer segment | ||
| 152 | SCB_OASLEN DW 0 ;AN000;option array string length | ||
| 153 | SCB_OASSEG DW 0 ;AN000;option array string segment | ||
| 154 | SCB_OASTERMC DB 0 ;AN000;option array string term char | ||
| 155 | SCB_KS DW 0 ;AN000;keystroke | ||
| 156 | SCB_LVBOFF DW 0 ;AN000;log vid buf offset override | ||
| 157 | SCB_LVBSEG DW 0 ;AN000;log vid buf segment override | ||
| 158 | SCB_FMOPT1 DW 0 ;AN000;general purpose format hook opt | ||
| 159 | SCB_FMOPT2 DW 0 ;AN000;general purpose format hook opt | ||
| 160 | SCB_TRANLEN DW 0 ;AN000;length of translation table | ||
| 161 | SCB_TRANOFF DW 0 ;AN000;offset of translation table | ||
| 162 | SCB_TRANSEG DW 0 ;AN000;segment of translation table | ||
| 163 | SCB_MONOOFF DW 0 ;AN000;monocasing table offset | ||
| 164 | SCB_MONOSEG DW 0 ;AN000;monocasing table segment | ||
| 165 | SCB_DBCSLEN DW 0 ;AN000;dbcs table length | ||
| 166 | SCB_DBCSOFF DW 0 ;AN000;dbcs table offset | ||
| 167 | SCB_DBCSSEG DW 0 ;AN000;dbcs table segment | ||
| 168 | SCB_FONTOFF DW 0 ;AN068;SEH offset of font descriptor block | ||
| 169 | SCB_FONTSEG DW 0 ;AN068;SEH segment of font descriptor block | ||
| 170 | SCB_PB ENDS ;AN000; | ||
| 171 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 172 | ; | ||
| 173 | ; | ||
| 174 | ; | ||
| 175 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 176 | CHD_PB STRUC ;AN000; | ||
| 177 | CHD_PCB DW 0 ;AN000;child PCB element number | ||
| 178 | CHD_ROW DW 0 ;AN000;row override | ||
| 179 | CHD_COL DW 0 ;AN000;column override | ||
| 180 | CHD_INX DW 0 ;AN000;color index pointer override | ||
| 181 | DW 0 ;AN000;function key attribute | ||
| 182 | DB 0,0 ;AN000;keystroke associated with child | ||
| 183 | DW 0 ;AN000;option word | ||
| 184 | CHD_PB ENDS ;AN000; | ||
| 185 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 186 | ; | ||
| 187 | ; Input Field Control Block (ICB) Structure | ||
| 188 | ; | ||
| 189 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 190 | ICB_PB STRUC ;AN000;begin input field control block | ||
| 191 | ICB_OPT1 DW 0 ;AN000;option word one | ||
| 192 | ICB_OPT2 DW 0 ;AN000;option word two | ||
| 193 | ICB_OPT3 DW 0 ;AN000;option word three | ||
| 194 | ICB_OPT4 DW 0 ;AN000;option word four | ||
| 195 | ICB_ROW DW 0 ;AN000;upper left corner field row | ||
| 196 | ICB_COL DW 0 ;AN000;upper left corner field column | ||
| 197 | ICB_WIDTH DW 0 ;AN000;number of chars before wrapping | ||
| 198 | ICB_CCBID DW 0 ;AN000;color index number assigned | ||
| 199 | ICB_STATUS DW 0 ;AN000;default change/minus status | ||
| 200 | ICB_CURCHAR DW 0 ;AN000;cursor character pos in field | ||
| 201 | ICB_HRSTART DW 0 ;AN000;NEW ADD...Hor scroll support | ||
| 202 | ICB_SOUND DW 0 ;AN000;frequency of error beep | ||
| 203 | ICB_KEYRET DW 0 ;AN000;ASCII code of the key returned | ||
| 204 | ICB_ENDBYTE DW 0 ;AN000;length of data entered into fld | ||
| 205 | ICB_FIELDLEN DW 0 ;AN000;length of input field | ||
| 206 | ICB_FIELDOFF DW 0 ;AN000;offset of input field | ||
| 207 | ICB_FIELDSEG DW 0 ;AN000;segment of input field | ||
| 208 | ICB_ATTROFF DW 0 ;AN000;offset of color attribute buffer | ||
| 209 | ICB_ATTRSEG DW 0 ;AN000;segment of color attr buffer | ||
| 210 | ICB_DEFLEN DW 0 ;AN000;length of field's default value | ||
| 211 | ICB_DEFOFF DW 0 ;AN000;offset field's default value | ||
| 212 | ICB_DEFSEG DW 0 ;AN000;segment field's default value | ||
| 213 | ICB_RETLEN DW 0 ;AN000;length of return string | ||
| 214 | ICB_RETOFF DW 0 ;AN000;offset of return string | ||
| 215 | ICB_RETSEG DW 0 ;AN000;segment of return string | ||
| 216 | ICB_ALLLEN DW 0 ;AN000;length of allow chars | ||
| 217 | ICB_ALLOFF DW 0 ;AN000;offset of allow chars | ||
| 218 | ICB_ALLSEG DW 0 ;AN000;segment of allow chars | ||
| 219 | ICB_SKIPLEN DW 0 ;AN000;length of skip chars | ||
| 220 | ICB_SKIPOFF DW 0 ;AN000;offset of skip chars | ||
| 221 | ICB_SKIPSEG DW 0 ;AN000;segment of skip chars | ||
| 222 | ICB_ALL1LEN DW 0 ;AN000;length of allow once chars | ||
| 223 | ICB_ALL1OFF DW 0 ;AN000;offset of allow once chars | ||
| 224 | ICB_ALL1SEG DW 0 ;AN000;segment of allow once chars | ||
| 225 | ICB_DECPOS DW 0 ;AN000;precision of decimal point | ||
| 226 | ICB_RANUML1 DW 0 ;AN000;low numeric range (low intrgr) | ||
| 227 | ICB_RANUMH1 DW 0 ;AN000;low numeric range (high intrgr) | ||
| 228 | ICB_RANUML2 DW 0 ;AN000;high numeric range (low intrgr) | ||
| 229 | ICB_RANUMH2 DW 0 ;AN000;high numeric range (high intrgr) | ||
| 230 | ICB_MANDPROW DW 0 ;AN000;beginning row of minus and plus | ||
| 231 | ICB_MANDPCOL DW 0 ;AN000;beginning col of minus & plus | ||
| 232 | ICB_MINUSLEN DW 0 ;AN000;length of minus sign string | ||
| 233 | ICB_MINUSOFF DW 0 ;AN000;offset of minus sign string | ||
| 234 | ICB_MINUSSEG DW 0 ;AN000;segment of minus sign string | ||
| 235 | ICB_PLUSLEN DW 0 ;AN000;length of plus sign string | ||
| 236 | ICB_PLUSOFF DW 0 ;AN000;offset of plus sign string | ||
| 237 | ICB_PLUSSEG DW 0 ;AN000;segment of plus sign string | ||
| 238 | ICB_PB ENDS ;AN000; | ||
| 239 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
diff --git a/v4.0/src/SELECT/CKDISP.ASM b/v4.0/src/SELECT/CKDISP.ASM new file mode 100644 index 0000000..ba2b318 --- /dev/null +++ b/v4.0/src/SELECT/CKDISP.ASM | |||
| @@ -0,0 +1,151 @@ | |||
| 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2 | ; | ||
| 3 | ; | ||
| 4 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 5 | .ALPHA ;AN000; | ||
| 6 | .XLIST ;AN000; | ||
| 7 | INCLUDE STRUC.INC ;AN000; | ||
| 8 | .LIST ;AN000; | ||
| 9 | ; | ||
| 10 | PUBLIC MONO, CGA, EGA, LCD ;AN000; | ||
| 11 | PUBLIC ACTIVE, ALTERNATE ;AN000; | ||
| 12 | ; | ||
| 13 | EXTRN IN_CURNOR:WORD ;AN000;JW | ||
| 14 | ; | ||
| 15 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 16 | MONO EQU 1 ;AN000; | ||
| 17 | CGA EQU 2 ;AN000; | ||
| 18 | EGA EQU 3 ;AN000; | ||
| 19 | LCD EQU 4 ;AN000; | ||
| 20 | ; | ||
| 21 | READ_DISPLAY EQU 1AH ;AN000; | ||
| 22 | ALT_SELECT EQU 12H ;AN000; | ||
| 23 | EGA_INFO EQU 10H ;AN000; | ||
| 24 | MONOCHROME EQU 1 ;AN000; | ||
| 25 | BASE_COLOR EQU 0B800H ;AN000; | ||
| 26 | BASE_MONO EQU 0B000H ;AN000; | ||
| 27 | GET_SYS_ID EQU 0C0H ;AN000; | ||
| 28 | LCD_MODEL EQU 0F9H ;AN000; | ||
| 29 | GET_STATUS EQU 43H ;AN000; | ||
| 30 | ON EQU 1 ;AN000; | ||
| 31 | ; | ||
| 32 | SYSTEM_ID STRUC ;AN000; | ||
| 33 | DW ? ;AN000; | ||
| 34 | MODEL_BYTE DB ? ;AN000; | ||
| 35 | SYSTEM_ID ENDS ;AN000; | ||
| 36 | ; | ||
| 37 | ACTIVE DB 0 ;AN000; | ||
| 38 | ALTERNATE DB 0 ;AN000; | ||
| 39 | ; | ||
| 40 | DATA ENDS ;AN000;DATA | ||
| 41 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 42 | ; | ||
| 43 | ; | ||
| 44 | ; | ||
| 45 | ; | ||
| 46 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 47 | SERVICE SEGMENT PARA PUBLIC 'SERVICE' ;AN000;segment for far routine | ||
| 48 | ASSUME CS:SERVICE,DS:DATA ;AN000; | ||
| 49 | ; | ||
| 50 | PUBLIC VIDEO_CHECK ;AN000; | ||
| 51 | VIDEO_CHECK PROC FAR ;AN000; | ||
| 52 | PUSH AX ;AN000; | ||
| 53 | PUSH BX ;AN000; save all registers | ||
| 54 | PUSH CX ;AN000; | ||
| 55 | PUSH DX ;AN000; | ||
| 56 | PUSH SI ;AN000; | ||
| 57 | PUSH DI ;AN000; | ||
| 58 | PUSH ES ;AN000; | ||
| 59 | XOR AL,AL ;AN000; | ||
| 60 | MOV AH,READ_DISPLAY ;AN000; check for VGA first. | ||
| 61 | INT 10H ;AN000; | ||
| 62 | .IF <AL EQ READ_DISPLAY> ;AN000; VGA present? | ||
| 63 | .SELECT ;AN000; yes....BL contains active.. | ||
| 64 | .WHEN <BL EQ MONO> ;AN000; display code. | ||
| 65 | MOV ACTIVE,MONO ;AN000; | ||
| 66 | .WHEN <BL EQ CGA> ;AN000; | ||
| 67 | MOV ACTIVE,CGA ;AN000; | ||
| 68 | .WHEN <BL A CGA> ;AN000; | ||
| 69 | MOV ACTIVE,EGA ;AN000; | ||
| 70 | .ENDSELECT ;AN000; | ||
| 71 | .SELECT ;AN000; ...and BH contains alternate.. | ||
| 72 | .WHEN <BH EQ MONO> ;AN000; display code. | ||
| 73 | MOV ALTERNATE,MONO ;AN000; | ||
| 74 | .WHEN <BH EQ CGA> ;AN000; | ||
| 75 | MOV ALTERNATE,CGA ;AN000; | ||
| 76 | .WHEN <BH A CGA> ;AN000; | ||
| 77 | MOV ALTERNATE,EGA ;AN000; | ||
| 78 | .ENDSELECT ;AN000; | ||
| 79 | .ELSE ;AN000; VGA not there..check for EGA. | ||
| 80 | MOV AH,ALT_SELECT ;AN000; | ||
| 81 | MOV BL,EGA_INFO ;AN000; | ||
| 82 | INT 10H ;AN000; | ||
| 83 | .IF <BL NE EGA_INFO> ;AN000; EGA present? | ||
| 84 | MOV ACTIVE,EGA ;AN000; yes....set as active. | ||
| 85 | .IF <BH EQ MONOCHROME> ;AN000; if monochrome attached to EGA then.. | ||
| 86 | MOV AX,BASE_COLOR ;AN000; check if CGA is an alternate. | ||
| 87 | CALL CHECK_BUFF ;AN000; | ||
| 88 | .IF <AH EQ AL> ;AN000; CGA there? | ||
| 89 | MOV ALTERNATE,CGA ;AN000; yes....alternate display. | ||
| 90 | .ENDIF ;AN000; | ||
| 91 | .ELSE ;AN000; if color attached to EGA then... | ||
| 92 | MOV AX,BASE_MONO ;AN000; check if monochrome is an alternate. | ||
| 93 | CALL CHECK_BUFF ;AN000; | ||
| 94 | .IF <AH EQ AL> ;AN000; MONO there? | ||
| 95 | MOV ALTERNATE,MONO ;AN000; yes....alternate display. | ||
| 96 | .ENDIF ;AN000; | ||
| 97 | .ENDIF ;AN000; | ||
| 98 | .ELSE ;AN000; EGA not present so... | ||
| 99 | MOV AH,GET_SYS_ID ;AN000; check for LCD. | ||
| 100 | INT 15H ;AN000; | ||
| 101 | .IF <ES:[BX].MODEL_BYTE EQ LCD_MODEL> AND ;AN000; if model byte says convertible.. | ||
| 102 | MOV AH,GET_STATUS ;AN000; and.. | ||
| 103 | INT 15H ;AN000; | ||
| 104 | .IF <BIT AL NAND ON> ;AN000; if LCD screen attached..then | ||
| 105 | MOV ACTIVE,LCD ;AN000; set LCD as active display. | ||
| 106 | .ELSE ;AN000; | ||
| 107 | MOV AX,BASE_MONO ;AN000; not LCD...check for.. | ||
| 108 | CALL CHECK_BUFF ;AN000; MONO.... | ||
| 109 | .IF <AH EQ AL> ;AN000; | ||
| 110 | MOV ACTIVE,MONO ;AN000; MONO found...set as active. | ||
| 111 | MOV IN_CURNOR,0B0CH ;AN000;JW set mono cursor size | ||
| 112 | .ENDIF ;AN000; | ||
| 113 | MOV AX,BASE_COLOR ;AN000; ..and check for color. | ||
| 114 | CALL CHECK_BUFF ;AN000; | ||
| 115 | .IF <AH EQ AL> ;AN000; | ||
| 116 | MOV ALTERNATE,CGA ;AN000; color found...set CGA as alternate. | ||
| 117 | .ENDIF ;AN000; | ||
| 118 | .ENDIF ;AN000; | ||
| 119 | .ENDIF ;AN000; | ||
| 120 | .ENDIF ;AN000; | ||
| 121 | POP ES ;AN000; | ||
| 122 | POP DI ;AN000; restore registers. | ||
| 123 | POP SI ;AN000; | ||
| 124 | POP DX ;AN000; | ||
| 125 | POP CX ;AN000; | ||
| 126 | POP BX ;AN000; | ||
| 127 | POP AX ;AN000; | ||
| 128 | RET ;AN000; | ||
| 129 | VIDEO_CHECK ENDP ;AN000; | ||
| 130 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 131 | ; | ||
| 132 | ; | ||
| 133 | ; | ||
| 134 | ; | ||
| 135 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 136 | CHECK_BUFF PROC NEAR ;AN000; write to video buffer to see if it is present | ||
| 137 | PUSH DS ;AN000; | ||
| 138 | MOV DS,AX ;AN000; load DS with address of buffer | ||
| 139 | MOV CH,DS:0 ;AN000; save buffer information (if present) | ||
| 140 | MOV AL,55H ;AN000; prepare to write sample data | ||
| 141 | MOV DS:0,AL ;AN000; write to buffer | ||
| 142 | PUSH BX ;AN000; terminate the bus so that lines.. | ||
| 143 | POP BX ;AN000; are reset | ||
| 144 | MOV AH,DS:0 ;AN000; bring sample data back... | ||
| 145 | MOV DS:0,CH ;AN000; repair damage to buffer | ||
| 146 | POP DS ;AN000; | ||
| 147 | RET ;AN000; | ||
| 148 | CHECK_BUFF ENDP ;AN000; | ||
| 149 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 150 | SERVICE ENDS ;AN000; | ||
| 151 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/COLORS.ASM b/v4.0/src/SELECT/COLORS.ASM new file mode 100644 index 0000000..a959623 --- /dev/null +++ b/v4.0/src/SELECT/COLORS.ASM | |||
| @@ -0,0 +1,83 @@ | |||
| 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2 | ; | ||
| 3 | ; COLORS.ASM | ||
| 4 | ; | ||
| 5 | ; | ||
| 6 | ; | ||
| 7 | ; Color CODE Definition | ||
| 8 | ; | ||
| 9 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 10 | |||
| 11 | .alpha ; arrange segments alphabetically | ||
| 12 | |||
| 13 | INCLUDE SEL-PAN.INC ;AN000; | ||
| 14 | ; | ||
| 15 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 16 | ; | ||
| 17 | ; Color Index Structure | ||
| 18 | ; | ||
| 19 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 20 | CCB_PB STRUC ;AN000; | ||
| 21 | CCB_A1 DB 0 ;AN000;Normal/Base Panel | ||
| 22 | CCB_A2 DB 0 ;AN000;Selection Bar/Field Highlight | ||
| 23 | CCB_A3 DB 0 ;AN000;Selected Options | ||
| 24 | CCB_A4 DB 0 ;AN000;Highlighted and Selected Options | ||
| 25 | CCB_A5 DB 0 ;AN000;Active Options | ||
| 26 | CCB_A6 DB 0 ;AN000;Direction Indicators | ||
| 27 | CCB_A7 DB 0 ;AN000;Title | ||
| 28 | CCB_A8 DB 0 ;AN000;Instructions | ||
| 29 | CCB_A9 DB 0 ;AN000;Function Keys | ||
| 30 | CCB_AA DB 0 ;AN000;Mnemonic Highlight | ||
| 31 | CCB_AB DB 0 ;AN000;Reserved | ||
| 32 | CCB_AC DB 0 ;AN000;Reserved | ||
| 33 | CCB_PB ENDS ;AN000; | ||
| 34 | ; | ||
| 35 | PUBLIC WR_CIS,WR_CIS2,L_WR_CIS,L_WR_CIS2;AN000; | ||
| 36 | ; | ||
| 37 | CODE SEGMENT PARA PUBLIC 'CODE' ;AN000; | ||
| 38 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 39 | ; | ||
| 40 | ; Color Index Structure (Actual color values) | ||
| 41 | ; | ||
| 42 | ; Attribute Color Attribute Assignment | ||
| 43 | ; --------- ----------------------------------- | ||
| 44 | ; A1 - Normal/Base Panel | ||
| 45 | ; A2 - Selection Bar/Field Highlight | ||
| 46 | ; A3 - Selected Options | ||
| 47 | ; A4 - Highlighted and Selected Options | ||
| 48 | ; A5 - Active Options | ||
| 49 | ; A6 - Direction Indicators | ||
| 50 | ; A7 - Title | ||
| 51 | ; A8 - Instructions | ||
| 52 | ; A9 - Function Keys | ||
| 53 | ; AA - Mnemonic Highlight | ||
| 54 | ; AB - Reserved | ||
| 55 | ; AC - Reserved | ||
| 56 | ; | ||
| 57 | ; A1, A2, A3, A4, A5, A6, A7, A8, A9, AA, AB, AC | ||
| 58 | ; � � � � � � � � � � � � | ||
| 59 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 60 | WR_CIS DB 31,113, 48,113, 31, 31, 30, 30,112, 28, 00, 00 ;AN000;Logo Scr | ||
| 61 | WR_CIS_W EQU $-WR_CIS ;AN000; | ||
| 62 | DB 31,127, 48,113, 31, 31, 30, 30,112, 28, 00, 00 ;AN000;Inactive scroll | ||
| 63 | DB 112,112,112,112,112,112,112,112,112,112, 00, 00 ;AN000;Ctxt Help | ||
| 64 | DB 112,112,112,112,112,112,112,112,112,112, 00, 00 ;AN000;Ctxt Help | ||
| 65 | ; DB 4Fh,112,112,112,112,112,112,112,112,112, 00, 00 ;Indx Help | ||
| 66 | DB 112,112,112,112,112,112,112,112,112,112, 00, 00 ;AN000;Indx Help | ||
| 67 | L_WR_CIS EQU ($-WR_CIS)/WR_CIS_W ;AN000; | ||
| 68 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 69 | ; | ||
| 70 | ; Color Index Structure (Actual MONO values) | ||
| 71 | ; | ||
| 72 | ; A1, A2, A3, A4, A5, A6, A7, A8, A9, AA, AB, AC | ||
| 73 | ; � � � � � � � � � � � � | ||
| 74 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 75 | WR_CIS2 DB 7,112, 48,112, 7, 7, 7, 7,112, 28, 00, 00 ;AN000;Logo Scr | ||
| 76 | WR_CIS2_W EQU $-WR_CIS2 ;AN000; | ||
| 77 | DB 7,127, 48,112, 7, 7, 7, 7,112, 28, 00, 00 ;AN000;Logo Scr | ||
| 78 | DB 112,112,112,112,112,112,112,112,112,112, 00, 00 ;AN000;Ctxt Help | ||
| 79 | DB 112,112,112,112,112,112,112,112,112,112, 00, 00 ;AN000;Ctxt Help | ||
| 80 | DB 112,112,112,112,112,112,112,112,112,112, 00, 00 ;AN000;Indx Help | ||
| 81 | L_WR_CIS2 EQU ($-WR_CIS2)/WR_CIS2_W ;AN000; | ||
| 82 | CODE ENDS ;AN000; | ||
| 83 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/DATA.MAC b/v4.0/src/SELECT/DATA.MAC new file mode 100644 index 0000000..ca1b67d --- /dev/null +++ b/v4.0/src/SELECT/DATA.MAC | |||
| @@ -0,0 +1,502 @@ | |||
| 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2 | ; | ||
| 3 | ; | ||
| 4 | ; | ||
| 5 | ; DATA.MAC | ||
| 6 | ; | ||
| 7 | ; | ||
| 8 | ; Define data segment | ||
| 9 | ; | ||
| 10 | ; The following variables are defined in the data segment and are used as | ||
| 11 | ; parameter block structures for specific CAS routine calls. The | ||
| 12 | ; initialization of these variables will eventually occur by the dialog. | ||
| 13 | ; | ||
| 14 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 15 | ; | ||
| 16 | PUBLIC QM_OPT1,QM_ID ;AN000; | ||
| 17 | PUBLIC WR_DRETLEN,WR_DRETOFF,WR_DATA2LEN ;AN000; | ||
| 18 | PUBLIC WR_MAXMEMPAR,WR_DATA2SEG,WR_DATA2OFF ;AN000; | ||
| 19 | PUBLIC WR_LVBMEM,WR_LVBSEG,WR_LVBOFF,WR_LVBLEN ;AN000; | ||
| 20 | PUBLIC WR_ERROR,PM_BASECHAR,PM_BASEATTR,QM_ACTIVEPAN ;AN000; | ||
| 21 | PUBLIC WR_DRETSEG,QM_OPT2 ;AN000; | ||
| 22 | PUBLIC CRD_CCBVECOFF,CRD_CCBVECSEG,INC_KS ;AN000; | ||
| 23 | PUBLIC IN_ICBID,WR_REFBUF ;AN000; | ||
| 24 | PUBLIC WR_HLPOPT,WR_HLPROW,WR_HCBCONT,WR_SCBID ;AN000; | ||
| 25 | PUBLIC IN_CCBVECOFF,IN_CCBVECSEG ;AN000; | ||
| 26 | PUBLIC WR_REFNUM,WR_REFOFF,WR_REFSEG,WR_REFCNT ;AN000; | ||
| 27 | PUBLIC WR_REFIELDCNT,WR_REFID ;AN000; | ||
| 28 | PUBLIC WR_MAXREFID ;AN000; | ||
| 29 | PUBLIC WR_MAXHELPSZ ;AN000; | ||
| 30 | PUBLIC HRD_BUFSEG ;AN000; | ||
| 31 | PUBLIC HRD_BUFOFF ;AN000; | ||
| 32 | PUBLIC HRD_BUFLEN ;AN000; | ||
| 33 | PUBLIC IN_CURNOR ;AN000;JW | ||
| 34 | ; | ||
| 35 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 36 | ; | ||
| 37 | EXTRN WR_ICBVEC:WORD ;AN000; | ||
| 38 | EXTRN KD_BACKSPACE:BYTE ;AN000; | ||
| 39 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 40 | ; | ||
| 41 | ; PCGVIDO Parameter Block | ||
| 42 | ; | ||
| 43 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 44 | GV_STAT1 DW 0 ;AN000;low bit flag indicating status | ||
| 45 | GV_STAT2 DW 0 ;AN000;high bit flag indicating status | ||
| 46 | GV_SCRWIDTH DW 0 ;AN000;# of attr and char in one line | ||
| 47 | GV_SCRLEN DW 0 ;AN000;# of bytes per video buffer page | ||
| 48 | GV_CURPAGENUM DB 0 ;AN000;current active page | ||
| 49 | GV_VIDMODE DB 0 ;AN000;current video state/mode | ||
| 50 | GV_BASE_6845 DW 0 ;AN000;base port address of 6845 | ||
| 51 | GV_STAT_6845 DW 0 ;AN000;status port address of 6845 | ||
| 52 | GV_PHYOFF DW 0 ;AN000;phy video buffer offset | ||
| 53 | GV_PHYOFFPAGE DW 0 ;AN000;phys vid buf off adj for page | ||
| 54 | GV_PHYSEG DW 0 ;AN000;phy video buffer segment | ||
| 55 | GV_OSLOGOFF DW 0 ;AN000;operating sys log vid buff os | ||
| 56 | GV_OSLOGSEG DW 0 ;AN000;operating sys log vid buff seg | ||
| 57 | GV_APLOGOFF DW 0 ;AN000;application log vid buf offset | ||
| 58 | GV_APLOGSEG DW 0 ;AN000;application log vid buf segment | ||
| 59 | GV_CSH DW 0 ;AN000;character height in scan lines | ||
| 60 | GV_CSW DW 0 ;AN000;character width in scan lines | ||
| 61 | GV_NUMLINES DW 0 ;AN000;number of rows in text screen | ||
| 62 | GV_CURPOS0 DW 0 ;AN000;cursor position for page 0 R/C | ||
| 63 | GV_CURPOS1 DW 0 ;AN000;cursor position for page 1 | ||
| 64 | GV_CURPOS2 DW 0 ;AN000;cursor position for page 2 | ||
| 65 | GV_CURPOS3 DW 0 ;AN000;cursor position for page 3 | ||
| 66 | GV_CURPOS4 DW 0 ;AN000;cursor position for page 4 | ||
| 67 | GV_CURPOS5 DW 0 ;AN000;cursor position for page 5 | ||
| 68 | GV_CURPOS6 DW 0 ;AN000;cursor position for page 6 | ||
| 69 | GV_CURPOS7 DW 0 ;AN000;cursor position for page 7 | ||
| 70 | GV_CURMOD0 DW 0 ;AN000;cursor mode for page 0 | ||
| 71 | GV_CURMOD1 DW 0 ;AN000;cursor mode for page 1 | ||
| 72 | GV_CURMOD2 DW 0 ;AN000;cursor mode for page 2 | ||
| 73 | GV_CURMOD3 DW 0 ;AN000;cursor mode for page 3 | ||
| 74 | GV_CURMOD4 DW 0 ;AN000;cursor mode for page 4 | ||
| 75 | GV_CURMOD5 DW 0 ;AN000;cursor mode for page 5 | ||
| 76 | GV_CURMOD6 DW 0 ;AN000;cursor mode for page 6 | ||
| 77 | GV_CURMOD7 DW 0 ;AN000;cursor mode for page 7 | ||
| 78 | GV_CURROW DW 0 ;AN000;cursor row location | ||
| 79 | GV_CURCOL DW 0 ;AN000;cursor column location | ||
| 80 | GV_CURSTART DW 0 ;AN000;cursor size (starline) | ||
| 81 | GV_CUREND DW 0 ;AN000;cursor size (endline) | ||
| 82 | GV_CURWIDTH DW 0 ;AN000;cursor width | ||
| 83 | GV_CURATTR DW 0 ;AN000;cursor attribute | ||
| 84 | GV_COLORBITS DB 0 ;AN000;color bits (graphics mode) | ||
| 85 | GV_ERRCODE DW 0 ;AN000;error code | ||
| 86 | GV_RESERVED DB 40 DUP(0) ;AN000;reserved locations | ||
| 87 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 88 | ; | ||
| 89 | ; PCINSTR parameter block | ||
| 90 | ; | ||
| 91 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 92 | INS_OPT DW 0 ;AN000;option word | ||
| 93 | INS_KS DW 0 ;AN000;keystroke | ||
| 94 | INS_FLEN DW 0 ;AN000;length of find string | ||
| 95 | INS_FOFF DW 0 ;AN000;offset of find string | ||
| 96 | INS_FSEG DW 0 ;AN000;segment of find string | ||
| 97 | INS_SLEN DW 0 ;AN000;length of string to search | ||
| 98 | INS_SOFF DW 0 ;AN000;offset of string to search | ||
| 99 | INS_SSEG DW 0 ;AN000;segment of string to search | ||
| 100 | INS_SPOFF DW 0 ;AN000;position to start seach | ||
| 101 | INS_RSLT DW 0 ;AN000;result | ||
| 102 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 103 | ; | ||
| 104 | ; PCHLPRD parameter block | ||
| 105 | ; | ||
| 106 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 107 | HRD_OPT1 DW 0 ;AN000;option word | ||
| 108 | HRD_BUFLEN DW 0 ;AN000;length of avail buffer | ||
| 109 | HRD_BUFOFF DW 0 ;AN000;offset of buffer | ||
| 110 | HRD_BUFSEG DW 0 ;AN000;segment of buffer | ||
| 111 | HRD_ID DW 0 ;AN000;ID of help text | ||
| 112 | HRD_FILSPOFF DW WR_HLPBUF ;AN000;offset of filespec | ||
| 113 | HRD_FILSPSEG DW DATA ;AN000;segment of filespec | ||
| 114 | HRD_TOPICNUM DW 0 ;AN000;max num of helps | ||
| 115 | HRD_TOPICLEN DW 0 ;AN000;Length of longest topic | ||
| 116 | HRD_TOPICOFF DW 0 ;AN000;offset to table of offsets | ||
| 117 | HRD_TOPICSEG DW 0 ;AN000;segment to table of offsets | ||
| 118 | HRD_TEXTLEN DW 0 ;AN000;Length of help text | ||
| 119 | HRD_TEXTOFF DW 0 ;AN000;offset to help text | ||
| 120 | HRD_TEXTSEG DW 0 ;AN000;Segment to help text | ||
| 121 | HRD_ERROR DW 0 ;AN000;errors | ||
| 122 | HRD_DOSERROR DW 0 ;AN000;DOS error conditions | ||
| 123 | HRD_RESERVED DB 48 DUP(0) ;AN000;reserved for internal use | ||
| 124 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 125 | ; | ||
| 126 | ; PCSCRRD parameter block | ||
| 127 | ; | ||
| 128 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 129 | SRD_OPT1 DW 0 ;AN000;option word | ||
| 130 | SRD_BUFLEN DW 0 ;AN000;length of avail buffer | ||
| 131 | SRD_BUFOFF DW 0 ;AN000;offset of buffer | ||
| 132 | SRD_BUFSEG DW 0 ;AN000;segment of buffer | ||
| 133 | SRD_ID DW 0 ;AN000;ID number to read | ||
| 134 | SRD_FILSPEOFF DW WR_SCRBUF ;AN000;offset of filespec | ||
| 135 | SRD_FILSPESEG DW DATA ;AN000;segment of filespec | ||
| 136 | SRD_SCBVECNUM DW 0 ;AN000;num SCBs in vector | ||
| 137 | SRD_SCBVECOFF DW 0 ;AN000;offset of SCB vector | ||
| 138 | SRD_SCBVECSEG DW 0 ;AN000;segment of SCB vector | ||
| 139 | SRD_MAXNUMSCB DW 0 ;AN000;max # flds poss in memry at once | ||
| 140 | SRD_ERROR DW 0 ;AN000;errors | ||
| 141 | SRD_DOSERROR DW 0 ;AN000;DOS error conditions | ||
| 142 | SRD_RESERVED DB 50 DUP(0) ;AN000;reserved for internal use | ||
| 143 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 144 | ; | ||
| 145 | ; PCINCHA parameter block | ||
| 146 | ; | ||
| 147 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 148 | INC_OPT DW 0 ;AN000;option word | ||
| 149 | INC_STAT DW 0 ;AN000;status word | ||
| 150 | INC_KS DW 0 ;AN000;keystroke found | ||
| 151 | INC_TRANLEN DW 0 ;AN000;length of translation table | ||
| 152 | INC_TRANOFF DW 0 ;AN000;offset of translation table | ||
| 153 | INC_TRANSEG DW 0 ;AN000;segment of translation table | ||
| 154 | INC_DBCSLEN DW 0 ;AN000;length of DBCS table | ||
| 155 | INC_DBCSOFF DW 0 ;AN000;offset of DBCS table | ||
| 156 | INC_DBCSSEG DW 0 ;AN000;segment of DBCS table | ||
| 157 | INC_MONOOFF DW 0 ;AN000;offset of monocasing table | ||
| 158 | INC_MONOSEG DW 0 ;AN000;segment of monocasing table | ||
| 159 | INC_RESERVED DB 12 DUP(0) ;AN000;reserved for internal use | ||
| 160 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 161 | ; | ||
| 162 | ; PCCLRRD parameter block | ||
| 163 | ; | ||
| 164 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 165 | CRD_OPT1 DW 0 ;AN000;option word | ||
| 166 | CRD_BUFLEN DW 0 ;AN000;length of avail buffer | ||
| 167 | CRD_BUFOFF DW 0 ;AN000;offset of buffer | ||
| 168 | CRD_BUFSEG DW 0 ;AN000;segment of buffer | ||
| 169 | CRD_ID DW 0 ;AN000;color index ID number to read | ||
| 170 | CRD_FILSPEOFF DW WR_CLRBUF ;AN000;offset of filespec | ||
| 171 | CRD_FILSPESEG DW DATA ;AN000;segment of filespec | ||
| 172 | CRD_CCBVECLEN DW 0 ;AN000;length of index in bytes | ||
| 173 | CRD_CCBVECOFF DW 0 ;AN000;offset of color index | ||
| 174 | CRD_CCBVECSEG DW 0 ;AN000;segment of color index | ||
| 175 | CRD_ERROR DW 0 ;AN000;errors | ||
| 176 | CRD_DOSERROR DW 0 ;AN000;DOS error conditions | ||
| 177 | CRD_RESERVED DB 34 DUP(0) ;AN000;reserved for internal use | ||
| 178 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 179 | ; | ||
| 180 | ; PCPANRD parameter block | ||
| 181 | ; | ||
| 182 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 183 | PRD_OPT1 DW 0 ;AN000;option word | ||
| 184 | PRD_BUFLEN DW 0 ;AN000;length of avail buffer | ||
| 185 | PRD_BUFOFF DW 0 ;AN000;offset of buffer | ||
| 186 | PRD_BUFSEG DW 0 ;AN000;segment of buffer | ||
| 187 | PRD_ID DW 0 ;AN000;PCB number to read | ||
| 188 | PRD_FILSPELEN DW WR_PANLEN ;AN000;length of filespec | ||
| 189 | PRD_FILSPEOFF DW WR_PANBUF ;AN000;offset of filespec | ||
| 190 | PRD_FILSPESEG DW DATA ;AN000;segment of filespec | ||
| 191 | PRD_PCBVECNUM DW 0 ;AN000;num PCBs in vector | ||
| 192 | PRD_PCBVECOFF DW 0 ;AN000;offset of PCB vector | ||
| 193 | PRD_PCBVECSEG DW 0 ;AN000;segment of PCB vector | ||
| 194 | PRD_MAXNUMPAN DW 0 ;AN000;max # pans poss in memry at once | ||
| 195 | PRD_ERROR DW 0 ;AN000;errors | ||
| 196 | PRD_DOSERROR DW 0 ;AN000;DOS error conditions | ||
| 197 | PRD_RESERVED DB 48 DUP(0) ;AN000;reserved for internal use | ||
| 198 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 199 | ; | ||
| 200 | ; PCDISPQ Parameter Block | ||
| 201 | ; | ||
| 202 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 203 | QM_OPT1 DW 0 ;AN000;option word one | ||
| 204 | QM_OPT2 DW 0 ;AN000;option word two | ||
| 205 | QM_ID DW 0 ;AN000;parent/child PCB number | ||
| 206 | QM_ACTIVEPAN DW 0 ;AN000;current active parent panel | ||
| 207 | QM_COLOROVER DW 0 ;AN000;parent/child override color indx | ||
| 208 | QM_ROWOVER DW 0 ;AN000;parent/child override row | ||
| 209 | QM_COLUMOVER DW 0 ;AN000;parent/child override column | ||
| 210 | QM_MAXCHDQUE DW 0 ;AN000;max # of child queues to save | ||
| 211 | QM_MAXPANQUE DW 0 ;AN000;max # of panel queues to save | ||
| 212 | QM_MAXNUMCHD DW 0 ;AN000;max # of parent panels queued | ||
| 213 | QM_MAXNUMPAN DW 0 ;AN000;max # of child panels queued | ||
| 214 | QM_PCBVECNUM DW 0 ;AN000;number of PCB elements in vector | ||
| 215 | QM_PCBVECOFF DW 0 ;AN000;offset of PCB vector | ||
| 216 | QM_PCBVECSEG DW 0 ;AN000;segment of PCB vector | ||
| 217 | QM_BUFLEN DW 0 ;AN000;length of avail buffer | ||
| 218 | QM_BUFOFF DW 0 ;AN000;offset of buffer | ||
| 219 | QM_BUFSEG DW 0 ;AN000;segment of buffer | ||
| 220 | QM_PANQUENUM DW 0 ;AN000;returns number in parent PDQ | ||
| 221 | QM_PANQUEOFF DW 0 ;AN000;returns parent PDQ offset | ||
| 222 | QM_PANQUESEG DW 0 ;AN000;returns parent PDQ segment | ||
| 223 | QM_CHDQUENUM DW 0 ;AN000;returns number in child PDQ | ||
| 224 | QM_CHDQUEOFF DW 0 ;AN000;returns child PDQ offset | ||
| 225 | QM_CHDQUESEG DW 0 ;AN000;returns child PDQ segment | ||
| 226 | QM_RETKEYSLEN DW 0 ;AN000;active child keys buffer length | ||
| 227 | QM_RETKEYSOFF DW 0 ;AN000;active child keys buffer offset | ||
| 228 | QM_RETKEYSSEG DW 0 ;AN000;active child keys buffer segmente | ||
| 229 | QM_ERROR DW 0 ;AN000;returns error status | ||
| 230 | QM_RESERVED DB 66 DUP(0) ;AN000;reserved for internal use | ||
| 231 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 232 | ; | ||
| 233 | ; PCPANEL Parameter Control Block | ||
| 234 | ; | ||
| 235 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 236 | PM_OPT1 DW 0 ;AN000;option word | ||
| 237 | PM_PANPDQNUM DW 0 ;AN000;beg/ending parent PDQ number | ||
| 238 | PM_PANBRKOFF DW 0 ;AN000;panel off in lvb of break panel | ||
| 239 | PM_PANBRKID DW 0 ;AN000;ID number of break panel | ||
| 240 | PM_ACTIVEPAN DW 0 ;AN000;current active parent panel PCB | ||
| 241 | PM_BASECHAR DB 0 ;AN000;text background character | ||
| 242 | PM_BASEATTR DB 0 ;AN000;color attribute of back char | ||
| 243 | PM_PANQUENUM DW 0 ;AN000;number of panels in parent queue | ||
| 244 | PM_PANQUEOFF DW 0 ;AN000;offset address of parent queue | ||
| 245 | PM_PANQUESEG DW 0 ;AN000;segment address of parent queue | ||
| 246 | PM_CHDQUENUM DW 0 ;AN000;number panels in child queue | ||
| 247 | PM_CHDQUEOFF DW 0 ;AN000;offset of child queue | ||
| 248 | PM_CHDQUESEG DW 0 ;AN000;segment of child queue | ||
| 249 | PM_PCBVECNUM DW 0 ;AN000;number of index elements | ||
| 250 | PM_PCBVECOFF DW 0 ;AN000;off addr of vect pointing to pan | ||
| 251 | PM_PCBVECSEG DW 0 ;AN000;seg addr of vect pointing to pan | ||
| 252 | PM_CCBVECNUM DW 0 ;AN000;number color index table entries | ||
| 253 | PM_CCBVECOFF DW 0 ;AN000;offset addr of color index table | ||
| 254 | PM_CCBVECSEG DW 0 ;AN000;segment addr of color index tabl | ||
| 255 | PM_LVBLEN DW 0 ;AN000;number bytes in logical vid buf | ||
| 256 | PM_LVBOFF DW 0 ;AN000;offset of logical video buffer | ||
| 257 | PM_LVBSEG DW 0 ;AN000;segment of logical video buffer | ||
| 258 | PM_LVBWIDTH DW 0 ;AN000;width of log vid buf in bytes | ||
| 259 | PM_TRANS_C DB 0 ;AN000;character indicating trans field | ||
| 260 | PM_TRANS_A DB 0 ;AN000;attribute indicating trans field | ||
| 261 | PM_REFVECNUM DW 0 ;AN000;number refresh table entries | ||
| 262 | PM_REFVECOFF DW 0 ;AN000;offset of refresh table | ||
| 263 | PM_REFVECSEG DW 0 ;AN000;segment of refresh table | ||
| 264 | PM_ERROR DW 0 ;AN000;error conditions | ||
| 265 | PM_RESERVED DB 417 DUP (0) ;AN000;reserved for internal use | ||
| 266 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 267 | ; | ||
| 268 | ; PCINPUT parameter block | ||
| 269 | ; | ||
| 270 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 271 | IN_OPT DW IN_AMONO ;AN000;option word one | ||
| 272 | IN_ICBID DW 1 ;AN000;current input field to process | ||
| 273 | IN_ICBOFF DW 0 ;AN000;returned offset of current ICB | ||
| 274 | IN_ICBSEG DW 0 ;AN000;returned segment of current ICB | ||
| 275 | IN_ICBVECNUM DW 31 ;AN000;number of ICB entires in vector | ||
| 276 | IN_ICBVECOFF DW WR_ICBVEC ;AN000;offset of ICB vector | ||
| 277 | IN_ICBVECSEG DW DATA ;AN000;segment of ICB vector | ||
| 278 | IN_CCBVECOFF DW 0 ;AN000;offset of color index table | ||
| 279 | IN_CCBVECSEG DW 0 ;AN000;segment of color index table | ||
| 280 | IN_CURNOR DW 0607H ;AN000;normal cursor size | ||
| 281 | IN_CURINS DW 0207H ;AN000;cursor size in insert mode | ||
| 282 | IN_TRANLEN DW 0 ;AN000;length of key translation table | ||
| 283 | IN_TRANOFF DW 0 ;AN000;offset of key translation table | ||
| 284 | IN_TRANSEG DW 0 ;AN000;segment of key translation table | ||
| 285 | IN_MONOOFF DW 0 ;AN000;offset of monocasing table | ||
| 286 | IN_MONOSEG DW 0 ;AN000;segment of monocasing table | ||
| 287 | IN_DBCSLEN DW 0 ;AN000;length double byte range table | ||
| 288 | IN_DBCSOFF DW 0 ;AN000;offset double byte range table | ||
| 289 | IN_DBCSSEG DW 0 ;AN000;segment double byte range table | ||
| 290 | IN_KEYSOFF DW KD_BACKSPACE ;AN000;offset of keystroke definitions | ||
| 291 | IN_KEYSSEG DW DATA ;AN000;segment of keystroke definitions | ||
| 292 | IN_CAPROW DW 0 ;AN000;row of caps lock flag | ||
| 293 | IN_CAPCOL DW 0 ;AN000;col of caps lock flag | ||
| 294 | IN_CAPLEN DW 0 ;AN000;length of caps lock flag text | ||
| 295 | IN_CAPOFF DW 0 ;AN000;offset of caps lock flag text | ||
| 296 | IN_CAPSEG DW 0 ;AN000;segment of caps lock flag text | ||
| 297 | IN_INSROW DW 0 ;AN000;row of insert flag | ||
| 298 | IN_INSCOL DW 0 ;AN000;col of insert flag | ||
| 299 | IN_INSLEN DW 0 ;AN000;length of insert flag text | ||
| 300 | IN_INSOFF DW 0 ;AN000;offset of insert flag text | ||
| 301 | IN_INSSEG DW 0 ;AN000;segment of insert flag text | ||
| 302 | IN_NUMROW DW 0 ;AN000;row of num lock flag | ||
| 303 | IN_NUMCOL DW 0 ;AN000;col of num lock flag | ||
| 304 | IN_NUMLEN DW 0 ;AN000;length of num lock flag text | ||
| 305 | IN_NUMOFF DW 0 ;AN000;offset of num lock flag text | ||
| 306 | IN_NUMSEG DW 0 ;AN000;segment of num lock flag text | ||
| 307 | IN_SCRROW DW 0 ;AN000;row of scroll lock flag | ||
| 308 | IN_SCRCOL DW 0 ;AN000;col of scroll lock flag | ||
| 309 | IN_SCRLEN DW 0 ;AN000;length of scroll lock flag text | ||
| 310 | IN_SCROFF DW 0 ;AN000;offset of scroll lock flag text | ||
| 311 | IN_SCRSEG DW 0 ;AN000;segment of scroll lock flag text | ||
| 312 | IN_THOUSEP DB 0,0 ;AN000;thousands separator | ||
| 313 | IN_THOUPOS DW 0 ;AN000;space between thousnd separators | ||
| 314 | IN_DECSEP DB 0,0 ;AN000;decimal separator | ||
| 315 | IN_DELIMITEN DB '[]' ;AN000;left & right bracket char - on | ||
| 316 | IN_DELIMITEX DB ' ' ;AN000;left & right bracket char - off | ||
| 317 | IN_DELIMITDIR DB '<>' ;AN000;direction delimitors (horz wind) | ||
| 318 | IN_BORDEREN DB '�Ŀ�����' ;AN000;8 border char (�Ŀ�����) entry | ||
| 319 | IN_BORDEREX DB '12345678' ;AN000;8 border char (�Ŀ�����) exit | ||
| 320 | IN_LVBOFF DW 0 ;AN000;log vid buf offset override | ||
| 321 | IN_LVBSEG DW 0 ;AN000;log vid buf segment override | ||
| 322 | IN_CURINSOFF DW 0 ;AN000;offset insert cursor bit map (W) | ||
| 323 | IN_CURINSSEG DW 0 ;AN000;segment insert cursor bit map (W) | ||
| 324 | IN_CURRPLOFF DW 0 ;AN000;offset replace cursor bit map (W) | ||
| 325 | IN_CURRPLSEG DW 0 ;AN000;segment replace cursor bit map (W) | ||
| 326 | IN_DELOFF DW 0 ;AN000;offset delimiter bit maps =W | ||
| 327 | IN_DELSEG DW 0 ;AN000;segment delimiter bit maps =W | ||
| 328 | IN_ERROR DW 0 ;AN000;error word | ||
| 329 | IN_RESERVED DB 450 DUP(0) ;AN000;reserved for internal use | ||
| 330 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 331 | ; | ||
| 332 | ; PCWWRAP parameter block | ||
| 333 | ; | ||
| 334 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 335 | WWP_OPT1 DW 0 ;AN000;option word | ||
| 336 | WWP_SRCTXTLEN DW 0 ;AN000;the length of actual text | ||
| 337 | WWP_SRCTXTOFF DW 0 ;AN000;the offset to actual text | ||
| 338 | WWP_SRCTXTSEG DW 0 ;AN000;the segment to actual text | ||
| 339 | WWP_SRCBUFLEN DW 0 ;AN000;lenght of the entire buffer | ||
| 340 | WWP_DESBUFLEN DW 0 ;AN000;the length of dest buffer | ||
| 341 | WWP_DESBUFOFF DW 0 ;AN000;the offset to dest buffer | ||
| 342 | WWP_DESBUFSEG DW 0 ;AN000;the segment to dest buffer | ||
| 343 | WWP_WIDTH DW 53 ;AN000;width of the # of char on a line | ||
| 344 | WWP_NUMLINES DW 0 ;AN000;Number of actual line process | ||
| 345 | WWP_FORMAT DB '@' ;AN000;Used to indicate the begin formt | ||
| 346 | WWP_NOFORMAT DB '@' ;AN000;Used to indicate the format off | ||
| 347 | WWP_SRCHYSMB DB '#' ;AN000;Symbol that is used as hyphen | ||
| 348 | WWP_HYSYMBOL DB '-' ;AN000;Actual hyphen symbol | ||
| 349 | WWP_SPACESYM DB '&' ;AN000;symbol for padding spaces at EOL | ||
| 350 | WWP_ERROR DW 0 ;AN000;Internal error conditions | ||
| 351 | WWP_RESERVED DB 5 DUP(0) ;AN000;reserved for internal use | ||
| 352 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 353 | ; | ||
| 354 | ; PCMBEEP parameter block | ||
| 355 | ; | ||
| 356 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 357 | MB_FREQUENCY DW SND_FREQ ;AN000;beep frequency | ||
| 358 | MB_DURATION DW SND_DURA ;AN000;beep duration | ||
| 359 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 360 | ; | ||
| 361 | ; Input field management internal variables: | ||
| 362 | ; | ||
| 363 | ; Miscellaneous internal variables | ||
| 364 | ; | ||
| 365 | WR_ICBID DW 0 ;AN000;general ICB ID number | ||
| 366 | WR_ICBVECOFF DW WR_ICBVEC ;AN000;ICB vector address | ||
| 367 | WR_ICBVECSEG DW DATA ;AN000;ICB vector address | ||
| 368 | ; | ||
| 369 | ; Return key string internal variables: | ||
| 370 | ; Dynamic return key string variables to add to complete return string | ||
| 371 | ; | ||
| 372 | WR_DRETLEN DW 0 ;AN000;dynamic return string length | ||
| 373 | WR_DRETOFF DW 0 ;AN000;dynamic return string offset | ||
| 374 | WR_DRETSEG DW 0 ;AN000;dynamic return string segment | ||
| 375 | ; | ||
| 376 | ; Complete return key string buffer variables | ||
| 377 | ; | ||
| 378 | WR_CRETLEN DW 0 ;AN000;current length of complete ret sg | ||
| 379 | WR_CRETOFF DW 0 ;AN000;current offset of complete ret sg | ||
| 380 | WR_CRETSEG DW 0 ;AN000;current segment of complete ret s | ||
| 381 | ; | ||
| 382 | ; Help management internal variables: | ||
| 383 | ; | ||
| 384 | ; Help options, status, filespec, and override variables | ||
| 385 | ; | ||
| 386 | WR_HLPOPT DW 0 ;AN000;help options | ||
| 387 | WR_HLPPAN DW 0 ;AN000;help child panels that are active | ||
| 388 | WR_HLPDIS DW 0 ;AN000;help status | ||
| 389 | WR_HLPROW DW 0 ;AN000;help row override | ||
| 390 | WR_HLPCOL DW 0 ;AN000;help column override | ||
| 391 | ; | ||
| 392 | ; Help text ID variables | ||
| 393 | ; | ||
| 394 | WR_HCBCONT DW 0 ;AN000;current contextual help ID | ||
| 395 | WR_HCBHELP DW HCB_HELP ;AN000;help-on-help ID | ||
| 396 | WR_HCBKEYS DW HCB_KEYS ;AN000;help on keys ID | ||
| 397 | ; | ||
| 398 | ; Help scroll ID variable | ||
| 399 | ; | ||
| 400 | WR_SCBCONT DW SCR_CONTEXT_HLP ;AN000;scroll contextual help ID | ||
| 401 | WR_SCBINDX DW SCR_CONTEXT_HLP ;AN000;scroll indexed help ID | ||
| 402 | ; | ||
| 403 | ; Help panel ID variables | ||
| 404 | ; | ||
| 405 | WR_PCBHELP DW CHILD_F1HELP ;AN000;F1=Help | ||
| 406 | WR_PCBSWIT DW 0 ;AN000;F2=Switch | ||
| 407 | WR_PCBINDX DW 0 ;AN000;F5=Index | ||
| 408 | WR_PCBKEYS DW CHILD_F9KEYS ;AN000;F9=Keys | ||
| 409 | WR_PCBHPAN DW PAN_HPAN ;AN000;contextual help panel | ||
| 410 | WR_PCBQUIT DW CHILD_QUIT ;AN000;Esc=Quit | ||
| 411 | WR_PCBENTR DW CHILD_ENTER ;AN000;Enter | ||
| 412 | WR_PCBERROR DW ERR_BORDER ;AN000;Error panel | ||
| 413 | ; | ||
| 414 | ; Help keystroke variables | ||
| 415 | ; | ||
| 416 | WR_KEYHELP DW KEY_HELP ;AN000;F1=Help | ||
| 417 | WR_KEYSWIT DW KEY_SWIT ;AN000;F2=Switch | ||
| 418 | WR_KEYINDX DW KEY_INDX ;AN000;F5=Index | ||
| 419 | WR_KEYKEYS DW KEY_KEYS ;AN000;F9=Keys | ||
| 420 | WR_KEYSELT DW KEY_SELT ;AN000;Enter | ||
| 421 | WR_KEYQUIT DW KEY_QUIT ;AN000;Esc=Quit | ||
| 422 | |||
| 423 | WR_RETHLPBUF DB ESCAPE ;AN000;help dynamic return keys | ||
| 424 | WR_RETHLPLEN EQU ($-WR_RETHLPBUF) ;AN000; | ||
| 425 | ;----------------------- | ||
| 426 | ; | ||
| 427 | ; Management internal variables: | ||
| 428 | ; | ||
| 429 | WR_PANBUF LABEL BYTE ;AN000; | ||
| 430 | WR_SCRBUF LABEL BYTE ;AN000; | ||
| 431 | WR_CLRBUF DB 'SELECT.DAT',0 ;AN000;filespec | ||
| 432 | WR_CLRLEN EQU ($-WR_CLRBUF) ;AN000; | ||
| 433 | WR_SCRLEN EQU ($-WR_SCRBUF) ;AN000; | ||
| 434 | WR_PANLEN EQU ($-WR_PANBUF) ;AN000; | ||
| 435 | ;----------------------- | ||
| 436 | WR_HLPBUF DB 'SELECT.HLP',0 ;AN000;filespec | ||
| 437 | WR_HLPLEN EQU ($-WR_HLPBUF) ;AN000; | ||
| 438 | ; | ||
| 439 | ; Panel Field Refresh Relationship Table | ||
| 440 | ; | ||
| 441 | ; Format = DW Panel control block number | ||
| 442 | ; DW Total number of fields in this record | ||
| 443 | ; DW Object type ID | ||
| 444 | ; DW Field ID | ||
| 445 | ; | ||
| 446 | ; DW Object type ID | ||
| 447 | ; DW Field ID | ||
| 448 | ; | ||
| 449 | ; Panel Field Refresh Table Location | ||
| 450 | ; | ||
| 451 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 452 | WR_REFNUM DW 1 ;AN000;number of PCB entries | ||
| 453 | WR_REFOFF DW WR_REFBUF ;AN000;offset of table | ||
| 454 | WR_REFSEG DW DATA ;AN000;segment of table | ||
| 455 | WR_REFCNT DW 0 ;AN000;refresh counter | ||
| 456 | |||
| 457 | WR_REFBUF DW 0 ;AN000; PCB number | ||
| 458 | WR_REFIELDCNT DW 0 ;AN000; #fields with this PCB | ||
| 459 | WR_REFID DW 0,0 ;AN000; Object ID 1, Field ID 1 | ||
| 460 | DW 0,0 ;AN000; Object ID 2, Field ID 2 | ||
| 461 | DW 0,0 ;AN000; Object ID 3, Field ID 3 | ||
| 462 | DW 0,0 ;AN000; Object ID 4, Field ID 4 | ||
| 463 | DW 0,0 ;AN000; Object ID 5, Field ID 5 | ||
| 464 | DW 0,0 ;AN000; Object ID 6, Field ID 6 | ||
| 465 | DW 0,0 ;AN000; Object ID 7, Field ID 7 | ||
| 466 | DW 0,0 ;AN000; Object ID 8, Field ID 8 | ||
| 467 | DW 0,0 ;AN000; Object ID 9, Field ID 9 | ||
| 468 | DW 0,0 ;AN000; Object ID10, Field ID10 | ||
| 469 | WR_MAXREFID EQU ($-WR_REFID)/2;AN000; | ||
| 470 | |||
| 471 | WR_SCBID DW 0 ;AN000;current PCSLCTP ID number | ||
| 472 | WR_ERROR DW 0 ;AN000;0= no error, 1= error condition | ||
| 473 | ; | ||
| 474 | ; Memory allocation variables - needs to support multiple segment table | ||
| 475 | ; | ||
| 476 | WR_DATA2SEG DW 0 ;AN000;segment of allocated buffer | ||
| 477 | WR_DATA2OFF DW 0 ;AN000;offset of allocated buffer | ||
| 478 | WR_DATA2LEN DW 0 ;AN000;length of allocated buffer | ||
| 479 | ; | ||
| 480 | WR_LVBSEG DW 0 ;AN000;segment of LVB (logical video buffer) | ||
| 481 | WR_LVBOFF DW 0 ;AN000;offset of LVB | ||
| 482 | WR_LVBLEN DW 0 ;AN000;length of LVB | ||
| 483 | ; | ||
| 484 | ; Maximum limits for data | ||
| 485 | ; | ||
| 486 | WR_LVBMEM DW MAX_MEMLVB ;AN000;size of LVB in 16 byte paraghp | ||
| 487 | WR_MAXMEMPAR DW MAX_MEMPAR ;AN000;size of memory in 16 byte paraghp | ||
| 488 | WR_MAXRETKSZ DW MAX_RETKSZ ;AN000;max size of return key buffer | ||
| 489 | WR_MAXHELPSZ DW MAX_HELPSZ ;AN000;max size of help text buffer | ||
| 490 | WR_MAXPANNUM DW MAX_PANNUM ;AN000;max # of panels possible in memry | ||
| 491 | WR_MAXSCRNUM DW MAX_SCRNUM ;AN000;max # of scroll possible in memry | ||
| 492 | WR_MAXCHDQUE DW MAX_CHDQUE ;AN000;max # of child queues to save | ||
| 493 | WR_MAXPANQUE DW MAX_PANQUE ;AN000;max # of panel queues to save | ||
| 494 | WR_MAXNUMCHD DW MAX_NUMCHD ;AN000;max # of parent panels queued | ||
| 495 | WR_MAXNUMPAN DW MAX_NUMPAN ;AN000;max # of child panels queued | ||
| 496 | WR_MAXCLRECD DW MAX_CLRECD ;AN000;num # bytes per color record | ||
| 497 | |||
| 498 | LVB_INITED DB 0 ;AN000;flag for LVB allocated | ||
| 499 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 500 | DATA ENDS ;AN000; | ||
| 501 | PAGE ;AN000; | ||
| 502 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/DOS.EQU b/v4.0/src/SELECT/DOS.EQU new file mode 100644 index 0000000..c1ec499 --- /dev/null +++ b/v4.0/src/SELECT/DOS.EQU | |||
| @@ -0,0 +1,359 @@ | |||
| 1 | ; | ||
| 2 | ;****************************************************************************** | ||
| 3 | ; DOS Interrupts | ||
| 4 | ; | ||
| 5 | ; REVISION HISTORY: | ||
| 6 | ; | ||
| 7 | ; PTM P00 - WAIT & LOCK to WAITP & LOCKF for MASM errors. DRM 4/23/87 | ||
| 8 | ; | ||
| 9 | ; A005 DCR0201 10/9/87 Incorperate new format for EXTENDED | ||
| 10 | ; ATTRIBUTES. | ||
| 11 | ; | ||
| 12 | ;****************************************************************************** | ||
| 13 | ; | ||
| 14 | |||
| 15 | Terminate equ 20h ;AN000; | ||
| 16 | DOS_Function equ 21h ;AN000; | ||
| 17 | Terminate_Address equ 22h ;AN000; | ||
| 18 | CNTRL_BREAK equ 23h ;AN000; | ||
| 19 | Critical_Error equ 24h ;AN000; | ||
| 20 | Disk_Read equ 25h ;AN000; | ||
| 21 | Disk_Write equ 26h ;AN000; | ||
| 22 | Terminate_Stay_Resident equ 27h ;AN000; | ||
| 23 | Printer equ 2Fh ;AN000; | ||
| 24 | CHK_APPEND EQU 0B700H ;AN000; CHECK IF APPEND ACTIVE INT 2FH | ||
| 25 | GET_APPEND EQU 0B706H ;AN000; Read /X status with INT 2FH | ||
| 26 | ; BX = 0 if /X is not active | ||
| 27 | ; BX = 1 if /X is active | ||
| 28 | SET_APPEND EQU 0B707H ;AN000; Set /X status with INT 2FH | ||
| 29 | EXT_OPEN EQU 6C00H ;AN000; Extended Open function code | ||
| 30 | CREATE_FLAG EQU 0112H ;AN005;FUNCTION CONTROL | ||
| 31 | CREATE_ATTR EQU 0 ;AN000;SEARCH/CREATE ATTRIBUTE | ||
| 32 | CREATE_MODE EQU 0011H ;AN000;CREATE MODE | ||
| 33 | OPN_FLAG EQU 0101H ;AN000;OPEN FUNCTION CONTROL | ||
| 34 | OPN_ATTR EQU 0 ;AN000;OPEN ATTRIBUTE | ||
| 35 | OPN_MODE EQU 0002H ;AN000;OPEN MODE | ||
| 36 | NUL_LIST EQU -1 ;AN005;JUST TO OPEN | ||
| 37 | |||
| 38 | GET_ATTRIB EQU 05702H ;AN000; Get ext. attribute by handle | ||
| 39 | QUY_ATTRIB EQU 05703H ;AN000; QUERY EXT. ATTRIBUTES BY HANDLE | ||
| 40 | INT_ORDINAL EQU 0 ;AN000;ATTRIBUTE LIST ORDINAL = 0 | ||
| 41 | ALL_ATTR EQU -1 ;AN005;TO SELECT ALL THE ATTRIBUTES | ||
| 42 | ; | ||
| 43 | ;****************************************************************************** | ||
| 44 | ; DOS Function Calls | ||
| 45 | ;****************************************************************************** | ||
| 46 | ; | ||
| 47 | |||
| 48 | Program_Terminate equ 00h ;AN000; | ||
| 49 | Keyboard_Input equ 01h ;AN000; | ||
| 50 | Display_Output equ 02h ;AN000; | ||
| 51 | Auxiliary_Input equ 03h ;AN000; | ||
| 52 | Auxiliary_Output equ 04h ;AN000; | ||
| 53 | Printer_Output equ 05h ;AN000; | ||
| 54 | Direct_Console_IO equ 06h ;AN000; | ||
| 55 | Direct_Input_No_Echo equ 07h ;AN000; | ||
| 56 | Console_Input_No_Echo equ 08h ;AN000; | ||
| 57 | Print_String equ 09h ;AN000; | ||
| 58 | Buffered_Keyboard_Input equ 0Ah ;AN000; | ||
| 59 | Check_Std_Input_Status equ 0Bh ;AN000; | ||
| 60 | Clear_Keyboard_Buffer equ 0Ch ;AN000; | ||
| 61 | Disk_Reset equ 0Dh ;AN000; | ||
| 62 | Select_Disk equ 0Eh ;AN000; | ||
| 63 | FCB_Open equ 0Fh ;AN000; | ||
| 64 | FCB_Close equ 10h ;AN000; | ||
| 65 | Search_First equ 11h ;AN000; | ||
| 66 | Search_Next equ 12h ;AN000; | ||
| 67 | FCB_Delete equ 13h ;AN000; | ||
| 68 | Sequential_Read equ 14h ;AN000; | ||
| 69 | Sequential_Write equ 15h ;AN000; | ||
| 70 | FCB_Create equ 16h ;AN000; | ||
| 71 | FCB_Rename equ 17h ;AN000; | ||
| 72 | Current_Disk equ 19h ;AN000; | ||
| 73 | Set_DTA equ 1Ah ;AN000; | ||
| 74 | Allocation_Info equ 1Bh ;AN000; | ||
| 75 | Allocation_Info_Device equ 1Ch ;AN000; | ||
| 76 | Random_Read equ 21h ;AN000; | ||
| 77 | Random_Write equ 22h ;AN000; | ||
| 78 | File_Size equ 23h ;AN000; | ||
| 79 | Set_Relative_Record equ 24h ;AN000; | ||
| 80 | Set_Interrupt_Vector equ 25h ;AN000; | ||
| 81 | Create_New_PSP equ 26h ;AN000; | ||
| 82 | Random_Block_Read equ 27h ;AN000; | ||
| 83 | Random_Block_Write equ 28h ;AN000; | ||
| 84 | Parse_Filename equ 29h ;AN000; | ||
| 85 | Get_Date equ 2Ah ;AN000; | ||
| 86 | Set_Date equ 2Bh ;AN000; | ||
| 87 | Get_Time equ 2Ch ;AN000; | ||
| 88 | Set_Time equ 2Dh ;AN000; | ||
| 89 | Verify equ 2Eh ;AN000; | ||
| 90 | Verify_Off equ 02h ;AN000; | ||
| 91 | Verify_On equ 01h ;AN000; | ||
| 92 | Set_Verify_On equ 2E01h ;AN000; | ||
| 93 | Get_DTA equ 2Fh ;AN000; | ||
| 94 | DOS_Version equ 30h ;AN000; | ||
| 95 | Terminate_Resident equ 31h ;AN000; | ||
| 96 | Get_Interrupt_Vector equ 35h ;AN000; | ||
| 97 | Get_Disk_Free_Space equ 36h ;AN000; | ||
| 98 | Country_Code equ 38h ;AN000; | ||
| 99 | Mkdir equ 39h ;AN000; | ||
| 100 | Rmdir equ 3Ah ;AN000; | ||
| 101 | Chdir equ 3Bh ;AN000; | ||
| 102 | Create equ 3Ch ;AN000; | ||
| 103 | Open equ 3Dh ;AN000; | ||
| 104 | Read_Only equ 00h ;AN000; | ||
| 105 | Write_Only equ 01h ;AN000; | ||
| 106 | Read_Write equ 02h ;AN000; | ||
| 107 | Read_Only_Exclusive equ 10h ;AN000; | ||
| 108 | Write_Only_Exclusive equ 11h ;AN000; | ||
| 109 | Read_Write_Exclusive equ 12h ;AN000; | ||
| 110 | Read_Only_Deny_Write equ 20h ;AN000; | ||
| 111 | Write_Only_Deny_Write equ 21h ;AN000; | ||
| 112 | Read_Write_Deny_Write equ 22h ;AN000; | ||
| 113 | Read_Only_Deny_Read equ 30h ;AN000; | ||
| 114 | Write_Only_Deny_Read equ 31h ;AN000; | ||
| 115 | Read_Write_Deny_Read equ 32h ;AN000; | ||
| 116 | Read_Only_Deny_None equ 40h ;AN000; | ||
| 117 | Write_Only_Deny_None equ 41h ;AN000; | ||
| 118 | Read_Write_Deny_None equ 42h ;AN000; | ||
| 119 | Close equ 3Eh ;AN000; | ||
| 120 | Read equ 3Fh ;AN000; | ||
| 121 | Write equ 40h ;AN000; | ||
| 122 | Delete equ 41h ;AN000; | ||
| 123 | Lseek equ 42h ;AN000; | ||
| 124 | Lseek_Offset equ 00h ;AN000; | ||
| 125 | Lseek_Plus_Offset equ 01h ;AN000; | ||
| 126 | Lseek_End_Offset equ 02h ;AN000; | ||
| 127 | Chmod equ 43h ;AN000; | ||
| 128 | IOCTL equ 44h ;AN000; | ||
| 129 | Get_Device_Info equ 00h ;AN000; | ||
| 130 | Set_Device_Info equ 01h ;AN000; | ||
| 131 | Read_Channel equ 02h ;AN000; | ||
| 132 | Write_Channel equ 03h ;AN000; | ||
| 133 | Read_Drive_Channel equ 04h ;AN000; | ||
| 134 | Write_Drive_Channel equ 05h ;AN000; | ||
| 135 | Get_Input_Status equ 06h ;AN000; | ||
| 136 | Get_Output_Status equ 07h ;AN000; | ||
| 137 | Is_Removable equ 08h ;AN000; | ||
| 138 | Is_Block_Redirected equ 09h ;AN000; | ||
| 139 | Is_Handle_Redirected equ 0Ah ;AN000; | ||
| 140 | Set_Retry_Count equ 0Bh ;AN000; | ||
| 141 | Dup_Handle equ 45h ;AN000; | ||
| 142 | Force_Dup_Handle equ 46h ;AN000; | ||
| 143 | Get_Current_Directory equ 47h ;AN000; | ||
| 144 | Free_Memory equ 49h ;AN000; | ||
| 145 | Setblock equ 4Ah ;AN000; | ||
| 146 | Exec equ 4Bh ;AN000; | ||
| 147 | Exit equ 4Ch ;AN000; | ||
| 148 | Waitp equ 4Dh ;AN000; | ||
| 149 | Find_First equ 4Eh ;AN000; | ||
| 150 | norm_attr equ 00h ;AN000; | ||
| 151 | incl_read_attr equ 01h ;AN000; | ||
| 152 | incl_h_attr equ 02h ;AN000; | ||
| 153 | incl_h_s_attr equ 06h ;AN000; | ||
| 154 | incl_h_s_dir_attr equ 16h ;AN000; | ||
| 155 | Find_Next equ 4Fh ;AN000; | ||
| 156 | Get_Verify_Setting equ 54h ;AN000; | ||
| 157 | Rename equ 56h ;AN000; | ||
| 158 | File_Date_Time equ 57h ;AN000; | ||
| 159 | Get_File_Time equ 00h ;AN000; | ||
| 160 | Set_File_Time equ 01h ;AN000; | ||
| 161 | Get_Extended_Error equ 59h ;AN000; | ||
| 162 | Create_Temp equ 5Ah ;AN000; | ||
| 163 | Create_New equ 5Bh ;AN000; | ||
| 164 | File_Access equ 5Ch ;AN000; | ||
| 165 | Lockf equ 00h ;AN000; | ||
| 166 | Unlock equ 01h ;AN000; | ||
| 167 | Get_PSP equ 62h ;AN000; | ||
| 168 | Upper_Case_String equ 6521h ;AN000;GET EXTENDED COUNTRY INFORMATION | ||
| 169 | ; | ||
| 170 | ;****************************************************************************** | ||
| 171 | ; DOS File Handles | ||
| 172 | ;****************************************************************************** | ||
| 173 | ; | ||
| 174 | |||
| 175 | STDIN equ 00h ;AN000; | ||
| 176 | STDOUT equ 01h ;AN000; | ||
| 177 | STDERR equ 02h ;AN000; | ||
| 178 | STDAUX equ 03h ;AN000; | ||
| 179 | STDPRN equ 04h ;AN000; | ||
| 180 | |||
| 181 | |||
| 182 | ; | ||
| 183 | ;****************************************************************************** | ||
| 184 | ; File's attributes in a Directory entry | ||
| 185 | ;****************************************************************************** | ||
| 186 | ; | ||
| 187 | read_only_file equ 01h ;AN000; | ||
| 188 | hidden_file equ 02h ;AN000; | ||
| 189 | system_file equ 04h ;AN000; | ||
| 190 | has_volume_label equ 08h ;AN000; | ||
| 191 | is_subdirectory equ 10h ;AN000; | ||
| 192 | archive_on equ 20h ;AN000; | ||
| 193 | |||
| 194 | ; | ||
| 195 | ;****************************************************************************** | ||
| 196 | ; Return Codes | ||
| 197 | ;****************************************************************************** | ||
| 198 | ; | ||
| 199 | |||
| 200 | Errorlevel_0 equ 0 ;AN000; | ||
| 201 | Errorlevel_1 equ 1 ;AN000; | ||
| 202 | Errorlevel_2 equ 2 ;AN000; | ||
| 203 | Errorlevel_3 equ 3 ;AN000; | ||
| 204 | Errorlevel_4 equ 4 ;AN000; | ||
| 205 | Errorlevel_5 equ 5 ;AN000; | ||
| 206 | Errorlevel_6 equ 6 ;AN000; | ||
| 207 | Errorlevel_7 equ 7 ;AN000; | ||
| 208 | Errorlevel_8 equ 8 ;AN000; | ||
| 209 | |||
| 210 | ; | ||
| 211 | ;****************************************************************************** | ||
| 212 | ; Extended Error Codes | ||
| 213 | ;****************************************************************************** | ||
| 214 | ; | ||
| 215 | |||
| 216 | Error_No_Error equ 00 ;AN000; | ||
| 217 | Error_Invalid_Function equ 01 ;AN000; | ||
| 218 | Error_File_Not_Found equ 02 ;AN000; | ||
| 219 | Error_Path_Not_Found equ 03 ;AN000; | ||
| 220 | Error_No_Handles_Left equ 04 ;AN000; | ||
| 221 | Error_Access_Denied equ 05 ;AN000; | ||
| 222 | Error_Invalid_Handle equ 06 ;AN000; | ||
| 223 | Error_Memory_Blocks_Bad equ 07 ;AN000; | ||
| 224 | Error_Insufficient_Memory equ 08 ;AN000; | ||
| 225 | Error_Inv_Address equ 09 ;AN000; | ||
| 226 | Error_Inv_Environment equ 10 ;AN000; | ||
| 227 | Error_Inv_Format equ 11 ;AN000; | ||
| 228 | Error_Inv_Access_Code equ 12 ;AN000; | ||
| 229 | Error_Inv_Data equ 13 ;AN000; | ||
| 230 | Error_Inv_Drive equ 15 ;AN000; | ||
| 231 | Error_Rmdir_Current_Dir equ 16 ;AN000; | ||
| 232 | Error_Not_Same_Device equ 17 ;AN000; | ||
| 233 | Error_No_More_Files equ 18 ;AN000; | ||
| 234 | Error_Write_Protect equ 19 ;AN000; | ||
| 235 | Error_Unknown_Unit equ 20 ;AN000; | ||
| 236 | Error_Drive_Not_Ready equ 21 ;AN000; | ||
| 237 | Error_Unknown_Command equ 22 ;AN000; | ||
| 238 | Error_Data_Error equ 23 ;AN000; | ||
| 239 | Error_Bad_Request_Len equ 24 ;AN000; | ||
| 240 | Error_Seek_Error equ 25 ;AN000; | ||
| 241 | Error_Unknown_Media_Type equ 26 ;AN000; | ||
| 242 | Error_Sector_Not_Found equ 27 ;AN000; | ||
| 243 | Error_Out_Of_Paper equ 28 ;AN000; | ||
| 244 | Error_Write_Fault equ 29 ;AN000; | ||
| 245 | Error_Read_Fault equ 30 ;AN000; | ||
| 246 | Error_Gerneral_Failure equ 31 ;AN000; | ||
| 247 | Error_Sharing_Violation equ 32 ;AN000; | ||
| 248 | Error_Lock_Violation equ 33 ;AN000; | ||
| 249 | Error_Inv_Disk_Change equ 34 ;AN000; | ||
| 250 | Error_FCB_Unavailable equ 35 ;AN000; | ||
| 251 | Error_File_Exists equ 80 ;AN000; | ||
| 252 | Error_Cannot_Make equ 82 ;AN000; | ||
| 253 | Error_Fail_On_Int24 equ 83 ;AN000; | ||
| 254 | |||
| 255 | ; | ||
| 256 | ;****************************************************************************** | ||
| 257 | ; Extended Error Classes | ||
| 258 | ;****************************************************************************** | ||
| 259 | ; | ||
| 260 | |||
| 261 | Out_Of_Resource equ 1 ;AN000; | ||
| 262 | Temporary equ 2 ;AN000; | ||
| 263 | Authorization equ 3 ;AN000; | ||
| 264 | Internal equ 4 ;AN000; | ||
| 265 | Hardware_Failure equ 5 ;AN000; | ||
| 266 | System_Failure equ 6 ;AN000; | ||
| 267 | Program_Error equ 7 ;AN000; | ||
| 268 | Not_Found equ 8 ;AN000; | ||
| 269 | Bad_Format equ 9 ;AN000; | ||
| 270 | Locked equ 10 ;AN000; | ||
| 271 | Media equ 11 ;AN000; | ||
| 272 | Already_Exists equ 12 ;AN000; | ||
| 273 | Unknown equ 13 ;AN000; | ||
| 274 | |||
| 275 | ; | ||
| 276 | ;***************************************************************************** | ||
| 277 | ; Extended Error Actions | ||
| 278 | ;***************************************************************************** | ||
| 279 | ; | ||
| 280 | |||
| 281 | Retry equ 1 ;AN000; | ||
| 282 | Delay_Retry equ 2 ;AN000; | ||
| 283 | User equ 3 ;AN000; | ||
| 284 | Abort equ 4 ;AN000; | ||
| 285 | Immediate_Exit equ 5 ;AN000; | ||
| 286 | Ignore equ 6 ;AN000; | ||
| 287 | Retry_After_User equ 7 ;AN000; | ||
| 288 | |||
| 289 | ; | ||
| 290 | ;****************************************************************************** | ||
| 291 | ; Extended Error Locus | ||
| 292 | ;****************************************************************************** | ||
| 293 | ; | ||
| 294 | |||
| 295 | Non_Specific equ 1 ;AN000; | ||
| 296 | Block_Device equ 2 ;AN000; | ||
| 297 | Serial_Device equ 4 ;AN000; | ||
| 298 | Memory equ 5 ;AN000; | ||
| 299 | |||
| 300 | ; | ||
| 301 | ;****************************************************************************** | ||
| 302 | ; Internal Program Initialization Errors | ||
| 303 | ;****************************************************************************** | ||
| 304 | ; | ||
| 305 | |||
| 306 | Init_Err_DOS_Ver_1 equ 1 ;AN000;Bad DOS version prior to 2.0 | ||
| 307 | Init_Err_DOS_Ver_2 equ 2 ;AN000;Bad DOS version 2.0 or above | ||
| 308 | Init_Err_Inv_Drive equ 3 ;AN000;Invalid drive specification | ||
| 309 | Init_Err_Inv_Parm equ 4 ;AN000;Invalid parameter | ||
| 310 | Init_Err_Inv_Num_Parm equ 5 ;AN000;Invalid number of parameters | ||
| 311 | Init_Err_Inv_Path equ 6 ;AN000;Invalid path | ||
| 312 | Init_Err_Insuff_Mem equ 7 ;AN000;Insufficient memory | ||
| 313 | Init_Err_Inv_Date equ 8 ;AN000;Invalid date | ||
| 314 | Init_Err_Inv_Time equ 9 ;AN000;Invalid time | ||
| 315 | Init_Err_Inv_Device equ 10 ;AN000;Invalid device name | ||
| 316 | Init_Err_Ill_Device equ 11 ;AN000;Illegal device name | ||
| 317 | Init_Err_Inv_Filename equ 12 ;AN000;Invalid filename | ||
| 318 | |||
| 319 | ; | ||
| 320 | ;****************************************************************************** | ||
| 321 | ; FCB Structure | ||
| 322 | ;****************************************************************************** | ||
| 323 | ; | ||
| 324 | |||
| 325 | FCB STRUC ;AN000; | ||
| 326 | Drive_Number db 0 ;AN000; | ||
| 327 | Filename_FCB db 8 dup(0) ;AN000; | ||
| 328 | Extension db 3 dup(0) ;AN000; | ||
| 329 | Current_Block dw 0 ;AN000; | ||
| 330 | Record_Size dw 0 ;AN000; | ||
| 331 | File_Size_Low_FCB dw 0 ;AN000; | ||
| 332 | File_Size_High_FCB dw 0 ;AN000; | ||
| 333 | File_Date_Time_FCB dw 0 ;AN000; | ||
| 334 | Reserved_FCB db 10 dup(0) ;AN000; | ||
| 335 | Current_Record db 0 ;AN000; | ||
| 336 | Relative_Record_Low dw 0 ;AN000; | ||
| 337 | Relative_Record_High dw 0 ;AN000; | ||
| 338 | FCB ENDS ;AN000; | ||
| 339 | |||
| 340 | |||
| 341 | ; | ||
| 342 | ;****************************************************************************** | ||
| 343 | ; Find First/Next DTA area | ||
| 344 | ;****************************************************************************** | ||
| 345 | ; | ||
| 346 | |||
| 347 | Find_DTA STRUC ;AN000; | ||
| 348 | DTA_Reserved db 21 dup(0) ;AN000; | ||
| 349 | DTA_Attribute db 0 ;AN000; | ||
| 350 | DTA_File_Time dw 0 ;AN000; | ||
| 351 | DTA_File_Date dw 0 ;AN000; | ||
| 352 | DTA_File_Size_Low dw 0 ;AN000; | ||
| 353 | DTA_File_Size_High dw 0 ;AN000; | ||
| 354 | DTA_Filename db 13 dup(0) ;AN000; | ||
| 355 | Find_DTA ENDS ;AN000; | ||
| 356 | |||
| 357 | |||
| 358 | |||
| 359 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/DOSFILES.INC b/v4.0/src/SELECT/DOSFILES.INC new file mode 100644 index 0000000..62ced99 --- /dev/null +++ b/v4.0/src/SELECT/DOSFILES.INC | |||
| @@ -0,0 +1,20 @@ | |||
| 1 | ALLOCATE_START DW 0 ;AN000; | ||
| 2 | ; | ||
| 3 | DEST DB 0 ;AN000; | ||
| 4 | FILE_NUM DW 0 ;AN000; | ||
| 5 | NUMBER_OF_FILES DW 0 ;AN000; | ||
| 6 | TABLE_OFFSET DW 0 ;AN000; | ||
| 7 | PATH_OFFSET DW 0 ;AN000; | ||
| 8 | NOT_FOUND_FLAG DB 0 ;AN000; | ||
| 9 | SP_SAVE DW 0 ;AN000; | ||
| 10 | ; | ||
| 11 | EVERYTHING DB 'B:*.*',0 ;AN000; | ||
| 12 | ; | ||
| 13 | DOS_FILE_PTR DW 0 ;AN000; | ||
| 14 | BUFFER_START DW 0 ;AN000; | ||
| 15 | ; | ||
| 16 | B_TARGET DB 'B:\',0 ;AN000; | ||
| 17 | LENGTH_B_TARGET EQU $-B_TARGET ;AN000; | ||
| 18 | ; | ||
| 19 | A_TARGET DB 'A:\',0 ;AN111;JW | ||
| 20 | LENGTH_A_TARGET EQU $-A_TARGET ;AN111;JW | ||
diff --git a/v4.0/src/SELECT/EXT.INC b/v4.0/src/SELECT/EXT.INC new file mode 100644 index 0000000..1b37c34 --- /dev/null +++ b/v4.0/src/SELECT/EXT.INC | |||
| @@ -0,0 +1,577 @@ | |||
| 1 | ; Change History: | ||
| 2 | ; | ||
| 3 | ; ;AN003; for DCR225 | ||
| 4 | ; ;AN004; for DCR65 (360KB support) | ||
| 5 | ; | ||
| 6 | ; | ||
| 7 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 8 | EXTRN SUPPORT_STATUS:WORD ;AN000; | ||
| 9 | EXTRN I_USER_INDEX:WORD ;AN000; | ||
| 10 | EXTRN N_USER_NUMERIC:WORD ;AN000; | ||
| 11 | EXTRN MIN_INPUT_VAL:WORD ;AN000; | ||
| 12 | EXTRN MAX_INPUT_VAL:WORD ;AN000; | ||
| 13 | EXTRN S_USER_STRING:WORD ;AN000; | ||
| 14 | EXTRN P_USER_STRING:BYTE ;AN000; | ||
| 15 | EXTRN M_USER_STRING:ABS ;AN000; | ||
| 16 | EXTRN N_VALID_KEYS:WORD ;AN000; | ||
| 17 | EXTRN N_USER_FUNC:WORD ;AN000; | ||
| 18 | EXTRN E_ENTER:ABS ;AN000; | ||
| 19 | EXTRN E_ESCAPE:ABS ;AN000; | ||
| 20 | EXTRN E_TAB:ABS ;AN000; | ||
| 21 | EXTRN E_F3:ABS ;AN000; | ||
| 22 | EXTRN E_SPACE:ABS ;AN000; | ||
| 23 | EXTRN ERROR_KEYS:BYTE ;AN000; | ||
| 24 | EXTRN ERROR_KEYS_LEN:ABS ;AN000; | ||
| 25 | EXTRN E_QUIT:ABS ;AN000; | ||
| 26 | EXTRN E_RETURN:ABS ;AN000; | ||
| 27 | EXTRN FK_ENT_F3:BYTE ;AN000;DT | ||
| 28 | EXTRN FK_ENT_F3_LEN:ABS ;AN000;DT | ||
| 29 | EXTRN FK_ENT_ESC:BYTE ;AN000; | ||
| 30 | EXTRN FK_ENT_ESC_LEN:ABS ;AN000; | ||
| 31 | EXTRN FK_ENT_ESC_F3:BYTE ;AN003;GHG | ||
| 32 | EXTRN FK_ENT_ESC_F3_LEN:ABS ;AN003;GHG | ||
| 33 | EXTRN FK_ENT:BYTE ;AN000; | ||
| 34 | EXTRN FK_ENT_LEN:ABS ;AN000; | ||
| 35 | EXTRN FK_TEXT:BYTE ;AN000; | ||
| 36 | EXTRN FK_TEXT_LEN:ABS ;AN000; | ||
| 37 | EXTRN FK_SCROLL:BYTE ;AN000; | ||
| 38 | EXTRN FK_SCROLL_LEN:ABS ;AN000; | ||
| 39 | EXTRN FK_TAB:BYTE ;AN000; | ||
| 40 | EXTRN FK_TAB_LEN:ABS ;AN000; | ||
| 41 | EXTRN FK_REVIEW:BYTE ;AN000; | ||
| 42 | EXTRN FK_REVIEW_LEN:ABS ;AN000; | ||
| 43 | EXTRN FK_DATE:BYTE ;AN000; | ||
| 44 | EXTRN FK_DATE_LEN:ABS ;AN000; | ||
| 45 | EXTRN FK_FORMAT:BYTE ;AN000; | ||
| 46 | EXTRN FK_FORMAT_LEN:ABS ;AN000; | ||
| 47 | EXTRN FK_REBOOT:BYTE ;AN000; | ||
| 48 | EXTRN FK_REBOOT_LEN:ABS ;AN000; | ||
| 49 | EXTRN E_YES:ABS ;AN000; | ||
| 50 | EXTRN E_NO:ABS ;AN000; | ||
| 51 | EXTRN E_NA:ABS ;AN000; | ||
| 52 | EXTRN N_SELECT_MODE:WORD ;AN000; | ||
| 53 | EXTRN E_SELECT_MENU:ABS ;AN000; | ||
| 54 | EXTRN E_SELECT_FDISK:ABS ;AN000; | ||
| 55 | EXTRN E_SELECT_INV:ABS ;AN000; | ||
| 56 | EXTRN S_SELECT_TMP:WORD ;AN000; | ||
| 57 | EXTRN N_FORMAT_MODE:WORD ;AN000; | ||
| 58 | EXTRN E_FORMAT_SELECT:ABS ;AN000; | ||
| 59 | EXTRN E_FORMAT_NEW:ABS ;AN000; | ||
| 60 | EXTRN E_FORMAT_USED:ABS ;AN000; | ||
| 61 | EXTRN S_SPACE:WORD ;AN000; | ||
| 62 | EXTRN S_OFF:WORD ;AN000; | ||
| 63 | EXTRN S_ON:WORD ;AN000; | ||
| 64 | EXTRN I_WORKSPACE:WORD ;AN000; | ||
| 65 | EXTRN N_WORK_PREV:WORD ;AN000; | ||
| 66 | EXTRN E_WORKSPACE_BAL:ABS ;AN000; | ||
| 67 | EXTRN E_WORKSPACE_MIN:ABS ;AN000; | ||
| 68 | EXTRN E_WORKSPACE_MAX:ABS ;AN000; | ||
| 69 | EXTRN S_ANSI:WORD ;AN000; | ||
| 70 | EXTRN M_ANSI:ABS ;AN000; | ||
| 71 | EXTRN D_ANSI_1:WORD ;AN000; | ||
| 72 | EXTRN F_ANSI:WORD ;AN000; | ||
| 73 | EXTRN E_ANSI_NO:ABS ;AN000; | ||
| 74 | EXTRN E_ANSI_YES:ABS ;AN000; | ||
| 75 | EXTRN E_ANSI_B:ABS ;AN000; | ||
| 76 | EXTRN E_ANSI_C:ABS ;AN000; | ||
| 77 | EXTRN S_APPEND:WORD ;AN000; | ||
| 78 | EXTRN M_APPEND:ABS ;AN000; | ||
| 79 | EXTRN S_APPEND_P:WORD ;AN000;JW | ||
| 80 | EXTRN M_APPEND_P:ABS ;AN000;JW | ||
| 81 | EXTRN F_APPEND:WORD ;AN000; | ||
| 82 | EXTRN E_APPEND_NO:ABS ;AN000; | ||
| 83 | EXTRN E_APPEND_YES:ABS ;AN000; | ||
| 84 | EXTRN S_BREAK:WORD ;AN000; | ||
| 85 | EXTRN M_BREAK:ABS ;AN000; | ||
| 86 | EXTRN ST_BREAK:WORD ;AN000; | ||
| 87 | EXTRN MT_BREAK:ABS ;AN000; | ||
| 88 | EXTRN S_BUFFERS:WORD ;AN000; | ||
| 89 | EXTRN M_BUFFERS:ABS ;AN000; | ||
| 90 | EXTRN D_BUFFERS_1:WORD ;AN000; | ||
| 91 | EXTRN D_BUFFERS_2:WORD ;AN000; | ||
| 92 | EXTRN ST_BUFFERS:WORD ;AN000; | ||
| 93 | EXTRN MT_BUFFERS:ABS ;AN000; | ||
| 94 | EXTRN S_CPSW:WORD ;AN000; | ||
| 95 | EXTRN M_CPSW:ABS ;AN000; | ||
| 96 | EXTRN F_CPSW:WORD ;AN000; | ||
| 97 | EXTRN E_CPSW_NO:ABS ;AN000; | ||
| 98 | EXTRN E_CPSW_YES:ABS ;AN000; | ||
| 99 | EXTRN E_CPSW_NA:ABS ;AN000; | ||
| 100 | EXTRN E_CPSW_B:ABS ;AN000; | ||
| 101 | EXTRN E_CPSW_C:ABS ;AN000; | ||
| 102 | EXTRN ST_CPSW:WORD ;AN000; | ||
| 103 | EXTRN MT_CPSW:ABS ;AN000; | ||
| 104 | EXTRN N_CPSW:WORD ;AN000; | ||
| 105 | EXTRN E_CPSW_NOT_VAL:ABS ;AN000; | ||
| 106 | EXTRN E_CPSW_NOT_REC:ABS ;AN000; | ||
| 107 | EXTRN E_CPSW_VALID:ABS ;AN000; | ||
| 108 | EXTRN S_FASTOPEN:WORD ;AN000; | ||
| 109 | EXTRN M_FASTOPEN:ABS ;AN000; | ||
| 110 | EXTRN D_FASTOPEN_1:WORD ;AN000; | ||
| 111 | EXTRN D_FASTOPEN_2:WORD ;AN000; | ||
| 112 | EXTRN F_FASTOPEN:WORD ;AN000; | ||
| 113 | EXTRN E_FASTOPEN_NO:ABS ;AN000; | ||
| 114 | EXTRN E_FASTOPEN_YES:ABS ;AN000; | ||
| 115 | EXTRN E_FASTOPEN_C:ABS ;AN000; | ||
| 116 | EXTRN S_FCBS:WORD ;AN000; | ||
| 117 | EXTRN M_FCBS:ABS ;AN000; | ||
| 118 | EXTRN D_FCBS_1:WORD ;AN000; | ||
| 119 | EXTRN ST_FCBS:WORD ;AN000; | ||
| 120 | EXTRN MT_FCBS:ABS ;AN000; | ||
| 121 | EXTRN S_FILES:WORD ;AN000; | ||
| 122 | EXTRN M_FILES:ABS ;AN000; | ||
| 123 | EXTRN D_FILES_1:WORD ;AN000; | ||
| 124 | EXTRN D_FILES_2:WORD ;AN000; | ||
| 125 | EXTRN ST_FILES:WORD ;AN000; | ||
| 126 | EXTRN MT_FILES:ABS ;AN000; | ||
| 127 | EXTRN S_GRAPHICS:WORD ;AN000; | ||
| 128 | EXTRN M_GRAPHICS:ABS ;AN000; | ||
| 129 | EXTRN F_GRAPHICS:WORD ;AN000; | ||
| 130 | EXTRN E_GRAPHICS_NO:ABS ;AN000; | ||
| 131 | EXTRN E_GRAPHICS_YES:ABS ;AN000; | ||
| 132 | EXTRN E_GRAPHICS_B:ABS ;AN000; | ||
| 133 | EXTRN E_GRAPHICS_C:ABS ;AN000; | ||
| 134 | EXTRN F_GRAFTABL:WORD ;AN000; | ||
| 135 | EXTRN E_GRAFTABL_NO:ABS ;AN000; | ||
| 136 | EXTRN E_GRAFTABL_YES:ABS ;AN000; | ||
| 137 | EXTRN E_GRAFTABL_NA:ABS ;AN000; | ||
| 138 | EXTRN E_GRAFTABL_B:ABS ;AN000; | ||
| 139 | EXTRN E_GRAFTABL_C:ABS ;AN000; | ||
| 140 | EXTRN S_LASTDRIVE:WORD ;AN000; | ||
| 141 | EXTRN M_LASTDRIVE:ABS ;AN000; | ||
| 142 | EXTRN D_LASTDRIVE_1:WORD ;AN000; | ||
| 143 | EXTRN ST_LASTDRIVE:WORD ;AN000; | ||
| 144 | EXTRN MT_LASTDRIVE:ABS ;AN000; | ||
| 145 | EXTRN S_PATH:WORD ;AN000; | ||
| 146 | EXTRN M_PATH:ABS ;AN000; | ||
| 147 | EXTRN F_PATH:WORD ;AN000; | ||
| 148 | EXTRN E_PATH_NO:ABS ;AN000; | ||
| 149 | EXTRN E_PATH_YES:ABS ;AN000; | ||
| 150 | EXTRN S_PROMPT:WORD ;AN000; | ||
| 151 | EXTRN M_PROMPT:ABS ;AN000; | ||
| 152 | EXTRN D_PROMPT_1:WORD ;AN000; | ||
| 153 | EXTRN F_PROMPT:WORD ;AN000; | ||
| 154 | EXTRN E_PROMPT_NO:ABS ;AN000; | ||
| 155 | EXTRN E_PROMPT_YES:ABS ;AN000; | ||
| 156 | EXTRN S_SHARE:WORD ;AN000; | ||
| 157 | EXTRN F_SHARE:WORD ;AN000; | ||
| 158 | EXTRN M_SHARE:ABS ;AN000; | ||
| 159 | EXTRN E_SHARE_NO:ABS ;AN000; | ||
| 160 | EXTRN E_SHARE_YES:ABS ;AN000; | ||
| 161 | EXTRN E_SHARE_C:ABS ;AN000; | ||
| 162 | EXTRN S_SHELL:WORD ;AN000; | ||
| 163 | EXTRN M_SHELL:ABS ;AN000; | ||
| 164 | EXTRN D_SHELL_1:WORD ;AN000; | ||
| 165 | EXTRN D_SHELL_2:WORD ;AN000; | ||
| 166 | EXTRN F_SHELL:WORD ;AN000; | ||
| 167 | EXTRN E_SHELL_NO:ABS ;AN000; | ||
| 168 | EXTRN E_SHELL_YES:ABS ;AN000; | ||
| 169 | EXTRN E_SHELL_B:ABS ;AN000; | ||
| 170 | EXTRN E_SHELL_C:ABS ;AN000; | ||
| 171 | EXTRN S_STACKS:WORD ;AN000; | ||
| 172 | EXTRN M_STACKS:ABS ;AN000; | ||
| 173 | EXTRN ST_STACKS:WORD ;AN000; | ||
| 174 | EXTRN MT_STACKS:ABS ;AN000; | ||
| 175 | EXTRN S_VDISK:WORD ;AN000; | ||
| 176 | EXTRN M_VDISK:ABS ;AN000; | ||
| 177 | EXTRN F_VDISK:WORD ;AN000; | ||
| 178 | EXTRN E_VDISK_NO:ABS ;AN000; | ||
| 179 | EXTRN E_VDISK_YES:ABS ;AN000; | ||
| 180 | EXTRN E_VDISK_B:ABS ;AN000; | ||
| 181 | EXTRN E_VDISK_C:ABS ;AN000; | ||
| 182 | EXTRN S_VERIFY:WORD ;AN000; | ||
| 183 | EXTRN M_VERIFY:ABS ;AN000; | ||
| 184 | EXTRN ST_VERIFY:WORD ;AN000; | ||
| 185 | EXTRN MT_VERIFY:ABS ;AN000; | ||
| 186 | EXTRN S_XMAEM:WORD ;AN000; | ||
| 187 | EXTRN M_XMAEM:ABS ;AN000; | ||
| 188 | EXTRN S_XMA2EMS:WORD ;AN000; | ||
| 189 | EXTRN M_XMA2EMS:ABS ;AN000; | ||
| 190 | EXTRN D_XMA2EMS_1:WORD ;AN000; | ||
| 191 | EXTRN F_XMA:WORD ;AN000; | ||
| 192 | EXTRN E_XMA_NO:ABS ;AN000; | ||
| 193 | EXTRN E_XMA_YES:ABS ;AN000; | ||
| 194 | EXTRN E_XMA_NA:ABS ;AN000; | ||
| 195 | EXTRN E_XMA_C:ABS ;AN000; | ||
| 196 | EXTRN N_XMA:WORD ;AN000; | ||
| 197 | EXTRN E_XMA_ABSENT:ABS ;AN000; | ||
| 198 | EXTRN E_XMA_PRESENT:ABS ;AN000; | ||
| 199 | EXTRN I_DEST_DRIVE:WORD ;AN000; | ||
| 200 | EXTRN E_DEST_DRIVE_C:ABS ;AN000; | ||
| 201 | EXTRN E_DEST_DRIVE_B:ABS ;AN000; | ||
| 202 | EXTRN E_DEST_DRIVE_A:ABS ;AN111;JW | ||
| 203 | EXTRN N_DEST_DRIVE:BYTE ;AN000; | ||
| 204 | EXTRN E_DEST_SELECT:ABS ;AN000; | ||
| 205 | EXTRN E_DEST_USER:ABS ;AN000; | ||
| 206 | EXTRN N_DISKETTE_TOT:BYTE ;AN000; | ||
| 207 | EXTRN N_ZERO_DISKETTE:ABS ;AN000; | ||
| 208 | EXTRN N_DISKETTE_A:BYTE ;AN000; | ||
| 209 | EXTRN N_DISKETTE_B:BYTE ;AN000; | ||
| 210 | EXTRN E_DISKETTE_INV:ABS ;AN000; | ||
| 211 | EXTRN E_DISKETTE_360:ABS ;AN000; | ||
| 212 | EXTRN E_DISKETTE_720:ABS ;AN000; | ||
| 213 | EXTRN E_DISKETTE_1200:ABS ;AN000; | ||
| 214 | EXTRN E_DISKETTE_1440:ABS ;AN000; | ||
| 215 | EXTRN S_DEST_DRIVE:WORD ;AN000; | ||
| 216 | EXTRN M_DEST_DRIVE:ABS ;AN000; | ||
| 217 | EXTRN S_DRIVE_A:WORD ;AN000; | ||
| 218 | EXTRN S_A_DRIVE:WORD ;AN039;SEH | ||
| 219 | EXTRN S_B_DRIVE:WORD ;AN039;SEH | ||
| 220 | EXTRN S_C_DRIVE:WORD ;AN000;JW | ||
| 221 | EXTRN S_DOS_LOC:WORD ;AN000; | ||
| 222 | EXTRN M_DOS_LOC:ABS ;AN000; | ||
| 223 | EXTRN D_DOS_LOC_1:WORD ;AN000; | ||
| 224 | EXTRN S_INSTALL_PATH:WORD ;AN000; | ||
| 225 | EXTRN M_INSTALL_PATH:ABS ;AN000; | ||
| 226 | EXTRN I_CTY_KYBD:WORD ;AN000; | ||
| 227 | EXTRN E_CTY_KB_PREDEF:ABS ;AN000; | ||
| 228 | EXTRN E_CTY_KB_USER:ABS ;AN000; | ||
| 229 | EXTRN N_CTY_LIST:WORD ;AN000; | ||
| 230 | EXTRN E_CTY_LIST_1:ABS ;AN000; | ||
| 231 | EXTRN E_CTY_LIST_2:ABS ;AN000; | ||
| 232 | EXTRN I_COUNTRY:WORD ;AN000; | ||
| 233 | EXTRN N_COUNTRY:WORD ;AN000; | ||
| 234 | EXTRN N_KYBD_LIST:WORD ;AN000; | ||
| 235 | EXTRN E_KYBD_LIST_1:ABS ;AN000; | ||
| 236 | EXTRN E_KYBD_LIST_2:ABS ;AN000; | ||
| 237 | EXTRN I_KEYBOARD:WORD ;AN000; | ||
| 238 | EXTRN S_KEYBOARD:WORD ;AN000; | ||
| 239 | EXTRN M_KEYBOARD:ABS ;AN000; | ||
| 240 | EXTRN N_KYBD_VAL:BYTE ;AN000; | ||
| 241 | EXTRN E_KYBD_VAL_NO:ABS ;AN000; | ||
| 242 | EXTRN E_KYBD_VAL_YES:ABS ;AN000; | ||
| 243 | EXTRN E_KYBD_VAL_DEF:ABS ;AN000; | ||
| 244 | EXTRN N_DESIGNATES:WORD ;AN000; | ||
| 245 | EXTRN N_CP_PRI:WORD ;AN000; | ||
| 246 | EXTRN N_CP_SEC:WORD ;AN000; | ||
| 247 | EXTRN I_KYBD_ALT:WORD ;AN000; | ||
| 248 | EXTRN S_KYBD_ALT:WORD ;AN000; | ||
| 249 | EXTRN M_KYBD_ALT:ABS ;AN000; | ||
| 250 | EXTRN N_KYBD_ALT:BYTE ;AN000; | ||
| 251 | EXTRN E_KYBD_ALT_NO:ABS ;AN000; | ||
| 252 | EXTRN E_KYBD_ALT_YES:ABS ;AN000; | ||
| 253 | EXTRN N_KYB_LOAD:WORD ;AN000; | ||
| 254 | EXTRN E_KYB_LOAD_SUC:ABS ;AN000; | ||
| 255 | EXTRN E_KYB_LOAD_ERR:ABS ;AN000; | ||
| 256 | EXTRN E_KYB_LOAD_US:ABS ;AN000; | ||
| 257 | EXTRN E_KYB_LOAD_UND:ABS ;AN000; | ||
| 258 | EXTRN CTY_TAB_A:BYTE ;AN000; | ||
| 259 | EXTRN CTY_TAB_A_1:BYTE ;AN000; | ||
| 260 | EXTRN CTY_A_ITEMS:ABS ;AN000; | ||
| 261 | EXTRN CTY_TAB_B:BYTE ;AN000; | ||
| 262 | EXTRN CTY_TAB_B_1:BYTE ;AN000; | ||
| 263 | EXTRN CTY_B_ITEMS:ABS ;AN000; | ||
| 264 | EXTRN N_CTY_RES:BYTE ;AN000; | ||
| 265 | EXTRN KYBD_TAB_A:BYTE ;AN000; | ||
| 266 | EXTRN KYBD_TAB_A_1:BYTE ;AN000; | ||
| 267 | EXTRN KYBD_A_ITEMS:ABS ;AN000; | ||
| 268 | EXTRN KYBD_TAB_B:BYTE ;AN000; | ||
| 269 | EXTRN KYBD_TAB_B_1:BYTE ;AN000; | ||
| 270 | EXTRN KYBD_B_ITEMS:ABS ;AN000; | ||
| 271 | EXTRN ALT_TAB_PTR:WORD ;AN000; | ||
| 272 | EXTRN ALT_KYB_ID:BYTE ;AN000; | ||
| 273 | EXTRN ALT_KYB_ID_PREV:BYTE ;AN000; | ||
| 274 | EXTRN ALT_FRENCH:ABS ;AN000; | ||
| 275 | EXTRN ALT_ITALIAN:ABS ;AN000; | ||
| 276 | EXTRN ALT_UK:ABS ;AN000; | ||
| 277 | EXTRN ALT_KYB_TABLE:BYTE ;AN000; | ||
| 278 | EXTRN ALT_KYB_TAB_1:BYTE ;AN000; | ||
| 279 | EXTRN ALT_KYB_ITEMS:ABS ;AN000; | ||
| 280 | EXTRN ALT_KYBD_FR:BYTE ;AN000; | ||
| 281 | EXTRN ALT_KYBD_FR_1:WORD ;AN000; | ||
| 282 | EXTRN ALT_FR_ITEMS:ABS ;AN000; | ||
| 283 | EXTRN ALT_KYBD_IT:BYTE ;AN000; | ||
| 284 | EXTRN ALT_KYBD_IT_1:BYTE ;AN000; | ||
| 285 | EXTRN ALT_IT_ITEMS:ABS ;AN000; | ||
| 286 | EXTRN ALT_KYBD_UK:BYTE ;AN000; | ||
| 287 | EXTRN ALT_KYBD_UK_1:BYTE ;AN000; | ||
| 288 | EXTRN ALT_UK_ITEMS:ABS ;AN000; | ||
| 289 | EXTRN ALT_ID_DEF:BYTE ;AN000;DT | ||
| 290 | EXTRN S_US:WORD ;AN000; | ||
| 291 | EXTRN S_SWISS:WORD ;AN000; | ||
| 292 | EXTRN N_NUMPRINT:WORD ;AN000; | ||
| 293 | EXTRN MIN_NUMPRINT:ABS ;AN000; | ||
| 294 | EXTRN MAX_NUMPRINT:ABS ;AN000; | ||
| 295 | EXTRN N_PARALLEL:WORD ;AN000; | ||
| 296 | EXTRN N_SERIAL:WORD ;AN000; | ||
| 297 | EXTRN PRINTER_TABLES:ABS ;AN000; | ||
| 298 | EXTRN I_PRINTER:WORD ;AN000; | ||
| 299 | EXTRN N_PRINTER_TYPE:BYTE ;AN000; | ||
| 300 | EXTRN E_SERIAL:ABS ;AN000; | ||
| 301 | EXTRN E_PARALLEL:ABS ;AN000; | ||
| 302 | EXTRN I_PORT:WORD ;AN000; | ||
| 303 | EXTRN I_REDIRECT:WORD ;AN000; | ||
| 304 | EXTRN S_MODE_PARM:WORD ;AN000; | ||
| 305 | EXTRN M_MODE_PARM:ABS ;AN000; | ||
| 306 | EXTRN S_CP_DRIVER:WORD ;AN000; | ||
| 307 | EXTRN M_CP_DRIVER:ABS ;AN000; | ||
| 308 | EXTRN S_CP_PREPARE:WORD ;AN000; | ||
| 309 | EXTRN M_CP_PREPARE:ABS ;AN000; | ||
| 310 | EXTRN S_GRAPH_PARM:WORD ;AN000; | ||
| 311 | EXTRN M_GRAPH_PARM:ABS ;AN000; | ||
| 312 | EXTRN F_REVIEW:WORD ;AN000; | ||
| 313 | EXTRN E_REVIEW_ACCEPT:ABS ;AN000; | ||
| 314 | EXTRN E_REVIEW_VIEW:ABS ;AN000; | ||
| 315 | EXTRN N_DISPLAY:BYTE ;AN000; | ||
| 316 | EXTRN E_CPSW_DISP:ABS ;AN000; | ||
| 317 | EXTRN E_NOCPSW_DISP:ABS ;AN000; | ||
| 318 | EXTRN N_YEAR:WORD ;AN000; | ||
| 319 | EXTRN MIN_YEAR:ABS ;AN000; | ||
| 320 | EXTRN MAX_YEAR:ABS ;AN000; | ||
| 321 | EXTRN N_MONTH:WORD ;AN000; | ||
| 322 | EXTRN MIN_MONTH:ABS ;AN000; | ||
| 323 | EXTRN MAX_MONTH:ABS ;AN000; | ||
| 324 | EXTRN N_DAY:WORD ;AN000; | ||
| 325 | EXTRN MIN_DAY:ABS ;AN000; | ||
| 326 | EXTRN MAX_DAY:ABS ;AN000; | ||
| 327 | EXTRN N_HOUR:WORD ;AN000; | ||
| 328 | EXTRN MIN_HOUR:ABS ;AN000; | ||
| 329 | EXTRN MAX_HOUR:ABS ;AN000; | ||
| 330 | EXTRN N_MINUTE:WORD ;AN000; | ||
| 331 | EXTRN MIN_MINUTE:ABS ;AN000; | ||
| 332 | EXTRN MAX_MINUTE:ABS ;AN000; | ||
| 333 | EXTRN N_SECOND:WORD ;AN000; | ||
| 334 | EXTRN MIN_SECOND:ABS ;AN000; | ||
| 335 | EXTRN MAX_SECOND:ABS ;AN000; | ||
| 336 | EXTRN PARM_BLOCK:WORD ;AN000; | ||
| 337 | EXTRN CMD_BUFF:BYTE ;AN000; | ||
| 338 | EXTRN S_STR40:WORD ;AN000;JW | ||
| 339 | EXTRN M_STR40:ABS ;AN000;JW | ||
| 340 | EXTRN S_STR120_1:WORD ;AN000; | ||
| 341 | EXTRN P_STR120_1:BYTE ;AN000; | ||
| 342 | EXTRN M_STR120_1:ABS ;AN000; | ||
| 343 | EXTRN S_STR120_2:WORD ;AN000; | ||
| 344 | EXTRN M_STR120_2:ABS ;AN000; | ||
| 345 | EXTRN S_STR120_3:WORD ;AN000; | ||
| 346 | EXTRN M_STR120_3:ABS ;AN000; | ||
| 347 | EXTRN S_STR120_4:WORD ;AN039;SEH | ||
| 348 | EXTRN M_STR120_4:ABS ;AN039;SEH | ||
| 349 | EXTRN SC_LINE:WORD ;AN000; | ||
| 350 | EXTRN MC_LINE:ABS ;AN000; | ||
| 351 | EXTRN COPY_INST_1200_1440:BYTE ;AN000; | ||
| 352 | EXTRN E_INST_1200_1440:ABS ;AN000; | ||
| 353 | EXTRN COPY_SEL_SHEL:BYTE ;AN000; | ||
| 354 | EXTRN E_SEL_SHEL:ABS ;AN000; | ||
| 355 | EXTRN COPY_SEL_EGA:BYTE ;AN000; | ||
| 356 | EXTRN E_SEL_EGA:ABS ;AN000; | ||
| 357 | EXTRN COPY_SEL_LCD:BYTE ;AN000; | ||
| 358 | EXTRN E_SEL_LCD:ABS ;AN000; | ||
| 359 | EXTRN COPY_OPER_1200_1440:BYTE ;AN000; | ||
| 360 | EXTRN E_OPER_1200_1440:ABS ;AN000; | ||
| 361 | EXTRN COPY_SHELL_1200_1440:BYTE ;AN000; | ||
| 362 | EXTRN E_SHELL_1200_1440:ABS ;AN000; | ||
| 363 | EXTRN S_DOS_SHEL_DISK:WORD ;AN000; | ||
| 364 | EXTRN S_DOS_SEL_360:WORD ;AN000;GHG 360KB | ||
| 365 | EXTRN S_DOS_UTIL1_DISK:WORD ;AN000;GHG 360KB | ||
| 366 | EXTRN S_DOS_UTIL2_DISK:WORD ;AN000;GHG 360KB | ||
| 367 | EXTRN S_DOS_UTIL3_DISK:WORD ;AN000;GHG 360KB | ||
| 368 | EXTRN S_DOS_COM_360:WORD ;AN000;DT 360KB | ||
| 369 | EXTRN E_FILE_ATTR:ABS ;AN000; | ||
| 370 | EXTRN S_SHELL2:BYTE ;AN000;DT | ||
| 371 | EXTRN S_SHELL_NEW:WORD ;AN000;DT | ||
| 372 | EXTRN S_SHELL_NEW_B:WORD ;AN000;DT | ||
| 373 | EXTRN S_DSKCPY_TO_B:WORD ;AN000;DT | ||
| 374 | EXTRN S_SELCOM_NEW_B:WORD ;AN000;DT | ||
| 375 | EXTRN S_SELHLP_NEW_B:WORD ;AN000;DT | ||
| 376 | EXTRN S_SELPRT_NEW_B:WORD ;AN000;DT | ||
| 377 | EXTRN S_SELEXE_NEW_B:WORD ;AN000;DT | ||
| 378 | EXTRN S_SELDAT_NEW_B:WORD ;AN000;DT | ||
| 379 | EXTRN S_SELCOM_C:WORD ;AN000;DT | ||
| 380 | EXTRN S_SELDAT_C:WORD ;AN000;DT | ||
| 381 | EXTRN S_SELPRT_C:WORD ;AN000;DT | ||
| 382 | EXTRN S_SELEXE_C:WORD ;AN000;DT | ||
| 383 | EXTRN S_SELHLP_C:WORD ;AN000;DT | ||
| 384 | EXTRN S_AUTOEX_C:WORD ;AN000;DT | ||
| 385 | EXTRN S_CONSYS_C:WORD ;AN000;DT | ||
| 386 | EXTRN S_VDISK_B:WORD ;AN000;JW | ||
| 387 | EXTRN S_ANSI_B:WORD ;AN000;JW | ||
| 388 | EXTRN S_APPEND_B:WORD ;AN000;JW | ||
| 389 | EXTRN S_GRAFTABL_B:WORD ;AN000;JW | ||
| 390 | EXTRN S_GRAPHICS_B:WORD ;AN000;JW | ||
| 391 | EXTRN S_GRAPHPRO_B:WORD ;AN000;JW | ||
| 392 | EXTRN S_RECOVER_B:WORD ;AN000;JW | ||
| 393 | EXTRN S_FASTOPEN_B:WORD ;AN000;JW | ||
| 394 | EXTRN S_VDISK_C:WORD ;AN000;JW | ||
| 395 | EXTRN S_ANSI_C:WORD ;AN000;JW | ||
| 396 | EXTRN S_APPEND_C:WORD ;AN000;JW | ||
| 397 | EXTRN S_GRAFTABL_C:WORD ;AN000;JW | ||
| 398 | EXTRN S_GRAPHICS_C:WORD ;AN000;JW | ||
| 399 | EXTRN S_GRAPHPRO_C:WORD ;AN000;JW | ||
| 400 | EXTRN S_RECOVER_C:WORD ;AN000;JW | ||
| 401 | EXTRN S_FASTOPEN_C:WORD ;AN000;JW | ||
| 402 | EXTRN S_AUTO_NEW:WORD ;AN000; | ||
| 403 | EXTRN S_CONFIG_NEW:WORD ;AN000; | ||
| 404 | EXTRN S_AUTO_NEW_B:WORD ;AN000; | ||
| 405 | EXTRN S_CONFIG_NEW_B:WORD ;AN000; | ||
| 406 | EXTRN S_OS2_CONFIG_C:WORD ;AN065;SEH | ||
| 407 | EXTRN S_OS2_AUTO_C:WORD ;AN065;SEH | ||
| 408 | EXTRN S_AUTO_REN:WORD ;AN000; | ||
| 409 | EXTRN S_CONFIG_REN:WORD ;AN000; | ||
| 410 | EXTRN S_AUTO_NEW_C:WORD ;AN000; | ||
| 411 | EXTRN S_CONFIG_NEW_C:WORD ;AN000; | ||
| 412 | EXTRN S_AUTO_C:WORD ;AN000; | ||
| 413 | EXTRN S_CONFIG_C:WORD ;AN000; | ||
| 414 | EXTRN S_CONFIG_AUTO:BYTE ;AN000; | ||
| 415 | EXTRN S_AUTO_MENU:WORD ;AN000; | ||
| 416 | EXTRN S_AUTO_FDISK:WORD ;AN000; | ||
| 417 | EXTRN S_AUTO_REBOOT:WORD ;AN000; | ||
| 418 | EXTRN E_FILES:ABS ;AN000; | ||
| 419 | EXTRN SH_FILES:ABS ;AN000;DT | ||
| 420 | EXTRN HIDE_SEL:BYTE ;AN000; | ||
| 421 | EXTRN HIDE_STARTUP:BYTE ;AN004;GHG | ||
| 422 | EXTRN E_HIDE_SEL:ABS ;AN000; | ||
| 423 | EXTRN E_HIDE_STARTUP:ABS ;AN004;GHG | ||
| 424 | EXTRN S_PREP_EGA:WORD ;AN000; | ||
| 425 | EXTRN S_PREP_LCD:WORD ;AN000; | ||
| 426 | EXTRN S_CP_SEL:WORD ;AN000; | ||
| 427 | EXTRN S_MODE:WORD ;AN000; | ||
| 428 | EXTRN N_HANDLE:WORD ;AN000; | ||
| 429 | EXTRN N_WRITE_HANDLE:WORD ;AN000; | ||
| 430 | EXTRN N_WRITE_ERR_CODE:WORD ;AN000; | ||
| 431 | EXTRN N_RETCODE:WORD ;AN000; | ||
| 432 | EXTRN N_COUNTER:WORD ;AN000; | ||
| 433 | EXTRN N_WORD_1:WORD ;AN000; | ||
| 434 | EXTRN N_WORD_2:WORD ;AN000; | ||
| 435 | EXTRN N_WORD_3:WORD ;AN000; | ||
| 436 | EXTRN N_WORD_4:WORD ;AN000; | ||
| 437 | EXTRN N_WORD_5:WORD ;AN000; | ||
| 438 | EXTRN N_WORD_6:WORD ;AN000; | ||
| 439 | EXTRN N_BYTE_1:BYTE ;AN025; | ||
| 440 | EXTRN SAVE_AREA:BYTE ;AN000; | ||
| 441 | EXTRN S_KEYB:WORD ;AN000; | ||
| 442 | EXTRN S_FDISK:WORD ;AN000; | ||
| 443 | EXTRN S_DISKCOPY:WORD ;AN000; | ||
| 444 | EXTRN S_DISKCOPY_PARM:WORD ;AN000; | ||
| 445 | EXTRN SC_1:WORD ;AN000; | ||
| 446 | EXTRN SC_2:WORD ;AN000; | ||
| 447 | EXTRN SC_PRI:WORD ;AN000; | ||
| 448 | EXTRN SC_EXT:WORD ;AN000; | ||
| 449 | EXTRN SC_LOG:WORD ;AN000; | ||
| 450 | EXTRN S_FORMAT:WORD ;AN000; | ||
| 451 | EXTRN S_FORMAT_B:WORD ;AN000; | ||
| 452 | EXTRN S_FORMAT_A:WORD ;AN000; | ||
| 453 | EXTRN S_REPLACE:WORD ;AN000; | ||
| 454 | EXTRN S_REPLACE_PAR1:WORD ;AN000; | ||
| 455 | EXTRN S_A_STARS:WORD ;AN000; | ||
| 456 | EXTRN S_SLASH_A:WORD ;AN000; | ||
| 457 | EXTRN S_SLASH_R:WORD ;AN000;JW | ||
| 458 | EXTRN S_SLASH_S:WORD ;AN000; | ||
| 459 | EXTRN S_SLASH_Q:WORD ;AN000; | ||
| 460 | EXTRN S_SLASH:WORD ;AN000;DT | ||
| 461 | EXTRN S_COLON:WORD ;AN000; | ||
| 462 | EXTRN S_SYS_C:WORD ;AN000; | ||
| 463 | EXTRN S_VOL_SEL:WORD ;AN000; | ||
| 464 | EXTRN S_DRIVE_C:WORD ;AN000; | ||
| 465 | EXTRN N_HOUSE_CLEAN:BYTE ;AN000; | ||
| 466 | EXTRN E_CLEAN_YES:ABS ;AN000; | ||
| 467 | EXTRN E_CLEAN_NO:ABS ;AN000; | ||
| 468 | EXTRN E_CR:ABS ;AN000; | ||
| 469 | EXTRN E_LF:ABS ;AN000; | ||
| 470 | EXTRN E_PART_PRI_DOS:ABS ;AN000; | ||
| 471 | EXTRN E_PART_EXT_DOS:ABS ;AN000; | ||
| 472 | EXTRN E_PART_LOG_DRI:ABS ;AN000; | ||
| 473 | EXTRN E_FREE_MEM_EDOS:ABS ;AN000; | ||
| 474 | EXTRN E_FREE_MEM_DISK:ABS ;AN000; | ||
| 475 | EXTRN E_PART_OTHER:ABS ;AN000; | ||
| 476 | EXTRN E_PART_UNFORMAT:ABS ;AN000; | ||
| 477 | EXTRN E_PART_FORMAT:ABS ;AN000; | ||
| 478 | EXTRN E_PART_FAT:ABS ;AN000; | ||
| 479 | EXTRN E_PART_KSAM:ABS ;AN000; | ||
| 480 | EXTRN E_PART_UNDEF:ABS ;AN000; | ||
| 481 | EXTRN E_PART_IGNORE:ABS ;AN000; | ||
| 482 | EXTRN N_DISK_1:WORD ;AN000; | ||
| 483 | EXTRN E_DISK_1:ABS ;AN000; | ||
| 484 | EXTRN N_DISK_2:WORD ;AN000; | ||
| 485 | EXTRN E_DISK_2:ABS ;AN000; | ||
| 486 | EXTRN E_DISK_INV:ABS ;AN000; | ||
| 487 | EXTRN E_DISK_NO_PART:ABS ;AN000; | ||
| 488 | EXTRN E_DISK_VAL_PART:ABS ;AN000; | ||
| 489 | EXTRN N_DISK_1_S1:WORD ;AN000; | ||
| 490 | EXTRN N_DISK_2_S1:WORD ;AN000; | ||
| 491 | EXTRN E_DISK_PRI:ABS ;AN000; | ||
| 492 | EXTRN E_DISK_EXT_DOS:ABS ;AN000; | ||
| 493 | EXTRN E_DISK_LOG_DRI:ABS ;AN000; | ||
| 494 | EXTRN E_DISK_EDOS_MEM:ABS ;AN000; | ||
| 495 | EXTRN E_DISK_FREE_MEM:ABS ;AN000; | ||
| 496 | EXTRN N_DISK_1_S2:WORD ;AN000; | ||
| 497 | EXTRN N_DISK_2_S2:WORD ;AN000; | ||
| 498 | EXTRN E_SPACE_NONE:ABS ;AN000; | ||
| 499 | EXTRN E_SPACE_EDOS:ABS ;AN000; | ||
| 500 | EXTRN E_SPACE_DISK:ABS ;AN000; | ||
| 501 | EXTRN F_PARTITION:WORD ;AN000; | ||
| 502 | EXTRN E_PART_DEFAULT:ABS ;AN000; | ||
| 503 | EXTRN E_PART_USER:ABS ;AN000; | ||
| 504 | EXTRN F_FORMAT:WORD ;AN000; | ||
| 505 | EXTRN E_FORMAT_FAT:ABS ;AN000; | ||
| 506 | EXTRN E_FORMAT_NO:ABS ;AN000; | ||
| 507 | EXTRN N_DISK1_MODE:WORD ;AN000; | ||
| 508 | EXTRN E_DISK1_INSTALL:ABS ;AN000; | ||
| 509 | EXTRN E_DISK1_REPLACE:ABS ;AN000; | ||
| 510 | EXTRN DISK_1_TABLE:BYTE ;AN000; | ||
| 511 | EXTRN DISK_1_VAL_ITEM:BYTE ;AN000; | ||
| 512 | EXTRN DISK_1_START:BYTE ;AN000; | ||
| 513 | EXTRN M_DISK_1_ITEMS:ABS ;AN000; | ||
| 514 | EXTRN DISK_2_TABLE:BYTE ;AN000; | ||
| 515 | EXTRN DISK_2_VAL_ITEM:BYTE ;AN000; | ||
| 516 | EXTRN DISK_2_START:BYTE ;AN000; | ||
| 517 | EXTRN M_DISK_2_ITEMS:ABS ;AN000; | ||
| 518 | EXTRN N_NAME_PART:BYTE ;AN000; | ||
| 519 | EXTRN N_SIZE_PART:WORD ;AN000; | ||
| 520 | EXTRN N_STATUS_PART:BYTE ;AN000; | ||
| 521 | EXTRN N_TYPE_PART:BYTE ;AN000; | ||
| 522 | EXTRN P_DRIVE_PART:BYTE ;AN000; | ||
| 523 | EXTRN N_LEVEL1_PART:BYTE ;AN065;SEH version number for DOS 4.00 1st part = blank | ||
| 524 | EXTRN N_LEVEL2_PART:BYTE ;AN065;SEH version number for DOS 4.00 2nd part = 4 | ||
| 525 | EXTRN N_LEVEL3_PART:BYTE ;AN065;SEH version number for DOS 4.00 3rd part = . | ||
| 526 | EXTRN N_LEVEL4_PART:BYTE ;AN065;SEH version number for DOS 4.00 4th part = 0 | ||
| 527 | EXTRN STACK_INDEX:BYTE ;AN000; | ||
| 528 | EXTRN SELECT_STACK:WORD ;AN000; | ||
| 529 | EXTRN STACK_SIZE:ABS ;AN000; | ||
| 530 | EXTRN N_DEST:BYTE ;AN000; | ||
| 531 | EXTRN E_DEST_DOS:ABS ;AN000; | ||
| 532 | EXTRN E_DEST_SHELL:ABS ;AN000; | ||
| 533 | EXTRN INT_24_ERROR:WORD ;AN000; | ||
| 534 | EXTRN INT_24_FLAG:BYTE ;AN000; | ||
| 535 | EXTRN OLD_INT_24:DWORD ;AN000; | ||
| 536 | EXTRN OLD_INT_23:DWORD ;AN000; | ||
| 537 | EXTRN OLD_INT_2F:DWORD ;AN000; | ||
| 538 | EXTRN ACTIVE:BYTE ;AN000; | ||
| 539 | EXTRN ALTERNATE:BYTE ;AN000; | ||
| 540 | EXTRN EGA:ABS ;AN000; | ||
| 541 | EXTRN LCD:ABS ;AN000; | ||
| 542 | EXTRN CGA:ABS ;AN000; | ||
| 543 | EXTRN MONO:ABS ;AN000; | ||
| 544 | EXTRN S_PRINT_FILE:WORD ;AN000; | ||
| 545 | EXTRN M_PRINT_FILE:ABS ;AN000; | ||
| 546 | EXTRN I_DESTINATION:WORD ;AN000;JW | ||
| 547 | EXTRN E_ENTIRE_DISK:ABS ;AN000;JW | ||
| 548 | EXTRN N_MOD80:WORD ;AN000;JW | ||
| 549 | EXTRN E_IS_MOD80:ABS ;AN000;JW | ||
| 550 | EXTRN E_DISK_ROW:ABS ;AN000;JW | ||
| 551 | EXTRN E_DISK_COL:ABS ;AN000;JW | ||
| 552 | EXTRN E_DRIVE_ROW:ABS ;AN000;JW | ||
| 553 | EXTRN E_DRIVE_COL:ABS ;AN000;JW | ||
| 554 | EXTRN N_DISK_NUM:BYTE ;AN000;JW | ||
| 555 | EXTRN MEM_SIZE:WORD ;AN000;DT | ||
| 556 | EXTRN MACHINE_TYPE:BYTE ;AN000;JW | ||
| 557 | EXTRN PS2_FLAG:BYTE ;AN000;JW | ||
| 558 | EXTRN MOD25_OR_MOD30:ABS ;AN000;JW | ||
| 559 | EXTRN DRIVE_A:ABS ;AN000;JW | ||
| 560 | EXTRN DRIVE_B:ABS ;AN000;JW | ||
| 561 | EXTRN N_DSKCPY_ERR:BYTE ;AN000;JW | ||
| 562 | EXTRN E_DSKCPY_RETRY:ABS ;AN000;JW | ||
| 563 | EXTRN E_DSKCPY_OK:ABS ;AN000;JW | ||
| 564 | EXTRN N_DRIVE_OPTION:WORD ;AN111;JW | ||
| 565 | EXTRN E_OPTION_B_C:ABS ;AN111;JW | ||
| 566 | EXTRN E_OPTION_A_C:ABS ;AN111;JW | ||
| 567 | EXTRN SOURCE_PANEL:WORD ;AN111;JW | ||
| 568 | EXTRN DEST_PANEL:WORD ;AN111;JW | ||
| 569 | EXTRN FORMAT_WHICH:BYTE ;AN111;JW | ||
| 570 | EXTRN STARTUP:ABS ;AN111;JW | ||
| 571 | EXTRN SHELL:ABS ;AN111;JW | ||
| 572 | EXTRN DISK_PANEL:WORD ;AN000;JW | ||
| 573 | EXTRN SEARCH_FILE:WORD ;AN000;JW | ||
| 574 | EXTRN SUB_ERROR:BYTE ;AN000;JW | ||
| 575 | EXTRN S_COMMAND_COM:WORD ;AN017;JW | ||
| 576 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 577 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/EXTERN.H b/v4.0/src/SELECT/EXTERN.H new file mode 100644 index 0000000..c0c79ca --- /dev/null +++ b/v4.0/src/SELECT/EXTERN.H | |||
| @@ -0,0 +1,76 @@ | |||
| 1 | /* */ | ||
| 2 | /* */ | ||
| 3 | /****************************************************************************/ | ||
| 4 | /* Declare Global variables */ | ||
| 5 | /****************************************************************************/ | ||
| 6 | /* */ | ||
| 7 | |||
| 8 | |||
| 9 | |||
| 10 | extern char cur_disk; /* ;AN000; */ | ||
| 11 | extern FLAG good_disk[2]; /* ;AN000; */ | ||
| 12 | extern unsigned char number_of_drives; /* ;AN000; */ | ||
| 13 | extern FLAG reboot_flag; /* ;AN000; */ | ||
| 14 | extern char errorlevel; /* ;AN000; */ | ||
| 15 | extern char max_partition_size; /* ;AN000; */ | ||
| 16 | extern char sort[24]; /* ;AN000; */ | ||
| 17 | extern FLAG no_fatal_error; /* ;AC000; */ | ||
| 18 | extern char valid_input; /* ;AN000; */ | ||
| 19 | extern unsigned char video_mode; /* ;AN000; */ | ||
| 20 | extern unsigned char display_page; /* ;AN000; */ | ||
| 21 | |||
| 22 | extern unsigned total_disk[2]; /* ;AN000; */ | ||
| 23 | extern XFLOAT total_mbytes[2]; /* ;AN000; */ | ||
| 24 | extern unsigned char max_sector[2]; /* ;AN000; */ | ||
| 25 | extern unsigned char max_head[2]; /* ;AN000; */ | ||
| 26 | extern unsigned required_cyls[2]; /* ;AN000; */ | ||
| 27 | |||
| 28 | extern unsigned input_row; /* ;AN000; */ | ||
| 29 | extern unsigned input_col; /* ;AN000; */ | ||
| 30 | extern char insert[800]; /* ;AC000; */ | ||
| 31 | extern char *pinsert; /* ;AN000; */ | ||
| 32 | |||
| 33 | extern unsigned char master_boot_record[2][512]; /* ;AN000; */ | ||
| 34 | extern unsigned char boot_record[512]; /* ;AN000; */ | ||
| 35 | |||
| 36 | extern FLAG next_letter; /* ;AN000; */ | ||
| 37 | extern FLAG primary_flag; /* ;AN000; */ | ||
| 38 | extern FLAG extended_flag; /* ;AN000; */ | ||
| 39 | extern FLAG logical_flag; /* ;AN000; */ | ||
| 40 | extern FLAG disk_flag; /* ;AN000; */ | ||
| 41 | extern unsigned primary_buff; /* ;AN000; */ | ||
| 42 | extern unsigned extended_buff; /* ;AN000; */ | ||
| 43 | extern unsigned logical_buff; /* ;AN000; */ | ||
| 44 | extern char cur_disk_buff; /* ;AN000; */ | ||
| 45 | extern unsigned long NOVAL; /* ;AN000; */ | ||
| 46 | extern char next_letter; /* ;AN000; */ | ||
| 47 | |||
| 48 | |||
| 49 | /* */ | ||
| 50 | /* */ | ||
| 51 | /****************************************************************************/ | ||
| 52 | /* Define Global structures */ | ||
| 53 | /****************************************************************************/ | ||
| 54 | /* */ | ||
| 55 | |||
| 56 | extern struct entry part_table[2][4]; /* ;AN000; */ | ||
| 57 | extern struct entry ext_table[2][24]; /* ;AN000; */ | ||
| 58 | extern struct freespace free_space[24]; /* ;AN000; */ | ||
| 59 | extern struct KeyData *input_data; /* ;AN000; */ | ||
| 60 | extern struct dx_buffer_ioctl dx_buff; /* ;AN000; */ | ||
| 61 | extern struct SREGS segregs; /* ;AN000; */ | ||
| 62 | extern struct subst_list sublist; /* ;AN000; */ | ||
| 63 | |||
| 64 | /* */ | ||
| 65 | /****************************************************************************/ | ||
| 66 | /* Define UNIONS */ | ||
| 67 | /****************************************************************************/ | ||
| 68 | /* */ | ||
| 69 | |||
| 70 | extern union REGS regs; /* ;AN000; */ | ||
| 71 | |||
| 72 | extern char *format_string; /* ;AN000; */ | ||
| 73 | extern char far *fat12_String; /* ;AN000; */ | ||
| 74 | extern char far *fat16_String; /* ;AN000; */ | ||
| 75 | extern char far *hilda_string; /* ;AN000; */ | ||
| 76 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/GEN_COMS.ASM b/v4.0/src/SELECT/GEN_COMS.ASM new file mode 100644 index 0000000..9655df9 --- /dev/null +++ b/v4.0/src/SELECT/GEN_COMS.ASM | |||
| @@ -0,0 +1,864 @@ | |||
| 1 | PAGE 55,132 ;AN000; | ||
| 2 | NAME SELECT ;AN000; | ||
| 3 | TITLE SELECT - SELECT.EXE ;AN000; | ||
| 4 | SUBTTL GEN_COMS ;AN000; | ||
| 5 | .ALPHA ;AN000; | ||
| 6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 7 | ; | ||
| 8 | ; GEN_COMS.ASM : Copyright 1988 Microsoft | ||
| 9 | ; | ||
| 10 | ; DATE: August 8/87 | ||
| 11 | ; | ||
| 12 | ; COMMENTS: Assemble with MASM 3.0 (using the -A option) | ||
| 13 | ; | ||
| 14 | ; Module contains code for : | ||
| 15 | ; - creation of AUTOEXEC file | ||
| 16 | ; - creation of CONFIG file | ||
| 17 | ; - creation of DOSSHELL.BAT | ||
| 18 | ; | ||
| 19 | ; CHANGE HISTORY: | ||
| 20 | ; | ||
| 21 | ; ;AN000; for DT | ||
| 22 | ; ;AN001; for PTM1181 GHG | ||
| 23 | ; | ||
| 24 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 25 | ; | ||
| 26 | ; DATA SEGMENT | ||
| 27 | ; | ||
| 28 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 29 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 30 | ; | ||
| 31 | SC_CD DW MC_CD ;AN000; | ||
| 32 | PC_CD DB '@CD ' ;AN000; | ||
| 33 | MC_CD EQU $ - PC_CD ;AN000; | ||
| 34 | ; | ||
| 35 | SC_BREAK DW MC_BREAK ;AN000; | ||
| 36 | PC_BREAK DB 'BREAK=' ;AN000; | ||
| 37 | MC_BREAK EQU $ - PC_BREAK ;AN000; | ||
| 38 | ; | ||
| 39 | SC_CPSW DW MC_CPSW ;AN000; | ||
| 40 | PC_CPSW DB 'CPSW=' ;AN000; | ||
| 41 | MC_CPSW EQU $ - PC_CPSW ;AN000; | ||
| 42 | ; | ||
| 43 | SC_VERIFY DW MC_VERIFY ;AN000; | ||
| 44 | PC_VERIFY DB 'VERIFY ' ;AN000; | ||
| 45 | MC_VERIFY EQU $ - PC_VERIFY ;AN000; | ||
| 46 | ; | ||
| 47 | SC_COUNTRY DW MC_COUNTRY ;AN000; | ||
| 48 | PC_COUNTRY DB 'COUNTRY=' ;AN000; | ||
| 49 | MC_COUNTRY EQU $ - PC_COUNTRY ;AN000; | ||
| 50 | ; | ||
| 51 | SC_COUNTRY_SYS DW MC_COUNTRY_SYS ;AN000; | ||
| 52 | PC_COUNTRY_SYS DB 'COUNTRY.SYS' ;AN000; | ||
| 53 | MC_COUNTRY_SYS EQU $ - PC_COUNTRY_SYS ;AN000; | ||
| 54 | ; | ||
| 55 | SC_BUFFERS DW MC_BUFFERS ;AN000; | ||
| 56 | PC_BUFFERS DB 'BUFFERS=' ;AN000; | ||
| 57 | MC_BUFFERS EQU $ - PC_BUFFERS ;AN000; | ||
| 58 | ; | ||
| 59 | SC_SLASH_X DW MC_SLASH_X ;AC046;SEH changed from /E | ||
| 60 | PC_SLASH_X DB ' /X' ;AC046;SEH | ||
| 61 | MC_SLASH_X EQU $ - PC_SLASH_X ;AC046;SEH | ||
| 62 | ; | ||
| 63 | SC_FCBS DW MC_FCBS ;AN000; | ||
| 64 | PC_FCBS DB 'FCBS=' ;AN000; | ||
| 65 | MC_FCBS EQU $ - PC_FCBS ;AN000; | ||
| 66 | ; | ||
| 67 | SC_FILES DW MC_FILES ;AN000; | ||
| 68 | PC_FILES DB 'FILES=' ;AN000; | ||
| 69 | MC_FILES EQU $ - PC_FILES ;AN000; | ||
| 70 | ; | ||
| 71 | SC_LASTDRIVE DW MC_LASTDRIVE ;AN000; | ||
| 72 | PC_LASTDRIVE DB 'LASTDRIVE=' ;AN000; | ||
| 73 | MC_LASTDRIVE EQU $ - PC_LASTDRIVE ;AN000; | ||
| 74 | ; | ||
| 75 | SC_STACKS DW MC_STACKS ;AN000; | ||
| 76 | PC_STACKS DB 'STACKS=' ;AN000; | ||
| 77 | MC_STACKS EQU $ - PC_STACKS ;AN000; | ||
| 78 | ; | ||
| 79 | SC_SHELL DW MC_SHELL ;AN000; | ||
| 80 | PC_SHELL DB 'SHELL=' ;AN000; | ||
| 81 | MC_SHELL EQU $ - PC_SHELL ;AN000; | ||
| 82 | ; | ||
| 83 | SC_SHELL_1 DW MC_SHELL_1 ;AN000; | ||
| 84 | PC_SHELL_1 DB 'COMMAND.COM' ;AC037; SEH Split the original SC_SHELL_1 into | ||
| 85 | MC_SHELL_1 EQU $ - PC_SHELL_1 ;AC037; SEH 3 parts | ||
| 86 | ; | ||
| 87 | SC_SHELL_2 DW MC_SHELL_2 ;AN037; SEH Used for diskettes only | ||
| 88 | PC_SHELL_2 DB ' /MSG' ;AN037; SEH | ||
| 89 | MC_SHELL_2 EQU $ - PC_SHELL_2 ;AN037; SEH | ||
| 90 | ; | ||
| 91 | SC_SHELL_3 DW MC_SHELL_3 ;AN037; SEH Use for diskettes and hardfile | ||
| 92 | PC_SHELL_3 DB ' /P /E:256 ' ;AN037; SEH Two spaces required for CR and LF | ||
| 93 | MC_SHELL_3 EQU $ - PC_SHELL_3 - 2 ;AN037; SEH | ||
| 94 | ; | ||
| 95 | SC_DEVICE DW MC_DEVICE ;AN000; | ||
| 96 | PC_DEVICE DB 'DEVICE=' ;AN000; | ||
| 97 | MC_DEVICE EQU $ - PC_DEVICE ;AN000; | ||
| 98 | ; | ||
| 99 | SC_XMAEM_SYS DW MC_XMAEM_SYS ;AN000; | ||
| 100 | PC_XMAEM_SYS DB 'XMAEM.SYS ' ;AN000; | ||
| 101 | MC_XMAEM_SYS EQU $ - PC_XMAEM_SYS ;AN000; | ||
| 102 | ; | ||
| 103 | SC_XMA2EMS_SYS DW MC_XMA2EMS_SYS ;AN000; | ||
| 104 | PC_XMA2EMS_SYS DB 'XMA2EMS.SYS ' ;AN000; | ||
| 105 | MC_XMA2EMS_SYS EQU $ - PC_XMA2EMS_SYS ;AN000; | ||
| 106 | ; | ||
| 107 | SC_ANSI_SYS DW MC_ANSI_SYS ;AN000; | ||
| 108 | PC_ANSI_SYS DB 'ANSI.SYS ' ;AN000; | ||
| 109 | MC_ANSI_SYS EQU $ - PC_ANSI_SYS ;AN000; | ||
| 110 | ; | ||
| 111 | SC_VDISK_SYS DW MC_VDISK_SYS ;AN000; | ||
| 112 | PC_VDISK_SYS DB 'RAMDRIVE.SYS ' ;AN000; | ||
| 113 | MC_VDISK_SYS EQU $ - PC_VDISK_SYS ;AN000; | ||
| 114 | ; | ||
| 115 | SC_DISPLAY_SYS DW MC_DISPLAY_SYS ;AN000; | ||
| 116 | PC_DISPLAY_SYS DB 'DISPLAY.SYS CON=(' ;AN000; | ||
| 117 | MC_DISPLAY_SYS EQU $ - PC_DISPLAY_SYS ;AN000; | ||
| 118 | ; | ||
| 119 | PUBLIC SC_DISPLAY_EGA ;AN000; | ||
| 120 | SC_DISPLAY_EGA DW MC_DISPLAY_EGA ;AN000; | ||
| 121 | PC_DISPLAY_EGA DB 'EGA.CPI)' ;AN000; | ||
| 122 | MC_DISPLAY_EGA EQU $ - PC_DISPLAY_EGA ;AN000; | ||
| 123 | ; | ||
| 124 | PUBLIC SD_DISPLAY_EGA ;AN001;GHG | ||
| 125 | SD_DISPLAY_EGA DW MD_DISPLAY_EGA ;AN001;GHG | ||
| 126 | PD_DISPLAY_EGA DB 'EGA' ;AN001;GHG | ||
| 127 | MD_DISPLAY_EGA EQU $ - PD_DISPLAY_EGA ;AN001;GHG | ||
| 128 | ; | ||
| 129 | PUBLIC SC_DISPLAY_LCD ;AN000; | ||
| 130 | SC_DISPLAY_LCD DW MC_DISPLAY_LCD ;AN000; | ||
| 131 | PC_DISPLAY_LCD DB 'LCD.CPI)' ;AN000; | ||
| 132 | MC_DISPLAY_LCD EQU $ - PC_DISPLAY_LCD ;AN000; | ||
| 133 | ; | ||
| 134 | PUBLIC SD_DISPLAY_LCD ;AN001;GHG | ||
| 135 | SD_DISPLAY_LCD DW MD_DISPLAY_LCD ;AN001;GHG | ||
| 136 | PD_DISPLAY_LCD DB 'LCD' ;AN001;GHG | ||
| 137 | MD_DISPLAY_LCD EQU $ - PD_DISPLAY_LCD ;AN001;GHG | ||
| 138 | ; | ||
| 139 | SC_PRINTER_SYS DW MC_PRINTER_SYS ;AN000; | ||
| 140 | PC_PRINTER_SYS DB 'PRINTER.SYS ' ;AN000; | ||
| 141 | MC_PRINTER_SYS EQU $ - PC_PRINTER_SYS ;AN000; | ||
| 142 | ; | ||
| 143 | SC_LPT DW MC_LPT ;AN000; | ||
| 144 | PC_LPT DB 'LPT' ;AN000; | ||
| 145 | MC_LPT EQU $ - PC_LPT ;AN000; | ||
| 146 | ; | ||
| 147 | SC_COM DW MC_COM ;AN011; SEH | ||
| 148 | PC_COM DB 'COM' ;AN011; SEH | ||
| 149 | MC_COM EQU $ - PC_COM ;AN011; SEH | ||
| 150 | ; | ||
| 151 | SC_EQUAL_OPEN DW MC_EQUAL_OPEN ;AN000; | ||
| 152 | PC_EQUAL_OPEN DB '=(' ;AN000; | ||
| 153 | MC_EQUAL_OPEN EQU $ - PC_EQUAL_OPEN ;AN000; | ||
| 154 | ; | ||
| 155 | SC_437 DW MC_437 ;AN000; | ||
| 156 | PC_437 DB ',437,' ;AN000; | ||
| 157 | MC_437 EQU $ - PC_437 ;AN000; | ||
| 158 | ; | ||
| 159 | SC_COMMA DW MC_COMMA ;AN000; | ||
| 160 | PC_COMMA DB ',' ;AN000; | ||
| 161 | MC_COMMA EQU $ - PC_COMMA ;AN000; | ||
| 162 | ; | ||
| 163 | SC_INSTALL DW MC_INSTALL ;AN000; | ||
| 164 | PC_INSTALL DB 'INSTALL=' ;AN000; | ||
| 165 | MC_INSTALL EQU $ - PC_INSTALL ;AN000; | ||
| 166 | ; | ||
| 167 | SC_KEYB_C DW MC_KEYB_C ;AN000; | ||
| 168 | PC_KEYB_C DB 'KEYB.COM ' ;AN000; | ||
| 169 | MC_KEYB_C EQU $ - PC_KEYB_C ;AN000; | ||
| 170 | ; | ||
| 171 | SC_KEYBOARD_SYS DW MC_KEYBOARD_SYS ;AN000; | ||
| 172 | PC_KEYBOARD_SYS DB 'KEYBOARD.SYS' ;AN000; | ||
| 173 | MC_KEYBOARD_SYS EQU $ - PC_KEYBOARD_SYS ;AN000; | ||
| 174 | ; | ||
| 175 | SC_KEYB_SWITCH DW MC_KEYB_SWITCH ;AN002;JW | ||
| 176 | PC_KEYB_SWITCH DB ' /ID:' ;AN002;JW | ||
| 177 | MC_KEYB_SWITCH EQU $ - PC_KEYB_SWITCH ;AN002;JW | ||
| 178 | ; | ||
| 179 | SC_SHARE DW MC_SHARE ;AN000; | ||
| 180 | PC_SHARE DB 'SHARE.EXE ' ;AN000; | ||
| 181 | MC_SHARE EQU $ - PC_SHARE ;AN000; | ||
| 182 | ; | ||
| 183 | SC_FASTOPEN DW MC_FASTOPEN ;AN000; | ||
| 184 | PC_FASTOPEN DB 'FASTOPEN.EXE ' ;AN000; | ||
| 185 | MC_FASTOPEN EQU $ - PC_FASTOPEN ;AN000; | ||
| 186 | ; | ||
| 187 | SC_NLSFUNC DW MC_NLSFUNC ;AN000; | ||
| 188 | PC_NLSFUNC DB 'NLSFUNC.EXE ' ;AN000; | ||
| 189 | MC_NLSFUNC EQU $ - PC_NLSFUNC ;AN000; | ||
| 190 | ; | ||
| 191 | SC_ECHO DW MC_ECHO ;AN000; | ||
| 192 | PC_ECHO DB '@ECHO OFF ' ;AN000; TWO SPACES REQUIRED FOR CR,LF | ||
| 193 | MC_ECHO EQU $ - PC_ECHO - 2 ;AN000; | ||
| 194 | ; | ||
| 195 | SC_PATH DW MC_PATH ;AN000; | ||
| 196 | PC_PATH DB 'PATH ' ;AN000; | ||
| 197 | MC_PATH EQU $ - PC_PATH ;AN000; | ||
| 198 | ; | ||
| 199 | SC_APPEND DW MC_APPEND ;AN000; | ||
| 200 | PC_APPEND DB 'APPEND ' ;AN000; | ||
| 201 | MC_APPEND EQU $ - PC_APPEND ;AN000; | ||
| 202 | ; | ||
| 203 | SC_PROMPT DW MC_PROMPT ;AN000; | ||
| 204 | PC_PROMPT DB 'PROMPT ' ;AN000; | ||
| 205 | MC_PROMPT EQU $ - PC_PROMPT ;AN000; | ||
| 206 | ; | ||
| 207 | SC_SET_COMSPEC DW MC_SET_COMSPEC ;AN000; | ||
| 208 | PC_SET_COMSPEC DB 'SET COMSPEC=' ;AN000; | ||
| 209 | MC_SET_COMSPEC EQU $ - PC_SET_COMSPEC ;AN000; | ||
| 210 | ; | ||
| 211 | SC_COMMAND_COM DW MC_COMMAND_COM ;AN000; | ||
| 212 | PC_COMMAND_COM DB 'COMMAND.COM' ;AN000; | ||
| 213 | MC_COMMAND_COM EQU $ - PC_COMMAND_COM ;AN000; | ||
| 214 | ; | ||
| 215 | SC_GRAPHICS DW MC_GRAPHICS ;AN000; | ||
| 216 | PC_GRAPHICS DB 'GRAPHICS ' ;AN000; | ||
| 217 | MC_GRAPHICS EQU $ - PC_GRAPHICS ;AN000; | ||
| 218 | ; | ||
| 219 | SC_GRAFTABL DW MC_GRAFTABL ;AN000; | ||
| 220 | PC_GRAFTABL DB 'GRAFTABL ' ;AN000; | ||
| 221 | MC_GRAFTABL EQU $ - PC_GRAFTABL ;AN000; | ||
| 222 | ; | ||
| 223 | ;SC_DATE DW MC_DATE ; | ||
| 224 | ;PC_DATE DB 'DATE ' ; TWO SPACES REQUIRED FOR CR,LF | ||
| 225 | ;MC_DATE EQU $ - PC_DATE - 2 ; | ||
| 226 | ; | ||
| 227 | ;SC_TIME DW MC_TIME ; | ||
| 228 | ;PC_TIME DB 'TIME ' ; TWO SPACES REQUIRED FOR CR,LF | ||
| 229 | ;MC_TIME EQU $ - PC_TIME - 2 ; | ||
| 230 | ; | ||
| 231 | SC_VER DW MC_VER ;AN000; | ||
| 232 | PC_VER DB 'VER ' ;AN000; TWO SPACES REQUIRED FOR CR,LF | ||
| 233 | MC_VER EQU $ - PC_VER - 2 ;AN000; | ||
| 234 | ; | ||
| 235 | SC_MODE_CON DW MC_MODE_CON ;AN000; | ||
| 236 | PC_MODE_CON DB 'MODE CON CP PREP=((' ;AN000; | ||
| 237 | MC_MODE_CON EQU $ - PC_MODE_CON ;AN000; | ||
| 238 | ; | ||
| 239 | SC_MODE_COM DW MC_MODE_COM ;AN000; | ||
| 240 | PC_MODE_COM DB 'MODE COM' ;AN000; | ||
| 241 | MC_MODE_COM EQU $ - PC_MODE_COM ;AN000; | ||
| 242 | ; | ||
| 243 | SC_MODE_LPT DW MC_MODE_LPT ;AN000; | ||
| 244 | PC_MODE_LPT DB 'MODE LPT' ;AN000; | ||
| 245 | MC_MODE_LPT EQU $ - PC_MODE_LPT ;AN000; | ||
| 246 | ; | ||
| 247 | SC_EQUAL_COM DW MC_EQUAL_COM ;AN000; | ||
| 248 | PC_EQUAL_COM DB '=COM' ;AN000; | ||
| 249 | MC_EQUAL_COM EQU $ - PC_EQUAL_COM ;AN000; | ||
| 250 | ; | ||
| 251 | SC_PREPARE DW MC_PREPARE ;AN000; | ||
| 252 | PC_PREPARE DB ' CP PREP=((' ;AN000; | ||
| 253 | MC_PREPARE EQU $ - PC_PREPARE ;AN000; | ||
| 254 | ; | ||
| 255 | SC_CLOSE_BRAC DW MC_CLOSE_BRAC ;AN000; | ||
| 256 | PC_CLOSE_BRAC DB ') ' ;AN000; | ||
| 257 | MC_CLOSE_BRAC EQU $ - PC_CLOSE_BRAC ;AN000; | ||
| 258 | ; | ||
| 259 | SC_KEYB_A DW MC_KEYB_A ;AN000; | ||
| 260 | PC_KEYB_A DB 'KEYB ' ;AN000; | ||
| 261 | MC_KEYB_A EQU $ - PC_KEYB_A ;AN000; | ||
| 262 | ; | ||
| 263 | SC_COMMAS DW MC_COMMAS ;AN000; | ||
| 264 | PC_COMMAS DB ',,' ;AN000; | ||
| 265 | MC_COMMAS EQU $ - PC_COMMAS ;AN000; | ||
| 266 | ; | ||
| 267 | SC_CHCP DW MC_CHCP ;AN000; | ||
| 268 | PC_CHCP DB 'CHCP ' ;AN000; | ||
| 269 | MC_CHCP EQU $ - PC_CHCP ;AN000; | ||
| 270 | ; | ||
| 271 | SC_DRIVE_C DW MC_DRIVE_C ;AN013;JW | ||
| 272 | PC_DRIVE_C DB '@C: ' ;AN013;JW | ||
| 273 | MC_DRIVE_C EQU $ - PC_DRIVE_C - 2 ;AN013;JW | ||
| 274 | ; | ||
| 275 | SC_SHELLC_1 DW MC_SHELLC_1 ;AN000; | ||
| 276 | PC_SHELLC_1 DB '@SHELLB DOSSHELL',E_CR,E_LF ;AC019;SEH | ||
| 277 | DB '@IF ERRORLEVEL 255 GOTO END',E_CR,E_LF ;AN000; | ||
| 278 | DB ':COMMON ' ;AN000; | ||
| 279 | MC_SHELLC_1 EQU $ - PC_SHELLC_1 - 2 ;AN000; 2 SPACES FOR ASCII-Z CONVERSION | ||
| 280 | ; | ||
| 281 | SC_SHELLC_2 DW MC_SHELLC_2 ;AN000; | ||
| 282 | PC_SHELLC_2 DB ':END ' ;AN000; | ||
| 283 | MC_SHELLC_2 EQU $ - PC_SHELLC_2 - 2 ;AN000; | ||
| 284 | ; | ||
| 285 | SC_SHELLC DW MC_SHELLC ;AN000; | ||
| 286 | PC_SHELLC DB '@SHELLC ' ;AN000; | ||
| 287 | MC_SHELLC EQU $ - PC_SHELLC ;AN000; | ||
| 288 | ; | ||
| 289 | SC_SHELLP DW MC_SHELLP ;AN000; | ||
| 290 | PC_SHELLP DB 'DOSSHELL ' ;AC019;SEH | ||
| 291 | MC_SHELLP EQU $ - PC_SHELLP - 2 ;AN000; | ||
| 292 | ; | ||
| 293 | SC_PRINT_COM DW MC_PRINT_COM ;AN000; | ||
| 294 | PC_PRINT_COM DB 'PRINT /D:' ;AC011; SEH | ||
| 295 | MC_PRINT_COM EQU $ - PC_PRINT_COM ;AN011; SEH | ||
| 296 | ; | ||
| 297 | SC_AT_SIGN DW MC_AT_SIGN ;AN000; | ||
| 298 | PC_AT_SIGN DB '@' ;AN000; | ||
| 299 | MC_AT_SIGN EQU $ - PC_AT_SIGN ;AN000; | ||
| 300 | ; | ||
| 301 | S_DOS_PATH DW M_DOS_PATH ;AN000; | ||
| 302 | P_DOS_PATH DB 50 DUP(?) ;AN000; | ||
| 303 | M_DOS_PATH EQU $ - P_DOS_PATH ;AN000; | ||
| 304 | ; | ||
| 305 | DATA ENDS ;AN000;DATA | ||
| 306 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 307 | ; | ||
| 308 | ; | ||
| 309 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 310 | INCLUDE EXT.INC ;AN000; | ||
| 311 | INCLUDE STRUC.INC ;AN000; | ||
| 312 | INCLUDE MACROS.INC ;AN000; | ||
| 313 | INCLUDE ROUT_EXT.INC ;AN000; | ||
| 314 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 315 | ; | ||
| 316 | ; | ||
| 317 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 318 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000;segment for far routine | ||
| 319 | ASSUME CS:SELECT,DS:DATA ;AN000; | ||
| 320 | ; | ||
| 321 | PUBLIC CREATE_CONFIG_SYS ;AN000; | ||
| 322 | PUBLIC CREATE_AUTOEXEC_BAT ;AN000; | ||
| 323 | PUBLIC CREATE_SHELL_BAT ;AN000; | ||
| 324 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 325 | ; | ||
| 326 | ; Create AUTOEXEC.BAT file | ||
| 327 | ; | ||
| 328 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 329 | CREATE_AUTOEXEC_BAT PROC ;AN000; | ||
| 330 | ; | ||
| 331 | ;;;install to B:, install path = null ; | ||
| 332 | ;;;install to root of C:, install path = c:\ ; | ||
| 333 | ;;;install to directory in C:, install path = c:\path\ ; | ||
| 334 | .IF < I_DEST_DRIVE eq E_DEST_DRIVE_B > ;AN000; if install to drive B: | ||
| 335 | .THEN ;AN000; | ||
| 336 | INIT_VAR S_DOS_PATH,0 ;AN000; set path = null | ||
| 337 | .ELSE ;AN000; else | ||
| 338 | COPY_STRING S_DOS_PATH,M_DOS_PATH,S_INSTALL_PATH;AN000;set path = user defined path | ||
| 339 | .IF < S_DOS_PATH gt M_DEST_DRIVE > ;AN000; if install is not to root of drive C: | ||
| 340 | .THEN ;AN000; | ||
| 341 | APPEND_STRING S_DOS_PATH,M_DOS_PATH,S_SLASH ;AN000; append back slash | ||
| 342 | .ENDIF ;AN000; | ||
| 343 | .ENDIF ;AN000; | ||
| 344 | ; | ||
| 345 | ;;;write @ECHO OFF ; | ||
| 346 | WRITE_LINE SC_ECHO ;AN000; write ECHO OFF command | ||
| 347 | ; | ||
| 348 | ;;;write SET COMSPEC=<path>\COMMAND.COM ; | ||
| 349 | .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C > ;AC043;SEH COMSPEC formerly after PROMPT ;AN111; if install destination is drive B: or A: JW | ||
| 350 | MERGE_STRING SC_LINE,MC_LINE,SC_SET_COMSPEC,S_DRIVE_A ;AC043;SEH ;AN000;JW | ||
| 351 | .ELSE ;AC043;SEH ;AN000;JW | ||
| 352 | MERGE_STRING SC_LINE,MC_LINE,SC_SET_COMSPEC,S_DOS_PATH ;AC043;SEH ;AN000;JW | ||
| 353 | .ENDIF ;AC043;SEH ;AN000;JW | ||
| 354 | APPEND_STRING SC_LINE,MC_LINE, SC_COMMAND_COM ;AC043;SEH ;AN000; | ||
| 355 | WRITE_LINE SC_LINE ;AC043;SEH ;AN000; write SET COMSPEC command | ||
| 356 | ; | ||
| 357 | ;;;write VERIFY <parameter> ; | ||
| 358 | .IF < S_VERIFY gt 0 > ;AN000; if field length > zero | ||
| 359 | .THEN ;AN000; | ||
| 360 | MERGE_STRING SC_LINE,MC_LINE,SC_VERIFY,S_VERIFY;AN000; | ||
| 361 | WRITE_LINE SC_LINE ;AN000; write VERIFY command | ||
| 362 | .ENDIF ;AN000; | ||
| 363 | ; | ||
| 364 | ;;;write PATH <parameter> ; | ||
| 365 | .IF < F_PATH eq E_PATH_YES > and ;AN000; if PATH command required | ||
| 366 | .IF < S_PATH gt 0 > ;AN000; and field length > zero | ||
| 367 | .THEN ;AN000; | ||
| 368 | MERGE_STRING SC_LINE,MC_LINE,SC_PATH, S_PATH ;AN000; | ||
| 369 | WRITE_LINE SC_LINE ;AN000; write PATH command | ||
| 370 | .ENDIF ;AN000; | ||
| 371 | ; | ||
| 372 | ;;;write APPEND <parameter> ;AN000;JW | ||
| 373 | ;;;write APPEND <path> ; | ||
| 374 | .IF < F_APPEND eq E_APPEND_YES > ;AN000; if APPEND command required | ||
| 375 | .IF < S_APPEND_P gt 0 > ;AN000; and field length > zero JW | ||
| 376 | .THEN ;AN000; JW | ||
| 377 | MERGE_STRING SC_LINE,MC_LINE,SC_APPEND,S_APPEND_P ;AN000;JW | ||
| 378 | WRITE_LINE SC_LINE ;AN000; write APPEND command JW | ||
| 379 | .ENDIF ;AN000; JW | ||
| 380 | .IF < S_APPEND gt 0 > ;AN000; and field length > zero | ||
| 381 | .THEN ;AN000; | ||
| 382 | MERGE_STRING SC_LINE,MC_LINE,SC_APPEND,S_APPEND;AN000; | ||
| 383 | WRITE_LINE SC_LINE ;AN000; write APPEND command | ||
| 384 | .ENDIF ;AN000; | ||
| 385 | .ENDIF ;AN000;JW | ||
| 386 | ; | ||
| 387 | ;;;write PROMPT <parameter> ; | ||
| 388 | .IF < F_PROMPT eq E_PROMPT_YES > and ;AN000; if PROMPT command required | ||
| 389 | .IF < S_PROMPT gt 0 > ;AN000; and field length > zero | ||
| 390 | .THEN ;AN000; | ||
| 391 | MERGE_STRING SC_LINE,MC_LINE,SC_PROMPT,S_PROMPT;AN000; | ||
| 392 | WRITE_LINE SC_LINE ;AN000; write PROMPT command | ||
| 393 | .ENDIF ;AN000; | ||
| 394 | ; | ||
| 395 | ;;;write <path>\GRAPHICS <parameter> ; | ||
| 396 | .IF < F_GRAPHICS eq E_GRAPHICS_YES > ;AN000; if GRAPHICS command is to be included | ||
| 397 | .THEN ;AN000; | ||
| 398 | MERGE_STRING SC_LINE,MC_LINE,S_DOS_PATH,SC_GRAPHICS;AN000; | ||
| 399 | APPEND_STRING SC_LINE, MC_LINE, S_GRAPHICS ;AN000; | ||
| 400 | WRITE_LINE SC_LINE ;AN000; write GRAPHICS command | ||
| 401 | .ENDIF ;AN000; | ||
| 402 | ; | ||
| 403 | ;;;init S_STR120_1 to primary code page ; | ||
| 404 | ;;;init S_STR120_2 to secondary code page ; | ||
| 405 | WORD_TO_CHAR N_CP_PRI, S_STR120_1 ;AN000; primary code page in ASCII-N format | ||
| 406 | WORD_TO_CHAR N_CP_SEC, S_STR120_2 ;AN000; secondary code page in ASCII-N format | ||
| 407 | ; | ||
| 408 | ;;;write <path>\GRAFTABL <primary code page> ; | ||
| 409 | .IF < F_GRAFTABL eq E_GRAFTABL_YES > ;AN000; if GRAFTABL command required | ||
| 410 | .THEN ;AN000; | ||
| 411 | MERGE_STRING SC_LINE,MC_LINE,S_DOS_PATH,SC_GRAFTABL;AN000; | ||
| 412 | APPEND_STRING SC_LINE, MC_LINE, S_STR120_1 ;AN000; | ||
| 413 | WRITE_LINE SC_LINE ;AN000; write GRAFTABL command | ||
| 414 | .ENDIF ;AN000; | ||
| 415 | ; | ||
| 416 | ;;;write VER ; | ||
| 417 | WRITE_LINE SC_VER ;AN000; write VER command | ||
| 418 | ; | ||
| 419 | ;;;S_STR120_1 = primary code page ; | ||
| 420 | ;;;S_STR120_2 = secondary code apge ; | ||
| 421 | ;;;init S_STR120_3 to code page list ; | ||
| 422 | INIT_VAR S_STR120_3, 0 ;AN000; | ||
| 423 | .IF < N_CP_PRI eq 0 > or ;AN000; if primary code page is 0 or 437 | ||
| 424 | .IF < N_CP_PRI eq 437 > ;AN000; | ||
| 425 | .THEN ;AN000; no action | ||
| 426 | .ELSE ;AN000; else | ||
| 427 | APPEND_STRING S_STR120_3,M_STR120_3,S_STR120_1;AN000; append code page to cp list | ||
| 428 | .ENDIF ;AN000; | ||
| 429 | ; | ||
| 430 | .IF < N_CP_SEC eq 0 > or ;AN000; if secondary code page is 0 or 437 | ||
| 431 | .IF < N_CP_SEC eq 437 > ;AN000; | ||
| 432 | .THEN ;AN000; no action | ||
| 433 | .ELSE ;AN000; else | ||
| 434 | .IF < S_STR120_3 ne 0 > ;AN000; if primary code page is in cp list | ||
| 435 | .THEN ;AN000; | ||
| 436 | APPEND_STRING S_STR120_3, M_STR120_3, S_SPACE ;AN000; append space to cp list | ||
| 437 | .ENDIF ;AN000; | ||
| 438 | APPEND_STRING S_STR120_3,M_STR120_3,S_STR120_2;AN000; append code page to cp list | ||
| 439 | .ENDIF ;AN000; | ||
| 440 | ; | ||
| 441 | ;;;S_STR120_3 = code page list ; | ||
| 442 | ;;;write MODE CON CODEPAGE PREPARE ((<cp list>) <path>\<display>.CPI | ||
| 443 | .IF < F_CPSW eq E_CPSW_YES > near ;AN000; if code page switching required | ||
| 444 | .THEN ;AN000; | ||
| 445 | .IF < S_STR120_3 ne 0 > near ;AN000; if primary/secondary code pages are not 0 or 437 | ||
| 446 | .THEN ;AN000; | ||
| 447 | MERGE_STRING SC_LINE,MC_LINE,SC_MODE_CON,S_STR120_3;AN000; | ||
| 448 | APPEND_STRING SC_LINE, MC_LINE, SC_CLOSE_BRAC ;AN000; append close bracket | ||
| 449 | APPEND_STRING SC_LINE, MC_LINE,S_DOS_PATH ;AN000; append path | ||
| 450 | .IF < ACTIVE eq EGA > or ;AN000; if EGA adaptor | ||
| 451 | .IF < ALTERNATE eq EGA > ;AN000; | ||
| 452 | .THEN ;AN000; | ||
| 453 | APPEND_STRING SC_LINE, MC_LINE, SC_DISPLAY_EGA;AN000; append EGA.CPI) | ||
| 454 | .ELSEIF < ACTIVE eq LCD > or ;AN000; if LCD adaptor | ||
| 455 | .IF < ALTERNATE eq LCD > ;AN000; | ||
| 456 | .THEN ;AN000; | ||
| 457 | APPEND_STRING SC_LINE, MC_LINE, SC_DISPLAY_LCD;AN000; append LCD.CPI) | ||
| 458 | .ENDIF ;AN000; | ||
| 459 | WRITE_LINE SC_LINE ;AN000; write MODE CON CODEPAGE command | ||
| 460 | .ENDIF ;AN000; | ||
| 461 | .ENDIF ;AN000; | ||
| 462 | ; | ||
| 463 | ;;;S_STR120_3 = cp list ; | ||
| 464 | ;;;write MODE LPT1 CODEPAGE PREPARE=((<cp list>) <path>\<cp paramaeters.CPI>) | ||
| 465 | ;;;write MODE LPT2 CODEPAGE PREPARE=((<cp list>) <path>\<cp paramaeters.CPI>) | ||
| 466 | ;;;write MODE LPT3 CODEPAGE PREPARE=((<cp list>) <path>\<cp paramaeters.CPI>) | ||
| 467 | ;;;N_WORD_1 = parallel port number ; | ||
| 468 | INIT_VAR N_WORD_1, 1 ;AN000; set port number = 1 | ||
| 469 | .IF < F_CPSW eq E_CPSW_YES > near ;AN000; if code page switching required | ||
| 470 | .THEN ;AN000; | ||
| 471 | .REPEAT ;AN000; repeat code block | ||
| 472 | GET_PRINTER_PARAMS 0, N_WORD_1, N_RETCODE ;AN000; get printer parameters | ||
| 473 | .IF < N_RETCODE eq 1 > and near ;AN000; if valid return | ||
| 474 | .IF < N_PRINTER_TYPE eq E_PARALLEL > and near ;AN000; and parallel printer | ||
| 475 | .IF < S_CP_DRIVER gt 0 > and near ;AN000; and driver and prepare | ||
| 476 | .IF < S_CP_PREPARE gt 0 > near ;AN000; parameters valid | ||
| 477 | .THEN ;AN000; | ||
| 478 | COPY_STRING SC_LINE, MC_LINE, SC_MODE_LPT ;AN000; append MODE LPT | ||
| 479 | WORD_TO_CHAR N_WORD_1, S_STR120_2 ;AN000; | ||
| 480 | APPEND_STRING SC_LINE, MC_LINE, S_STR120_2 ;AN000; append lpt number | ||
| 481 | APPEND_STRING SC_LINE, MC_LINE, SC_PREPARE ;AN000; append CODEPAGE PREPARE | ||
| 482 | APPEND_STRING SC_LINE, MC_LINE, S_STR120_3 ;AN000; append cp list | ||
| 483 | APPEND_STRING SC_LINE, MC_LINE, SC_CLOSE_BRAC ;AN000; append close bracket | ||
| 484 | APPEND_STRING SC_LINE, MC_LINE, S_DOS_PATH ;AN000; append path | ||
| 485 | APPEND_STRING SC_LINE, MC_LINE, S_CP_PREPARE ;AN000; append driver parameters | ||
| 486 | APPEND_STRING SC_LINE, MC_LINE, SC_CLOSE_BRAC ;AN000; append close bracket | ||
| 487 | WRITE_LINE SC_LINE ;AN000; write PRINTER.SYS command | ||
| 488 | .ENDIF ;AN000; | ||
| 489 | INC_VAR N_WORD_1 ;AN000; inc printer number | ||
| 490 | .UNTIL < N_WORD_1 gt 3 > near ;AN000; end of repeat block | ||
| 491 | .ENDIF ;AN000; | ||
| 492 | ; | ||
| 493 | ;;;write serial printer parameters and redirection command | ||
| 494 | ;;;write MODE COMx:<parameter> ; | ||
| 495 | ;;;write MODE LPTy=COMx ; | ||
| 496 | ;;;N_WORD_1 = serial port number ; | ||
| 497 | INIT_VAR N_WORD_1, 4 ;AN000; set port number = 4 | ||
| 498 | INIT_VAR N_WORD_2, 1 ;AN000; set serial port number = 1 | ||
| 499 | .REPEAT ;AN000; repeat code block | ||
| 500 | GET_PRINTER_PARAMS 0, N_WORD_1, N_RETCODE ;AN000; get printer parameters | ||
| 501 | .IF < N_RETCODE eq 1 > and near ;AN000; if valid return | ||
| 502 | .IF < N_PRINTER_TYPE eq E_SERIAL > and near ;AN000; and serial printer | ||
| 503 | .IF < S_MODE_PARM gt 0 > near ;AN000; and mode parameters present | ||
| 504 | .THEN ;AN000; | ||
| 505 | COPY_STRING SC_LINE, MC_LINE, SC_MODE_COM ;AN000; append MODE COM | ||
| 506 | WORD_TO_CHAR N_WORD_2, S_STR120_3 ;AN000; S_STR120_3 = serial port number | ||
| 507 | APPEND_STRING SC_LINE, MC_LINE, S_STR120_3 ;AN000; append serial port number | ||
| 508 | APPEND_STRING SC_LINE, MC_LINE, S_COLON ;AN000; append colon | ||
| 509 | APPEND_STRING SC_LINE, MC_LINE, S_MODE_PARM ;AN000; append mode parameters | ||
| 510 | WRITE_LINE SC_LINE ;AN000; write MODE COMx command | ||
| 511 | .IF < I_REDIRECT gt 1 > ;AN000; if printer redirection | ||
| 512 | .THEN ;AN000; | ||
| 513 | COPY_STRING SC_LINE,MC_LINE,SC_MODE_LPT ;AN000; append MODE LPT | ||
| 514 | DEC_VAR I_REDIRECT ;AN000; first item in list is 'None' | ||
| 515 | WORD_TO_CHAR I_REDIRECT, S_STR120_2 ;AN000; convert LPT no to chars | ||
| 516 | APPEND_STRING SC_LINE,MC_LINE,S_STR120_2 ;AN000; append parallel port | ||
| 517 | APPEND_STRING SC_LINE,MC_LINE,SC_EQUAL_COM ;AN000; append =COM | ||
| 518 | APPEND_STRING SC_LINE,MC_LINE,S_STR120_3 ;AN000; append serial port number | ||
| 519 | WRITE_LINE SC_LINE ;AN000; write MODE LPTx=COMy command | ||
| 520 | .ENDIF ;AN000; | ||
| 521 | .ENDIF ;AN000; | ||
| 522 | INC_VAR N_WORD_1 ;AN000; inc printer number | ||
| 523 | INC_VAR N_WORD_2 ;AN000; inc serial port number | ||
| 524 | .UNTIL < N_WORD_1 gt 7 > near ;AN000; end of repeat block | ||
| 525 | ; | ||
| 526 | ;;;write KEYB <keyboard>,,<path>\KEYBOARD.SYS ; | ||
| 527 | .IF < N_KYBD_VAL eq E_KYBD_VAL_YES > near ;AN000; if kybd id is valid | ||
| 528 | .THEN ;AN000; | ||
| 529 | COPY_STRING SC_LINE, MC_LINE, SC_KEYB_A ;AN000; copy KEYB | ||
| 530 | APPEND_STRING SC_LINE, MC_LINE, S_KEYBOARD ;AN000; append kybd id | ||
| 531 | APPEND_STRING SC_LINE, MC_LINE, SC_COMMAS ;AN000; append ,, | ||
| 532 | APPEND_STRING SC_LINE,MC_LINE, S_DOS_PATH ;AN000; append install path | ||
| 533 | APPEND_STRING SC_LINE,MC_LINE,SC_KEYBOARD_SYS ;AN000; append \KEYBOARD.SYS | ||
| 534 | .IF < N_KYBD_ALT ne E_KYBD_ALT_NO > and ;AN002; if alternate keyboard valid JW | ||
| 535 | .IF < I_KYBD_ALT eq 2 > ;AN002; and not default setting JW | ||
| 536 | .THEN ;AN002; JW | ||
| 537 | APPEND_STRING SC_LINE, MC_LINE,SC_KEYB_SWITCH ;AN002; append keyb id switch '/ID:' JW | ||
| 538 | APPEND_STRING SC_LINE, MC_LINE, S_KYBD_ALT ;AN002; append alternate keyboard id JW | ||
| 539 | APPEND_STRING SC_LINE, MC_LINE, S_SPACE ;AN090;JPW add space so last char not overwritten | ||
| 540 | .ENDIF ;AN002; JW | ||
| 541 | WRITE_LINE SC_LINE ;AN000; write KEYB command | ||
| 542 | .ENDIF ;AN000; | ||
| 543 | ; | ||
| 544 | ;;;write CHCP <primary code page> ; | ||
| 545 | .IF < F_CPSW eq E_CPSW_YES > ;AN000; if code page switching required | ||
| 546 | .THEN ;AN000; | ||
| 547 | MERGE_STRING SC_LINE,MC_LINE,SC_CHCP,S_STR120_1;AN000; | ||
| 548 | WRITE_LINE SC_LINE ;AN000; write CHCP command | ||
| 549 | .ENDIF ;AN000; | ||
| 550 | ; | ||
| 551 | ;;;write 'PRINT /D:LPTx' or 'PRINT /D:COMx' ;AC066;SEH moved print stmt. NOTE: PRINT AND SHELL STMTS MUST BE LAST IN AUTOEXEC.BAT | ||
| 552 | .IF < I_WORKSPACE ne E_WORKSPACE_MIN > and near ;AC066;SEH ;AN011; SEH | ||
| 553 | .IF < I_DEST_DRIVE eq E_DEST_DRIVE_C > and near ;AC066;SEH ;AN015; JW If install to fixed disk | ||
| 554 | .IF < N_NUMPRINT gt 0 > near ;AC066;SEH ;AN011; SEH | ||
| 555 | .THEN ;AC066;SEH ;AN011; SEH | ||
| 556 | GET_PRINTER_PARAMS 1, 0, N_RETCODE ;AC066;SEH ;AN011; SEH get parameters for 1st printer selected | ||
| 557 | .IF < N_RETCODE ne 0 > near ;AC066;SEH ;AN011; SEH if valid return | ||
| 558 | .THEN ;AC066;SEH ;AN011; SEH | ||
| 559 | .IF < N_PRINTER_TYPE eq E_PARALLEL > ;AC066;SEH ;AN011; SEH LPT1, LPT2 or LPT3 | ||
| 560 | .THEN ;AC066;SEH ;AN011; SEH | ||
| 561 | MERGE_STRING SC_LINE, MC_LINE, SC_PRINT_COM, SC_LPT;AC066;SEH ;AN011; SEH 'PRINT /D:LPT' | ||
| 562 | COPY_WORD N_WORD_1, I_PORT ;AC066;SEH ;AN011; SEH get LPT number (1-3) | ||
| 563 | .ELSE ;AC066;SEH ;AN011; SEH serial printer | ||
| 564 | .IF < I_REDIRECT gt 1 > ;AC066;SEH ;AN011; SEH check if redirected to LPT | ||
| 565 | .THEN ;AC066;SEH ;AN011; SEH | ||
| 566 | MERGE_STRING SC_LINE, MC_LINE, SC_PRINT_COM, SC_LPT ;AC066;SEH ;AN011; SEH 'PRINT /D:LPT' | ||
| 567 | COPY_WORD N_WORD_1, I_REDIRECT ;AC066;SEH ;AN011; SEH gives LPT printer redirected to --- | ||
| 568 | DEC N_WORD_1 ;AC066;SEH ;AN011; SEH but must subtract off value 'none' to get port# | ||
| 569 | .ELSE ;AC066;SEH ;AN011; SEH serial port that hasn't been redirected | ||
| 570 | MERGE_STRING SC_LINE, MC_LINE, SC_PRINT_COM, SC_COM ;AC066;SEH ;AN011; SEH 'PRINT /D:COM' | ||
| 571 | COPY_WORD N_WORD_1, I_PORT ;AC066;SEH ;AN011; SEH value of COM port | ||
| 572 | .ENDIF ;AC066;SEH ;AN011; SEH | ||
| 573 | .ENDIF ;AC066;SEH ;AN011; SEH | ||
| 574 | WORD_TO_CHAR N_WORD_1, S_STR120_3 ;AC066;SEH ;AN011; SEH | ||
| 575 | APPEND_STRING SC_LINE, MC_LINE, S_STR120_3 ;AC066;SEH ;AN011; SEH add on the com or lpt number to the string | ||
| 576 | WRITE_LINE SC_LINE ;AC066;SEH ;AN011; SEH write 'PRINT /D:LPTx' or 'PRINT /D:COMx' x=number | ||
| 577 | .ENDIF ;AC066;SEH ;AN011; SEH | ||
| 578 | .ENDIF ;AC066;SEH ;AN011; SEH | ||
| 579 | ; | ||
| 580 | ;;;write SHELL <parameter> ; | ||
| 581 | .IF < N_DEST eq E_DEST_SHELL > and ;AN000; if preparing for SHELL diskette | ||
| 582 | .IF < F_SHELL eq E_SHELL_YES > ;AN000; if SHELL support required | ||
| 583 | .THEN ;AN000; | ||
| 584 | WRITE_LINE SC_SHELLP ;AN000; | ||
| 585 | .ENDIF ;AN000; | ||
| 586 | ; | ||
| 587 | RET ;AN000; | ||
| 588 | CREATE_AUTOEXEC_BAT ENDP ;AN000; | ||
| 589 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 590 | ; | ||
| 591 | ; Create CONFIG.SYS file | ||
| 592 | ; | ||
| 593 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 594 | CREATE_CONFIG_SYS PROC ;AN000; | ||
| 595 | ; | ||
| 596 | ;;;install to B:, install path = null ; | ||
| 597 | ;;;install to root of C:, install path = c:\ ; | ||
| 598 | ;;;install to directory in C:, install path = c:\path\ ; | ||
| 599 | .IF < I_DEST_DRIVE eq E_DEST_DRIVE_B > ;AN000; if install to drive B: | ||
| 600 | .THEN ;AN000; | ||
| 601 | INIT_VAR S_DOS_PATH,0 ;AN000; set path = null | ||
| 602 | .ELSE ;AN000; else | ||
| 603 | COPY_STRING S_DOS_PATH,M_DOS_PATH,S_INSTALL_PATH;AN000;set path = user defined path | ||
| 604 | .IF < S_DOS_PATH gt M_DEST_DRIVE > ;AN000; if install is not under root of C: | ||
| 605 | .THEN ;AN000; | ||
| 606 | APPEND_STRING S_DOS_PATH,M_DOS_PATH,S_SLASH ;AN000; append back slash to path | ||
| 607 | .ENDIF ;AN000; | ||
| 608 | .ENDIF ;AN000; | ||
| 609 | ; | ||
| 610 | ;;;write BREAK=<parameter> ; | ||
| 611 | .IF < S_BREAK gt 0 > ;AN000; if field length > zero | ||
| 612 | .THEN ;AN000; | ||
| 613 | MERGE_STRING SC_LINE,MC_LINE,SC_BREAK,S_BREAK;AN000; | ||
| 614 | WRITE_LINE SC_LINE ;AN000; write BREAK command | ||
| 615 | .ENDIF ;AN000; | ||
| 616 | ; | ||
| 617 | ;;;write COUNTRY=<country>,,<path>\COUNTRY.SYS ; | ||
| 618 | .IF < N_COUNTRY eq 1 > ;AN000; if country is US (001) | ||
| 619 | .THEN ;AN000; no action | ||
| 620 | .ELSE ;AN000; else | ||
| 621 | WORD_TO_CHAR N_COUNTRY, S_STR120_1 ;AN000; S_STR120_1 = country in ASCII | ||
| 622 | MERGE_STRING SC_LINE,MC_LINE,SC_COUNTRY,S_STR120_1;AN000; | ||
| 623 | APPEND_STRING SC_LINE, MC_LINE, SC_COMMAS ;AN000; | ||
| 624 | APPEND_STRING SC_LINE, MC_LINE,S_DOS_PATH ;AN000; | ||
| 625 | APPEND_STRING SC_LINE, MC_LINE,SC_COUNTRY_SYS ;AN000; | ||
| 626 | WRITE_LINE SC_LINE ;AN000; write COUNTRY command | ||
| 627 | .ENDIF ;AN000; | ||
| 628 | ; | ||
| 629 | ;;;write BUFFERS=<parameter> ; | ||
| 630 | ;;;write BUFFERS=<parameter> /E if expanded memory support | ||
| 631 | .IF < S_BUFFERS gt 0 > ;AN000; if field lengh > zero | ||
| 632 | .THEN ;AN000; | ||
| 633 | MERGE_STRING SC_LINE,MC_LINE,SC_BUFFERS,S_BUFFERS;AN000; | ||
| 634 | .IF < N_XMA eq E_XMA_PRESENT > and ;AN000; if expanded memory present | ||
| 635 | .IF < F_XMA eq E_XMA_YES > ;AN000; and is to be used | ||
| 636 | .THEN ;AN000; | ||
| 637 | APPEND_STRING SC_LINE, MC_LINE, SC_SLASH_X ;AC046;SEH append /X to command (formerly /E) | ||
| 638 | .ENDIF ;AN000; | ||
| 639 | WRITE_LINE SC_LINE ;AN000; write BUFFERS command | ||
| 640 | .ENDIF ;AN000; | ||
| 641 | ; | ||
| 642 | ;;;write FCBS=<parameter> ; | ||
| 643 | .IF < S_FCBS gt 0 > ;AN000; if field length > zero | ||
| 644 | .THEN ;AN000; | ||
| 645 | MERGE_STRING SC_LINE,MC_LINE, SC_FCBS,S_FCBS ;AN000; | ||
| 646 | WRITE_LINE SC_LINE ;AN000; write FCBS command | ||
| 647 | .ENDIF ;AN000; | ||
| 648 | ; | ||
| 649 | ;;;write FILES=<parameter> ; | ||
| 650 | .IF < S_FILES gt 0 > ;AN000; if field length > zero | ||
| 651 | .THEN ;AN000; | ||
| 652 | MERGE_STRING SC_LINE,MC_LINE,SC_FILES,S_FILES;AN000; | ||
| 653 | WRITE_LINE SC_LINE ;AN000; write FILES command | ||
| 654 | .ENDIF ;AN000; | ||
| 655 | ; | ||
| 656 | ;;;write LASTDRIVE=<parameter> ; | ||
| 657 | .IF < S_LASTDRIVE gt 0 > ;AN000; if field length > zero | ||
| 658 | .THEN ;AN000; | ||
| 659 | MERGE_STRING SC_LINE,MC_LINE,SC_LASTDRIVE,S_LASTDRIVE;AN000; | ||
| 660 | WRITE_LINE SC_LINE ;AN000; write LASTDRIVE command | ||
| 661 | .ENDIF ;AN000; | ||
| 662 | ; | ||
| 663 | ;;;write STACKS=<parameter> ; | ||
| 664 | .IF < S_STACKS gt 0 > ;AN000; if field length > zero | ||
| 665 | .THEN ;AN000; | ||
| 666 | MERGE_STRING SC_LINE,MC_LINE,SC_STACKS,S_STACKS;AN000; | ||
| 667 | WRITE_LINE SC_LINE ;AN000; write STACKS command | ||
| 668 | .ENDIF ;AN000; | ||
| 669 | ; | ||
| 670 | ;;;write SHELL=<path>\COMMAND.COM /MSG /P /E:256 ; | ||
| 671 | .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C > ;AN111; if install destination is drive B: or A: JW | ||
| 672 | MERGE_STRING SC_LINE,MC_LINE,SC_SHELL,S_DRIVE_A ;AN000;JW | ||
| 673 | APPEND_STRING SC_LINE,MC_LINE,SC_SHELL_1 ;AN037;SEH | ||
| 674 | APPEND_STRING SC_LINE,MC_LINE,SC_SHELL_2 ;AN037;SEH Only diskettes get /MSG in SHELL command | ||
| 675 | .ELSE ;AN000;JW | ||
| 676 | MERGE_STRING SC_LINE,MC_LINE,SC_SHELL,S_DOS_PATH ;AN000;JW | ||
| 677 | APPEND_STRING SC_LINE,MC_LINE,SC_SHELL_1 ;AC037;SEH | ||
| 678 | .ENDIF ;AN000;JW | ||
| 679 | APPEND_STRING SC_LINE, MC_LINE, SC_SHELL_3 ;AC037;SEH | ||
| 680 | WRITE_LINE SC_LINE ;AN000; write SHELL command | ||
| 681 | ; | ||
| 682 | ;;;init S_STR120_1 to DEVICE=<path>\ ; | ||
| 683 | MERGE_STRING S_STR120_1,M_STR120_1,SC_DEVICE,S_DOS_PATH;AN000; | ||
| 684 | ; | ||
| 685 | ;;;S_STR120_1 = DEVICE=<path>\ ; | ||
| 686 | ;;;write DEVICE=<path>\XMAEM.SYS<parameter> ; | ||
| 687 | ;;;write DEVICE=<path>\XMA2EMS.SYS<parameter> ; | ||
| 688 | .IF < N_XMA eq E_XMA_PRESENT > near and ;AC000; if expanded memory present JW | ||
| 689 | .IF < F_XMA eq E_XMA_YES > ;AN000; and support to be included | ||
| 690 | .THEN ;AN000; | ||
| 691 | .IF < N_MOD80 eq E_IS_MOD80 > ;AN000;JW | ||
| 692 | .THEN ;AN000;JW | ||
| 693 | MERGE_STRING SC_LINE,MC_LINE,S_STR120_1,SC_XMAEM_SYS;AN000; | ||
| 694 | APPEND_STRING SC_LINE, MC_LINE, S_XMAEM ;AN000; | ||
| 695 | WRITE_LINE SC_LINE ;AN000; write XMAEM command | ||
| 696 | .ENDIF ;AN000;JW | ||
| 697 | MERGE_STRING SC_LINE,MC_LINE,S_STR120_1,SC_XMA2EMS_SYS;AN000; | ||
| 698 | APPEND_STRING SC_LINE, MC_LINE, S_XMA2EMS ;AN000; | ||
| 699 | WRITE_LINE SC_LINE ;AN000; write XMA2EMS command | ||
| 700 | .ENDIF ;AN000; | ||
| 701 | ; | ||
| 702 | ;;;S_STR120_1 = DEVICE=<path>\ ; | ||
| 703 | ;;;write DEVICE=<path>\ANSI.SYS ; | ||
| 704 | ;;;write DEVICE=<path>\ANSI.SYS /X ,additional parameter based on workspace option | ||
| 705 | .IF < F_ANSI eq E_ANSI_YES > ;AN000; if ANSI support required | ||
| 706 | .THEN ;AN000; | ||
| 707 | MERGE_STRING SC_LINE,MC_LINE,S_STR120_1,SC_ANSI_SYS;AN000; | ||
| 708 | APPEND_STRING SC_LINE, MC_LINE, S_ANSI ;AN000; | ||
| 709 | WRITE_LINE SC_LINE ;AN000; write ANSI command | ||
| 710 | .ENDIF ;AN000; | ||
| 711 | ; | ||
| 712 | ;;;S_STR120_1 = DEVICE=<path>\ ; | ||
| 713 | ;;;write DEVICE=<path>\RAMDRIVE.SYS <parameter> ; | ||
| 714 | .IF < F_VDISK eq E_VDISK_YES > ;AN000; if VDISK support required | ||
| 715 | .THEN ;AN000; | ||
| 716 | MERGE_STRING SC_LINE,MC_LINE,S_STR120_1,SC_VDISK_SYS;AN000; | ||
| 717 | APPEND_STRING SC_LINE, MC_LINE, S_VDISK ;AN000; | ||
| 718 | WRITE_LINE SC_LINE ;AN000; write VDISK command | ||
| 719 | .ENDIF ;AN000; | ||
| 720 | ; | ||
| 721 | ;;;init S_STR120_2 to number of designates ; | ||
| 722 | WORD_TO_CHAR N_DESIGNATES, S_STR120_2 ;AN000; set S_STR120_2 = no. of designates | ||
| 723 | ; | ||
| 724 | ;;;S_STR120_1 = DEVICE=<path>\ ; | ||
| 725 | ;;;write DEVICE=<path>\DISPLAY.SYS CON=(<display>,437,<desig>) | ||
| 726 | .IF < F_CPSW eq E_CPSW_YES > near ;AN000; if code page switching required | ||
| 727 | .THEN ;AN000; | ||
| 728 | MERGE_STRING SC_LINE,MC_LINE,S_STR120_1,SC_DISPLAY_SYS;AN000; | ||
| 729 | .IF < ACTIVE eq EGA > or ;AN000; if EGA adaptor | ||
| 730 | .IF < ALTERNATE eq EGA > ;AN000; | ||
| 731 | .THEN ;AN000; | ||
| 732 | APPEND_STRING SC_LINE, MC_LINE, SD_DISPLAY_EGA;AN001;GHG set display to EGA | ||
| 733 | .ELSEIF < ACTIVE eq LCD > or ;AN000; if LCD adaptor | ||
| 734 | .IF < ALTERNATE eq LCD > ;AN000; | ||
| 735 | .THEN ;AN000; | ||
| 736 | APPEND_STRING SC_LINE, MC_LINE, SD_DISPLAY_LCD;AN001;GHG set display to LCD | ||
| 737 | .ENDIF ;AN000; | ||
| 738 | APPEND_STRING SC_LINE, MC_LINE, SC_437 ;AN000; append hardware code page | ||
| 739 | APPEND_STRING SC_LINE, MC_LINE, S_STR120_2 ;AN000; append no of designates | ||
| 740 | APPEND_STRING SC_LINE, MC_LINE, SC_CLOSE_BRAC ;AN000; | ||
| 741 | WRITE_LINE SC_LINE ;AN000; write DISPLAY.SYS command | ||
| 742 | .ENDIF ;AN000; | ||
| 743 | ; | ||
| 744 | ;;;S_STR120_1 = DEVICE=<path>\ ; | ||
| 745 | ;;;S_STR120_2 = number of designates ; | ||
| 746 | ;;;write DEVICE=<path>\PRINTER.SYS LPT1=(<cdp parameters>,437,<desig>) | ||
| 747 | ;;; LPT2=(<cdp parameters>,437,<desig>) | ||
| 748 | ;;; LPT3=(<cdp parameters>,437,<desig>) | ||
| 749 | ;;;N_WORD_1 = parallel port number ; | ||
| 750 | ;;;N_WORD_2 set if driver is prepared ; | ||
| 751 | INIT_VAR N_WORD_1, 1 ;AN000; set port number = 1 | ||
| 752 | INIT_VAR N_WORD_2, 0 ;AN000; set driver status = false | ||
| 753 | .IF < F_CPSW eq E_CPSW_YES > near ;AN000; if code page switching required | ||
| 754 | .THEN ;AN000; | ||
| 755 | MERGE_STRING SC_LINE,MC_LINE,S_STR120_1,SC_PRINTER_SYS;AN000; | ||
| 756 | .REPEAT ;AN000; repeat code block | ||
| 757 | GET_PRINTER_PARAMS 0, N_WORD_1, N_RETCODE ;AN000; get printer parameters | ||
| 758 | .IF < N_RETCODE eq 1 > and near ;AN000; if valid return | ||
| 759 | .IF < S_CP_DRIVER gt 0 > and near ;AN000; and driver and prepare | ||
| 760 | .IF < S_CP_PREPARE gt 0 > near ;AN000; parameters valid | ||
| 761 | .THEN ;AN000; | ||
| 762 | APPEND_STRING SC_LINE, MC_LINE, SC_LPT ;AN000; append LPT | ||
| 763 | WORD_TO_CHAR N_WORD_1, S_STR120_3 ;AN000; | ||
| 764 | APPEND_STRING SC_LINE, MC_LINE, S_STR120_3 ;AN000; append lpt number | ||
| 765 | APPEND_STRING SC_LINE, MC_LINE, SC_EQUAL_OPEN ;AN000; append =( | ||
| 766 | APPEND_STRING SC_LINE, MC_LINE, S_CP_DRIVER ;AN000; append driver parameters | ||
| 767 | APPEND_STRING SC_LINE, MC_LINE, SC_COMMA ;AN000; append comma | ||
| 768 | APPEND_STRING SC_LINE, MC_LINE, S_STR120_2 ;AN000; append no of designates | ||
| 769 | APPEND_STRING SC_LINE, MC_LINE, SC_CLOSE_BRAC ;AN000; append close bracket | ||
| 770 | INIT_VAR N_WORD_2, 1 ;AN000; set driver status = valid | ||
| 771 | .ENDIF ;AN000; | ||
| 772 | INC_VAR N_WORD_1 ;AN000; inc printer number | ||
| 773 | .UNTIL < N_WORD_1 gt 3 > near ;AN000; end of repeat block | ||
| 774 | .IF < N_WORD_2 eq 1 > ;AN000; if driver status is valid | ||
| 775 | .THEN ;AN000; | ||
| 776 | WRITE_LINE SC_LINE ;AN000; write PRINTER.SYS command | ||
| 777 | .ENDIF ;AN000; | ||
| 778 | .ENDIF ;AN000; | ||
| 779 | ; | ||
| 780 | ;;;init S_STR120_1 to INSTALL=<path>\ ; | ||
| 781 | MERGE_STRING S_STR120_1,M_STR120_1,SC_INSTALL,S_DOS_PATH ;AN000; | ||
| 782 | ; | ||
| 783 | ;;;write INSTALL=<path>\KEYB.COM US,,<path>\KEYBOARD.SYS | ||
| 784 | COMPARE_STRINGS S_KEYBOARD, S_US ;AN000; | ||
| 785 | .IF < c > and ;AN000; if keyboard not US (will be handled in autoexec) | ||
| 786 | .IF < N_KYBD_VAL eq E_KYBD_VAL_YES > near ;AN000; if keyboard is valid | ||
| 787 | .THEN ;AN000; | ||
| 788 | MERGE_STRING SC_LINE,MC_LINE,S_STR120_1,SC_KEYB_C ;AN000; | ||
| 789 | APPEND_STRING SC_LINE, MC_LINE, S_US ;AN000; append keyboard id = US | ||
| 790 | APPEND_STRING SC_LINE, MC_LINE, SC_COMMAS ;AN000; append comma | ||
| 791 | APPEND_STRING SC_LINE, MC_LINE,S_DOS_PATH ;AN000; append install path | ||
| 792 | APPEND_STRING SC_LINE,MC_LINE,SC_KEYBOARD_SYS ;AN000; append KEYBOARD.SYS | ||
| 793 | WRITE_LINE SC_LINE ;AN000; write KEYB command | ||
| 794 | .ENDIF ;AN000; | ||
| 795 | ; | ||
| 796 | ;;;S_STR120_1 = INSTALL=<path>\ ; | ||
| 797 | ;;;write INSTALL=<path>\SHARE <parameter> ; | ||
| 798 | .IF < F_SHARE eq E_SHARE_YES > ;AN000; if SHARE support required | ||
| 799 | .THEN ;AN000; | ||
| 800 | MERGE_STRING SC_LINE,MC_LINE,S_STR120_1,SC_SHARE;AN000; | ||
| 801 | APPEND_STRING SC_LINE, MC_LINE, S_SHARE ;AN000; | ||
| 802 | WRITE_LINE SC_LINE ;AN000; write SHARE command | ||
| 803 | .ENDIF ;AN000; | ||
| 804 | ; | ||
| 805 | ;;;S_STR120_1 = INSTALL=<path>\ ; | ||
| 806 | ;;;write INSTALL=<path>\FASTOPEN <parameter> ; | ||
| 807 | .IF < F_FASTOPEN eq E_FASTOPEN_YES > ;AN000; if FASTOPEN support required | ||
| 808 | .THEN ;AN000; | ||
| 809 | MERGE_STRING SC_LINE,MC_LINE,S_STR120_1,SC_FASTOPEN;AN000; | ||
| 810 | APPEND_STRING SC_LINE, MC_LINE, S_FASTOPEN ;AN000; | ||
| 811 | WRITE_LINE SC_LINE ;AN000; write FASTOPEN command | ||
| 812 | .ENDIF ;AN000; | ||
| 813 | ; | ||
| 814 | ;;;S_STR120_1 = INSTALL=<path>\ ; | ||
| 815 | ;;;write INSTALL=<path>\NLSFUNC <path>\COUNTRY.SYS ; | ||
| 816 | .IF < F_CPSW eq E_CPSW_YES > ;AN000; if code page switching support required | ||
| 817 | .THEN ;AN000; | ||
| 818 | MERGE_STRING SC_LINE,MC_LINE,S_STR120_1,SC_NLSFUNC;AN000; | ||
| 819 | APPEND_STRING SC_LINE,MC_LINE,S_DOS_PATH ;AN000; | ||
| 820 | APPEND_STRING SC_LINE, MC_LINE,SC_COUNTRY_SYS ;AN000; | ||
| 821 | WRITE_LINE SC_LINE ;AN000; write NLSFUNC command | ||
| 822 | .ENDIF ;AN000; | ||
| 823 | ; | ||
| 824 | RET ;AN000; | ||
| 825 | CREATE_CONFIG_SYS ENDP ;AN000; | ||
| 826 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 827 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 828 | ; | ||
| 829 | ; Create DOSSHELL.BAT file | ||
| 830 | ; | ||
| 831 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 832 | CREATE_SHELL_BAT PROC ;AN000;DT | ||
| 833 | ;AN000;DT | ||
| 834 | ;;;write SHELL <parameter> ;AN000;DT | ||
| 835 | .IF < I_DEST_DRIVE eq E_DEST_DRIVE_C > ;AN000; If install fixed disk ;AN111;JW | ||
| 836 | WRITE_LINE SC_DRIVE_C ;AN013;JW | ||
| 837 | COPY_STRING SC_LINE, MC_LINE, SC_CD ;AN000; | ||
| 838 | APPEND_STRING SC_LINE, MC_LINE, S_INSTALL_PATH ;AN000; | ||
| 839 | WRITE_LINE SC_LINE ;AN000; write CD path command | ||
| 840 | .ENDIF ;AN000; | ||
| 841 | ; | ||
| 842 | WRITE_LINE SC_SHELLC_1 ;AN000;DT | ||
| 843 | MERGE_STRING SC_LINE,MC_LINE,SC_AT_SIGN,SC_BREAK ;AN092;SEH break=off | ||
| 844 | APPEND_STRING SC_LINE,MC_LINE,S_OFF ;AN092;SEH | ||
| 845 | WRITE_LINE SC_LINE ;AN092;SEH | ||
| 846 | MERGE_STRING SC_LINE,MC_LINE,SC_SHELLC,S_SHELL ;AN000;DT | ||
| 847 | WRITE_LINE SC_LINE ;AN000;DT write SHELL command | ||
| 848 | WRITE_LINE SC_SHELLC_2 ;AN000;DT | ||
| 849 | ; | ||
| 850 | ;;;restore BREAK=<parameter> ; | ||
| 851 | .IF < S_BREAK gt 0 > ;AN000;JW if field length > zero | ||
| 852 | MERGE_STRING SC_LINE,MC_LINE,SC_AT_SIGN,SC_BREAK ;AN000;JW | ||
| 853 | APPEND_STRING SC_LINE,MC_LINE,S_BREAK ;AN000;JW | ||
| 854 | WRITE_LINE SC_LINE ;AN000;JW write BREAK command | ||
| 855 | .ENDIF ;AN000;JW | ||
| 856 | ; | ||
| 857 | ; | ||
| 858 | RET ;AN000;DT | ||
| 859 | CREATE_SHELL_BAT ENDP ;AN000;DT | ||
| 860 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 861 | |||
| 862 | SELECT ENDS ;AN000; | ||
| 863 | END ;AN000; | ||
| 864 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/GET_HELP.ASM b/v4.0/src/SELECT/GET_HELP.ASM new file mode 100644 index 0000000..4aacaa5 --- /dev/null +++ b/v4.0/src/SELECT/GET_HELP.ASM | |||
| @@ -0,0 +1,233 @@ | |||
| 1 | PAGE 55,132 ;AN000; | ||
| 2 | NAME SELECT ;AN000; | ||
| 3 | TITLE SELECT - GET_HELP_ID ;AN000; | ||
| 4 | SUBTTL Get_Help.asm ;AN000; | ||
| 5 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 6 | ; | ||
| 7 | ; GET_HELP_ID | ||
| 8 | ; | ||
| 9 | ; Entry: | ||
| 10 | ; | ||
| 11 | ; | ||
| 12 | ; | ||
| 13 | ; Exit: | ||
| 14 | ; | ||
| 15 | ; | ||
| 16 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 17 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000;segment for far routine | ||
| 18 | ASSUME CS:SELECT ;AN000; | ||
| 19 | ; | ||
| 20 | ; | ||
| 21 | INP_HELP_ID DW 12,10,10 ;AN000; help_id 1, row', col' STR_DOS_LOC | ||
| 22 | DW 19,12,15 ;AN000; help_id 2, row', col' STR_EXT_PARMS | ||
| 23 | DW 31,11,20 ;AN000; help_id 3, row', col' STR_DOS_PATH | ||
| 24 | DW 32,11,20 ;AN000; help_id 4, row', col' STR_DOS_APPEND | ||
| 25 | DW 33,11,20 ;AN000; help_id 5, row', col' STR_DOS_PROMPT | ||
| 26 | DW 34,12,20 ;AN000; help_id 6, row', col' STR_SHELL | ||
| 27 | DW 35,12,20 ;AN000; help_id 7, row', col' STR_KSAM | ||
| 28 | DW 35,12,20 ;AN000; help_id 8, row', col' STR_FASTOPEN | ||
| 29 | DW 36,12,20 ;AN000; help_id 9, row', col' STR_SHARE | ||
| 30 | DW 37,12,20 ;AN000; help_id 10, row', col' STR_GRAPHICS | ||
| 31 | DW 38,12,20 ;AN000; help_id 11, row', col' STR_XMAEM | ||
| 32 | DW 39,12,20 ;AN000; help_id 12, row', col' STR_XMA2EMS | ||
| 33 | DW 40,13,20 ;AN000; help_id 13, row', col' STR_VDISK | ||
| 34 | DW 41,12,20 ;AN000; help_id 14, row', col' STR_BREAK | ||
| 35 | DW 42,12,20 ;AN000; help_id 15, row', col' STR_BUFFERS | ||
| 36 | DW 43,11,20 ;AC000; help_id 16, row', col' STR_DOS_APPEND_P JW | ||
| 37 | DW 44, 2,20 ;AN000; help_id 17, row', col' STR_FCBS | ||
| 38 | DW 45, 2,20 ;AN000; help_id 18, row', col' STR_FILES | ||
| 39 | DW 46, 2,20 ;AN000; help_id 19, row', col' STR_LASTDRIVE | ||
| 40 | DW 47, 2,20 ;AN000; help_id 20, row', col' STR_STACKS | ||
| 41 | DW 48, 2,20 ;AN000; help_id 21, row', col' STR_VERIFY | ||
| 42 | DW 13,10,10 ;AN000; help_id 22, row', col' NUM_PRINTER | ||
| 43 | DW 18,10,20 ;AN000; help_id 23, row', col' NUM_EXT_DISK | ||
| 44 | DW 53,12,20 ;AN000; help_id 24, row', col' NUM_YEAR | ||
| 45 | DW 53,12,20 ;AN000; help_id 25, row', col' NUM_MONTH | ||
| 46 | DW 53,12,20 ;AN000; help_id 26, row', col' NUM_DAY | ||
| 47 | DW 53,12,20 ;AN000; help_id 27, row', col' NUM_HOUR | ||
| 48 | DW 53,12,20 ;AN000; help_id 28, row', col' NUM_MINUTE | ||
| 49 | DW 53,11,20 ;AN000; help_id 29, row', col' NUM_SECOND | ||
| 50 | INP_HELP_ID_LEN EQU ($-INP_HELP_ID)/6 ;AN000; | ||
| 51 | INP_HELP_ID_ELE EQU 3 ;AN000; | ||
| 52 | ; | ||
| 53 | SCR_HELP_ID DW 3 ;AN000; scr_id1 | ||
| 54 | DW 3,12,20 ;AN000; help_id1,row1',col1' | ||
| 55 | DW 4, 1,20 ;AN000; | ||
| 56 | DW 5, 3,20 ;AN000; | ||
| 57 | DW 2 ;AN000; scr_id2 | ||
| 58 | DW 6, 1,20 ;AN000; | ||
| 59 | DW 7, 3,20 ;AN000; | ||
| 60 | DW 1 ;AN000; | ||
| 61 | DW 8, 3,20 ;AN000; SCR_CTY_1 | ||
| 62 | DW 1 ;AN000; | ||
| 63 | DW 8, 3,20 ;AN000; SCR_CTY_2 | ||
| 64 | DW 1 ;AN000; | ||
| 65 | DW 9,10,20 ;AN000; SCR_KYB_1 | ||
| 66 | DW 1 ;AN000; | ||
| 67 | DW 9,10,20 ;AN000; SCR_KYB_2 | ||
| 68 | DW 1 ;AN000; | ||
| 69 | DW 10,10,23 ;AN000; SCR_FR_KYB | ||
| 70 | DW 1 ;AN000; | ||
| 71 | DW 10,10,23 ;AN000; SCR_IT_KYB | ||
| 72 | DW 1 ;AN000; | ||
| 73 | DW 10,10,23 ;AN000; SCR_UK_KYB | ||
| 74 | DW 1 ;AN000; | ||
| 75 | DW 11,10,20 ;AN111; SCR_DEST_B_C JW | ||
| 76 | DW 1 ;AN000; | ||
| 77 | DW 14, 1,25 ;AN000; SCR_PRT_TYPE | ||
| 78 | DW 1 ;AN000; | ||
| 79 | DW 15, 9,20 ;AN000; SCR_PARALLEL | ||
| 80 | DW 1 ;AN000; | ||
| 81 | DW 16,10,20 ;AN000; SCR_SERIAL | ||
| 82 | DW 1 ;AN000; | ||
| 83 | DW 17, 8,20 ;AN000; SCR_PRT_REDIR | ||
| 84 | DW 2 ;AN000; | ||
| 85 | DW 20, 6,20 ;AN000; SCR_REVIEW | ||
| 86 | DW 21, 6,20 ;AN000; SCR_REVIEW | ||
| 87 | DW 9 ;AN000; | ||
| 88 | DW 22,10,11 ;AN000; | ||
| 89 | DW 23,11,11 ;AN000; | ||
| 90 | DW 24,12,11 ;AN000; | ||
| 91 | DW 25, 1,11 ;AN000; | ||
| 92 | DW 26, 2,11 ;AN000; | ||
| 93 | DW 27, 3,11 ;AN000; | ||
| 94 | DW 28, 4,11 ;AN000; | ||
| 95 | DW 29, 5,11 ;AN000; | ||
| 96 | DW 30, 6,11 ;AN000; | ||
| 97 | DW 6 ;AN000; | ||
| 98 | DW 22,10,11 ;AN000; | ||
| 99 | DW 24,11,11 ;AN000; | ||
| 100 | DW 26,12,11 ;AN000; | ||
| 101 | DW 27, 1,11 ;AN000; | ||
| 102 | DW 29, 2,11 ;AN000; | ||
| 103 | DW 30, 3,11 ;AN000; SCR_FUNC_DISKET | ||
| 104 | DW 2 ;AN000; | ||
| 105 | DW 49, 1,11 ;AN000; | ||
| 106 | DW 50, 1,11 ;AN000; SCR_FIXED_FIRST | ||
| 107 | DW 2 ;AN000; | ||
| 108 | DW 51, 1,11 ;AN000; | ||
| 109 | DW 52, 1,11 ;AN000; SCR_FIXED_BOTH | ||
| 110 | DW 2 ;AN000; | ||
| 111 | DW 54, 1,11 ;AN000; | ||
| 112 | DW 55, 1,11 ;AN000; SCR_FORMAT | ||
| 113 | DW 0 ;AN000; SCR_CONTEXT_HLP | ||
| 114 | DW 0 ;AN000; SCR_INDEX_HLP | ||
| 115 | DW 0 ;AN000; SCR_TITLE_HLP | ||
| 116 | DW 0 ;AN000; | ||
| 117 | DW 0 ;AN000; | ||
| 118 | DW 2 ;AN000; SCR_COPY_DEST JW | ||
| 119 | DW 18,10,10 ;AC035; SEH new help text | ||
| 120 | DW 19,10,10 ;AC035; SEH new help text | ||
| 121 | DW 1 ;AN000; | ||
| 122 | DW 11,10,20 ;AN111; SCR_DEST_A_C JW | ||
| 123 | DW 2 ;AN000; | ||
| 124 | DW 56, 6,20 ;AN000; SCR_choose_screen | ||
| 125 | DW 57, 6,20 ;AN000; SCR_choose_screen | ||
| 126 | SCR_HELP_ID_LEN EQU 28 ;AN000; | ||
| 127 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 128 | ; | ||
| 129 | ; | ||
| 130 | ; GET_HELP_ID | ||
| 131 | ; | ||
| 132 | ; Entry: | ||
| 133 | ; AX = 1 for input field help_id's | ||
| 134 | ; BX = field_id | ||
| 135 | ; AX = 2 for scroll help_id's | ||
| 136 | ; BX = scroll_id | ||
| 137 | ; CX = index | ||
| 138 | ; | ||
| 139 | ; Exit: | ||
| 140 | ; AX = help_id | ||
| 141 | ; DH = row' | ||
| 142 | ; DL = col' | ||
| 143 | ; | ||
| 144 | ; | ||
| 145 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 146 | THREE DW 3 ;AN000; | ||
| 147 | ; | ||
| 148 | PUBLIC GET_HELP_ID ;AN000; | ||
| 149 | GET_HELP_ID PROC ;AN000; | ||
| 150 | CMP AX,1 ;AN000; | ||
| 151 | JNE GH_8 ;AN000; | ||
| 152 | ; | ||
| 153 | CMP AX,INP_HELP_ID_LEN ;AN000; | ||
| 154 | JA GH_8 ;AN000; | ||
| 155 | ; | ||
| 156 | PUSH BX ;AN000; | ||
| 157 | PUSH CX ;AN000; | ||
| 158 | MOV AX,BX ;AN000; | ||
| 159 | DEC AX ;AN000; | ||
| 160 | MOV BX,INP_HELP_ID_ELE*2 ;AN000; | ||
| 161 | MUL BX ;AN000; | ||
| 162 | MOV BX,AX ;AN000; | ||
| 163 | MOV AX,CS:[BX].INP_HELP_ID ;AN000; | ||
| 164 | MOV CX,CS:[BX+2].INP_HELP_ID;AN000; | ||
| 165 | MOV DX,CS:[BX+4].INP_HELP_ID;AN000; | ||
| 166 | XCHG CH,CL ;AN000; | ||
| 167 | MOV DH,CH ;AN000; | ||
| 168 | POP CX ;AN000; | ||
| 169 | POP BX ;AN000; | ||
| 170 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 171 | ; | ||
| 172 | ; AX = 2 for scroll help_id's | ||
| 173 | ; BX = scroll_id | ||
| 174 | ; CX = index | ||
| 175 | ; | ||
| 176 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 177 | GH_8: CMP AX,2 ;AN000; | ||
| 178 | JNE GH_20 ;AN000; | ||
| 179 | ; | ||
| 180 | CMP BX,SCR_HELP_ID_LEN ;AN000; | ||
| 181 | JA GH_20 ;AN000; | ||
| 182 | ; | ||
| 183 | OR CX,CX ;AN000; | ||
| 184 | JE GH_20 ;AN000; | ||
| 185 | ; | ||
| 186 | PUSH CX ;AN000; search for matching scroll_id | ||
| 187 | PUSH SI ;AN000; | ||
| 188 | MOV DX,1 ;AN000; | ||
| 189 | XOR SI,SI ;AN000; | ||
| 190 | ; | ||
| 191 | GH_9: CMP DX,BX ;AN000; | ||
| 192 | JE GH_10 ;AN000; | ||
| 193 | MOV AX,CS:[SI]+SCR_HELP_ID ;AN000; get number of help screens | ||
| 194 | PUSH DX ;AN000; | ||
| 195 | MUL THREE ;AN000; | ||
| 196 | POP DX ;AN000; | ||
| 197 | ADD AX,1 ;AN000; +additional entries (row',col',count) | ||
| 198 | SHL AX,1 ;AN000; account for WORD entries | ||
| 199 | ADD SI,AX ;AN000; | ||
| 200 | INC DX ;AN000; | ||
| 201 | CMP DX,SCR_HELP_ID_LEN ;AN000; | ||
| 202 | JBE GH_9 ;AC000; JW Changed to JBE | ||
| 203 | JMP GH_15 ;AN000; | ||
| 204 | ; | ||
| 205 | GH_10: CMP CX,CS:[SI]+SCR_HELP_ID ;AN000; check for index out of range? | ||
| 206 | JBE GH_11 ;AN000; then | ||
| 207 | MOV CX,1 ;AN000; set to first help_id.... | ||
| 208 | ; | ||
| 209 | GH_11: MOV AX,CX ;AN000; scroll_id found!!!! | ||
| 210 | DEC AX ;AN000; | ||
| 211 | MUL THREE ;AN000; | ||
| 212 | INC AX ;AN000; | ||
| 213 | SHL AX,1 ;AN000; | ||
| 214 | ADD SI,AX ;AN000; | ||
| 215 | MOV AX,CS:[SI]+SCR_HELP_ID ;AN000; | ||
| 216 | MOV CX,CS:[SI+2].SCR_HELP_ID;AN000; | ||
| 217 | MOV DX,CS:[SI+4].SCR_HELP_ID;AN000; | ||
| 218 | XCHG CH,CL ;AN000; | ||
| 219 | MOV DH,CH ;AN000; | ||
| 220 | GH_15: POP SI ;AN000; | ||
| 221 | POP CX ;AN000; | ||
| 222 | GH_20: ;AN000; | ||
| 223 | RET ;AN000; | ||
| 224 | GET_HELP_ID ENDP ;AN000; | ||
| 225 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 226 | ; | ||
| 227 | ; | ||
| 228 | ; | ||
| 229 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 230 | SELECT ENDS ;AN000; | ||
| 231 | END GET_HELP_ID ;AN000; | ||
| 232 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 233 | |||
diff --git a/v4.0/src/SELECT/GET_STAT.C b/v4.0/src/SELECT/GET_STAT.C new file mode 100644 index 0000000..aeab764 --- /dev/null +++ b/v4.0/src/SELECT/GET_STAT.C | |||
| @@ -0,0 +1,1216 @@ | |||
| 1 | /************************************************************/ | ||
| 2 | /* */ | ||
| 3 | /* Header: GET_STATUS */ | ||
| 4 | /* Purpose: To transfer information provided by FDISK */ | ||
| 5 | /* to the DOS SELECT utility. The information */ | ||
| 6 | /* provided will determine the status of the */ | ||
| 7 | /* specified fixed disk. The information is */ | ||
| 8 | /* is pertinent to determine the parameters */ | ||
| 9 | /* displayed and utilized in SELECT panels */ | ||
| 10 | /* that will assume default values according */ | ||
| 11 | /* to option the user selected without viewing */ | ||
| 12 | /* or modifying FDISK. */ | ||
| 13 | /* */ | ||
| 14 | /* The status info will be returned in the control */ | ||
| 15 | /* block defined below: */ | ||
| 16 | /* */ | ||
| 17 | /* DISK_STATUS STRUC */ | ||
| 18 | /* N_PART_NAME DB 0 ;partition name */ | ||
| 19 | /* N_PART_SIZE DW 0 ;size of the above */ | ||
| 20 | /* ;partition in (Mbytes)*/ | ||
| 21 | /* N_PART_STATUS DB 0 ;Partition status */ | ||
| 22 | /* P_PART_DRIVE DB ? ;drive letter assigned*/ | ||
| 23 | /* ;to the partition */ | ||
| 24 | /* DISK_STATUS ENDS ;(ASCII value) */ | ||
| 25 | /* */ | ||
| 26 | /*************************************************************/ | ||
| 27 | |||
| 28 | /*************************************************************/ | ||
| 29 | /* First check to make the ax is specified correctly to make */ | ||
| 30 | /* the call to Get_STATUS; The value in AX should be 01 */ | ||
| 31 | /* IF compare is true then proceed with migration */ | ||
| 32 | /* ELSE */ | ||
| 33 | /* set AX to to one and report error wrong call value */ | ||
| 34 | /* ENDIF */ | ||
| 35 | /* */ | ||
| 36 | /* */ | ||
| 37 | /*************************************************************/ | ||
| 38 | /*****************************************************************************/ | ||
| 39 | |||
| 40 | #include "stdio.h" | ||
| 41 | #include "stdlib.h" | ||
| 42 | #include "string.h" | ||
| 43 | #include "dos.h" | ||
| 44 | #include "get_stat.h" | ||
| 45 | #include "extern.h" | ||
| 46 | |||
| 47 | |||
| 48 | void get_status(union REGS *, union REGS *, struct SREGS *); | ||
| 49 | void valid_stat(struct DISK_STATUS far *, union REGS *); | ||
| 50 | void init_partition_tables(void); | ||
| 51 | char read_boot_record(unsigned,unsigned char,unsigned char,unsigned char); /* AC000 */ | ||
| 52 | char get_drive_parameters(unsigned char); | ||
| 53 | void sort_part_table(char); | ||
| 54 | void sort_ext_table(char); | ||
| 55 | unsigned find_part_free_space(void); | ||
| 56 | unsigned find_ext_free_space(void); | ||
| 57 | void load_logical_drive(char, unsigned char); | ||
| 58 | char find_logical_drive(void); | ||
| 59 | unsigned cylinders_to_mbytes(unsigned,unsigned char,unsigned char); /* AN000 */ | ||
| 60 | char find_partition_location(unsigned char); | ||
| 61 | char find_free_partition(void); | ||
| 62 | char find_partition_type(unsigned char); | ||
| 63 | char get_disk_info(void); | ||
| 64 | unsigned copy_fdisk2select(unsigned, DSE far * ); | ||
| 65 | char get_num_logical_dos_drives(void); | ||
| 66 | unsigned get_partition_size(unsigned char); | ||
| 67 | |||
| 68 | void DiskIo(union REGS *,union REGS *, struct SREGS *); | ||
| 69 | unsigned char find_partition_system_type(void); | ||
| 70 | |||
| 71 | #define DptrOf(ti) ( Dptr + (sizeof(DSE) * (ti)) ) | ||
| 72 | |||
| 73 | void get_status(RinPtr, RoutPtr, SrPtr) | ||
| 74 | union REGS *RinPtr; | ||
| 75 | union REGS *RoutPtr; | ||
| 76 | struct SREGS *SrPtr; | ||
| 77 | |||
| 78 | BEGIN | ||
| 79 | DSE (far * Dptr); | ||
| 80 | |||
| 81 | /* ------------- drive = regs.x.ax; */ | ||
| 82 | /* Make drive zero based */ | ||
| 83 | /* ------------- drive--; */ | ||
| 84 | |||
| 85 | FP_SEG(Dptr) = SrPtr->es; | ||
| 86 | FP_OFF(Dptr) = RinPtr->x.di; | ||
| 87 | |||
| 88 | RoutPtr->x.bx = 0; | ||
| 89 | RoutPtr->x.cx = 0; | ||
| 90 | |||
| 91 | switch(RinPtr->x.ax) /* Check the value in AX */ | ||
| 92 | BEGIN | ||
| 93 | |||
| 94 | case uc(FST_DRV): /* Is it a query for the first drive? */ | ||
| 95 | case uc(SEC_DRV): /* Is it a query for the 2nd drive? */ | ||
| 96 | cur_disk = c(RinPtr ->x.ax - 1); | ||
| 97 | RoutPtr->x.ax = 0; | ||
| 98 | valid_stat(Dptr,RoutPtr); /* yes than go execute */ | ||
| 99 | break; | ||
| 100 | |||
| 101 | default: /* otherwise - set AX to one & exit */ | ||
| 102 | RoutPtr->x.ax = 1; | ||
| 103 | break; | ||
| 104 | END | ||
| 105 | |||
| 106 | return; | ||
| 107 | |||
| 108 | END | ||
| 109 | |||
| 110 | /*****************************************************************************/ | ||
| 111 | /******************* START OF SPECIFICATIONS *******************/ | ||
| 112 | /* */ | ||
| 113 | /* SUBROUTINE NAME: VALID_STAT */ | ||
| 114 | /* */ | ||
| 115 | /* DESCRIPTIVE NAME: */ | ||
| 116 | /* */ | ||
| 117 | /* FUNCTION: */ | ||
| 118 | /* ENTRY: */ | ||
| 119 | /* */ | ||
| 120 | /* MOV AX,?? ; AX = 1 first fixed drive */ | ||
| 121 | /* */ | ||
| 122 | /* ; = 2 second fixed drive */ | ||
| 123 | /* ; ES:DI - points to parameter block */ | ||
| 124 | /* ; */ | ||
| 125 | /* CALL GET_DISK_STATUS ; call to subroutine */ | ||
| 126 | /* ; */ | ||
| 127 | /* ; EXIT: */ | ||
| 128 | /* ; AX = 1 drive is not valid */ | ||
| 129 | /* ; = 0 drive is valid */ | ||
| 130 | /* ; CX = number of items in parameter block */ | ||
| 131 | /* ; BX = status of fixed drive */ | ||
| 132 | /* ; as defined below - */ | ||
| 133 | /* ; more than 1 bit can be set */ | ||
| 134 | /* ; ES:DI is filled with data */ | ||
| 135 | /* */ | ||
| 136 | /* EXIT-NORMAL: ERROR=FALSE */ | ||
| 137 | /* */ | ||
| 138 | /* EXIT-ERROR: ERROR=TRUE */ | ||
| 139 | /* GOTO internal_program_error if invalid num */ | ||
| 140 | /* input is returned to this level */ | ||
| 141 | /* */ | ||
| 142 | /* EFFECTS: */ | ||
| 143 | /* */ | ||
| 144 | /* */ | ||
| 145 | /* */ | ||
| 146 | /* INTERNAL REFERENCES: */ | ||
| 147 | /* ROUTINES: */ | ||
| 148 | /* */ | ||
| 149 | /* */ | ||
| 150 | /* EXTERNAL REFERENCES: */ | ||
| 151 | /* ROUTINES: */ | ||
| 152 | /* */ | ||
| 153 | /******************** END OF SPECIFICATIONS ********************/ | ||
| 154 | |||
| 155 | void valid_stat(Dptr,RoutPtr) | ||
| 156 | DSE (far * Dptr); | ||
| 157 | union REGS *RoutPtr; | ||
| 158 | |||
| 159 | BEGIN | ||
| 160 | |||
| 161 | unsigned table_count; | ||
| 162 | char i; | ||
| 163 | unsigned m; | ||
| 164 | unsigned temp; | ||
| 165 | |||
| 166 | /**********************************replacement***********************************************/ | ||
| 167 | /* Initialize the tables that will be used to store the data needed for */ | ||
| 168 | /* SELECT. The disk_status tables will be initialized to 0 for all */ | ||
| 169 | /* values except the logical drive value, if exist in an extended partition */ | ||
| 170 | /* other wise the field will remain undefined. This must be done for both */ | ||
| 171 | /* tables although it has not been established that two physical drives exist */ | ||
| 172 | /* at this point. Additional tables needed are the tables 1) To store the */ | ||
| 173 | /* amount of free space between each partition 2) the amount of free space */ | ||
| 174 | /* between each logical drive (the tables are declared to integer */ | ||
| 175 | /********************************************************************************************/ | ||
| 176 | |||
| 177 | |||
| 178 | /* Init variables */ | ||
| 179 | RoutPtr->x.bx = 0; | ||
| 180 | RoutPtr->x.cx = 0; | ||
| 181 | table_count = 0; | ||
| 182 | |||
| 183 | /* Read drives to get disk information on size, etc..... */ | ||
| 184 | /* good_disk[] = FALSE if can't read disk */ | ||
| 185 | good_disk[0] = TRUE; | ||
| 186 | good_disk[1] = TRUE; | ||
| 187 | if (!get_disk_info()) | ||
| 188 | BEGIN | ||
| 189 | good_disk[0] = FALSE; | ||
| 190 | good_disk[1] = FALSE; | ||
| 191 | END | ||
| 192 | |||
| 193 | /* See if we could read the selected drive */ | ||
| 194 | if ( !good_disk[cur_disk] ) | ||
| 195 | RoutPtr->x.ax = 1; /* indicate disk read failed */ | ||
| 196 | else | ||
| 197 | BEGIN | ||
| 198 | init_partition_tables(); | ||
| 199 | |||
| 200 | /* Is there a primary ? */ | ||
| 201 | |||
| 202 | if (find_partition_system_type() != uc(NOT_FOUND)) | ||
| 203 | BEGIN | ||
| 204 | RoutPtr->x.bx |= E_DISK_PRI; | ||
| 205 | (Dptr+table_count) -> n_part_name = E_PART_PRI_DOS; | ||
| 206 | (Dptr+table_count) -> n_part_size = get_partition_size(find_partition_system_type()); | ||
| 207 | |||
| 208 | for (i = c(0); i < c(4);i++) /* AC000 */ | ||
| 209 | if ( (part_table[cur_disk][i].sys_id == DOS12) || | ||
| 210 | (part_table[cur_disk][i].sys_id == DOS16) || | ||
| 211 | (part_table[cur_disk][i].sys_id == DOSNEW) ) | ||
| 212 | break; | ||
| 213 | |||
| 214 | (Dptr+table_count) -> n_part_status = E_PART_UNFORMAT; | ||
| 215 | if (part_table[cur_disk][i].formatted) | ||
| 216 | (Dptr+table_count) -> n_part_status = E_PART_FORMAT; | ||
| 217 | (Dptr+table_count) -> p_part_drive = part_table[cur_disk][i].drive_letter; | ||
| 218 | for (m=u(0);m < u(4); m++) | ||
| 219 | (Dptr+table_count) -> n_part_level[m] = part_table[cur_disk][i].system_level[m]; | ||
| 220 | |||
| 221 | |||
| 222 | table_count++; | ||
| 223 | END | ||
| 224 | |||
| 225 | /* if there an extended? */ | ||
| 226 | |||
| 227 | if (find_partition_type(EXTENDED)) | ||
| 228 | BEGIN | ||
| 229 | /* Found one, now fill in entry with vital stats */ | ||
| 230 | RoutPtr->x.bx |= E_DISK_EXT_DOS; | ||
| 231 | (Dptr+table_count) ->n_part_name = E_PART_EXT_DOS; | ||
| 232 | (Dptr+table_count) ->n_part_size = get_partition_size(EXTENDED); | ||
| 233 | (Dptr+table_count) -> n_part_status = E_PART_UNFORMAT; | ||
| 234 | (Dptr+table_count) -> p_part_drive = next_letter; | ||
| 235 | for (m=u(0);m < u(4); m++) | ||
| 236 | (Dptr+table_count) -> n_part_level[m] = NUL; | ||
| 237 | table_count++; | ||
| 238 | END | ||
| 239 | |||
| 240 | /* Are there any logical drives */ | ||
| 241 | |||
| 242 | if ( (find_partition_type(EXTENDED)) && (find_logical_drive()) ) | ||
| 243 | RoutPtr->x.bx |= E_DISK_LOG_DRI; | ||
| 244 | |||
| 245 | /* Is there free extended partition space, and are there free entries?*/ | ||
| 246 | |||
| 247 | if ( (temp = find_ext_free_space()) != u(0)) | ||
| 248 | BEGIN | ||
| 249 | /* Indicate we have room in the extended, and build entry to show how much */ | ||
| 250 | RoutPtr->x.bx |= E_DISK_EDOS_MEM; | ||
| 251 | (Dptr+table_count) ->n_part_name = uc(E_FREE_MEM_EDOS); | ||
| 252 | (Dptr+table_count) ->n_part_size = temp; | ||
| 253 | (Dptr+table_count) -> n_part_status = E_PART_UNFORMAT; | ||
| 254 | (Dptr+table_count) -> p_part_drive = c(' '); | ||
| 255 | for (m=u(0);m < u(4); m++) | ||
| 256 | (Dptr+table_count) -> n_part_level[m] = NUL; | ||
| 257 | table_count++; | ||
| 258 | END | ||
| 259 | |||
| 260 | /* Is there any free space in master boot record partitions, and free partitions? */ | ||
| 261 | |||
| 262 | if ( (temp = find_part_free_space()) != u(0)) | ||
| 263 | BEGIN | ||
| 264 | /* Indicate we have free space in the MBR partition tables */ | ||
| 265 | RoutPtr->x.ax = 0; | ||
| 266 | RoutPtr->x.bx |= E_DISK_FREE_MEM; | ||
| 267 | (Dptr+table_count) ->n_part_name = uc(E_FREE_MEM_DISK); | ||
| 268 | (Dptr+table_count) ->n_part_size = temp; | ||
| 269 | for (m=u(0);m < u(4); m++) | ||
| 270 | (Dptr+table_count) -> n_part_level[m] = NUL; | ||
| 271 | table_count++; | ||
| 272 | END | ||
| 273 | |||
| 274 | /* If there is a logical drive get the drive letters and the associated */ | ||
| 275 | /* size, and for the logical drive */ | ||
| 276 | |||
| 277 | /* First check again to see if their is an extended partition */ | ||
| 278 | /* and see if there exist any logical drives --- sort the logical */ | ||
| 279 | /* drives and and get the drive and stuffit ine the table */ | ||
| 280 | |||
| 281 | /********************************CNS******************************************/ | ||
| 282 | if ( (find_partition_type(EXTENDED)) && (find_logical_drive()) ) | ||
| 283 | table_count += copy_fdisk2select(table_count,Dptr); /* go fill the tables */ | ||
| 284 | /*****************************************************************************/ | ||
| 285 | /* Now we should get the number of items that will be returned to select */ | ||
| 286 | /* and stuff it in CX */ | ||
| 287 | /******************************************************************************/ | ||
| 288 | RoutPtr->x.cx = table_count; /* number of items */ | ||
| 289 | regs.x.ax = u(0); | ||
| 290 | |||
| 291 | END | ||
| 292 | |||
| 293 | return; | ||
| 294 | |||
| 295 | END | ||
| 296 | |||
| 297 | void init_partition_tables() | ||
| 298 | BEGIN | ||
| 299 | |||
| 300 | unsigned i; | ||
| 301 | unsigned char j; | ||
| 302 | unsigned k; | ||
| 303 | unsigned l; | ||
| 304 | unsigned m; | ||
| 305 | unsigned n; | ||
| 306 | unsigned partition_location; | ||
| 307 | char temp; | ||
| 308 | char more_drives_exist; | ||
| 309 | char num_logical_drives; | ||
| 310 | unsigned insert; | ||
| 311 | unsigned index; | ||
| 312 | char save_disk; | ||
| 313 | |||
| 314 | save_disk = cur_disk; | ||
| 315 | |||
| 316 | /* initialize first drive found to "C" */ | ||
| 317 | next_letter = c('C'); /* AC000 */ | ||
| 318 | |||
| 319 | /* Look at both disks */ | ||
| 320 | for (j = uc(0); j < number_of_drives; j++) /* AC000 */ | ||
| 321 | BEGIN | ||
| 322 | |||
| 323 | /* Initialize the cur_disk field to the drive in question so */ | ||
| 324 | /* that the calls to the partition information routines will work */ | ||
| 325 | cur_disk = ((char)(j)); | ||
| 326 | |||
| 327 | /* Read in the master boot record and see if it was okay */ | ||
| 328 | if (read_boot_record(u(0),j,uc(0),uc(1))) /* AC000 */ | ||
| 329 | BEGIN | ||
| 330 | |||
| 331 | /* See if there was a valid boot record there */ | ||
| 332 | if ((boot_record[510] == uc(0x55)) && (boot_record[511] == uc(0xAA))) /* AC000 */ | ||
| 333 | BEGIN | ||
| 334 | |||
| 335 | /* What was on the disk is a valid boot record, so save it */ | ||
| 336 | for (i=u(0);i < u(BYTES_PER_SECTOR); i++) /* AC000 */ | ||
| 337 | BEGIN | ||
| 338 | master_boot_record[j][i] = boot_record[i]; | ||
| 339 | END | ||
| 340 | END | ||
| 341 | /* We've now got a copy of the master boot record saved. Now we need */ | ||
| 342 | /* to translate what in the boot record to the area that it's going | ||
| 343 | /* to be worked on (part_table) */ | ||
| 344 | |||
| 345 | /* Read in the data from the master boot record partition entries*/ | ||
| 346 | for (i=u(0); i < u(4); i++) /* AC000 */ | ||
| 347 | BEGIN | ||
| 348 | index = i*16; | ||
| 349 | |||
| 350 | /* Get boot ind */ | ||
| 351 | part_table[j][i].boot_ind = master_boot_record[j][0x1BE+index]; | ||
| 352 | |||
| 353 | /* Start head */ | ||
| 354 | part_table[j][i].start_head = master_boot_record[j][0x1BF+index]; | ||
| 355 | |||
| 356 | /* Start sector - unscramble it from INT 13 format*/ | ||
| 357 | part_table[j][i].start_sector= (master_boot_record[j][0x1C0+index] & 0x3F); | ||
| 358 | |||
| 359 | /* Start cyl - unscramble it from INT 13 format*/ | ||
| 360 | part_table[j][i].start_cyl= ((((unsigned)master_boot_record[j][0x1C0+index]) & 0x00C0) << 2) | ||
| 361 | + ((unsigned)master_boot_record[j][0x1C1+index]); | ||
| 362 | |||
| 363 | /* System id */ | ||
| 364 | part_table[j][i].sys_id = master_boot_record[j][0x1C2+index]; | ||
| 365 | |||
| 366 | /* End head */ | ||
| 367 | part_table[j][i].end_head = master_boot_record[j][0x1C3+index]; | ||
| 368 | |||
| 369 | /* End sector - unscramble it from INT 13 format*/ | ||
| 370 | part_table[j][i].end_sector= (master_boot_record[j][0x1C4+index] & 0x3F); | ||
| 371 | |||
| 372 | /* End cyl - unscramble it from INT 13 format*/ | ||
| 373 | part_table[j][i].end_cyl= ((((unsigned)master_boot_record[j][0x1C4+index]) & 0x00C0) << 2) | ||
| 374 | + ((unsigned)master_boot_record[j][0x1C5+index]); | ||
| 375 | |||
| 376 | /* Relative sectors */ | ||
| 377 | |||
| 378 | part_table[j][i].rel_sec = | ||
| 379 | ((unsigned long)master_boot_record[j][0x1C9+index]) << 24; | ||
| 380 | |||
| 381 | part_table[j][i].rel_sec = part_table[j][i].rel_sec + | ||
| 382 | (((unsigned long)master_boot_record[j][0x1C8+index]) << 16); | ||
| 383 | |||
| 384 | part_table[j][i].rel_sec = part_table[j][i].rel_sec + | ||
| 385 | (((unsigned long)master_boot_record[j][0x1C7+index]) << 8); | ||
| 386 | |||
| 387 | part_table[j][i].rel_sec = part_table[j][i].rel_sec + | ||
| 388 | ((unsigned long)master_boot_record[j][0x1C6+index]); | ||
| 389 | |||
| 390 | /* Number of sectors */ | ||
| 391 | part_table[j][i].num_sec = | ||
| 392 | ((unsigned long)master_boot_record[j][0x1CD+index]) << 24; | ||
| 393 | |||
| 394 | part_table[j][i].num_sec = part_table[j][i].num_sec + | ||
| 395 | (((unsigned long)master_boot_record[j][0x1CC+index]) << 16); | ||
| 396 | |||
| 397 | part_table[j][i].num_sec = part_table[j][i].num_sec + | ||
| 398 | (((unsigned long)master_boot_record[j][0x1CB+index]) << 8); | ||
| 399 | |||
| 400 | part_table[j][i].num_sec = part_table[j][i].num_sec + | ||
| 401 | ((unsigned long)master_boot_record[j][0x1CA+index]); | ||
| 402 | |||
| 403 | part_table[j][i].mbytes_used = | ||
| 404 | cylinders_to_mbytes(((part_table[j][i].end_cyl-part_table[j][i].start_cyl)+1), | ||
| 405 | max_sector[cur_disk], max_head[cur_disk]); /* AN000 */ | ||
| 406 | |||
| 407 | /* Set drive letter */ | ||
| 408 | if ( (part_table[j][i].sys_id == DOS12) || /* AN000 */ | ||
| 409 | (part_table[j][i].sys_id == DOS16) || /* AN000 */ | ||
| 410 | (part_table[j][i].sys_id == DOSNEW) ) /* AN000 */ | ||
| 411 | part_table[j][i].drive_letter = next_letter++; /* AN000 */ | ||
| 412 | |||
| 413 | /* Clean out the boot_record */ | ||
| 414 | for (m=u(0);m < u(BYTES_PER_SECTOR); m++) /* AC000 */ | ||
| 415 | BEGIN | ||
| 416 | boot_record[m] = uc(0); /* AC000 */ | ||
| 417 | END | ||
| 418 | |||
| 419 | part_table[j][i].formatted = FALSE; | ||
| 420 | for (m=u(0);m < u(4); m++) | ||
| 421 | part_table[j][i].system_level[m] = NUL; | ||
| 422 | if (read_boot_record(part_table[j][i].start_cyl, /* AN000 */ | ||
| 423 | j, | ||
| 424 | part_table[j][i].start_head, | ||
| 425 | part_table[j][i].start_sector)) | ||
| 426 | BEGIN /* AN000 */ | ||
| 427 | /* See if the disk has already been formated */ | ||
| 428 | if ((boot_record[510] == uc(0x55)) && (boot_record[511] == uc(0xAA))) /* AN000 */ | ||
| 429 | BEGIN | ||
| 430 | part_table[j][i].formatted = TRUE; /* AN000 */ | ||
| 431 | for (m=u(0);m < u(4); m++) | ||
| 432 | BEGIN | ||
| 433 | n = (m + u(7)); | ||
| 434 | part_table[j][i].system_level[m] = boot_record[n]; | ||
| 435 | END | ||
| 436 | END | ||
| 437 | read_boot_record(part_table[j][i].start_cyl,j,uc(0),uc(1)); | ||
| 438 | END | ||
| 439 | END | ||
| 440 | END | ||
| 441 | else | ||
| 442 | BEGIN | ||
| 443 | cur_disk = save_disk; | ||
| 444 | return; | ||
| 445 | END | ||
| 446 | END | ||
| 447 | |||
| 448 | /* Look at both disks */ | ||
| 449 | for (j = uc(0); j < number_of_drives; j++) /* AC000 */ | ||
| 450 | BEGIN | ||
| 451 | |||
| 452 | /* Initialize the cur_disk field to the drive in question so */ | ||
| 453 | /* that the calls to the partition information routines will work */ | ||
| 454 | cur_disk = ((char)(j)); | ||
| 455 | BEGIN | ||
| 456 | /* Read in the master boot record and see if it was okay */ | ||
| 457 | if (read_boot_record(u(0),j,uc(0),uc(1))) /* AC000 */ | ||
| 458 | /* Now, go read in extended partition info */ | ||
| 459 | BEGIN | ||
| 460 | if (find_partition_type(uc(EXTENDED))) /* AC000 */ | ||
| 461 | BEGIN | ||
| 462 | /* Initialize the array to zero's - include one dummy entry */ | ||
| 463 | for (i=u(0); i < u(24); i++) /* AC000 */ | ||
| 464 | BEGIN | ||
| 465 | ext_table[j][i].boot_ind = uc(0); /* AC000 */ | ||
| 466 | ext_table[j][i].start_head = uc(0); /* AC000 */ | ||
| 467 | ext_table[j][i].start_sector = uc(0); /* AC000 */ | ||
| 468 | ext_table[j][i].start_cyl = u(0); /* AC000 */ | ||
| 469 | ext_table[j][i].sys_id = uc(0); /* AC000 */ | ||
| 470 | ext_table[j][i].end_head = uc(0); /* AC000 */ | ||
| 471 | ext_table[j][i].end_sector = uc(0); /* AC000 */ | ||
| 472 | ext_table[j][i].end_cyl = u(0); /* AC000 */ | ||
| 473 | ext_table[j][i].rel_sec = ul(0); /* AC000 */ | ||
| 474 | ext_table[j][i].num_sec = ul(0); /* AC000 */ | ||
| 475 | ext_table[j][i].mbytes_used = f(0); /* AN000 */ | ||
| 476 | ext_table[j][i].drive_letter = NUL; /* AN000 */ | ||
| 477 | |||
| 478 | for (m=u(0);m < u(4); m++) | ||
| 479 | ext_table[j][i].system_level[m] = NUL; /* AN000 */ | ||
| 480 | |||
| 481 | END | ||
| 482 | |||
| 483 | /* Find where the first extended boot record is */ | ||
| 484 | temp = find_partition_location(uc(EXTENDED)); /* AC000 */ | ||
| 485 | partition_location = part_table[j][temp].start_cyl; | ||
| 486 | |||
| 487 | /* Go find extended boot records as long as there are more of them */ | ||
| 488 | more_drives_exist = TRUE; | ||
| 489 | |||
| 490 | /* Init the number of logical drives, for a array index */ | ||
| 491 | num_logical_drives = c(0); /* AC000 */ | ||
| 492 | |||
| 493 | while (more_drives_exist) | ||
| 494 | BEGIN | ||
| 495 | /* Assume we won't find another logical drive */ | ||
| 496 | more_drives_exist = FALSE; | ||
| 497 | |||
| 498 | /*Read in the extended boot record */ | ||
| 499 | if (read_boot_record(partition_location,j,uc(0),uc(1))) /* AC000 */ | ||
| 500 | BEGIN | ||
| 501 | load_logical_drive(num_logical_drives,j); | ||
| 502 | |||
| 503 | |||
| 504 | /* find the next logical drive */ | ||
| 505 | for (i = u(0); i < u(4); i++) /* AC000 */ | ||
| 506 | BEGIN | ||
| 507 | index = i*16; | ||
| 508 | /* See if a sys id byte of exteneded exists */ | ||
| 509 | if (boot_record[0x1C2+index] == uc(EXTENDED)) /* AC000 */ | ||
| 510 | BEGIN | ||
| 511 | /* Found another drive, now get its location */ | ||
| 512 | partition_location= (((((unsigned)(boot_record[0x1C0 + index])) & 0x00C0) << 2)); | ||
| 513 | partition_location = partition_location + ((unsigned)(boot_record[0x1C1+index])); | ||
| 514 | |||
| 515 | /* Indicate we found another one */ | ||
| 516 | more_drives_exist = TRUE; | ||
| 517 | |||
| 518 | /* Up the count of found ones */ | ||
| 519 | num_logical_drives++; | ||
| 520 | break; | ||
| 521 | END | ||
| 522 | END | ||
| 523 | END | ||
| 524 | END | ||
| 525 | END | ||
| 526 | END | ||
| 527 | END | ||
| 528 | END | ||
| 529 | cur_disk = save_disk; | ||
| 530 | return; | ||
| 531 | END | ||
| 532 | |||
| 533 | |||
| 534 | /* */ | ||
| 535 | unsigned find_part_free_space() | ||
| 536 | |||
| 537 | BEGIN | ||
| 538 | |||
| 539 | |||
| 540 | char i; | ||
| 541 | char partition_count; | ||
| 542 | char last_found_partition; | ||
| 543 | unsigned temp; | ||
| 544 | char freespace_count; | ||
| 545 | char any_partition; | ||
| 546 | unsigned temp_size; | ||
| 547 | |||
| 548 | /* Sort the partition table */ | ||
| 549 | sort_part_table(c(4)); /* AC000 */ | ||
| 550 | |||
| 551 | |||
| 552 | /* Intialize free space to zero */ | ||
| 553 | for (i = c(0); i < c(24); i++) /* AC000 */ | ||
| 554 | BEGIN | ||
| 555 | free_space[i].space = u(0); /* AC000 */ | ||
| 556 | free_space[i].start = u(0); /* AC000 */ | ||
| 557 | free_space[i].end = u(0); /* AC000 */ | ||
| 558 | free_space[i].mbytes_unused = u(0); /* AC000 */ /* AN000 */ | ||
| 559 | END | ||
| 560 | |||
| 561 | /* Find space between start of disk and first partition */ | ||
| 562 | partition_count = c(0); /* AC000 */ | ||
| 563 | |||
| 564 | any_partition = FALSE; | ||
| 565 | for (i = c(0); i < c(4); i++) /* AC000 */ | ||
| 566 | BEGIN | ||
| 567 | if (part_table[cur_disk][sort[i]].sys_id != uc(0)) /* AC000 */ | ||
| 568 | BEGIN | ||
| 569 | /* Found a partition, get the space */ | ||
| 570 | |||
| 571 | free_space[0].start = u(0); /* AC000 */ | ||
| 572 | |||
| 573 | /* free space ends before start of next valid partition */ | ||
| 574 | if (part_table[cur_disk][sort[i]].start_cyl > u(0)) /* AC000 */ | ||
| 575 | free_space[0].end = part_table[cur_disk][sort[i]].start_cyl-1; | ||
| 576 | |||
| 577 | free_space[0].space = part_table[cur_disk][sort[i]].start_cyl; | ||
| 578 | free_space[0].mbytes_unused = | ||
| 579 | cylinders_to_mbytes(free_space[0].space,max_sector[cur_disk],max_head[cur_disk]); /* AN000 */ | ||
| 580 | |||
| 581 | partition_count = i; | ||
| 582 | last_found_partition = sort[i]; | ||
| 583 | any_partition = TRUE; | ||
| 584 | break; | ||
| 585 | END | ||
| 586 | END | ||
| 587 | /* See if any partitions were there */ | ||
| 588 | if (any_partition) | ||
| 589 | BEGIN | ||
| 590 | /* Look for space between the rest of the partitions */ | ||
| 591 | freespace_count = c(1); /* AC000 */ | ||
| 592 | for (i = partition_count+1; i < c(4); i++) /* AC000 */ | ||
| 593 | BEGIN | ||
| 594 | if (part_table[cur_disk][sort[i]].sys_id != uc(0)) /* AC000 */ | ||
| 595 | BEGIN | ||
| 596 | |||
| 597 | /* Check to see if more than one partition on a cylinder (i.e. XENIX bad block) */ | ||
| 598 | /* If so, leave the space at zero */ | ||
| 599 | |||
| 600 | if (part_table[cur_disk][sort[i]].start_cyl != part_table[cur_disk][last_found_partition].end_cyl) | ||
| 601 | |||
| 602 | BEGIN | ||
| 603 | /* No, things are normal */ | ||
| 604 | /* Get space between the end of the last one and the start of the next one */ | ||
| 605 | free_space[freespace_count].space = part_table[cur_disk][sort[i]].start_cyl | ||
| 606 | - (part_table[cur_disk][last_found_partition].end_cyl+1); | ||
| 607 | |||
| 608 | temp_size = (part_table[cur_disk][sort[i]].start_cyl - | ||
| 609 | part_table[cur_disk][last_found_partition].end_cyl); | ||
| 610 | |||
| 611 | if (temp_size != u(0) ) /* AC000 */ | ||
| 612 | free_space[freespace_count].space = temp_size - u(1); /* AC000 */ | ||
| 613 | END | ||
| 614 | |||
| 615 | free_space[freespace_count].start = part_table[cur_disk][last_found_partition].end_cyl+1; | ||
| 616 | free_space[freespace_count].end = part_table[cur_disk][sort[i]].start_cyl -1; | ||
| 617 | free_space[freespace_count].mbytes_unused = | ||
| 618 | cylinders_to_mbytes(free_space[freespace_count].space,max_sector[cur_disk],max_head[cur_disk]); /* AN000 */ | ||
| 619 | |||
| 620 | /* update the last found partition */ | ||
| 621 | last_found_partition = sort[i]; | ||
| 622 | freespace_count++; | ||
| 623 | END | ||
| 624 | END | ||
| 625 | /* Find the space between the last partition and the end of the disk */ | ||
| 626 | free_space[freespace_count].space = (total_disk[cur_disk] | ||
| 627 | - part_table[cur_disk][last_found_partition].end_cyl)-1; | ||
| 628 | free_space[freespace_count].start = part_table[cur_disk][last_found_partition].end_cyl+1; | ||
| 629 | free_space[freespace_count].end = total_disk[cur_disk]-1; | ||
| 630 | free_space[freespace_count].mbytes_unused = | ||
| 631 | cylinders_to_mbytes(free_space[freespace_count].space,max_sector[cur_disk],max_head[cur_disk]); /* AN000 */ | ||
| 632 | END | ||
| 633 | else | ||
| 634 | BEGIN | ||
| 635 | /* No partitions found, show entire space as free */ | ||
| 636 | free_space[0].start = u(0); /* AC000 */ | ||
| 637 | free_space[0].end = total_disk[cur_disk]-1; | ||
| 638 | free_space[0].space = (free_space[0].end - free_space[0].start)+1; | ||
| 639 | free_space[0].mbytes_unused = | ||
| 640 | cylinders_to_mbytes(free_space[0].space,max_sector[cur_disk],max_head[cur_disk]); /* AN000 */ | ||
| 641 | END | ||
| 642 | |||
| 643 | /* Find largest free space */ | ||
| 644 | /* Zip thru the table */ | ||
| 645 | for (i = c(0); i < c(24); i++) /* AC000 */ | ||
| 646 | BEGIN | ||
| 647 | /* Is this one bigger ? */ | ||
| 648 | if (free_space[i].space > temp) | ||
| 649 | BEGIN | ||
| 650 | temp = free_space[i].space; | ||
| 651 | last_found_partition = i; | ||
| 652 | END | ||
| 653 | END | ||
| 654 | |||
| 655 | return(free_space[last_found_partition].mbytes_unused); | ||
| 656 | END | ||
| 657 | |||
| 658 | /* */ | ||
| 659 | unsigned find_ext_free_space() | ||
| 660 | BEGIN | ||
| 661 | char i; | ||
| 662 | char partition_count; | ||
| 663 | char last_found_partition; | ||
| 664 | unsigned temp; | ||
| 665 | char freespace_count; | ||
| 666 | char any_partition; | ||
| 667 | char ext_location; | ||
| 668 | |||
| 669 | /* Sort the partition table */ | ||
| 670 | sort_ext_table(c(23)); /* AC000 */ | ||
| 671 | |||
| 672 | /* Initialize free space to zero */ | ||
| 673 | for (i = c(0); i < c(24); i++) /* AC000 */ | ||
| 674 | BEGIN | ||
| 675 | free_space[i].space = u(0); /* AC000 */ | ||
| 676 | free_space[i].start = u(0); | ||
| 677 | free_space[i].end = u(0); /* AC000 */ | ||
| 678 | free_space[i].mbytes_unused = u(0); /* AN000 */ | ||
| 679 | END | ||
| 680 | |||
| 681 | /* Find space between start of Extended partition and first volume */ | ||
| 682 | partition_count = c(0); /* AC000 */ | ||
| 683 | last_found_partition = c(0); | ||
| 684 | ext_location = find_partition_location(uc(EXTENDED)); /* AC000 */ | ||
| 685 | |||
| 686 | if (ext_location != c(NOT_FOUND)) | ||
| 687 | BEGIN | ||
| 688 | |||
| 689 | any_partition = FALSE; | ||
| 690 | for (i = c(0); i < c(24); i++) /* AC000 */ | ||
| 691 | BEGIN | ||
| 692 | if (ext_table[cur_disk][sort[i]].sys_id != uc(0)) /* AC000 */ | ||
| 693 | BEGIN | ||
| 694 | /* Found a partition, get the space */ | ||
| 695 | free_space[0].space = ext_table[cur_disk][sort[i]].start_cyl - part_table[cur_disk][ext_location].start_cyl; | ||
| 696 | free_space[0].start = part_table[cur_disk][ext_location].start_cyl; | ||
| 697 | free_space[0].end = ext_table[cur_disk][sort[i]].start_cyl-1; | ||
| 698 | free_space[0].mbytes_unused = | ||
| 699 | cylinders_to_mbytes(free_space[0].space,max_sector[cur_disk],max_head[cur_disk]); /* AN000 */ | ||
| 700 | |||
| 701 | partition_count = i; | ||
| 702 | last_found_partition = sort[i]; | ||
| 703 | any_partition = TRUE; | ||
| 704 | break; | ||
| 705 | END | ||
| 706 | END | ||
| 707 | /* See if any partitions were there */ | ||
| 708 | if (any_partition) | ||
| 709 | BEGIN | ||
| 710 | /* Look for space between the rest of the partitions */ | ||
| 711 | freespace_count = c(1); /* AC000 */ | ||
| 712 | for (i = partition_count+1; i < c(24); i++) /* AC000 */ | ||
| 713 | BEGIN | ||
| 714 | if (ext_table[cur_disk][sort[i]].sys_id != uc(0)) /* AC000 */ | ||
| 715 | BEGIN | ||
| 716 | |||
| 717 | /* Get space between the end of the last one and the start of the next one */ | ||
| 718 | temp = ext_table[cur_disk][sort[i]].start_cyl - (ext_table[cur_disk][last_found_partition].end_cyl+1); | ||
| 719 | free_space[freespace_count].space = temp; | ||
| 720 | free_space[freespace_count].start = ext_table[cur_disk][last_found_partition].end_cyl+1; | ||
| 721 | free_space[freespace_count].end = ext_table[cur_disk][sort[i]].start_cyl -1; | ||
| 722 | free_space[freespace_count].mbytes_unused = | ||
| 723 | cylinders_to_mbytes(free_space[freespace_count].space,max_sector[cur_disk],max_head[cur_disk]); /* AN000 */ | ||
| 724 | |||
| 725 | |||
| 726 | /* update the last found partition */ | ||
| 727 | last_found_partition = sort[i]; | ||
| 728 | freespace_count++; | ||
| 729 | END | ||
| 730 | END | ||
| 731 | /* Find the space between the last partition and the end of the extended partition */ | ||
| 732 | temp = part_table[cur_disk][ext_location].end_cyl - ext_table[cur_disk][last_found_partition].end_cyl; | ||
| 733 | free_space[freespace_count].space = temp; | ||
| 734 | free_space[freespace_count].start = ext_table[cur_disk][last_found_partition].end_cyl+1; | ||
| 735 | free_space[freespace_count].end = part_table[cur_disk][ext_location].end_cyl; | ||
| 736 | free_space[freespace_count].mbytes_unused = | ||
| 737 | cylinders_to_mbytes(free_space[freespace_count].space,max_sector[cur_disk],max_head[cur_disk]); /* AN000 */ | ||
| 738 | |||
| 739 | END | ||
| 740 | else | ||
| 741 | BEGIN | ||
| 742 | /* No partitions found, show entire space as free */ | ||
| 743 | free_space[0].space = (part_table[cur_disk][ext_location].end_cyl - part_table[cur_disk][ext_location].start_cyl) + 1; | ||
| 744 | free_space[0].start = part_table[cur_disk][ext_location].start_cyl; | ||
| 745 | free_space[0].end = part_table[cur_disk][ext_location].end_cyl; | ||
| 746 | free_space[0].mbytes_unused = | ||
| 747 | cylinders_to_mbytes(free_space[0].space,max_sector[cur_disk],max_head[cur_disk]); /* AN000 */ | ||
| 748 | END | ||
| 749 | |||
| 750 | /* Find largest free space */ | ||
| 751 | temp = u(0); /* AC000 */ | ||
| 752 | |||
| 753 | /* Find largest free space */ | ||
| 754 | temp = u(0); /* AC000 */ | ||
| 755 | |||
| 756 | /* Zip thru the table */ | ||
| 757 | for (i = c(0); i < c(24); i++) /* AC000 */ | ||
| 758 | BEGIN | ||
| 759 | /* Is this one bigger ? */ | ||
| 760 | if (free_space[i].space > temp) | ||
| 761 | BEGIN | ||
| 762 | temp = free_space[i].space; | ||
| 763 | last_found_partition = i; | ||
| 764 | END | ||
| 765 | END | ||
| 766 | END | ||
| 767 | /* Return with the largest free space */ | ||
| 768 | return(free_space[last_found_partition].mbytes_unused); | ||
| 769 | END | ||
| 770 | /* */ | ||
| 771 | void sort_part_table(size) | ||
| 772 | |||
| 773 | char size; | ||
| 774 | |||
| 775 | BEGIN | ||
| 776 | |||
| 777 | char changed; | ||
| 778 | char temp; | ||
| 779 | char i; | ||
| 780 | |||
| 781 | /* Init the sorting parameters */ | ||
| 782 | |||
| 783 | for (i=c(0); i < size; i++) /* AC000 */ | ||
| 784 | BEGIN | ||
| 785 | sort[i] = i; | ||
| 786 | END | ||
| 787 | |||
| 788 | /* Do a bubble sort */ | ||
| 789 | changed = TRUE; | ||
| 790 | |||
| 791 | /* Sort until we don't do a swap */ | ||
| 792 | while (changed) | ||
| 793 | |||
| 794 | BEGIN | ||
| 795 | changed = FALSE; | ||
| 796 | for (i=c(1); i < size; i++) /* AC000 */ | ||
| 797 | BEGIN | ||
| 798 | |||
| 799 | /* Does the partition entry start before the previous one, or */ | ||
| 800 | /* is it empty (0 ENTRY). If empty, it automatically gets shoved */ | ||
| 801 | /* to the front, if the previous entry isn't also empty */ | ||
| 802 | |||
| 803 | if ((part_table[cur_disk][sort[i]].end_cyl < part_table[cur_disk][sort[i-1]].end_cyl) | ||
| 804 | || ((part_table[cur_disk][sort[i]].sys_id == uc(0)) && (part_table[cur_disk][sort[i-1]].sys_id != uc(0)))) /* AC000 */ | ||
| 805 | |||
| 806 | BEGIN | ||
| 807 | /* Swap the order indicators */ | ||
| 808 | temp = sort[i-1]; | ||
| 809 | sort[i-1] = sort[i]; | ||
| 810 | sort[i] = temp; | ||
| 811 | |||
| 812 | /* printf("\nI-1 =%d\n",part_table[cur_disk][sort[i-1]].start_cyl);*/ | ||
| 813 | /* printf("I =%d\n",part_table[cur_disk][sort[i]].start_cyl);*/ | ||
| 814 | /* printf("Sort[i-1] = %d\n",sort[i-1]);*/ | ||
| 815 | /* printf("Sort[i] = %d\n",sort[i]); */ | ||
| 816 | /* wait_for_ESC(); */ | ||
| 817 | |||
| 818 | |||
| 819 | /* indicate we did a swap */ | ||
| 820 | changed = TRUE; | ||
| 821 | END | ||
| 822 | END | ||
| 823 | END | ||
| 824 | return; | ||
| 825 | END | ||
| 826 | |||
| 827 | |||
| 828 | |||
| 829 | |||
| 830 | /* */ | ||
| 831 | /* */ | ||
| 832 | void sort_ext_table(size) | ||
| 833 | |||
| 834 | char size; | ||
| 835 | |||
| 836 | BEGIN | ||
| 837 | |||
| 838 | char changed; | ||
| 839 | char temp; | ||
| 840 | char i; | ||
| 841 | |||
| 842 | /* Init the sorting parameters */ | ||
| 843 | |||
| 844 | for (i=c(0); i < size; i++) /* AC000 */ | ||
| 845 | BEGIN | ||
| 846 | sort[i] = i; | ||
| 847 | END | ||
| 848 | |||
| 849 | /* Do a bubble sort */ | ||
| 850 | changed = TRUE; | ||
| 851 | |||
| 852 | /* Sort until we don't do a swap */ | ||
| 853 | while (changed) | ||
| 854 | |||
| 855 | BEGIN | ||
| 856 | changed = FALSE; | ||
| 857 | for (i=c(1); i < size; i++) /* AC000 */ | ||
| 858 | BEGIN | ||
| 859 | |||
| 860 | if (ext_table[cur_disk][sort[i]].start_cyl < ext_table[cur_disk][sort[i-1]].start_cyl) | ||
| 861 | BEGIN | ||
| 862 | |||
| 863 | temp = sort[i-1]; | ||
| 864 | sort[i-1] = sort[i]; | ||
| 865 | sort[i] = temp; | ||
| 866 | /* indicate we did a swap */ | ||
| 867 | changed = TRUE; | ||
| 868 | END | ||
| 869 | END | ||
| 870 | END | ||
| 871 | return; | ||
| 872 | END | ||
| 873 | |||
| 874 | /* */ | ||
| 875 | void load_logical_drive(point,drive) | ||
| 876 | |||
| 877 | char point; | ||
| 878 | unsigned char drive; | ||
| 879 | |||
| 880 | BEGIN | ||
| 881 | |||
| 882 | char volume_label[11]; /* AN000 */ | ||
| 883 | unsigned i; | ||
| 884 | unsigned m; | ||
| 885 | unsigned n; | ||
| 886 | unsigned index; | ||
| 887 | unsigned dx_pointer; /* AN000 */ | ||
| 888 | unsigned partition_location; /* AN000 */ | ||
| 889 | |||
| 890 | /* Check to see if anything is there */ | ||
| 891 | if ((boot_record[510] == uc(0x55)) && (boot_record[511] == uc(0xAA))) /* AC000 */ | ||
| 892 | BEGIN | ||
| 893 | /* The boot record is there - read in the logical drive if it is there */ | ||
| 894 | for (i = u(0); i < u(4); i++) /* AC000 */ | ||
| 895 | BEGIN | ||
| 896 | |||
| 897 | index = i*16; | ||
| 898 | /* See if it is a defined extended drive*/ | ||
| 899 | if ((boot_record[0x1C2 + index] != uc(0)) && (boot_record[0x1C2 + index] != uc(EXTENDED))) /* AC000 */ | ||
| 900 | BEGIN | ||
| 901 | /* Get boot ind */ | ||
| 902 | ext_table[drive][point].boot_ind = boot_record[0x1BE + index]; | ||
| 903 | |||
| 904 | /* Start head */ | ||
| 905 | ext_table[drive][point].start_head = boot_record[0x1BF + index]; | ||
| 906 | |||
| 907 | /* Start sector - unscramble it from INT 13 format*/ | ||
| 908 | ext_table[drive][point].start_sector= (boot_record[0x1C0 + index] & 0x3F); | ||
| 909 | |||
| 910 | /* Start cyl - unscramble it from INT 13 format*/ | ||
| 911 | ext_table[drive][point].start_cyl= ((((unsigned)boot_record[0x1C0+index]) & 0x00C0) << 2) | ||
| 912 | + ((unsigned)boot_record[0x1C1+index]); | ||
| 913 | |||
| 914 | |||
| 915 | /* System id */ | ||
| 916 | ext_table[drive][point].sys_id = boot_record[0x1C2+index]; | ||
| 917 | |||
| 918 | /* End head */ | ||
| 919 | ext_table[drive][point].end_head = boot_record[0x1C3+index]; | ||
| 920 | |||
| 921 | /* End sector - unscramble it from INT 13 format*/ | ||
| 922 | ext_table[drive][point].end_sector= (boot_record[0x1C4+index] & 0x3F); | ||
| 923 | |||
| 924 | |||
| 925 | /* End cyl - unscramble it from INT 13 format*/ | ||
| 926 | ext_table[drive][point].end_cyl= ((((unsigned)boot_record[0x1C4+index]) & 0x00C0) << 2) | ||
| 927 | + ((unsigned)boot_record[0x1C5+index]); | ||
| 928 | |||
| 929 | /* Relative sectors */ | ||
| 930 | ext_table[drive][point].rel_sec = | ||
| 931 | ((unsigned long)boot_record[0x1C9+index]) << 24; | ||
| 932 | |||
| 933 | ext_table[drive][point].rel_sec = | ||
| 934 | ext_table[drive][point].rel_sec+(((unsigned long)boot_record[0x1C8+index]) << 16); | ||
| 935 | |||
| 936 | ext_table[drive][point].rel_sec = | ||
| 937 | ext_table[drive][point].rel_sec + (((unsigned long)boot_record[0x1C7+index]) << 8); | ||
| 938 | |||
| 939 | ext_table[drive][point].rel_sec = | ||
| 940 | ext_table[drive][point].rel_sec + ((unsigned long)boot_record[0x1C6+index]); | ||
| 941 | |||
| 942 | /* Number of sectors */ | ||
| 943 | |||
| 944 | ext_table[drive][point].num_sec = | ||
| 945 | ((unsigned long)boot_record[0x1CD+index]) << 24; | ||
| 946 | |||
| 947 | ext_table[drive][point].num_sec = | ||
| 948 | ext_table[drive][point].num_sec+(((unsigned long)boot_record[0x1CC+index]) << 16); | ||
| 949 | |||
| 950 | ext_table[drive][point].num_sec = | ||
| 951 | ext_table[drive][point].num_sec + (((unsigned long)boot_record[0x1CB+index]) << 8); | ||
| 952 | |||
| 953 | ext_table[drive][point].num_sec = | ||
| 954 | ext_table[drive][point].num_sec + ((unsigned long)boot_record[0x1CA+index]); | ||
| 955 | |||
| 956 | ext_table[drive][point].mbytes_used = | ||
| 957 | cylinders_to_mbytes(((ext_table[drive][point].end_cyl - ext_table[drive][point].start_cyl)+1), | ||
| 958 | max_sector[drive], max_head[drive]); /* AN000 */ | ||
| 959 | |||
| 960 | if ( (ext_table[drive][point].sys_id == DOS12) || /* AN000 */ | ||
| 961 | (ext_table[drive][point].sys_id == DOS16) || /* AN000 */ | ||
| 962 | (ext_table[drive][point].sys_id == DOSNEW) ) /* AN000 */ | ||
| 963 | ext_table[drive][point].drive_letter = next_letter++; /* AN000 */ | ||
| 964 | |||
| 965 | partition_location = ext_table[drive][point].start_cyl; | ||
| 966 | |||
| 967 | ext_table[drive][point].formatted = FALSE; | ||
| 968 | for (m=u(0);m < u(4); m++) | ||
| 969 | ext_table[drive][point].system_level[m] = NUL; | ||
| 970 | if (read_boot_record(ext_table[drive][point].start_cyl, /* AN000 */ | ||
| 971 | drive, | ||
| 972 | ext_table[drive][point].start_head, | ||
| 973 | ext_table[drive][point].start_sector)) | ||
| 974 | BEGIN /* AN000 */ | ||
| 975 | /* See if the disk has already been formated */ | ||
| 976 | if ((boot_record[510] == uc(0x55)) && (boot_record[511] == uc(0xAA))) /* AN000 */ | ||
| 977 | BEGIN | ||
| 978 | ext_table[drive][point].formatted = TRUE; /* AN000 */ | ||
| 979 | for (m=u(0);m < u(4); m++) | ||
| 980 | BEGIN | ||
| 981 | n = (m + u(7)); | ||
| 982 | ext_table[drive][point].system_level[m] = boot_record[n]; | ||
| 983 | END | ||
| 984 | END | ||
| 985 | |||
| 986 | |||
| 987 | read_boot_record(ext_table[drive][point].start_cyl,drive,uc(0),uc(1)); | ||
| 988 | END | ||
| 989 | END | ||
| 990 | END | ||
| 991 | END | ||
| 992 | |||
| 993 | return; | ||
| 994 | |||
| 995 | END | ||
| 996 | |||
| 997 | /* */ | ||
| 998 | char find_partition_location(type) | ||
| 999 | |||
| 1000 | unsigned char type; | ||
| 1001 | |||
| 1002 | BEGIN | ||
| 1003 | char i; | ||
| 1004 | |||
| 1005 | /* Look at all four partition entries for system id byte that matches */ | ||
| 1006 | for (i = c(0); i < c(4);i++) /* AC000 */ | ||
| 1007 | BEGIN | ||
| 1008 | |||
| 1009 | /* if we find a match, do a TRUE return */ | ||
| 1010 | if (part_table[cur_disk][i].sys_id == type) | ||
| 1011 | BEGIN | ||
| 1012 | return(i); | ||
| 1013 | break; | ||
| 1014 | END | ||
| 1015 | END | ||
| 1016 | /* Did not find one, return */ | ||
| 1017 | return(c(NOT_FOUND)); /* AC000 */ | ||
| 1018 | END | ||
| 1019 | |||
| 1020 | /* */ | ||
| 1021 | FLAG find_partition_type(type) | ||
| 1022 | unsigned char type; | ||
| 1023 | |||
| 1024 | BEGIN | ||
| 1025 | char i; | ||
| 1026 | |||
| 1027 | /* Look at all four partition entries for system id byte that matches */ | ||
| 1028 | for (i = c(0); i < c(4);i++) /* AC000 */ | ||
| 1029 | BEGIN | ||
| 1030 | |||
| 1031 | /* if we find a match, do a TRUE return */ | ||
| 1032 | if (part_table[cur_disk][i].sys_id == type) return(TRUE); | ||
| 1033 | END | ||
| 1034 | /* Did not find one, return FALSE */ | ||
| 1035 | return(FALSE); | ||
| 1036 | END | ||
| 1037 | /* */ | ||
| 1038 | unsigned char find_partition_system_type() | ||
| 1039 | |||
| 1040 | BEGIN | ||
| 1041 | char i; | ||
| 1042 | |||
| 1043 | /* Look at all four partition entries for system id byte that matches */ | ||
| 1044 | for (i = c(0); i < c(4);i++) /* AC000 */ | ||
| 1045 | BEGIN | ||
| 1046 | |||
| 1047 | /* if we find a match, do a TRUE return */ | ||
| 1048 | if ( (part_table[cur_disk][i].sys_id == DOS12) || | ||
| 1049 | (part_table[cur_disk][i].sys_id == DOS16) || | ||
| 1050 | (part_table[cur_disk][i].sys_id == DOSNEW) ) | ||
| 1051 | return(part_table[cur_disk][i].sys_id); | ||
| 1052 | END | ||
| 1053 | return(uc(NOT_FOUND)); /* AC000 */ | ||
| 1054 | END | ||
| 1055 | /* */ | ||
| 1056 | char find_logical_drive() | ||
| 1057 | |||
| 1058 | BEGIN | ||
| 1059 | char i; | ||
| 1060 | |||
| 1061 | /* See if there is a logical drive defined in Extended Partition */ | ||
| 1062 | for (i = c(0); i < c(24); i++) /* AC000 */ | ||
| 1063 | BEGIN | ||
| 1064 | /* See if we find a sys id that is not 0 */ | ||
| 1065 | if (ext_table[cur_disk][i].sys_id != uc(0)) return(TRUE); /* AC000 */ | ||
| 1066 | END | ||
| 1067 | return(FALSE); | ||
| 1068 | END | ||
| 1069 | /* */ | ||
| 1070 | /*******************************************************************************/ | ||
| 1071 | /*Routine name: CYLINDERS_TO_MBYTES */ | ||
| 1072 | /*******************************************************************************/ | ||
| 1073 | /* */ | ||
| 1074 | /*Description: This routine will take input of cylinders and convert */ | ||
| 1075 | /* it to MBytes. */ | ||
| 1076 | /* */ | ||
| 1077 | /* */ | ||
| 1078 | /*Called Procedures: */ | ||
| 1079 | /* */ | ||
| 1080 | /* */ | ||
| 1081 | /*Change History: Created 5/16/87 DRM */ | ||
| 1082 | /* */ | ||
| 1083 | /*Input: Cylinders_in */ | ||
| 1084 | /* */ | ||
| 1085 | /*Output: MBytes_out */ | ||
| 1086 | /* */ | ||
| 1087 | /* */ | ||
| 1088 | /* */ | ||
| 1089 | /*******************************************************************************/ | ||
| 1090 | |||
| 1091 | unsigned cylinders_to_mbytes(cylinders_in,sectors_per_track,number_of_heads) /* AN000 */ | ||
| 1092 | |||
| 1093 | unsigned cylinders_in; /* AN000 */ | ||
| 1094 | unsigned char number_of_heads; /* AN000 */ | ||
| 1095 | unsigned char sectors_per_track; /* AN000 */ | ||
| 1096 | |||
| 1097 | BEGIN /* AN000 */ | ||
| 1098 | |||
| 1099 | unsigned mbytes_out; /* AN000 */ | ||
| 1100 | unsigned long number_of_bytes; /* AN000 */ | ||
| 1101 | unsigned long number_of_sectors; /* AN000 */ | ||
| 1102 | unsigned long number_of_tracks; /* AN000 */ | ||
| 1103 | |||
| 1104 | number_of_tracks = ul((cylinders_in * number_of_heads)); /* AN000 */ | ||
| 1105 | number_of_sectors = ul((number_of_tracks * sectors_per_track)); /* AN000 */ | ||
| 1106 | number_of_bytes = ul((number_of_sectors * BYTES_PER_SECTOR)); /* AN000 */ | ||
| 1107 | mbytes_out = u((number_of_bytes / ONE_MEG)); /* AN000 */ | ||
| 1108 | return(mbytes_out); /* AN000 */ | ||
| 1109 | |||
| 1110 | END /* AN000 */ | ||
| 1111 | |||
| 1112 | |||
| 1113 | |||
| 1114 | /**********************************replacement********************************************/ | ||
| 1115 | /* To find out how many logical drives there are, if an extended partition exist */ | ||
| 1116 | /* copy_fdisk2select. This procedure requires a check to see if any */ | ||
| 1117 | /* logical drives exist if so, the drives must be sorted just as the */ | ||
| 1118 | /* partitions to distinguish the amount of free space between the current logical */ | ||
| 1119 | /* drive and the next. The ASCII drive value for each should also be */ | ||
| 1120 | /* determined at this point. The same calculation using the start & end */ | ||
| 1121 | /* cylinder must be used to determine the freespace. */ | ||
| 1122 | /*****************************************************************************************/ | ||
| 1123 | |||
| 1124 | unsigned copy_fdisk2select(table_count,Dptr) | ||
| 1125 | unsigned table_count; | ||
| 1126 | DSE (far * Dptr); | ||
| 1127 | |||
| 1128 | BEGIN | ||
| 1129 | |||
| 1130 | unsigned i; | ||
| 1131 | unsigned m; | ||
| 1132 | unsigned x; | ||
| 1133 | FLAG drive_found; | ||
| 1134 | char drive_num; | ||
| 1135 | char first_stuff; | ||
| 1136 | char num_logical_drives ; | ||
| 1137 | |||
| 1138 | /* loop thru the partitions, only load stuff if it is there */ | ||
| 1139 | drive_num = c(0); /* Current drive */ | ||
| 1140 | drive_found = FALSE; | ||
| 1141 | |||
| 1142 | /* Find out how many logical drives are available for this hardfile */ | ||
| 1143 | /* To get the number of maximum times to loop thru the table */ | ||
| 1144 | |||
| 1145 | num_logical_drives = get_num_logical_dos_drives(); | ||
| 1146 | for ( i=u(0); i < u(num_logical_drives); i++) | ||
| 1147 | BEGIN | ||
| 1148 | /* See if entry exists */ | ||
| 1149 | if ( (ext_table[cur_disk][i].sys_id == uc(DOS12)) || | ||
| 1150 | (ext_table[cur_disk][i].sys_id == uc(DOS16)) || | ||
| 1151 | (ext_table[cur_disk][i].sys_id == uc(DOSNEW)) ) /* AC000 */ | ||
| 1152 | BEGIN | ||
| 1153 | drive_found = TRUE; | ||
| 1154 | (Dptr+table_count) ->n_part_size = ext_table[cur_disk][i].mbytes_used; /* AC000 */ | ||
| 1155 | (Dptr+table_count) ->n_part_name = E_PART_LOG_DRI; /* SET the name field to logical drive */ | ||
| 1156 | (Dptr+table_count) -> n_part_status = E_PART_UNFORMAT; | ||
| 1157 | if (ext_table[cur_disk][i].formatted) | ||
| 1158 | (Dptr+table_count) -> n_part_status = E_PART_FORMAT; | ||
| 1159 | (Dptr+table_count) ->p_part_drive = ext_table[cur_disk][i].drive_letter; | ||
| 1160 | for (m=u(0);m < u(4); m++) | ||
| 1161 | (Dptr+table_count) -> n_part_level[m] = ext_table[cur_disk][i].system_level[m]; | ||
| 1162 | drive_num++; /* Go to the next actual drive value */ | ||
| 1163 | table_count++; /* Go to the next disk status structure */ | ||
| 1164 | END /* End of check for logical drives */ | ||
| 1165 | END /* End of loop to traverse thru ext_table */ | ||
| 1166 | |||
| 1167 | return(drive_num); | ||
| 1168 | |||
| 1169 | END | ||
| 1170 | |||
| 1171 | /* */ | ||
| 1172 | char get_num_logical_dos_drives() | ||
| 1173 | BEGIN | ||
| 1174 | |||
| 1175 | char i; | ||
| 1176 | char number; | ||
| 1177 | |||
| 1178 | number = c(0); /* AC000 */ | ||
| 1179 | /* See if there is a logical drive defined in Extended Partition */ | ||
| 1180 | for (i = c(0); i < c(24);i++) /* AC000 */ | ||
| 1181 | BEGIN | ||
| 1182 | |||
| 1183 | /* See if we find a sys id that is DOS */ | ||
| 1184 | if ((ext_table[cur_disk][i].sys_id == uc(DOS12)) || (ext_table[cur_disk][i].sys_id == uc(DOS16)) || | ||
| 1185 | (ext_table[cur_disk][i].sys_id == uc(DOSNEW))) /* AC000 */ | ||
| 1186 | BEGIN | ||
| 1187 | number++; | ||
| 1188 | END | ||
| 1189 | END | ||
| 1190 | return(number); | ||
| 1191 | END | ||
| 1192 | |||
| 1193 | /* */ | ||
| 1194 | |||
| 1195 | /* */ | ||
| 1196 | XFLOAT get_partition_size(type) /* AC000 */ | ||
| 1197 | |||
| 1198 | unsigned char type; /* AC000 */ | ||
| 1199 | |||
| 1200 | BEGIN | ||
| 1201 | char i; | ||
| 1202 | |||
| 1203 | /* Look at all four partition entries for system id byte that matches */ | ||
| 1204 | for (i = c(0); i < c(4);i++) /* AC000 */ | ||
| 1205 | BEGIN | ||
| 1206 | |||
| 1207 | /* if we find a match, get the size */ | ||
| 1208 | if (part_table[cur_disk][i].sys_id == type) | ||
| 1209 | BEGIN | ||
| 1210 | /* Get the size of the partition from the array */ | ||
| 1211 | return(part_table[cur_disk][i].mbytes_used); /* AC000 */ | ||
| 1212 | END | ||
| 1213 | END | ||
| 1214 | /* Did not find one, something bad wrong happened */ | ||
| 1215 | return(f(0)); | ||
| 1216 | END | ||
diff --git a/v4.0/src/SELECT/GET_STAT.H b/v4.0/src/SELECT/GET_STAT.H new file mode 100644 index 0000000..d5a5aa0 --- /dev/null +++ b/v4.0/src/SELECT/GET_STAT.H | |||
| @@ -0,0 +1,191 @@ | |||
| 1 | |||
| 2 | /* */ | ||
| 3 | /* */ | ||
| 4 | /****************************************************************************/ | ||
| 5 | /* Define statements */ | ||
| 6 | /****************************************************************************/ | ||
| 7 | /* Get_status Input */ | ||
| 8 | #define FST_DRV 0x01 | ||
| 9 | #define SEC_DRV 0x02 | ||
| 10 | /* */ | ||
| 11 | /* EQUATES FOR N_PART_NAME */ | ||
| 12 | #define E_PART_PRI_DOS 0x01 | ||
| 13 | #define E_PART_EXT_DOS 0x02 | ||
| 14 | #define E_PART_LOG_DRI 0x03 | ||
| 15 | #define E_FREE_MEM_EDOS 0x04 | ||
| 16 | #define E_FREE_MEM_DISK 0x05 | ||
| 17 | #define E_PART_OTHER 0x06 | ||
| 18 | /* */ | ||
| 19 | /* EQUATES FOR N_PART_STATUS */ | ||
| 20 | #define E_PART_UNFORMAT 0x00 | ||
| 21 | #define E_PART_FORMAT 0x01 | ||
| 22 | /* */ | ||
| 23 | /* EQUATES FOR N_PART_TYPE */ | ||
| 24 | #define E_PART_FAT 0x01 | ||
| 25 | #define E_PART_KSAM 0x02 | ||
| 26 | #define E_PART_UNDEF 0x03 | ||
| 27 | #define E_PART_IGNORE 0x04 | ||
| 28 | |||
| 29 | /* DISK_1_TABLE equals M_DISK_1_ITEMS */ | ||
| 30 | /* DISK_1_VAL_ITEM equals zero */ | ||
| 31 | /* DISK_1_START equals 100 times SIZ_DISKSTRUC bytes */ | ||
| 32 | #define M_DISK_1_ITEMS ( sizeof(disk_1_start) / SIZ_DISKSTRUC ) | ||
| 33 | |||
| 34 | |||
| 35 | /* DISK_2_TABLE equals M_DISK_2_ITEMS */ | ||
| 36 | /* DISK_2_VAL_ITEM equals zero */ | ||
| 37 | /* DISK_2_START equals 100 times SIZ_DISKSTRUC bytes */ | ||
| 38 | #define SIZ_DISKSTRUC ( sizeof(struc disk_status)) | ||
| 39 | #define M_DISK_2_ITEMS ( sizeof(disk_2_start) / SIZ_DISKSTRUC ) | ||
| 40 | /* EQUATES FOR BX FLAGS */ | ||
| 41 | #define E_DISK_PRI 0x01 | ||
| 42 | #define E_DISK_EXT_DOS 0x02 | ||
| 43 | #define E_DISK_LOG_DRI 0x04 | ||
| 44 | #define E_DISK_EDOS_MEM 0x08 | ||
| 45 | #define E_DISK_FREE_MEM 0x10 | ||
| 46 | |||
| 47 | |||
| 48 | /* */ | ||
| 49 | |||
| 50 | #define FLAG char /* AN000 */ | ||
| 51 | #define BEGIN { | ||
| 52 | #define END } | ||
| 53 | #define ESC 0x1B | ||
| 54 | #define NUL 0x00 | ||
| 55 | #define NOT_FOUND 0xFF | ||
| 56 | #define DELETED 0xFF | ||
| 57 | #define INVALID 0xFF | ||
| 58 | #define PRIMARY 0x00 | ||
| 59 | #define EXTENDED 0x05 | ||
| 60 | #define BAD_BLOCK 0xFF | ||
| 61 | #define XENIX1 0x02 | ||
| 62 | #define XENIX2 0x03 | ||
| 63 | #define PCIX 0x75 | ||
| 64 | #define DOS12 0x01 | ||
| 65 | #define DOS16 0x04 | ||
| 66 | #define DOSNEW 0x06 /* AN000 */ | ||
| 67 | #define FAT16_SIZE 32680 | ||
| 68 | #define VOLUME 0x00 | ||
| 69 | #define FALSE (char) (1==0) /* AC000 */ | ||
| 70 | #define TRUE (char) !FALSE /* AC000 */ | ||
| 71 | #define LOGICAL 0x05 | ||
| 72 | #define CR 0x0D | ||
| 73 | #define BACKSPACE 0x08 | ||
| 74 | #define ACTIVE 0x80 | ||
| 75 | #define DOS_MAX (64*1024) /* Allow exactly 32mb worth of partitions */ | ||
| 76 | #define SYSTEM_FILE_SECTORS 100 | ||
| 77 | #define BYTES_PER_SECTOR 512 /* AN000 */ | ||
| 78 | |||
| 79 | |||
| 80 | |||
| 81 | #define NETWORK 0x2F | ||
| 82 | #define INSTALLATION_CHECK 0xB800 | ||
| 83 | #define SERVER_CHECK 0x40 | ||
| 84 | |||
| 85 | |||
| 86 | #define FILE_NAME ":\\????????.???" /* AN000 */ | ||
| 87 | #define NOVOLUME " no label " /* AN000 */ | ||
| 88 | #define NOFORMAT " no fmt " /* AN000 */ | ||
| 89 | #define FAT " FAT " /* AN000 */ | ||
| 90 | #define ZERO 0 /* AN000 */ | ||
| 91 | #define NO_GOOD 0x02 /* AN000 */ | ||
| 92 | #define FIND_FIRST_MATCH 0x4E /* AN000 */ | ||
| 93 | #define GET_DTA 0x2F /* AN000 */ | ||
| 94 | #define GENERIC_IOCTL 0x440D /* AN000 */ | ||
| 95 | #define GET_MEDIA_ID 0x086E /* AN000 */ | ||
| 96 | #define CAPCHAR 0x6520 /* AN000 */ | ||
| 97 | #define CAPSTRING 0x6521 /* AN000 */ | ||
| 98 | #define CAP_YN 0x6523 /* AN000 */ | ||
| 99 | #define INT21 0x21 /* AN000 */ | ||
| 100 | #define DISK 0x13 /* AN000 */ | ||
| 101 | #define NOERROR 0 /* AN000 */ | ||
| 102 | #define BLANKS " " /* AN000 */ | ||
| 103 | |||
| 104 | #define READ_DISK 2 | ||
| 105 | #define WRITE_DISK 3 | ||
| 106 | #define DISK_INFO 8 | ||
| 107 | |||
| 108 | |||
| 109 | #define VOL_LABEL 0x08 /* AN000 */ | ||
| 110 | #define PERCENT 0x025 /* AN000 */ | ||
| 111 | #define PERIOD 0x02E /* AN000 */ | ||
| 112 | #define ONE_MEG 1048576 /* AN000 */ | ||
| 113 | |||
| 114 | #define BYTE unsigned char /* AN000 */ | ||
| 115 | #define WORD unsigned short /* AN000 */ | ||
| 116 | #define DWORD unsigned long /* AN000 */ | ||
| 117 | #define sw_type /* AN000 */ | ||
| 118 | #define sw_item_tag /* AN000 */ | ||
| 119 | #define sw_synonym /* AN000 */ | ||
| 120 | #define sw_value /* AN000 */ | ||
| 121 | |||
| 122 | #define CARRY_FLAG 0x0001 /* mask for carry flag */ /* AN000 */ | ||
| 123 | #define PARITY_FLAG 0x0004 /* mask for parity flag */ /* AN000 */ | ||
| 124 | #define ACARRY_FLAG 0x0010 /* mask for aux carry flag */ /* AN000 */ | ||
| 125 | #define ZERO_FLAG 0x0040 /* mask for zero flag */ /* AN000 */ | ||
| 126 | #define SIGN_FLAG 0x0080 /* mask for sign flag */ /* AN000 */ | ||
| 127 | #define TRAP_FLAG 0x0100 /* mask for trap flag */ /* AN000 */ | ||
| 128 | #define INTERRUPT_FLAG 0x0200 /* mask for interrupt flag */ /* AN000 */ | ||
| 129 | #define DIRECTION_FLAG 0x0400 /* mask for direction flag */ /* AN000 */ | ||
| 130 | #define OVERFLOW_FLAG 0x0800 /* mask for overflow flag */ /* AN000 */ | ||
| 131 | |||
| 132 | #define SEMICOLON 0x3B /* AN000 - VALID COMMAND LINE DELIMITER*/ | ||
| 133 | #define XFLOAT unsigned | ||
| 134 | |||
| 135 | #define u(c) ((unsigned)(c)) /* AN000 */ | ||
| 136 | #define c(c) ((char)(c)) /* AN000 */ | ||
| 137 | #define f(c) ((XFLOAT)(c)) /* AN000 */ | ||
| 138 | #define uc(c) ((unsigned char)(c)) /* AN000 */ | ||
| 139 | #define ui(c) ((unsigned int)(c)) /* AN000 */ | ||
| 140 | #define ul(c) ((unsigned long)(c)) /* AN000 */ | ||
| 141 | |||
| 142 | |||
| 143 | struct entry | ||
| 144 | BEGIN | ||
| 145 | unsigned char boot_ind; | ||
| 146 | unsigned char start_head; | ||
| 147 | unsigned char start_sector; | ||
| 148 | unsigned start_cyl; | ||
| 149 | unsigned char sys_id; | ||
| 150 | unsigned char end_head; | ||
| 151 | unsigned char end_sector; | ||
| 152 | unsigned end_cyl; | ||
| 153 | unsigned long rel_sec; | ||
| 154 | unsigned long num_sec; | ||
| 155 | char order; | ||
| 156 | FLAG formatted; | ||
| 157 | XFLOAT mbytes_used; /* AN000 */ | ||
| 158 | char drive_letter; /* AN000 */ | ||
| 159 | char system_level[4]; /* AN000 */ | ||
| 160 | END; | ||
| 161 | |||
| 162 | struct DISK_STATUS | ||
| 163 | BEGIN | ||
| 164 | unsigned char n_part_name ; | ||
| 165 | unsigned n_part_size ; | ||
| 166 | unsigned char n_part_status; | ||
| 167 | unsigned char p_part_drive ; /* AN000 */ | ||
| 168 | unsigned char n_part_type ; /* AN000 */ | ||
| 169 | char n_part_level[4]; /* AN000 */ | ||
| 170 | END OneDiskStatusEntry; /* TWO ARRAYS to be OUTPUT in ES:DI */ | ||
| 171 | |||
| 172 | typedef struct DISK_STATUS DSE ; | ||
| 173 | |||
| 174 | struct freespace | ||
| 175 | BEGIN | ||
| 176 | unsigned space; | ||
| 177 | unsigned start; | ||
| 178 | unsigned end; | ||
| 179 | unsigned mbytes_unused; /* AN000 */ | ||
| 180 | END; | ||
| 181 | |||
| 182 | struct dx_buffer_ioctl /* AN000 */ | ||
| 183 | BEGIN /* AN000 */ | ||
| 184 | unsigned int info_level; /* Information level */ /* AN000 */ | ||
| 185 | unsigned long serial_num; /* serial number */ /* AN000 */ | ||
| 186 | char vol_label[9]; /* volume label */ /* AN000 */ | ||
| 187 | char file_system[12]; /* file system */ /* AN000 */ | ||
| 188 | END; /* AN000 */ | ||
| 189 | |||
| 190 | |||
| 191 | |||
diff --git a/v4.0/src/SELECT/GLOBAL.C b/v4.0/src/SELECT/GLOBAL.C new file mode 100644 index 0000000..d9c182b --- /dev/null +++ b/v4.0/src/SELECT/GLOBAL.C | |||
| @@ -0,0 +1,79 @@ | |||
| 1 | |||
| 2 | #include "dos.h" /* ;AN000; */ | ||
| 3 | #include "get_stat.h" /* ;AN000; */ | ||
| 4 | |||
| 5 | /* */ | ||
| 6 | /* */ | ||
| 7 | /****************************************************************************/ | ||
| 8 | /* Declare Global variables */ | ||
| 9 | /****************************************************************************/ | ||
| 10 | /* */ | ||
| 11 | |||
| 12 | |||
| 13 | |||
| 14 | char cur_disk; /* ;AN000; */ | ||
| 15 | char good_disk[2]; /* ;AN000; */ | ||
| 16 | unsigned char number_of_drives; /* ;AN000; */ | ||
| 17 | char reboot_flag; /* ;AN000; */ | ||
| 18 | char errorlevel; /* ;AN000; */ | ||
| 19 | char max_partition_size; /* ;AN000; */ | ||
| 20 | char sort[24]; /* ;AN000; */ | ||
| 21 | char no_fatal_error; /* ;AN000; */ | ||
| 22 | char valid_input; /* ;AN000; */ | ||
| 23 | unsigned char video_mode; /* ;AN000; */ | ||
| 24 | unsigned char display_page; /* ;AN000; */ | ||
| 25 | |||
| 26 | |||
| 27 | unsigned total_disk[2]; /* ;AN000; */ | ||
| 28 | unsigned total_mbytes[2]; /* ;AN000; */ | ||
| 29 | unsigned char max_sector[2]; /* ;AN000; */ | ||
| 30 | unsigned char max_head[2]; /* ;AN000; */ | ||
| 31 | unsigned required_cyls[2]; /* ;AN000; */ | ||
| 32 | |||
| 33 | unsigned input_row; /* ;AN000; */ | ||
| 34 | unsigned input_col; /* ;AN000; */ | ||
| 35 | char insert[800]; /* ;AC000; */ | ||
| 36 | char *pinsert = insert; /* ;AN000; */ | ||
| 37 | |||
| 38 | extern unsigned char master_boot_record[2][512]; /* ;AN000; */ | ||
| 39 | unsigned char boot_record[512]; /* ;AN000; */ | ||
| 40 | |||
| 41 | char next_letter; /* ;AN000; */ | ||
| 42 | char primary_flag; /* ;AC000; */ | ||
| 43 | char extended_flag; /* ;AC000; */ | ||
| 44 | char logical_flag; /* ;AC000; */ | ||
| 45 | unsigned primary_buff; /* ;AC000; */ | ||
| 46 | unsigned extended_buff; /* ;AC000; */ | ||
| 47 | unsigned logical_buff; /* ;AC000; */ | ||
| 48 | char cur_disk_buff; /* ;AC000; */ | ||
| 49 | unsigned long NOVAL = (unsigned long) 0; /* ;AC000; */ | ||
| 50 | |||
| 51 | |||
| 52 | /* */ | ||
| 53 | /* */ | ||
| 54 | /****************************************************************************/ | ||
| 55 | /* Define Global structures */ | ||
| 56 | /****************************************************************************/ | ||
| 57 | /* */ | ||
| 58 | |||
| 59 | struct entry part_table[2][4]; /* ;AN000; */ | ||
| 60 | struct entry ext_table[2][24]; /* ;AN000; */ | ||
| 61 | struct freespace free_space[24]; /* ;AN000; */ | ||
| 62 | struct KeyData *input_data; /* ;AN000; */ | ||
| 63 | struct dx_buffer_ioctl dx_buff; /* ;AN000; */ | ||
| 64 | struct SREGS segregs; /* ;AN000; */ | ||
| 65 | |||
| 66 | /* */ | ||
| 67 | /****************************************************************************/ | ||
| 68 | /* Define UNIONS */ | ||
| 69 | /****************************************************************************/ | ||
| 70 | /* */ | ||
| 71 | |||
| 72 | union REGS regs; /* ;AN000; */ | ||
| 73 | |||
| 74 | |||
| 75 | char *format_string = "NO FORMAT"; /* ;AN000; */ | ||
| 76 | char far *fat12_String = "FAT_12"; /* ;AN000; */ | ||
| 77 | char far *fat16_String = "FAT_12"; /* ;AN000; */ | ||
| 78 | char far *hilda_string = "HILDA"; /* ;AN000; */ | ||
| 79 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/INITMEM.ASM b/v4.0/src/SELECT/INITMEM.ASM new file mode 100644 index 0000000..9d71ded --- /dev/null +++ b/v4.0/src/SELECT/INITMEM.ASM | |||
| @@ -0,0 +1,394 @@ | |||
| 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2 | ; | ||
| 3 | ; DUMMY DATA SEGMENT THAT WILL LINK WITH THE DATA.MAC | ||
| 4 | ; FILE. THIS RESOLVES ANY REFERENCES TO THE DATA SEGMENT. | ||
| 5 | ; | ||
| 6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 7 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 8 | HELPBUFSEG DW 0 ;AN000; | ||
| 9 | MEM_ALLOC DB 0 ;AN000;DT Memory allocated indicator | ||
| 10 | HELP_ALLOC EQU 80H ;AN000;DT Help memory allocated | ||
| 11 | BLOCK_ALLOC EQU 40H ;AN000;DT PANEL memory allocated | ||
| 12 | LVB_ALLOC EQU 20H ;AN000;DT LVB memory allocated | ||
| 13 | BLOCK_SET EQU 01H ;AN000;DT SETBLOCK done | ||
| 14 | DATA ENDS ;AN000;DATA | ||
| 15 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 16 | ; | ||
| 17 | ; Define dummy segment to calculate end of program | ||
| 18 | ; | ||
| 19 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 20 | ZSEG SEGMENT PARA PUBLIC 'ZSEG' ;AN000;marks end of routine | ||
| 21 | ZSEG ENDS ;AN000;ZSEG will alphabetically appear | ||
| 22 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 23 | ; | ||
| 24 | ; INITMEM.ASM | ||
| 25 | ; | ||
| 26 | ; | ||
| 27 | ; Allocate Memory | ||
| 28 | ; | ||
| 29 | ; This routine will free up the required memory from DOS to make | ||
| 30 | ; space for the panels, scroll, help, and input field data. | ||
| 31 | ; | ||
| 32 | ; | ||
| 33 | ; INPUT: BX = # paragraphs to keep (in the program) ZSEG-PSP_SEG | ||
| 34 | ; CX = Length of program in bytes | ||
| 35 | ; DX = # paragraphs to allocate | ||
| 36 | ; DS = ES = CS - 10H | ||
| 37 | ; | ||
| 38 | ; OUTPUT: DS:DX = segment:offset of allocated buffer | ||
| 39 | ; BX = length of allocated buffer | ||
| 40 | ; | ||
| 41 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 42 | EXTRN WR_MAXMEMPAR:WORD ;AN000; | ||
| 43 | EXTRN WR_MAXHELPSZ:WORD ;AN000; | ||
| 44 | EXTRN WR_DATA2SEG:WORD ;AN000; | ||
| 45 | EXTRN WR_DATA2OFF:WORD ;AN000; | ||
| 46 | EXTRN WR_DATA2LEN:WORD ;AN000; | ||
| 47 | EXTRN WR_LVBSEG:WORD ;AN000;DT | ||
| 48 | EXTRN WR_LVBOFF:WORD ;AN000;DT | ||
| 49 | EXTRN WR_LVBLEN:WORD ;AN000;DT | ||
| 50 | EXTRN WR_LVBMEM:WORD ;AN000;DT | ||
| 51 | EXTRN HRD_BUFSEG:WORD ;AN000; | ||
| 52 | EXTRN HRD_BUFOFF:WORD ;AN000; | ||
| 53 | EXTRN HRD_BUFLEN:WORD ;AN000; | ||
| 54 | ; | ||
| 55 | SERVICE SEGMENT PARA PUBLIC 'SERVICE' ;AN000;segment for far routine | ||
| 56 | ASSUME CS:SERVICE,DS:DATA ;AN000; | ||
| 57 | ; | ||
| 58 | PUBLIC ALLOCATE_MEMORY_CALL ;AN000; | ||
| 59 | PUBLIC DEALLOCATE_MEMORY_CALL ;AN000; | ||
| 60 | PUBLIC ALLOCATE_HELP ;AN000; | ||
| 61 | PUBLIC DEALLOCATE_HELP ;AN000; | ||
| 62 | PUBLIC ALLOCATE_BLOCK ;AN000; | ||
| 63 | PUBLIC DEALLOCATE_BLOCK ;AN000; | ||
| 64 | PUBLIC ALLOCATE_LVB ;AN000; | ||
| 65 | PUBLIC DEALLOCATE_LVB ;AN000; | ||
| 66 | ; | ||
| 67 | SET_BLOCK equ 4AH ;AN000; | ||
| 68 | ALLOCATEB equ 48H ;AN000; | ||
| 69 | FREE_BLOCK equ 49H ;AN000; | ||
| 70 | ; | ||
| 71 | INCLUDE STRUC.INC ;AN000; | ||
| 72 | INCLUDE MACROS.INC ;AN000; | ||
| 73 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DS and AX will auto pop on ret | ||
| 74 | ; | ||
| 75 | ; ALLOCATE_MEMORY_CALL | ||
| 76 | ; | ||
| 77 | ; This first takes the memory held by the active program | ||
| 78 | ; (initially all of remaining memory) and requests only the | ||
| 79 | ; memory held by the running program. Next, memory is | ||
| 80 | ; re-allocated to the running program - specified by WR_MAXMEMPAR | ||
| 81 | ; starting from the end of the program (re/ZSEG). | ||
| 82 | ; | ||
| 83 | ; ENTRY: | ||
| 84 | ; AX = CODE segment (PSP+100H) | ||
| 85 | ; | ||
| 86 | ; | ||
| 87 | ; EXIT: | ||
| 88 | ; if CY = 0 then, | ||
| 89 | ; WR_DATA2SEG = start of allocated segment | ||
| 90 | ; WR_DATA2OFF = start of allocated offset (always 0) | ||
| 91 | ; WR_DATA2LEN = length of allocated block (always WR_MAXMEMPAR) | ||
| 92 | ; | ||
| 93 | ; if CY = 1 then an error occurred allocating memory | ||
| 94 | ; | ||
| 95 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 96 | ALLOCATE_MEMORY_CALL PROC FAR ;AN000; | ||
| 97 | PUSHH <AX,BX,DX,DS,ES> ;AN000; | ||
| 98 | ; | ||
| 99 | TEST MEM_ALLOC,BLOCK_SET ;AN000;DT SETBLOCK done? | ||
| 100 | JNZ AM_SBDONE ;AN000;DT if so, skip it | ||
| 101 | ; | ||
| 102 | MOV AH,62H ;AN000; Get the PSP segment | ||
| 103 | INT 21H ;AN000; | ||
| 104 | MOV AX,BX ;AN000;save the PSP segment of SELECT | ||
| 105 | MOV BX,ZSEG ;AN000;get last address of code (from ZSEG) | ||
| 106 | MOV ES,AX ;AN000;set PSP segment in ES | ||
| 107 | SUB BX,AX ;AN000;calc # of paragraphs in the program | ||
| 108 | MOV AH,SET_BLOCK ;AN000;setblock function number | ||
| 109 | DOSCALL ;AN000;free used memory | ||
| 110 | .IF < C > ;AC000;DT | ||
| 111 | GOTO ALLOC_RET ;AN000;DT If error, exit | ||
| 112 | .ENDIF ;AN000;DT | ||
| 113 | OR MEM_ALLOC,BLOCK_SET ;AN000;DT | ||
| 114 | ; | ||
| 115 | AM_SBDONE: ;AN000; | ||
| 116 | MOV AX,DATA ;AN000;initialize data segment | ||
| 117 | MOV DS,AX ;AN000; and extra segment | ||
| 118 | ; | ||
| 119 | PUSH CS ;AN000;call far procedure | ||
| 120 | CALL ALLOCATE_BLOCK_NEAR ;AN000;now allocate Panel block | ||
| 121 | .IF < C > ;AC000;DT | ||
| 122 | GOTO ALLOC_RET ;AN000;DT If error, exit | ||
| 123 | .ENDIF ;AN000; | ||
| 124 | ; | ||
| 125 | PUSH CS ;AN000;call far procedure | ||
| 126 | CALL ALLOCATE_LVB_NEAR ;AN000;now allocate LVB block | ||
| 127 | .IF < C > ;AC000;DT | ||
| 128 | GOTO ALLOC_RET ;AN000;DT If error, exit | ||
| 129 | .ENDIF ;AN000; | ||
| 130 | ; | ||
| 131 | PUSH CS ;AN000;call far procedure | ||
| 132 | CALL ALLOCATE_HELP_NEAR ;AN000;now allocate help | ||
| 133 | ; | ||
| 134 | ALLOC_RET: ;AN000; | ||
| 135 | POPP <ES,DS,DX,BX,AX> ;AN000; | ||
| 136 | RET ;AN000; | ||
| 137 | ALLOCATE_MEMORY_CALL ENDP ;AN000; | ||
| 138 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 139 | ; | ||
| 140 | ; DEALLOCATE_MEMORY_CALL | ||
| 141 | ; | ||
| 142 | ; This is the house-cleaning before the running program | ||
| 143 | ; returns to DOS. | ||
| 144 | ; | ||
| 145 | ; ENTRY: | ||
| 146 | ; none | ||
| 147 | ; | ||
| 148 | ; EXIT: | ||
| 149 | ; if CY = 0 then, | ||
| 150 | ; The memory after (WR_DATA2SEG) is released to DOS | ||
| 151 | ; if CY = 1 then, | ||
| 152 | ; An error occurred while trying to release this memory | ||
| 153 | ; | ||
| 154 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 155 | DEALLOCATE_MEMORY_CALL PROC FAR;AN000; | ||
| 156 | PUSHH <AX,DS,ES> ;AN000; | ||
| 157 | MOV AX,DATA ;AN000; | ||
| 158 | MOV DS,AX ;AN000; | ||
| 159 | PUSH CS ;AN000;call far procedure | ||
| 160 | CALL DEALLOCATE_BLOCK_NEAR ;AN024;now deallocate Panel block | ||
| 161 | PUSH CS ;AN000;call far procedure | ||
| 162 | CALL DEALLOCATE_LVB_NEAR ;AN024; deallocate LVB block | ||
| 163 | PUSH CS ;AN000;call far procedure | ||
| 164 | CALL DEALLOCATE_HELP_NEAR ;AN000;now deallocate help | ||
| 165 | POPP <ES,DS,AX> ;AN000; | ||
| 166 | RET ;AN000; | ||
| 167 | DEALLOCATE_MEMORY_CALL ENDP ;AN000; | ||
| 168 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DS and AX will auto pop on ret | ||
| 169 | ; | ||
| 170 | ; ALLOCATE_HELP | ||
| 171 | ; | ||
| 172 | ; | ||
| 173 | ; ENTRY: | ||
| 174 | ; AX = CODE segment (PSP+100H) | ||
| 175 | ; | ||
| 176 | ; | ||
| 177 | ; EXIT: | ||
| 178 | ; if CY = 0 then, ok | ||
| 179 | ; if CY = 1 then an error occurred allocating memory | ||
| 180 | ; | ||
| 181 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 182 | ALLOCATE_HELP PROC FAR ;AN000; | ||
| 183 | ALLOCATE_HELP_NEAR: ;AN000; | ||
| 184 | PUSHH <AX,BX,DX,DS,ES> ;AN000; | ||
| 185 | MOV AX,DATA ;AN000; | ||
| 186 | MOV DS,AX ;AN000; | ||
| 187 | ; | ||
| 188 | TEST MEM_ALLOC,HELP_ALLOC ;AN000;DT Is help allocated | ||
| 189 | JNZ AH_RET ;AN000;DT if so, skip allocation | ||
| 190 | ;now allocate help | ||
| 191 | MOV BX,WR_MAXHELPSZ ;AN000;set BX to max # of paragraphs | ||
| 192 | SHR BX,1 ;AN000; | ||
| 193 | SHR BX,1 ;AN000; | ||
| 194 | SHR BX,1 ;AN000; | ||
| 195 | SHR BX,1 ;AN000; | ||
| 196 | MOV AH,ALLOCATEB ;AN000;set allocate function number | ||
| 197 | DOSCALL ;AN000;allocate memory | ||
| 198 | .IF < NC > ;AN000; | ||
| 199 | MOV HRD_BUFSEG,AX ;AN000;save segment | ||
| 200 | MOV HELPBUFSEG,AX ;AN000;save segment | ||
| 201 | MOV HRD_BUFOFF,0 ;AN000; and offset | ||
| 202 | MOV BX,WR_MAXHELPSZ ;AN000;set BX to max # of byte | ||
| 203 | MOV HRD_BUFLEN,BX ;AN000; | ||
| 204 | OR MEM_ALLOC,HELP_ALLOC ;AN000;DT | ||
| 205 | CLC ;AN000; | ||
| 206 | .ENDIF ;AN000; | ||
| 207 | AH_RET: ;AN000; | ||
| 208 | POPP <ES,DS,DX,BX,AX> ;AN000; | ||
| 209 | RET ;AN000; | ||
| 210 | ALLOCATE_HELP ENDP ;AN000; | ||
| 211 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 212 | ; | ||
| 213 | ; DEALLOCATE_HELP | ||
| 214 | ; | ||
| 215 | ; This is the house-cleaning before the running program | ||
| 216 | ; returns to DOS. | ||
| 217 | ; | ||
| 218 | ; ENTRY: | ||
| 219 | ; none | ||
| 220 | ; | ||
| 221 | ; EXIT: | ||
| 222 | ; if CY = 0 then, OK | ||
| 223 | ; if CY = 1 then, | ||
| 224 | ; An error occurred while trying to release this memory | ||
| 225 | ; | ||
| 226 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 227 | DEALLOCATE_HELP PROC FAR ;AN000; | ||
| 228 | DEALLOCATE_HELP_NEAR: ;AN000; | ||
| 229 | PUSHH <AX,BX,DS,ES> ;AN000; | ||
| 230 | MOV AX,DATA ;AN000; | ||
| 231 | MOV DS,AX ;AN000; | ||
| 232 | TEST MEM_ALLOC,HELP_ALLOC ;AN000;DT Is help allocated | ||
| 233 | JZ DH_RET ;AN000;DT if not, skip deallocation | ||
| 234 | MOV AX,HELPBUFSEG ;AN000;free help segment | ||
| 235 | MOV ES,AX ;AN000; | ||
| 236 | MOV AH,FREE_BLOCK ;AN000; | ||
| 237 | DOSCALL ;AN000; | ||
| 238 | AND MEM_ALLOC,255-HELP_ALLOC ;AN000;DT | ||
| 239 | DH_RET: ;AN000; | ||
| 240 | POPP <ES,DS,BX,AX> ;AN000; | ||
| 241 | RET ;AN000; | ||
| 242 | DEALLOCATE_HELP ENDP ;AN000; | ||
| 243 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 244 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DS and AX will auto pop on ret | ||
| 245 | ; | ||
| 246 | ; ALLOCATE_BLOCK | ||
| 247 | ; | ||
| 248 | ; Allocate Panel and Scroll memory. | ||
| 249 | ; | ||
| 250 | ; ENTRY: | ||
| 251 | ; none | ||
| 252 | ; EXIT: | ||
| 253 | ; if CY = 0 then, | ||
| 254 | ; WR_DATA2SEG = start of allocated segment | ||
| 255 | ; WR_DATA2OFF = start of allocated offset (always 0) | ||
| 256 | ; WR_DATA2LEN = length of allocated block (always WR_MAXMEMPAR) | ||
| 257 | ; | ||
| 258 | ; if CY = 1 then an error occurred allocating memory | ||
| 259 | ; | ||
| 260 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 261 | ALLOCATE_BLOCK PROC FAR ;AN000; | ||
| 262 | ALLOCATE_BLOCK_NEAR: ;AN000; | ||
| 263 | PUSHH <AX,BX,DX,DS,ES> ;AN000; | ||
| 264 | MOV AX,DATA ;AN000;initialize data segment | ||
| 265 | MOV DS,AX ;AN000; and extra segment | ||
| 266 | ; | ||
| 267 | TEST MEM_ALLOC,BLOCK_ALLOC ;AN000;DT Is PANEL block allocated | ||
| 268 | JNZ AB_RET ;AN000;DT if so, skip allocation | ||
| 269 | ; | ||
| 270 | MOV BX,WR_MAXMEMPAR ;AN000;set DX to max # of 16 byte parag's | ||
| 271 | MOV AH,ALLOCATEB ;AN000;set allocate function number | ||
| 272 | DOSCALL ;AN000;allocate memory | ||
| 273 | .IF < NC > ;AC000;DT | ||
| 274 | MOV BX,WR_MAXMEMPAR ;AN000; | ||
| 275 | SHL BX,1 ;AN000;THIS SHOULD BE REMOVED WHEN | ||
| 276 | SHL BX,1 ;AN000;THE INITIALIZE ROUTINE TREATS | ||
| 277 | SHL BX,1 ;AN000;WR_DATA2LEN AS PARAGRAPHS AND | ||
| 278 | SHL BX,1 ;AN000;NOT BYTES...... | ||
| 279 | MOV WR_DATA2SEG,AX ;AN000;save segment | ||
| 280 | MOV WR_DATA2OFF,0 ;AN000; | ||
| 281 | MOV WR_DATA2LEN,BX ;AN000; | ||
| 282 | OR MEM_ALLOC,BLOCK_ALLOC ;AN000;DT PANEL block allocated | ||
| 283 | .ENDIF ;AN000; | ||
| 284 | AB_RET: ;AN000; | ||
| 285 | POPP <ES,DS,DX,BX,AX> ;AN000; | ||
| 286 | RET ;AN000; | ||
| 287 | ALLOCATE_BLOCK ENDP ;AN000; | ||
| 288 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 289 | ; | ||
| 290 | ; DEALLOCATE_BLOCK | ||
| 291 | ; | ||
| 292 | ; This is the house-cleaning before the running program | ||
| 293 | ; returns to DOS. | ||
| 294 | ; | ||
| 295 | ; ENTRY: | ||
| 296 | ; none | ||
| 297 | ; | ||
| 298 | ; EXIT: | ||
| 299 | ; if CY = 0 then, OK | ||
| 300 | ; if CY = 1 then, | ||
| 301 | ; An error occurred while trying to release this memory | ||
| 302 | ; | ||
| 303 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 304 | DEALLOCATE_BLOCK PROC FAR ;AN000; | ||
| 305 | DEALLOCATE_BLOCK_NEAR: ;AN000; | ||
| 306 | PUSHH <AX,BX,DS,ES> ;AN000; | ||
| 307 | MOV AX,DATA ;AN000; | ||
| 308 | MOV DS,AX ;AN000; | ||
| 309 | TEST MEM_ALLOC,BLOCK_ALLOC ;AN000;DT Is PANEL block allocated | ||
| 310 | JZ DB_RET ;AN000;DT if not, skip deallocation | ||
| 311 | MOV AX,WR_DATA2SEG ;AN000;free up allocated segment | ||
| 312 | MOV ES,AX ;AN000; | ||
| 313 | MOV AH,FREE_BLOCK ;AN000; | ||
| 314 | DOSCALL ;AN000; | ||
| 315 | AND MEM_ALLOC,255-BLOCK_ALLOC ;AN000;DT | ||
| 316 | DB_RET: ;AN000; | ||
| 317 | POPP <ES,DS,BX,AX> ;AN000; | ||
| 318 | RET ;AN000; | ||
| 319 | DEALLOCATE_BLOCK ENDP ;AN000; | ||
| 320 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DS and AX will auto pop on ret | ||
| 321 | ; | ||
| 322 | ; ALLOCATE_LVB | ||
| 323 | ; | ||
| 324 | ; | ||
| 325 | ; ENTRY: | ||
| 326 | ; AX = none | ||
| 327 | ; | ||
| 328 | ; | ||
| 329 | ; EXIT: | ||
| 330 | ; if CY = 0 then, ok | ||
| 331 | ; if CY = 1 then an error occurred allocating memory | ||
| 332 | ; | ||
| 333 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 334 | ALLOCATE_LVB PROC FAR ;AN000; | ||
| 335 | ALLOCATE_LVB_NEAR: ;AN000; | ||
| 336 | PUSHH <AX,BX,DX,DS,ES> ;AN000; | ||
| 337 | ; | ||
| 338 | MOV AX,DATA ;AN000; | ||
| 339 | MOV DS,AX ;AN000; | ||
| 340 | ;;;;;;; | ||
| 341 | TEST MEM_ALLOC,LVB_ALLOC ;AN000;DT Is LVB block allocated | ||
| 342 | JNZ ALVB_RET ;AN000;DT if so, skip allocation | ||
| 343 | ; | ||
| 344 | MOV BX,WR_LVBMEM ;AN000;set BX to max # of 16 byte parag's | ||
| 345 | MOV AH,ALLOCATEB ;AN000;set allocate function number | ||
| 346 | DOSCALL ;AN000;allocate memory | ||
| 347 | .IF < NC > ;AN000; | ||
| 348 | MOV WR_LVBSEG,AX ;AN000;save segment | ||
| 349 | MOV WR_LVBOFF,0 ;AN000;and offset | ||
| 350 | SHL BX,1 ;AN000;THIS SHOULD BE REMOVED WHEN | ||
| 351 | SHL BX,1 ;AN000;THE INITIALIZE ROUTINE TREATS | ||
| 352 | SHL BX,1 ;AN000;WR_DATA2LEN AS PARAGRAPHS AND | ||
| 353 | SHL BX,1 ;AN000;NOT BYTES...... | ||
| 354 | MOV WR_LVBLEN,BX ;AN000;and byte length | ||
| 355 | OR MEM_ALLOC,LVB_ALLOC ;AN000;DT LVB block allocated | ||
| 356 | .ENDIF ;AN000; | ||
| 357 | ; | ||
| 358 | ALVB_RET: ;AN000; | ||
| 359 | POPP <ES,DS,DX,BX,AX> ;AN000; | ||
| 360 | RET ;AN000; | ||
| 361 | ALLOCATE_LVB ENDP ;AN000; | ||
| 362 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 363 | ; | ||
| 364 | ; DEALLOCATE_LVB | ||
| 365 | ; | ||
| 366 | ; | ||
| 367 | ; ENTRY: | ||
| 368 | ; none | ||
| 369 | ; | ||
| 370 | ; EXIT: | ||
| 371 | ; if CY = 0 then, OK | ||
| 372 | ; if CY = 1 then, | ||
| 373 | ; An error occurred while trying to release this memory | ||
| 374 | ; | ||
| 375 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 376 | DEALLOCATE_LVB PROC FAR ;AN000; | ||
| 377 | DEALLOCATE_LVB_NEAR: ;AN000; | ||
| 378 | PUSHH <AX,BX,DS,ES> ;AN000; | ||
| 379 | MOV AX,DATA ;AN000; | ||
| 380 | MOV DS,AX ;AN000; | ||
| 381 | TEST MEM_ALLOC,LVB_ALLOC ;AN000;DT Is LVB block allocated | ||
| 382 | JZ DLVB_RET ;AN000;DT if not, skip deallocation | ||
| 383 | MOV AX,WR_LVBSEG ;AN000;free up LVB allocated segment | ||
| 384 | MOV ES,AX ;AN000; | ||
| 385 | MOV AH,FREE_BLOCK ;AN000; | ||
| 386 | DOSCALL ;AN000; | ||
| 387 | AND MEM_ALLOC,255-LVB_ALLOC ;AN000;DT | ||
| 388 | DLVB_RET: ;AN000; | ||
| 389 | POPP <ES,DS,BX,AX> ;AN000; | ||
| 390 | RET ;AN000; | ||
| 391 | DEALLOCATE_LVB ENDP ;AN000; | ||
| 392 | |||
| 393 | SERVICE ENDS ;AN000; | ||
| 394 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/INPUT.ASM b/v4.0/src/SELECT/INPUT.ASM new file mode 100644 index 0000000..59996a7 --- /dev/null +++ b/v4.0/src/SELECT/INPUT.ASM | |||
| @@ -0,0 +1,1737 @@ | |||
| 1 | PAGE 60,132 ;AN000; | ||
| 2 | NAME SELECT ;AN000; | ||
| 3 | TITLE INPUT.ASM - DOS SELECT.EXE ;AN000; | ||
| 4 | SUBTTL input.asm ;AN000; | ||
| 5 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 6 | ; | ||
| 7 | ; | ||
| 8 | ; INPUT.ASM: Copyright 1988 Microsoft | ||
| 9 | ; | ||
| 10 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 11 | ; | ||
| 12 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; Define Dummy data segment | ||
| 13 | PUBLIC WR_ICBVEC ;AN000; | ||
| 14 | PUBLIC KD_BACKSPACE ;AN000; | ||
| 15 | ; | ||
| 16 | INCLUDE PCEQUATE.INC ;AN000; | ||
| 17 | ; | ||
| 18 | SND_FREQ EQU 440 ;AN000; ;frequency of error beep | ||
| 19 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 20 | ; | ||
| 21 | ; Input Field Control Block Vector | ||
| 22 | ; | ||
| 23 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 24 | WR_ICBVEC DW DATA,WR_ICB1 ;AN000;ICB 1 segment,offset STR_DOS_LOC | ||
| 25 | DW DATA,WR_ICB2 ;AN000;ICB 2 segment,offset STR_EXT_PARMS | ||
| 26 | DW DATA,WR_ICB3 ;AN000;ICB 3 segment,offset STR_DOS_PATH | ||
| 27 | DW DATA,WR_ICB4 ;AN000;ICB 4 segment,offset STR_DOS_APPEND | ||
| 28 | DW DATA,WR_ICB5 ;AN000;ICB 5 segment,offset STR_DOS_PROMPT | ||
| 29 | DW DATA,WR_ICB6 ;AN000;ICB 6 segment,offset STR_SHELL | ||
| 30 | DW DATA,WR_ICB7 ;AN000;ICB 7 segment,offset STR_KSAM | ||
| 31 | DW DATA,WR_ICB8 ;AN000;ICB 8 segment,offset STR_FASTOPEN | ||
| 32 | DW DATA,WR_ICB9 ;AN000;ICB 9 segment,offset STR_SHARE | ||
| 33 | DW DATA,WR_ICB10 ;AN000;ICB 10 segment,offset STR_GRAPHICS | ||
| 34 | DW DATA,WR_ICB11 ;AN000;ICB 11 segment,offset STR_XMAEM | ||
| 35 | DW DATA,WR_ICB12 ;AN000;ICB 12 segment,offset STR_XMA2EMS | ||
| 36 | DW DATA,WR_ICB13 ;AN000;ICB 13 segment,offset STR_VDISK | ||
| 37 | DW DATA,WR_ICB14 ;AN000;ICB 14 segment,offset STR_BREAK | ||
| 38 | DW DATA,WR_ICB15 ;AN000;ICB 15 segment,offset STR_BUFFERS | ||
| 39 | DW DATA,WR_ICB16 ;AN000;ICB 16 segment,offset STR_DOS_APPEND_P JW | ||
| 40 | DW DATA,WR_ICB17 ;AN000;ICB 17 segment,offset STR_FCBS | ||
| 41 | DW DATA,WR_ICB18 ;AN000;ICB 18 segment,offset STR_FILES | ||
| 42 | DW DATA,WR_ICB19 ;AN000;ICB 19 segment,offset STR_LASTDRIVE | ||
| 43 | DW DATA,WR_ICB20 ;AN000;ICB 20 segment,offset STR_STACKS | ||
| 44 | DW DATA,WR_ICB21 ;AN000;ICB 21 segment,offset STR_VERIFY | ||
| 45 | DW DATA,WR_ICB22 ;AN000;ICB 23 segment,offset NUM_PRINTER | ||
| 46 | DW DATA,WR_ICB23 ;AN000;ICB 23 segment,offset NUM_EXT_DISK | ||
| 47 | DW DATA,WR_ICB24 ;AN000;ICB 24 segment,offset NUM_YEAR | ||
| 48 | DW DATA,WR_ICB25 ;AN000;ICB 25 segment,offset NUM_MONTH | ||
| 49 | DW DATA,WR_ICB26 ;AN000;ICB 26 segment,offset NUM_DAY | ||
| 50 | DW DATA,WR_ICB27 ;AN000;ICB 27 segment,offset NUM_HOUR | ||
| 51 | DW DATA,WR_ICB28 ;AN000;ICB 28 segment,offset NUM_MINUTE | ||
| 52 | DW DATA,WR_ICB29 ;AN000;ICB 29 segment,offset NUM_SECOND | ||
| 53 | DW DATA,WR_ICB30 ;AN000;ICB 29 segment,offset DEF_CP | ||
| 54 | DW DATA,WR_ICB31 ;AN000;ICB 29 segment,offset SWISS_KEYB | ||
| 55 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 56 | ; | ||
| 57 | ; ICB 1 STR_DOS_LOC | ||
| 58 | ; | ||
| 59 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 60 | WR_ICB1 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 61 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 62 | DW ICB_HOR ;AC069;SEH ;AN000;option word three | ||
| 63 | DW 0 ;AN000;option word four | ||
| 64 | DW 8 ;AN000;**;upper left corner field row | ||
| 65 | DW 33 ;AN000;**;upper left corner field column | ||
| 66 | DW 40 ;AN000;**;number of chars before wrapping | ||
| 67 | DW 1 ;AN000;color index number assigned | ||
| 68 | DW 0 ;AN000;default change/minus status | ||
| 69 | DW 1 ;AN000;**;cursor character pos in field | ||
| 70 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 71 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 72 | DW 0 ;AN000;ASCII code of the key returned | ||
| 73 | DW 0 ;AN000;length of data entered into fld | ||
| 74 | DW 40 ;AC069;SEH ;AN000;**;length of input field | ||
| 75 | DW 0 ;AN000;??;offset of input field | ||
| 76 | DW 0 ;AN000;??;segment of input field | ||
| 77 | DW 0 ;AN000;offset of color attribute buffer | ||
| 78 | DW 0 ;AN000;segment of color attr buffer | ||
| 79 | DW 0 ;AN000;length of field's default value | ||
| 80 | DW 0 ;AN000;offset field's default value | ||
| 81 | DW 0 ;AN000;segment field's default value | ||
| 82 | DW 0 ;AN000;length of return string | ||
| 83 | DW 0 ;AN000;offset of return string | ||
| 84 | DW 0 ;AN000;segment of return string | ||
| 85 | DW WR_PATH_CHAR_LEN ;AN000;length of allow chars | ||
| 86 | DW WR_PATH_CHAR ;AN000;offset of allow chars | ||
| 87 | DW DATA ;AN000;segment of allow chars | ||
| 88 | DW 0 ;AN000;length of skip chars | ||
| 89 | DW 0 ;AN000;offset of skip chars | ||
| 90 | DW 0 ;AN000;segment of skip chars | ||
| 91 | DW 0 ;AN000;length of allow once chars | ||
| 92 | DW 0 ;AN000;offset of allow once chars | ||
| 93 | DW 0 ;AN000;segment of allow once chars | ||
| 94 | DW 2 ;AN000;precision of decimal point | ||
| 95 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 96 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 97 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 98 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 99 | DW 0 ;AN000;beginning row of minus and plus | ||
| 100 | DW 0 ;AN000;beginning col of minus & plus | ||
| 101 | DW 0 ;AN000;length of minus sign string | ||
| 102 | DW 0 ;AN000;offset of minus sign string | ||
| 103 | DW 0 ;AN000;segment of minus sign string | ||
| 104 | DW 0 ;AN000;length of plus sign string | ||
| 105 | DW 0 ;AN000;offset of plus sign string | ||
| 106 | DW 0 ;AN000;segment of plus sign string | ||
| 107 | ; | ||
| 108 | WR_PATH_CHAR DB "'",',0-9,,a-z,,A-Z,,�-�, $!"#%&()-.@\`_{}~^,,,' ;AN000; | ||
| 109 | WR_PATH_CHAR_LEN EQU ($-WR_PATH_CHAR) ;AN000; | ||
| 110 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 111 | ; | ||
| 112 | ; ICB 2 STR_EXT_PARMS | ||
| 113 | ; | ||
| 114 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 115 | WR_ICB2 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 116 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 117 | DW ICB_HOR+ICB_WHM+ICB_WEN+ICB_WDL+ICB_WAR+ICB_WBS ;AN000;option word three | ||
| 118 | DW 0 ;AN000;option word four | ||
| 119 | DW 7 ;AN000;**;upper left corner field row | ||
| 120 | DW 44 ;AN000;**;upper left corner field column | ||
| 121 | DW 75 ;;AN000;35 ;**;number of chars before wrapping | ||
| 122 | DW 1 ;AN000;color index number assigned | ||
| 123 | DW 0 ;AN000;default change/minus status | ||
| 124 | DW 1 ;AN000;**;cursor character pos in field | ||
| 125 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 126 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 127 | DW 0 ;AN000;ASCII code of the key returned | ||
| 128 | DW 0 ;AN000;length of data entered into fld | ||
| 129 | DW 0 ;AN000;**;length of input field | ||
| 130 | DW 0 ;AN000;??;offset of input field | ||
| 131 | DW 0 ;AN000;??;segment of input field | ||
| 132 | DW 0 ;AN000;offset of color attribute buffer | ||
| 133 | DW 0 ;AN000;segment of color attr buffer | ||
| 134 | DW 0 ;AN000;length of field's default value | ||
| 135 | DW 0 ;AN000;offset field's default value | ||
| 136 | DW 0 ;AN000;segment field's default value | ||
| 137 | DW 0 ;AN000;length of return string | ||
| 138 | DW 0 ;AN000;offset of return string | ||
| 139 | DW 0 ;AN000;segment of return string | ||
| 140 | DW WR_ALLOW_CHAR_LEN ;AN000;length of allow chars | ||
| 141 | DW WR_ALLOW_CHAR ;AN000;offset of allow chars | ||
| 142 | DW DATA ;AN000;segment of allow chars | ||
| 143 | DW 0 ;AN000;length of skip chars | ||
| 144 | DW 0 ;AN000;offset of skip chars | ||
| 145 | DW 0 ;AN000;segment of skip chars | ||
| 146 | DW 0 ;AN000;length of allow once chars | ||
| 147 | DW 0 ;AN000;offset of allow once chars | ||
| 148 | DW 0 ;AN000;segment of allow once chars | ||
| 149 | DW 2 ;AN000;precision of decimal point | ||
| 150 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 151 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 152 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 153 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 154 | DW 0 ;AN000;beginning row of minus and plus | ||
| 155 | DW 0 ;AN000;beginning col of minus & plus | ||
| 156 | DW 0 ;AN000;length of minus sign string | ||
| 157 | DW 0 ;AN000;offset of minus sign string | ||
| 158 | DW 0 ;AN000;segment of minus sign string | ||
| 159 | DW 0 ;AN000;length of plus sign string | ||
| 160 | DW 0 ;AN000;offset of plus sign string | ||
| 161 | DW 0 ;AN000;segment of plus sign string | ||
| 162 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 163 | ; | ||
| 164 | ; ICB 3 STR_DOS_PATH | ||
| 165 | ; | ||
| 166 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 167 | WR_ICB3 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 168 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 169 | DW ICB_HOR+ICB_WHM+ICB_WEN+ICB_WDL+ICB_WAR+ICB_WBS ;AN000;option word three | ||
| 170 | DW 0 ;AN000;option word four | ||
| 171 | DW 8 ;AN000;**;upper left corner field row | ||
| 172 | DW 30 ;AN000;**;upper left corner field column | ||
| 173 | DW 40 ;AN000;**;number of chars before wrapping | ||
| 174 | DW 1 ;AN000;color index number assigned | ||
| 175 | DW 0 ;AN000;default change/minus status | ||
| 176 | DW 1 ;AN000;**;cursor character pos in field | ||
| 177 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 178 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 179 | DW 0 ;AN000;ASCII code of the key returned | ||
| 180 | DW 0 ;AN000;length of data entered into fld | ||
| 181 | DW 0 ;AN000;**;length of input field | ||
| 182 | DW 0 ;AN000;??;offset of input field | ||
| 183 | DW 0 ;AN000;??;segment of input field | ||
| 184 | DW 0 ;AN000;offset of color attribute buffer | ||
| 185 | DW 0 ;AN000;segment of color attr buffer | ||
| 186 | DW 0 ;AN000;length of field's default value | ||
| 187 | DW 0 ;AN000;offset field's default value | ||
| 188 | DW 0 ;AN000;segment field's default value | ||
| 189 | DW 0 ;AN000;length of return string | ||
| 190 | DW 0 ;AN000;offset of return string | ||
| 191 | DW 0 ;AN000;segment of return string | ||
| 192 | DW WR_APPEND_CHAR_LEN ;AN000;length of allow chars | ||
| 193 | DW WR_APPEND_CHAR ;AN000;offset of allow chars | ||
| 194 | DW DATA ;AN000;segment of allow chars | ||
| 195 | DW 0 ;AN000;length of skip chars | ||
| 196 | DW 0 ;AN000;offset of skip chars | ||
| 197 | DW 0 ;AN000;segment of skip chars | ||
| 198 | DW 0 ;AN000;length of allow once chars | ||
| 199 | DW 0 ;AN000;offset of allow once chars | ||
| 200 | DW 0 ;AN000;segment of allow once chars | ||
| 201 | DW 2 ;AN000;precision of decimal point | ||
| 202 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 203 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 204 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 205 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 206 | DW 0 ;AN000;beginning row of minus and plus | ||
| 207 | DW 0 ;AN000;beginning col of minus & plus | ||
| 208 | DW 0 ;AN000;length of minus sign string | ||
| 209 | DW 0 ;AN000;offset of minus sign string | ||
| 210 | DW 0 ;AN000;segment of minus sign string | ||
| 211 | DW 0 ;AN000;length of plus sign string | ||
| 212 | DW 0 ;AN000;offset of plus sign string | ||
| 213 | DW 0 ;AN000;segment of plus sign string | ||
| 214 | ;;; | ||
| 215 | ; | ||
| 216 | WR_APPEND_CHAR DB "'",',0-9,,a-z,,A-Z,,�-�, ;$!"#%&()-.:@\`_{}~^,,,' ;AN000; | ||
| 217 | WR_APPEND_CHAR_LEN EQU ($-WR_APPEND_CHAR) ;AN000; | ||
| 218 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 219 | ; | ||
| 220 | ; ICB 4 STR_DOS_APPEND | ||
| 221 | ; | ||
| 222 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 223 | WR_ICB4 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 224 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 225 | DW ICB_HOR+ICB_WHM+ICB_WEN+ICB_WDL+ICB_WAR+ICB_WBS ;AN000;option word three | ||
| 226 | DW 0 ;AN000;option word four | ||
| 227 | DW 12 ;AN000;**;upper left corner field row | ||
| 228 | DW 30 ;AN000;**;upper left corner field column | ||
| 229 | DW 40 ;AN000;**;number of chars before wrapping | ||
| 230 | DW 1 ;AN000;color index number assigned | ||
| 231 | DW 0 ;AN000;default change/minus status | ||
| 232 | DW 1 ;AN000;**;cursor character pos in field | ||
| 233 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 234 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 235 | DW 0 ;AN000;ASCII code of the key returned | ||
| 236 | DW 0 ;AN000;length of data entered into fld | ||
| 237 | DW 0 ;AN000;**;length of input field | ||
| 238 | DW 0 ;AN000;??;offset of input field | ||
| 239 | DW 0 ;AN000;??;segment of input field | ||
| 240 | DW 0 ;AN000;offset of color attribute buffer | ||
| 241 | DW 0 ;AN000;segment of color attr buffer | ||
| 242 | DW 0 ;AN000;length of field's default value | ||
| 243 | DW 0 ;AN000;offset field's default value | ||
| 244 | DW 0 ;AN000;segment field's default value | ||
| 245 | DW 0 ;AN000;length of return string | ||
| 246 | DW 0 ;AN000;offset of return string | ||
| 247 | DW 0 ;AN000;segment of return string | ||
| 248 | DW WR_APPEND_CHAR_LEN ;AN000;length of allow chars | ||
| 249 | DW WR_APPEND_CHAR ;AN000;offset of allow chars | ||
| 250 | DW DATA ;AN000;segment of allow chars | ||
| 251 | DW 0 ;AN000;length of skip chars | ||
| 252 | DW 0 ;AN000;offset of skip chars | ||
| 253 | DW 0 ;AN000;segment of skip chars | ||
| 254 | DW 0 ;AN000;length of allow once chars | ||
| 255 | DW 0 ;AN000;offset of allow once chars | ||
| 256 | DW 0 ;AN000;segment of allow once chars | ||
| 257 | DW 2 ;AN000;precision of decimal point | ||
| 258 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 259 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 260 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 261 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 262 | DW 0 ;AN000;beginning row of minus and plus | ||
| 263 | DW 0 ;AN000;beginning col of minus & plus | ||
| 264 | DW 0 ;AN000;length of minus sign string | ||
| 265 | DW 0 ;AN000;offset of minus sign string | ||
| 266 | DW 0 ;AN000;segment of minus sign string | ||
| 267 | DW 0 ;AN000;length of plus sign string | ||
| 268 | DW 0 ;AN000;offset of plus sign string | ||
| 269 | DW 0 ;AN000;segment of plus sign string | ||
| 270 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 271 | ; | ||
| 272 | ; ICB 5 STR_DOS_PROMPT | ||
| 273 | ; | ||
| 274 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 275 | WR_ICB5 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 276 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 277 | DW ICB_HOR+ICB_WHM+ICB_WEN+ICB_WDL+ICB_WAR+ICB_WBS ;AN000;option word three | ||
| 278 | DW 0 ;AN000;option word four | ||
| 279 | DW 15 ;AN000;**;upper left corner field row | ||
| 280 | DW 30 ;AN000;**;upper left corner field column | ||
| 281 | DW 30 ;AN000;**;number of chars before wrapping | ||
| 282 | DW 1 ;AN000;color index number assigned | ||
| 283 | DW 0 ;AN000;default change/minus status | ||
| 284 | DW 1 ;AN000;**;cursor character pos in field | ||
| 285 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 286 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 287 | DW 0 ;AN000;ASCII code of the key returned | ||
| 288 | DW 0 ;AN000;length of data entered into fld | ||
| 289 | DW 0 ;AN000;**;length of input field | ||
| 290 | DW 0 ;AN000;??;offset of input field | ||
| 291 | DW 0 ;AN000;??;segment of input field | ||
| 292 | DW 0 ;AN000;offset of color attribute buffer | ||
| 293 | DW 0 ;AN000;segment of color attr buffer | ||
| 294 | DW 0 ;AN000;length of field's default value | ||
| 295 | DW 0 ;AN000;offset field's default value | ||
| 296 | DW 0 ;AN000;segment field's default value | ||
| 297 | DW 0 ;AN000;length of return string | ||
| 298 | DW 0 ;AN000;offset of return string | ||
| 299 | DW 0 ;AN000;segment of return string | ||
| 300 | DW WR_PROMPT_CHAR_LEN ;AN000;length of allow chars | ||
| 301 | DW WR_PROMPT_CHAR ;AN000;offset of allow chars | ||
| 302 | DW DATA ;AN000;segment of allow chars | ||
| 303 | DW 0 ;AN000;length of skip chars | ||
| 304 | DW 0 ;AN000;offset of skip chars | ||
| 305 | DW 0 ;AN000;segment of skip chars | ||
| 306 | DW 0 ;AN000;length of allow once chars | ||
| 307 | DW 0 ;AN000;offset of allow once chars | ||
| 308 | DW 0 ;AN000;segment of allow once chars | ||
| 309 | DW 2 ;AN000;precision of decimal point | ||
| 310 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 311 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 312 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 313 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 314 | DW 0 ;AN000;beginning row of minus and plus | ||
| 315 | DW 0 ;AN000;beginning col of minus & plus | ||
| 316 | DW 0 ;AN000;length of minus sign string | ||
| 317 | DW 0 ;AN000;offset of minus sign string | ||
| 318 | DW 0 ;AN000;segment of minus sign string | ||
| 319 | DW 0 ;AN000;length of plus sign string | ||
| 320 | DW 0 ;AN000;offset of plus sign string | ||
| 321 | DW 0 ;AN000;segment of plus sign string | ||
| 322 | ;;;;;;;;;;;;; | ||
| 323 | ; | ||
| 324 | WR_PROMPT_CHAR DB "'",',0-9,,a-z,,A-Z,,�-�,\/ $!"#%()*+-.;@`[]_{}~,,,' ;AN000; | ||
| 325 | WR_PROMPT_CHAR_LEN EQU ($-WR_PROMPT_CHAR) ;AN000; | ||
| 326 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 327 | ; | ||
| 328 | ; ICB 6 STR_SHELL | ||
| 329 | ; | ||
| 330 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 331 | WR_ICB6 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 332 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 333 | DW ICB_HOR+ICB_WHM+ICB_WEN+ICB_WDL+ICB_WAR+ICB_WBS ;AN000;option word three | ||
| 334 | DW 0 ;AN000;option word four | ||
| 335 | DW 8 ;AN000;**;upper left corner field row | ||
| 336 | DW 38 ;AN000;**;upper left corner field column | ||
| 337 | DW 15 ;AN000;**;number of chars before wrapping | ||
| 338 | DW 1 ;AN000;color index number assigned | ||
| 339 | DW 0 ;AN000;default change/minus status | ||
| 340 | DW 1 ;AN000;**;cursor character pos in field | ||
| 341 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 342 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 343 | DW 0 ;AN000;ASCII code of the key returned | ||
| 344 | DW 0 ;AN000;length of data entered into fld | ||
| 345 | DW 0 ;AN000;**;length of input field | ||
| 346 | DW 0 ;AN000;??;offset of input field | ||
| 347 | DW 0 ;AN000;??;segment of input field | ||
| 348 | DW 0 ;AN000;offset of color attribute buffer | ||
| 349 | DW 0 ;AN000;segment of color attr buffer | ||
| 350 | DW 0 ;AN000;length of field's default value | ||
| 351 | DW 0 ;AN000;offset field's default value | ||
| 352 | DW 0 ;AN000;segment field's default value | ||
| 353 | DW 0 ;AN000;length of return string | ||
| 354 | DW 0 ;AN000;offset of return string | ||
| 355 | DW 0 ;AN000;segment of return string | ||
| 356 | DW WR_ALLOW_CHAR_LEN ;AN000;length of allow chars | ||
| 357 | DW WR_ALLOW_CHAR ;AN000;offset of allow chars | ||
| 358 | DW DATA ;AN000;segment of allow chars | ||
| 359 | DW 0 ;AN000;length of skip chars | ||
| 360 | DW 0 ;AN000;offset of skip chars | ||
| 361 | DW 0 ;AN000;segment of skip chars | ||
| 362 | DW 0 ;AN000;length of allow once chars | ||
| 363 | DW 0 ;AN000;offset of allow once chars | ||
| 364 | DW 0 ;AN000;segment of allow once chars | ||
| 365 | DW 2 ;AN000;precision of decimal point | ||
| 366 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 367 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 368 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 369 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 370 | DW 0 ;AN000;beginning row of minus and plus | ||
| 371 | DW 0 ;AN000;beginning col of minus & plus | ||
| 372 | DW 0 ;AN000;length of minus sign string | ||
| 373 | DW 0 ;AN000;offset of minus sign string | ||
| 374 | DW 0 ;AN000;segment of minus sign string | ||
| 375 | DW 0 ;AN000;length of plus sign string | ||
| 376 | DW 0 ;AN000;offset of plus sign string | ||
| 377 | DW 0 ;AN000;segment of plus sign string | ||
| 378 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 379 | ; | ||
| 380 | ; ICB 7 STR_KSAM | ||
| 381 | ; | ||
| 382 | ; This field will not be used with the shipped version | ||
| 383 | ; of SELECT. | ||
| 384 | ; | ||
| 385 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 386 | WR_ICB7 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 387 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 388 | DW ICB_HOR+ICB_WHM+ICB_WEN+ICB_WDL+ICB_WAR+ICB_WBS ;AN000;option word three | ||
| 389 | DW 0 ;AN000;option word four | ||
| 390 | DW 7 ;AN000;**;upper left corner field row | ||
| 391 | DW 36 ;AN000;**;upper left corner field column | ||
| 392 | DW 40 ;AN000;**;number of chars before wrapping | ||
| 393 | DW 1 ;AN000;color index number assigned | ||
| 394 | DW 0 ;AN000;default change/minus status | ||
| 395 | DW 1 ;AN000;**;cursor character pos in field | ||
| 396 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 397 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 398 | DW 0 ;AN000;ASCII code of the key returned | ||
| 399 | DW 0 ;AN000;length of data entered into fld | ||
| 400 | DW 0 ;AN000;**;length of input field | ||
| 401 | DW 0 ;AN000;??;offset of input field | ||
| 402 | DW 0 ;AN000;??;segment of input field | ||
| 403 | DW 0 ;AN000;offset of color attribute buffer | ||
| 404 | DW 0 ;AN000;segment of color attr buffer | ||
| 405 | DW 0 ;AN000;length of field's default value | ||
| 406 | DW 0 ;AN000;offset field's default value | ||
| 407 | DW 0 ;AN000;segment field's default value | ||
| 408 | DW 0 ;AN000;length of return string | ||
| 409 | DW 0 ;AN000;offset of return string | ||
| 410 | DW 0 ;AN000;segment of return string | ||
| 411 | DW WR_ALLOW_CHAR_LEN ;AN000;length of allow chars | ||
| 412 | DW WR_ALLOW_CHAR ;AN000;offset of allow chars | ||
| 413 | DW DATA ;AN000;segment of allow chars | ||
| 414 | DW 0 ;AN000;length of skip chars | ||
| 415 | DW 0 ;AN000;offset of skip chars | ||
| 416 | DW 0 ;AN000;segment of skip chars | ||
| 417 | DW 0 ;AN000;length of allow once chars | ||
| 418 | DW 0 ;AN000;offset of allow once chars | ||
| 419 | DW 0 ;AN000;segment of allow once chars | ||
| 420 | DW 2 ;AN000;precision of decimal point | ||
| 421 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 422 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 423 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 424 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 425 | DW 0 ;AN000;beginning row of minus and plus | ||
| 426 | DW 0 ;AN000;beginning col of minus & plus | ||
| 427 | DW 0 ;AN000;length of minus sign string | ||
| 428 | DW 0 ;AN000;offset of minus sign string | ||
| 429 | DW 0 ;AN000;segment of minus sign string | ||
| 430 | DW 0 ;AN000;length of plus sign string | ||
| 431 | DW 0 ;AN000;offset of plus sign string | ||
| 432 | DW 0 ;AN000;segment of plus sign string | ||
| 433 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 434 | ; | ||
| 435 | ; ICB 8 STR_FASTOPEN | ||
| 436 | ; | ||
| 437 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 438 | WR_ICB8 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 439 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 440 | DW ICB_HOR+ICB_WHM+ICB_WEN+ICB_WDL+ICB_WAR+ICB_WBS ;AN000;option word three | ||
| 441 | DW 0 ;AN000;option word four | ||
| 442 | DW 8 ;AN000;**;upper left corner field row | ||
| 443 | DW 40 ;AN000;**;upper left corner field column | ||
| 444 | DW 40 ;AN000;**;number of chars before wrapping | ||
| 445 | DW 1 ;AN000;color index number assigned | ||
| 446 | DW 0 ;AN000;default change/minus status | ||
| 447 | DW 1 ;AN000;**;cursor character pos in field | ||
| 448 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 449 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 450 | DW 0 ;AN000;ASCII code of the key returned | ||
| 451 | DW 0 ;AN000;length of data entered into fld | ||
| 452 | DW 0 ;AN000;**;length of input field | ||
| 453 | DW 0 ;AN000;??;offset of input field | ||
| 454 | DW 0 ;AN000;??;segment of input field | ||
| 455 | DW 0 ;AN000;offset of color attribute buffer | ||
| 456 | DW 0 ;AN000;segment of color attr buffer | ||
| 457 | DW 0 ;AN000;length of field's default value | ||
| 458 | DW 0 ;AN000;offset field's default value | ||
| 459 | DW 0 ;AN000;segment field's default value | ||
| 460 | DW 0 ;AN000;length of return string | ||
| 461 | DW 0 ;AN000;offset of return string | ||
| 462 | DW 0 ;AN000;segment of return string | ||
| 463 | DW WR_ALLOW_CHAR_LEN ;AN000;length of allow chars | ||
| 464 | DW WR_ALLOW_CHAR ;AN000;offset of allow chars | ||
| 465 | DW DATA ;AN000;segment of allow chars | ||
| 466 | DW 0 ;AN000;length of skip chars | ||
| 467 | DW 0 ;AN000;offset of skip chars | ||
| 468 | DW 0 ;AN000;segment of skip chars | ||
| 469 | DW 0 ;AN000;length of allow once chars | ||
| 470 | DW 0 ;AN000;offset of allow once chars | ||
| 471 | DW 0 ;AN000;segment of allow once chars | ||
| 472 | DW 2 ;AN000;precision of decimal point | ||
| 473 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 474 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 475 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 476 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 477 | DW 0 ;AN000;beginning row of minus and plus | ||
| 478 | DW 0 ;AN000;beginning col of minus & plus | ||
| 479 | DW 0 ;AN000;length of minus sign string | ||
| 480 | DW 0 ;AN000;offset of minus sign string | ||
| 481 | DW 0 ;AN000;segment of minus sign string | ||
| 482 | DW 0 ;AN000;length of plus sign string | ||
| 483 | DW 0 ;AN000;offset of plus sign string | ||
| 484 | DW 0 ;AN000;segment of plus sign string | ||
| 485 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 486 | ; | ||
| 487 | ; ICB 9 STR_SHARE | ||
| 488 | ; | ||
| 489 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 490 | WR_ICB9 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 491 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 492 | DW ICB_HOR ;AC069;SEH ;AN000;option word three | ||
| 493 | DW 0 ;AN000;option word four | ||
| 494 | DW 8 ;AN000;**;upper left corner field row | ||
| 495 | DW 36 ;AN000;**;upper left corner field column | ||
| 496 | DW 40 ;AN000;**;number of chars before wrapping | ||
| 497 | DW 1 ;AN000;color index number assigned | ||
| 498 | DW 0 ;AN000;default change/minus status | ||
| 499 | DW 1 ;AN000;**;cursor character pos in field | ||
| 500 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 501 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 502 | DW 0 ;AN000;ASCII code of the key returned | ||
| 503 | DW 0 ;AN000;length of data entered into fld | ||
| 504 | DW 40 ;AC069;SEH ;AN000;**;length of input field | ||
| 505 | DW 0 ;AN000;??;offset of input field | ||
| 506 | DW 0 ;AN000;??;segment of input field | ||
| 507 | DW 0 ;AN000;offset of color attribute buffer | ||
| 508 | DW 0 ;AN000;segment of color attr buffer | ||
| 509 | DW 0 ;AN000;length of field's default value | ||
| 510 | DW 0 ;AN000;offset field's default value | ||
| 511 | DW 0 ;AN000;segment field's default value | ||
| 512 | DW 0 ;AN000;length of return string | ||
| 513 | DW 0 ;AN000;offset of return string | ||
| 514 | DW 0 ;AN000;segment of return string | ||
| 515 | DW WR_ALLOW_CHAR_LEN ;AN000;length of allow chars | ||
| 516 | DW WR_ALLOW_CHAR ;AN000;offset of allow chars | ||
| 517 | DW DATA ;AN000;segment of allow chars | ||
| 518 | DW 0 ;AN000;length of skip chars | ||
| 519 | DW 0 ;AN000;offset of skip chars | ||
| 520 | DW 0 ;AN000;segment of skip chars | ||
| 521 | DW 0 ;AN000;length of allow once chars | ||
| 522 | DW 0 ;AN000;offset of allow once chars | ||
| 523 | DW 0 ;AN000;segment of allow once chars | ||
| 524 | DW 2 ;AN000;precision of decimal point | ||
| 525 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 526 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 527 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 528 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 529 | DW 0 ;AN000;beginning row of minus and plus | ||
| 530 | DW 0 ;AN000;beginning col of minus & plus | ||
| 531 | DW 0 ;AN000;length of minus sign string | ||
| 532 | DW 0 ;AN000;offset of minus sign string | ||
| 533 | DW 0 ;AN000;segment of minus sign string | ||
| 534 | DW 0 ;AN000;length of plus sign string | ||
| 535 | DW 0 ;AN000;offset of plus sign string | ||
| 536 | DW 0 ;AN000;segment of plus sign string | ||
| 537 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 538 | ; | ||
| 539 | ; ICB 10 STR_GRAPHICS | ||
| 540 | ; | ||
| 541 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 542 | WR_ICB10 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 543 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 544 | DW ICB_HOR+ICB_WHM+ICB_WEN+ICB_WDL+ICB_WAR+ICB_WBS ;AN000;option word three | ||
| 545 | DW 0 ;AN000;option word four | ||
| 546 | DW 8 ;AN000;**;upper left corner field row | ||
| 547 | DW 34 ;AN000;**;upper left corner field column | ||
| 548 | DW 40 ;AN000;**;number of chars before wrapping | ||
| 549 | DW 1 ;AN000;color index number assigned | ||
| 550 | DW 0 ;AN000;default change/minus status | ||
| 551 | DW 1 ;AN000;**;cursor character pos in field | ||
| 552 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 553 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 554 | DW 0 ;AN000;ASCII code of the key returned | ||
| 555 | DW 0 ;AN000;length of data entered into fld | ||
| 556 | DW 0 ;AN000;**;length of input field | ||
| 557 | DW 0 ;AN000;??;offset of input field | ||
| 558 | DW 0 ;AN000;??;segment of input field | ||
| 559 | DW 0 ;AN000;offset of color attribute buffer | ||
| 560 | DW 0 ;AN000;segment of color attr buffer | ||
| 561 | DW 0 ;AN000;length of field's default value | ||
| 562 | DW 0 ;AN000;offset field's default value | ||
| 563 | DW 0 ;AN000;segment field's default value | ||
| 564 | DW 0 ;AN000;length of return string | ||
| 565 | DW 0 ;AN000;offset of return string | ||
| 566 | DW 0 ;AN000;segment of return string | ||
| 567 | DW WR_GRAPHIC_CHAR_LEN ;AN000;length of allow chars | ||
| 568 | DW WR_GRAPHIC_CHAR ;AN000;offset of allow chars | ||
| 569 | DW DATA ;AN000;segment of allow chars | ||
| 570 | DW 0 ;AN000;length of skip chars | ||
| 571 | DW 0 ;AN000;offset of skip chars | ||
| 572 | DW 0 ;AN000;segment of skip chars | ||
| 573 | DW 0 ;AN000;length of allow once chars | ||
| 574 | DW 0 ;AN000;offset of allow once chars | ||
| 575 | DW 0 ;AN000;segment of allow once chars | ||
| 576 | DW 2 ;AN000;precision of decimal point | ||
| 577 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 578 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 579 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 580 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 581 | DW 0 ;AN000;beginning row of minus and plus | ||
| 582 | DW 0 ;AN000;beginning col of minus & plus | ||
| 583 | DW 0 ;AN000;length of minus sign string | ||
| 584 | DW 0 ;AN000;offset of minus sign string | ||
| 585 | DW 0 ;AN000;segment of minus sign string | ||
| 586 | DW 0 ;AN000;length of plus sign string | ||
| 587 | DW 0 ;AN000;offset of plus sign string | ||
| 588 | DW 0 ;AN000;segment of plus sign string | ||
| 589 | WR_GRAPHIC_CHAR DB "'",',0-9,,a-z,,A-Z,\ !"#%()*+-.;@`[]_{}~/,,,' ;AN000; | ||
| 590 | WR_GRAPHIC_CHAR_LEN EQU ($-WR_GRAPHIC_CHAR) ;AN000; | ||
| 591 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 592 | ; | ||
| 593 | ; ICB 11 STR_XMAEM | ||
| 594 | ; | ||
| 595 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 596 | WR_ICB11 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 597 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 598 | DW ICB_HOR+ICB_WHM+ICB_WEN+ICB_WDL+ICB_WAR+ICB_WBS ;AN000;option word three | ||
| 599 | DW 0 ;AN000;option word four | ||
| 600 | DW 8 ;AN000;**;upper left corner field row | ||
| 601 | DW 36 ;AN000;**;upper left corner field column | ||
| 602 | DW 40 ;AN000;**;number of chars before wrapping | ||
| 603 | DW 1 ;AN000;color index number assigned | ||
| 604 | DW 0 ;AN000;default change/minus status | ||
| 605 | DW 1 ;AN000;**;cursor character pos in field | ||
| 606 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 607 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 608 | DW 0 ;AN000;ASCII code of the key returned | ||
| 609 | DW 0 ;AN000;length of data entered into fld | ||
| 610 | DW 0 ;AN000;**;length of input field | ||
| 611 | DW 0 ;AN000;??;offset of input field | ||
| 612 | DW 0 ;AN000;??;segment of input field | ||
| 613 | DW 0 ;AN000;offset of color attribute buffer | ||
| 614 | DW 0 ;AN000;segment of color attr buffer | ||
| 615 | DW 0 ;AN000;length of field's default value | ||
| 616 | DW 0 ;AN000;offset field's default value | ||
| 617 | DW 0 ;AN000;segment field's default value | ||
| 618 | DW 0 ;AN000;length of return string | ||
| 619 | DW 0 ;AN000;offset of return string | ||
| 620 | DW 0 ;AN000;segment of return string | ||
| 621 | DW WR_ALLOW_CHAR_LEN ;AN000;length of allow chars | ||
| 622 | DW WR_ALLOW_CHAR ;AN000;offset of allow chars | ||
| 623 | DW DATA ;AN000;segment of allow chars | ||
| 624 | DW 0 ;AN000;length of skip chars | ||
| 625 | DW 0 ;AN000;offset of skip chars | ||
| 626 | DW 0 ;AN000;segment of skip chars | ||
| 627 | DW 0 ;AN000;length of allow once chars | ||
| 628 | DW 0 ;AN000;offset of allow once chars | ||
| 629 | DW 0 ;AN000;segment of allow once chars | ||
| 630 | DW 2 ;AN000;precision of decimal point | ||
| 631 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 632 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 633 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 634 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 635 | DW 0 ;AN000;beginning row of minus and plus | ||
| 636 | DW 0 ;AN000;beginning col of minus & plus | ||
| 637 | DW 0 ;AN000;length of minus sign string | ||
| 638 | DW 0 ;AN000;offset of minus sign string | ||
| 639 | DW 0 ;AN000;segment of minus sign string | ||
| 640 | DW 0 ;AN000;length of plus sign string | ||
| 641 | DW 0 ;AN000;offset of plus sign string | ||
| 642 | DW 0 ;AN000;segment of plus sign string | ||
| 643 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 644 | ; | ||
| 645 | ; ICB 12 STR_XMA2EMS | ||
| 646 | ; | ||
| 647 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 648 | WR_ICB12 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 649 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 650 | DW ICB_HOR+ICB_WHM+ICB_WEN+ICB_WDL+ICB_WAR+ICB_WBS ;AN000;option word three | ||
| 651 | DW 0 ;AN000;option word four | ||
| 652 | DW 11 ;AN000;**;upper left corner field row | ||
| 653 | DW 36 ;AN000;**;upper left corner field column | ||
| 654 | DW 40 ;AN000;**;number of chars before wrapping | ||
| 655 | DW 1 ;AN000;color index number assigned | ||
| 656 | DW 0 ;AN000;default change/minus status | ||
| 657 | DW 1 ;AN000;**;cursor character pos in field | ||
| 658 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 659 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 660 | DW 0 ;AN000;ASCII code of the key returned | ||
| 661 | DW 0 ;AN000;length of data entered into fld | ||
| 662 | DW 0 ;AN000;**;length of input field | ||
| 663 | DW 0 ;AN000;??;offset of input field | ||
| 664 | DW 0 ;AN000;??;segment of input field | ||
| 665 | DW 0 ;AN000;offset of color attribute buffer | ||
| 666 | DW 0 ;AN000;segment of color attr buffer | ||
| 667 | DW 0 ;AN000;length of field's default value | ||
| 668 | DW 0 ;AN000;offset field's default value | ||
| 669 | DW 0 ;AN000;segment field's default value | ||
| 670 | DW 0 ;AN000;length of return string | ||
| 671 | DW 0 ;AN000;offset of return string | ||
| 672 | DW 0 ;AN000;segment of return string | ||
| 673 | DW WR_ALLOW_CHAR_LEN ;AN000;length of allow chars | ||
| 674 | DW WR_ALLOW_CHAR ;AN000;offset of allow chars | ||
| 675 | DW DATA ;AN000;segment of allow chars | ||
| 676 | DW 0 ;AN000;length of skip chars | ||
| 677 | DW 0 ;AN000;offset of skip chars | ||
| 678 | DW 0 ;AN000;segment of skip chars | ||
| 679 | DW 0 ;AN000;length of allow once chars | ||
| 680 | DW 0 ;AN000;offset of allow once chars | ||
| 681 | DW 0 ;AN000;segment of allow once chars | ||
| 682 | DW 2 ;AN000;precision of decimal point | ||
| 683 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 684 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 685 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 686 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 687 | DW 0 ;AN000;beginning row of minus and plus | ||
| 688 | DW 0 ;AN000;beginning col of minus & plus | ||
| 689 | DW 0 ;AN000;length of minus sign string | ||
| 690 | DW 0 ;AN000;offset of minus sign string | ||
| 691 | DW 0 ;AN000;segment of minus sign string | ||
| 692 | DW 0 ;AN000;length of plus sign string | ||
| 693 | DW 0 ;AN000;offset of plus sign string | ||
| 694 | DW 0 ;AN000;segment of plus sign string | ||
| 695 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 696 | ; | ||
| 697 | ; ICB 13 STR_VDISK | ||
| 698 | ; | ||
| 699 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 700 | WR_ICB13 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 701 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 702 | DW ICB_HOR ;AC069;SEH ;AN000;option word three | ||
| 703 | DW 0 ;AN000;option word four | ||
| 704 | DW 8 ;AN000;**;upper left corner field row | ||
| 705 | DW 36 ;AN000;**;upper left corner field column | ||
| 706 | DW 40 ;AN000;**;number of chars before wrapping | ||
| 707 | DW 1 ;AN000;color index number assigned | ||
| 708 | DW 0 ;AN000;default change/minus status | ||
| 709 | DW 1 ;AN000;**;cursor character pos in field | ||
| 710 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 711 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 712 | DW 0 ;AN000;ASCII code of the key returned | ||
| 713 | DW 0 ;AN000;length of data entered into fld | ||
| 714 | DW 40 ;AC069;SEH ;AN000;**;length of input field | ||
| 715 | DW 0 ;AN000;??;offset of input field | ||
| 716 | DW 0 ;AN000;??;segment of input field | ||
| 717 | DW 0 ;AN000;offset of color attribute buffer | ||
| 718 | DW 0 ;AN000;segment of color attr buffer | ||
| 719 | DW 0 ;AN000;length of field's default value | ||
| 720 | DW 0 ;AN000;offset field's default value | ||
| 721 | DW 0 ;AN000;segment field's default value | ||
| 722 | DW 0 ;AN000;length of return string | ||
| 723 | DW 0 ;AN000;offset of return string | ||
| 724 | DW 0 ;AN000;segment of return string | ||
| 725 | DW WR_ALLOW_CHAR_LEN ;AN000;length of allow chars | ||
| 726 | DW WR_ALLOW_CHAR ;AN000;offset of allow chars | ||
| 727 | DW DATA ;AN000;segment of allow chars | ||
| 728 | DW 0 ;AN000;length of skip chars | ||
| 729 | DW 0 ;AN000;offset of skip chars | ||
| 730 | DW 0 ;AN000;segment of skip chars | ||
| 731 | DW 0 ;AN000;length of allow once chars | ||
| 732 | DW 0 ;AN000;offset of allow once chars | ||
| 733 | DW 0 ;AN000;segment of allow once chars | ||
| 734 | DW 2 ;AN000;precision of decimal point | ||
| 735 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 736 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 737 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 738 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 739 | DW 0 ;AN000;beginning row of minus and plus | ||
| 740 | DW 0 ;AN000;beginning col of minus & plus | ||
| 741 | DW 0 ;AN000;length of minus sign string | ||
| 742 | DW 0 ;AN000;offset of minus sign string | ||
| 743 | DW 0 ;AN000;segment of minus sign string | ||
| 744 | DW 0 ;AN000;length of plus sign string | ||
| 745 | DW 0 ;AN000;offset of plus sign string | ||
| 746 | DW 0 ;AN000;segment of plus sign string | ||
| 747 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 748 | ; | ||
| 749 | ; ICB 14 STR_BREAK | ||
| 750 | ; | ||
| 751 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 752 | WR_ICB14 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;;AN000;;+ICB_CLR ;option word one | ||
| 753 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 754 | DW ICB_HOR ;AC069;SEH ;AN000;option word three | ||
| 755 | DW 0 ;AN000;option word four | ||
| 756 | DW 8 ;AN000;**;upper left corner field row | ||
| 757 | DW 26 ;AN000;**;upper left corner field column | ||
| 758 | DW 3 ;AN000;**;number of chars before wrapping | ||
| 759 | DW 1 ;AN000;color index number assigned | ||
| 760 | DW 0 ;AN000;default change/minus status | ||
| 761 | DW 1 ;AN000;**;cursor character pos in field | ||
| 762 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 763 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 764 | DW 0 ;AN000;ASCII code of the key returned | ||
| 765 | DW 0 ;AN000;length of data entered into fld | ||
| 766 | DW 3 ;AC069;SEH ;AN000;**;length of input field | ||
| 767 | DW 0 ;AN000;??;offset of input field | ||
| 768 | DW 0 ;AN000;??;segment of input field | ||
| 769 | DW 0 ;AN000;offset of color attribute buffer | ||
| 770 | DW 0 ;AN000;segment of color attr buffer | ||
| 771 | DW 0 ;AN000;length of field's default value | ||
| 772 | DW 0 ;AN000;offset field's default value | ||
| 773 | DW 0 ;AN000;segment field's default value | ||
| 774 | DW 0 ;AN000;length of return string | ||
| 775 | DW 0 ;AN000;offset of return string | ||
| 776 | DW 0 ;AN000;segment of return string | ||
| 777 | DW WR_ON_OFF_CHAR_LEN ;AN000;length of allow chars | ||
| 778 | DW WR_ON_OFF_CHAR ;AN000;offset of allow chars | ||
| 779 | DW DATA ;AN000;segment of allow chars | ||
| 780 | DW 0 ;AN000;length of skip chars | ||
| 781 | DW 0 ;AN000;offset of skip chars | ||
| 782 | DW 0 ;AN000;segment of skip chars | ||
| 783 | DW 0 ;AN000;length of allow once chars | ||
| 784 | DW 0 ;AN000;offset of allow once chars | ||
| 785 | DW 0 ;AN000;segment of allow once chars | ||
| 786 | DW 2 ;AN000;precision of decimal point | ||
| 787 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 788 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 789 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 790 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 791 | DW 0 ;AN000;beginning row of minus and plus | ||
| 792 | DW 0 ;AN000;beginning col of minus & plus | ||
| 793 | DW 0 ;AN000;length of minus sign string | ||
| 794 | DW 0 ;AN000;offset of minus sign string | ||
| 795 | DW 0 ;AN000;segment of minus sign string | ||
| 796 | DW 0 ;AN000;length of plus sign string | ||
| 797 | DW 0 ;AN000;offset of plus sign string | ||
| 798 | DW 0 ;AN000;segment of plus sign string | ||
| 799 | WR_ON_OFF_CHAR DB ' OFNofn' ;AN000; | ||
| 800 | WR_ON_OFF_CHAR_LEN EQU ($-WR_ON_OFF_CHAR) ;AN000; | ||
| 801 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 802 | ; | ||
| 803 | ; ICB 15 STR_BUFFERS | ||
| 804 | ; | ||
| 805 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 806 | WR_ICB15 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 807 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 808 | DW ICB_HOR ;AC069;SEH ;AN000;option word three | ||
| 809 | DW 0 ;AN000;option word four | ||
| 810 | DW 9 ;AN000;**;upper left corner field row | ||
| 811 | DW 26 ;AN000;**;upper left corner field column | ||
| 812 | DW 7 ;AN000;**;number of chars before wrapping | ||
| 813 | DW 1 ;AN000;color index number assigned | ||
| 814 | DW 0 ;AN000;default change/minus status | ||
| 815 | DW 1 ;AN000;**;cursor character pos in field | ||
| 816 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 817 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 818 | DW 0 ;AN000;ASCII code of the key returned | ||
| 819 | DW 0 ;AN000;length of data entered into fld | ||
| 820 | DW 7 ;AC069;SEH ;AN000;**;length of input field | ||
| 821 | DW 0 ;AN000;??;offset of input field | ||
| 822 | DW 0 ;AN000;??;segment of input field | ||
| 823 | DW 0 ;AN000;offset of color attribute buffer | ||
| 824 | DW 0 ;AN000;segment of color attr buffer | ||
| 825 | DW 0 ;AN000;length of field's default value | ||
| 826 | DW 0 ;AN000;offset field's default value | ||
| 827 | DW 0 ;AN000;segment field's default value | ||
| 828 | DW 0 ;AN000;length of return string | ||
| 829 | DW 0 ;AN000;offset of return string | ||
| 830 | DW 0 ;AN000;segment of return string | ||
| 831 | DW WR_BUFFERS_LEN ;AN000;length of allow chars | ||
| 832 | DW WR_BUFFERS ;AN000;offset of allow chars | ||
| 833 | DW DATA ;AN000;segment of allow chars | ||
| 834 | DW 0 ;AN000;length of skip chars | ||
| 835 | DW 0 ;AN000;offset of skip chars | ||
| 836 | DW 0 ;AN000;segment of skip chars | ||
| 837 | DW 0 ;AN000;length of allow once chars | ||
| 838 | DW 0 ;AN000;offset of allow once chars | ||
| 839 | DW 0 ;AN000;segment of allow once chars | ||
| 840 | DW 2 ;AN000;precision of decimal point | ||
| 841 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 842 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 843 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 844 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 845 | DW 0 ;AN000;beginning row of minus and plus | ||
| 846 | DW 0 ;AN000;beginning col of minus & plus | ||
| 847 | DW 0 ;AN000;length of minus sign string | ||
| 848 | DW 0 ;AN000;offset of minus sign string | ||
| 849 | DW 0 ;AN000;segment of minus sign string | ||
| 850 | DW 0 ;AN000;length of plus sign string | ||
| 851 | DW 0 ;AN000;offset of plus sign string | ||
| 852 | DW 0 ;AN000;segment of plus sign string | ||
| 853 | ; | ||
| 854 | WR_BUFFERS DB ' ,0-9,,,,' ;AN000; | ||
| 855 | WR_BUFFERS_LEN EQU $-WR_BUFFERS ;AN000; | ||
| 856 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 857 | ; | ||
| 858 | ; ICB 16 STR_DOS_APPEND_P formerly STR_CPSW ;AC000;JW | ||
| 859 | ; | ||
| 860 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 861 | WR_ICB16 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 862 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 863 | DW ICB_HOR+ICB_WHM+ICB_WEN+ICB_WDL+ICB_WAR+ICB_WBS ;AN000;option word three | ||
| 864 | DW 0 ;AN000;option word four | ||
| 865 | DW 11 ;AN000;**;upper left corner field row | ||
| 866 | DW 30 ;AN000;**;upper left corner field column | ||
| 867 | DW 40 ;AN000;**;number of chars before wrapping | ||
| 868 | DW 1 ;AN000;color index number assigned | ||
| 869 | DW 0 ;AN000;default change/minus status | ||
| 870 | DW 1 ;AN000;**;cursor character pos in field | ||
| 871 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 872 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 873 | DW 0 ;AN000;ASCII code of the key returned | ||
| 874 | DW 0 ;AN000;length of data entered into fld | ||
| 875 | DW 0 ;AN000;**;length of input field | ||
| 876 | DW 0 ;AN000;??;offset of input field | ||
| 877 | DW 0 ;AN000;??;segment of input field | ||
| 878 | DW 0 ;AN000;offset of color attribute buffer | ||
| 879 | DW 0 ;AN000;segment of color attr buffer | ||
| 880 | DW 0 ;AN000;length of field's default value | ||
| 881 | DW 0 ;AN000;offset field's default value | ||
| 882 | DW 0 ;AN000;segment field's default value | ||
| 883 | DW 0 ;AN000;length of return string | ||
| 884 | DW 0 ;AN000;offset of return string | ||
| 885 | DW 0 ;AN000;segment of return string | ||
| 886 | DW WR_ALLOW_CHAR_LEN ;AN000;length of allow chars | ||
| 887 | DW WR_ALLOW_CHAR ;AN000;offset of allow chars | ||
| 888 | DW DATA ;AN000;segment of allow chars | ||
| 889 | DW 0 ;AN000;length of skip chars | ||
| 890 | DW 0 ;AN000;offset of skip chars | ||
| 891 | DW 0 ;AN000;segment of skip chars | ||
| 892 | DW 0 ;AN000;length of allow once chars | ||
| 893 | DW 0 ;AN000;offset of allow once chars | ||
| 894 | DW 0 ;AN000;segment of allow once chars | ||
| 895 | DW 2 ;AN000;precision of decimal point | ||
| 896 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 897 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 898 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 899 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 900 | DW 0 ;AN000;beginning row of minus and plus | ||
| 901 | DW 0 ;AN000;beginning col of minus & plus | ||
| 902 | DW 0 ;AN000;length of minus sign string | ||
| 903 | DW 0 ;AN000;offset of minus sign string | ||
| 904 | DW 0 ;AN000;segment of minus sign string | ||
| 905 | DW 0 ;AN000;length of plus sign string | ||
| 906 | DW 0 ;AN000;offset of plus sign string | ||
| 907 | DW 0 ;AN000;segment of plus sign string | ||
| 908 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 909 | ; | ||
| 910 | ; ICB 17 STR_FCBS | ||
| 911 | ; | ||
| 912 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 913 | WR_ICB17 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 914 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 915 | DW ICB_HOR ;AC069;SEH ;AN000;option word three | ||
| 916 | DW 0 ;AN000;option word four | ||
| 917 | DW 10 ;AC000;JW ;**;upper left corner field row | ||
| 918 | DW 26 ;AN000;**;upper left corner field column | ||
| 919 | DW 7 ;AN000;**;number of chars before wrapping | ||
| 920 | DW 1 ;AN000;color index number assigned | ||
| 921 | DW 0 ;AN000;default change/minus status | ||
| 922 | DW 1 ;AN000;**;cursor character pos in field | ||
| 923 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 924 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 925 | DW 0 ;AN000;ASCII code of the key returned | ||
| 926 | DW 0 ;AN000;length of data entered into fld | ||
| 927 | DW 7 ;AC069;SEH ;AN000;**;length of input field | ||
| 928 | DW 0 ;AN000;??;offset of input field | ||
| 929 | DW 0 ;AN000;??;segment of input field | ||
| 930 | DW 0 ;AN000;offset of color attribute buffer | ||
| 931 | DW 0 ;AN000;segment of color attr buffer | ||
| 932 | DW 0 ;AN000;length of field's default value | ||
| 933 | DW 0 ;AN000;offset field's default value | ||
| 934 | DW 0 ;AN000;segment field's default value | ||
| 935 | DW 0 ;AN000;length of return string | ||
| 936 | DW 0 ;AN000;offset of return string | ||
| 937 | DW 0 ;AN000;segment of return string | ||
| 938 | DW WR_FCBS_LEN ;AN000;length of allow chars | ||
| 939 | DW WR_FCBS ;AN000;offset of allow chars | ||
| 940 | DW DATA ;AN000;segment of allow chars | ||
| 941 | DW 0 ;AN000;length of skip chars | ||
| 942 | DW 0 ;AN000;offset of skip chars | ||
| 943 | DW 0 ;AN000;segment of skip chars | ||
| 944 | DW 0 ;AN000;length of allow once chars | ||
| 945 | DW 0 ;AN000;offset of allow once chars | ||
| 946 | DW 0 ;AN000;segment of allow once chars | ||
| 947 | DW 2 ;AN000;precision of decimal point | ||
| 948 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 949 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 950 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 951 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 952 | DW 0 ;AN000;beginning row of minus and plus | ||
| 953 | DW 0 ;AN000;beginning col of minus & plus | ||
| 954 | DW 0 ;AN000;length of minus sign string | ||
| 955 | DW 0 ;AN000;offset of minus sign string | ||
| 956 | DW 0 ;AN000;segment of minus sign string | ||
| 957 | DW 0 ;AN000;length of plus sign string | ||
| 958 | DW 0 ;AN000;offset of plus sign string | ||
| 959 | DW 0 ;AN000;segment of plus sign string | ||
| 960 | ; | ||
| 961 | WR_FCBS DB ' ,0-9,,,,' ;AN000; | ||
| 962 | WR_FCBS_LEN EQU ($-WR_FCBS) ;AN000; | ||
| 963 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 964 | ; | ||
| 965 | ; ICB 18 STR_FILES | ||
| 966 | ; | ||
| 967 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 968 | WR_ICB18 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 969 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 970 | DW ICB_HOR ;AC069;SEH ;AN000;option word three | ||
| 971 | DW 0 ;AN000;option word four | ||
| 972 | DW 11 ;AC000;JW ;**;upper left corner field row | ||
| 973 | DW 26 ;AN000;**;upper left corner field column | ||
| 974 | DW 3 ;AN000;**;number of chars before wrapping | ||
| 975 | DW 1 ;AN000;color index number assigned | ||
| 976 | DW 0 ;AN000;default change/minus status | ||
| 977 | DW 1 ;AN000;**;cursor character pos in field | ||
| 978 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 979 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 980 | DW 0 ;AN000;ASCII code of the key returned | ||
| 981 | DW 0 ;AN000;length of data entered into fld | ||
| 982 | DW 3 ;AC069;SEH ;AN000;**;length of input field | ||
| 983 | DW 0 ;AN000;??;offset of input field | ||
| 984 | DW 0 ;AN000;??;segment of input field | ||
| 985 | DW 0 ;AN000;offset of color attribute buffer | ||
| 986 | DW 0 ;AN000;segment of color attr buffer | ||
| 987 | DW 0 ;AN000;length of field's default value | ||
| 988 | DW 0 ;AN000;offset field's default value | ||
| 989 | DW 0 ;AN000;segment field's default value | ||
| 990 | DW 0 ;AN000;length of return string | ||
| 991 | DW 0 ;AN000;offset of return string | ||
| 992 | DW 0 ;AN000;segment of return string | ||
| 993 | DW WR_BUFFERS_LEN ;AN000;length of allow chars | ||
| 994 | DW WR_BUFFERS ;AN000;offset of allow chars | ||
| 995 | DW DATA ;AN000;segment of allow chars | ||
| 996 | DW 0 ;AN000;length of skip chars | ||
| 997 | DW 0 ;AN000;offset of skip chars | ||
| 998 | DW 0 ;AN000;segment of skip chars | ||
| 999 | DW 0 ;AN000;length of allow once chars | ||
| 1000 | DW 0 ;AN000;offset of allow once chars | ||
| 1001 | DW 0 ;AN000;segment of allow once chars | ||
| 1002 | DW 2 ;AN000;precision of decimal point | ||
| 1003 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 1004 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 1005 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 1006 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 1007 | DW 0 ;AN000;beginning row of minus and plus | ||
| 1008 | DW 0 ;AN000;beginning col of minus & plus | ||
| 1009 | DW 0 ;AN000;length of minus sign string | ||
| 1010 | DW 0 ;AN000;offset of minus sign string | ||
| 1011 | DW 0 ;AN000;segment of minus sign string | ||
| 1012 | DW 0 ;AN000;length of plus sign string | ||
| 1013 | DW 0 ;AN000;offset of plus sign string | ||
| 1014 | DW 0 ;AN000;segment of plus sign string | ||
| 1015 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1016 | ; | ||
| 1017 | ; ICB 19 STR_LASTDRIVE | ||
| 1018 | ; | ||
| 1019 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1020 | WR_ICB19 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 1021 | DW ICB_DEL+ICB_UPC+ICB_CSW ;AN000;option word two | ||
| 1022 | DW ICB_HOR ;AC069;SEH ;AN000;option word three | ||
| 1023 | DW 0 ;AN000;option word four | ||
| 1024 | DW 12 ;AC000;JW ;**;upper left corner field row | ||
| 1025 | DW 26 ;AN000;**;upper left corner field column | ||
| 1026 | DW 1 ;AN000;**;number of chars before wrapping | ||
| 1027 | DW 1 ;AN000;color index number assigned | ||
| 1028 | DW 0 ;AN000;default change/minus status | ||
| 1029 | DW 1 ;AN000;**;cursor character pos in field | ||
| 1030 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 1031 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 1032 | DW 0 ;AN000;ASCII code of the key returned | ||
| 1033 | DW 0 ;AN000;length of data entered into fld | ||
| 1034 | DW 1 ;AC069;SEH ;AN000;**;length of input field | ||
| 1035 | DW 0 ;AN000;??;offset of input field | ||
| 1036 | DW 0 ;AN000;??;segment of input field | ||
| 1037 | DW 0 ;AN000;offset of color attribute buffer | ||
| 1038 | DW 0 ;AN000;segment of color attr buffer | ||
| 1039 | DW 0 ;AN000;length of field's default value | ||
| 1040 | DW 0 ;AN000;offset field's default value | ||
| 1041 | DW 0 ;AN000;segment field's default value | ||
| 1042 | DW 0 ;AN000;length of return string | ||
| 1043 | DW 0 ;AN000;offset of return string | ||
| 1044 | DW 0 ;AN000;segment of return string | ||
| 1045 | DW WR_ASCII_CHAR_LEN ;AN000;length of allow chars | ||
| 1046 | DW WR_ASCII_CHAR ;AN000;offset of allow chars | ||
| 1047 | DW DATA ;AN000;segment of allow chars | ||
| 1048 | DW 0 ;AN000;length of skip chars | ||
| 1049 | DW 0 ;AN000;offset of skip chars | ||
| 1050 | DW 0 ;AN000;segment of skip chars | ||
| 1051 | DW 0 ;AN000;length of allow once chars | ||
| 1052 | DW 0 ;AN000;offset of allow once chars | ||
| 1053 | DW 0 ;AN000;segment of allow once chars | ||
| 1054 | DW 2 ;AN000;precision of decimal point | ||
| 1055 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 1056 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 1057 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 1058 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 1059 | DW 0 ;AN000;beginning row of minus and plus | ||
| 1060 | DW 0 ;AN000;beginning col of minus & plus | ||
| 1061 | DW 0 ;AN000;length of minus sign string | ||
| 1062 | DW 0 ;AN000;offset of minus sign string | ||
| 1063 | DW 0 ;AN000;segment of minus sign string | ||
| 1064 | DW 0 ;AN000;length of plus sign string | ||
| 1065 | DW 0 ;AN000;offset of plus sign string | ||
| 1066 | DW 0 ;AN000;segment of plus sign string | ||
| 1067 | WR_ASCII_CHAR DB ' ,a-z,,A-Z,' ;AN000; | ||
| 1068 | WR_ASCII_CHAR_LEN EQU ($-WR_ASCII_CHAR) ;AN000; | ||
| 1069 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1070 | ; | ||
| 1071 | ; ICB 20 STR_STACKS | ||
| 1072 | ; | ||
| 1073 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1074 | WR_ICB20 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 1075 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 1076 | DW ICB_HOR ;AC069;SEH ;AN000;option word three | ||
| 1077 | DW 0 ;AN000;option word four | ||
| 1078 | DW 13 ;AC000;JW ;**;upper left corner field row | ||
| 1079 | DW 26 ;AN000;**;upper left corner field column | ||
| 1080 | DW 6 ;AN000;**;number of chars before wrapping | ||
| 1081 | DW 1 ;AN000;color index number assigned | ||
| 1082 | DW 0 ;AN000;default change/minus status | ||
| 1083 | DW 1 ;AN000;**;cursor character pos in field | ||
| 1084 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 1085 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 1086 | DW 0 ;AN000;ASCII code of the key returned | ||
| 1087 | DW 0 ;AN000;length of data entered into fld | ||
| 1088 | DW 6 ;AC069;SEH ;AN000;**;length of input field | ||
| 1089 | DW 0 ;AN000;??;offset of input field | ||
| 1090 | DW 0 ;AN000;??;segment of input field | ||
| 1091 | DW 0 ;AN000;offset of color attribute buffer | ||
| 1092 | DW 0 ;AN000;segment of color attr buffer | ||
| 1093 | DW 0 ;AN000;length of field's default value | ||
| 1094 | DW 0 ;AN000;offset field's default value | ||
| 1095 | DW 0 ;AN000;segment field's default value | ||
| 1096 | DW 0 ;AN000;length of return string | ||
| 1097 | DW 0 ;AN000;offset of return string | ||
| 1098 | DW 0 ;AN000;segment of return string | ||
| 1099 | DW WR_FCBS_LEN ;AN000;length of allow chars | ||
| 1100 | DW WR_FCBS ;AN000;offset of allow chars | ||
| 1101 | DW DATA ;AN000;segment of allow chars | ||
| 1102 | DW 0 ;AN000;length of skip chars | ||
| 1103 | DW 0 ;AN000;offset of skip chars | ||
| 1104 | DW 0 ;AN000;segment of skip chars | ||
| 1105 | DW 0 ;AN000;length of allow once chars | ||
| 1106 | DW 0 ;AN000;offset of allow once chars | ||
| 1107 | DW 0 ;AN000;segment of allow once chars | ||
| 1108 | DW 2 ;AN000;precision of decimal point | ||
| 1109 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 1110 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 1111 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 1112 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 1113 | DW 0 ;AN000;beginning row of minus and plus | ||
| 1114 | DW 0 ;AN000;beginning col of minus & plus | ||
| 1115 | DW 0 ;AN000;length of minus sign string | ||
| 1116 | DW 0 ;AN000;offset of minus sign string | ||
| 1117 | DW 0 ;AN000;segment of minus sign string | ||
| 1118 | DW 0 ;AN000;length of plus sign string | ||
| 1119 | DW 0 ;AN000;offset of plus sign string | ||
| 1120 | DW 0 ;AN000;segment of plus sign string | ||
| 1121 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1122 | ; | ||
| 1123 | ; ICB 21 STR_VERIFY | ||
| 1124 | ; | ||
| 1125 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1126 | WR_ICB21 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;;AN000;+ICB_CLR ;option word one | ||
| 1127 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 1128 | DW ICB_HOR ;AC069;SEH ;AN000;option word three | ||
| 1129 | DW 0 ;AN000;option word four | ||
| 1130 | DW 14 ;AC000;JW ;**;upper left corner field row | ||
| 1131 | DW 26 ;AN000;**;upper left corner field column | ||
| 1132 | DW 3 ;AN000;**;number of chars before wrapping | ||
| 1133 | DW 1 ;AN000;color index number assigned | ||
| 1134 | DW 0 ;AN000;default change/minus status | ||
| 1135 | DW 1 ;AN000;**;cursor character pos in field | ||
| 1136 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 1137 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 1138 | DW 0 ;AN000;ASCII code of the key returned | ||
| 1139 | DW 0 ;AN000;length of data entered into fld | ||
| 1140 | DW 3 ;AC069;SEH ;AN000;**;length of input field | ||
| 1141 | DW 0 ;AN000;??;offset of input field | ||
| 1142 | DW 0 ;AN000;??;segment of input field | ||
| 1143 | DW 0 ;AN000;offset of color attribute buffer | ||
| 1144 | DW 0 ;AN000;segment of color attr buffer | ||
| 1145 | DW 0 ;AN000;length of field's default value | ||
| 1146 | DW 0 ;AN000;offset field's default value | ||
| 1147 | DW 0 ;AN000;segment field's default value | ||
| 1148 | DW 0 ;AN000;length of return string | ||
| 1149 | DW 0 ;AN000;offset of return string | ||
| 1150 | DW 0 ;AN000;segment of return string | ||
| 1151 | DW WR_ON_OFF_CHAR_LEN ;AN000;length of allow chars | ||
| 1152 | DW WR_ON_OFF_CHAR ;AN000;offset of allow chars | ||
| 1153 | DW DATA ;AN000;segment of allow chars | ||
| 1154 | DW 0 ;AN000;length of skip chars | ||
| 1155 | DW 0 ;AN000;offset of skip chars | ||
| 1156 | DW 0 ;AN000;segment of skip chars | ||
| 1157 | DW 0 ;AN000;length of allow once chars | ||
| 1158 | DW 0 ;AN000;offset of allow once chars | ||
| 1159 | DW 0 ;AN000;segment of allow once chars | ||
| 1160 | DW 2 ;AN000;precision of decimal point | ||
| 1161 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 1162 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 1163 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 1164 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 1165 | DW 0 ;AN000;beginning row of minus and plus | ||
| 1166 | DW 0 ;AN000;beginning col of minus & plus | ||
| 1167 | DW 0 ;AN000;length of minus sign string | ||
| 1168 | DW 0 ;AN000;offset of minus sign string | ||
| 1169 | DW 0 ;AN000;segment of minus sign string | ||
| 1170 | DW 0 ;AN000;length of plus sign string | ||
| 1171 | DW 0 ;AN000;offset of plus sign string | ||
| 1172 | DW 0 ;AN000;segment of plus sign string | ||
| 1173 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1174 | ; | ||
| 1175 | ; ICB 22 NUM_PRINTER | ||
| 1176 | ; | ||
| 1177 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1178 | WR_ICB22 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 1179 | DW ICB_DEL+ICB_CSW ;AN000;option word two | ||
| 1180 | DW ICB_HOR ;AC069;SEH ;AN000;option word three | ||
| 1181 | DW 0 ;AN000;option word four | ||
| 1182 | DW 6 ;AN000;**;upper left corner field row | ||
| 1183 | DW 50 ;AN000;**;upper left corner field column | ||
| 1184 | DW 1 ;AN000;**;number of chars before wrapping | ||
| 1185 | DW 1 ;AN000;color index number assigned | ||
| 1186 | DW 0 ;AN000;default change/minus status | ||
| 1187 | DW 1 ;AN000;**;cursor character pos in field | ||
| 1188 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 1189 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 1190 | DW 0 ;AN000;ASCII code of the key returned | ||
| 1191 | DW 0 ;AN000;length of data entered into fld | ||
| 1192 | DW 1 ;AC069;SEH ;AN000;**;length of input field | ||
| 1193 | DW 0 ;AN000;??;offset of input field | ||
| 1194 | DW 0 ;AN000;??;segment of input field | ||
| 1195 | DW 0 ;AN000;offset of color attribute buffer | ||
| 1196 | DW 0 ;AN000;segment of color attr buffer | ||
| 1197 | DW 0 ;AN000;length of field's default value | ||
| 1198 | DW 0 ;AN000;offset field's default value | ||
| 1199 | DW 0 ;AN000;segment field's default value | ||
| 1200 | DW 0 ;AN000;length of return string | ||
| 1201 | DW 0 ;AN000;offset of return string | ||
| 1202 | DW 0 ;AN000;segment of return string | ||
| 1203 | DW WR_NUM_PTR_LEN ;AN000;length of allow chars | ||
| 1204 | DW WR_NUM_PTR ;AN000;offset of allow chars | ||
| 1205 | DW DATA ;AN000;segment of allow chars | ||
| 1206 | DW 0 ;AN000;length of skip chars | ||
| 1207 | DW 0 ;AN000;offset of skip chars | ||
| 1208 | DW 0 ;AN000;segment of skip chars | ||
| 1209 | DW 0 ;AN000;length of allow once chars | ||
| 1210 | DW 0 ;AN000;offset of allow once chars | ||
| 1211 | DW 0 ;AN000;segment of allow once chars | ||
| 1212 | DW 2 ;AN000;precision of decimal point | ||
| 1213 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 1214 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 1215 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 1216 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 1217 | DW 0 ;AN000;beginning row of minus and plus | ||
| 1218 | DW 0 ;AN000;beginning col of minus & plus | ||
| 1219 | DW 0 ;AN000;length of minus sign string | ||
| 1220 | DW 0 ;AN000;offset of minus sign string | ||
| 1221 | DW 0 ;AN000;segment of minus sign string | ||
| 1222 | DW 0 ;AN000;length of plus sign string | ||
| 1223 | DW 0 ;AN000;offset of plus sign string | ||
| 1224 | DW 0 ;AN000;segment of plus sign string | ||
| 1225 | ; | ||
| 1226 | WR_NUM_PTR DB ' ,0-7,' ;AN000; | ||
| 1227 | WR_NUM_PTR_LEN EQU ($-WR_NUM_PTR) ;AN000; | ||
| 1228 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1229 | ; | ||
| 1230 | ; ICB 23 NUM_EXT_DISK | ||
| 1231 | ; | ||
| 1232 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1233 | WR_ICB23 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;AN000;option word one | ||
| 1234 | DW ICB_DEL+ICB_CSW ;AN000;option word two | ||
| 1235 | DW 0 ;AN000;option word three | ||
| 1236 | DW 0 ;AN000;option word four | ||
| 1237 | DW 5 ;AN000;**;upper left corner field row | ||
| 1238 | DW 55 ;AN000;**;upper left corner field column | ||
| 1239 | DW 1 ;AN000;**;number of chars before wrapping | ||
| 1240 | DW 1 ;AN000;color index number assigned | ||
| 1241 | DW 0 ;AN000;default change/minus status | ||
| 1242 | DW 1 ;AN000;**;cursor character pos in field | ||
| 1243 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 1244 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 1245 | DW 0 ;AN000;ASCII code of the key returned | ||
| 1246 | DW 0 ;AN000;length of data entered into fld | ||
| 1247 | DW 0 ;AN000;**;length of input field | ||
| 1248 | DW 0 ;AN000;??;offset of input field | ||
| 1249 | DW 0 ;AN000;??;segment of input field | ||
| 1250 | DW 0 ;AN000;offset of color attribute buffer | ||
| 1251 | DW 0 ;AN000;segment of color attr buffer | ||
| 1252 | DW 0 ;AN000;length of field's default value | ||
| 1253 | DW 0 ;AN000;offset field's default value | ||
| 1254 | DW 0 ;AN000;segment field's default value | ||
| 1255 | DW 0 ;AN000;length of return string | ||
| 1256 | DW 0 ;AN000;offset of return string | ||
| 1257 | DW 0 ;AN000;segment of return string | ||
| 1258 | DW WR_NUM_EXT_LEN ;AN000;length of allow chars | ||
| 1259 | DW WR_NUM_EXT ;AN000;offset of allow chars | ||
| 1260 | DW DATA ;AN000;segment of allow chars | ||
| 1261 | DW 0 ;AN000;length of skip chars | ||
| 1262 | DW 0 ;AN000;offset of skip chars | ||
| 1263 | DW 0 ;AN000;segment of skip chars | ||
| 1264 | DW 0 ;AN000;length of allow once chars | ||
| 1265 | DW 0 ;AN000;offset of allow once chars | ||
| 1266 | DW 0 ;AN000;segment of allow once chars | ||
| 1267 | DW 2 ;AN000;precision of decimal point | ||
| 1268 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 1269 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 1270 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 1271 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 1272 | DW 0 ;AN000;beginning row of minus and plus | ||
| 1273 | DW 0 ;AN000;beginning col of minus & plus | ||
| 1274 | DW 0 ;AN000;length of minus sign string | ||
| 1275 | DW 0 ;AN000;offset of minus sign string | ||
| 1276 | DW 0 ;AN000;segment of minus sign string | ||
| 1277 | DW 0 ;AN000;length of plus sign string | ||
| 1278 | DW 0 ;AN000;offset of plus sign string | ||
| 1279 | DW 0 ;AN000;segment of plus sign string | ||
| 1280 | ; | ||
| 1281 | WR_NUM_EXT DB ' 012' ;AN000; | ||
| 1282 | WR_NUM_EXT_LEN EQU ($-WR_NUM_EXT) ;AN000; | ||
| 1283 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1284 | ; | ||
| 1285 | ; ICB 24 NUM_YEAR | ||
| 1286 | ; | ||
| 1287 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1288 | WR_ICB24 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;;AN000; +ICB_CLR ;option word one | ||
| 1289 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 1290 | DW ICB_HOR ;AC069;SEH ;AN000;option word three | ||
| 1291 | DW 0 ;AN000;option word four | ||
| 1292 | DW 6 ;AN000;**;upper left corner field row | ||
| 1293 | DW 24 ;AN000;**;upper left corner field column | ||
| 1294 | DW 4 ;AN000;**;number of chars before wrapping | ||
| 1295 | DW 1 ;AN000;color index number assigned | ||
| 1296 | DW 0 ;AN000;default change/minus status | ||
| 1297 | DW 1 ;AN000;**;cursor character pos in field | ||
| 1298 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 1299 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 1300 | DW 0 ;AN000;ASCII code of the key returned | ||
| 1301 | DW 0 ;AN000;length of data entered into fld | ||
| 1302 | DW 4 ;AC069;SEH ;AN000;**;length of input field | ||
| 1303 | DW 0 ;AN000;??;offset of input field | ||
| 1304 | DW 0 ;AN000;??;segment of input field | ||
| 1305 | DW 0 ;AN000;offset of color attribute buffer | ||
| 1306 | DW 0 ;AN000;segment of color attr buffer | ||
| 1307 | DW 0 ;AN000;length of field's default value | ||
| 1308 | DW 0 ;AN000;offset field's default value | ||
| 1309 | DW 0 ;AN000;segment field's default value | ||
| 1310 | DW 0 ;AN000;length of return string | ||
| 1311 | DW 0 ;AN000;offset of return string | ||
| 1312 | DW 0 ;AN000;segment of return string | ||
| 1313 | DW WR_ALLOW_NUM_LEN ;AN000;length of allow chars | ||
| 1314 | DW WR_ALLOW_NUM ;AN000;offset of allow chars | ||
| 1315 | DW DATA ;AN000;segment of allow chars | ||
| 1316 | DW 0 ;AN000;length of skip chars | ||
| 1317 | DW 0 ;AN000;offset of skip chars | ||
| 1318 | DW 0 ;AN000;segment of skip chars | ||
| 1319 | DW 0 ;AN000;length of allow once chars | ||
| 1320 | DW 0 ;AN000;offset of allow once chars | ||
| 1321 | DW 0 ;AN000;segment of allow once chars | ||
| 1322 | DW 2 ;AN000;precision of decimal point | ||
| 1323 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 1324 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 1325 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 1326 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 1327 | DW 0 ;AN000;beginning row of minus and plus | ||
| 1328 | DW 0 ;AN000;beginning col of minus & plus | ||
| 1329 | DW 0 ;AN000;length of minus sign string | ||
| 1330 | DW 0 ;AN000;offset of minus sign string | ||
| 1331 | DW 0 ;AN000;segment of minus sign string | ||
| 1332 | DW 0 ;AN000;length of plus sign string | ||
| 1333 | DW 0 ;AN000;offset of plus sign string | ||
| 1334 | DW 0 ;AN000;segment of plus sign string | ||
| 1335 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1336 | ; | ||
| 1337 | ; ICB 25 NUM_MONTH | ||
| 1338 | ; | ||
| 1339 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1340 | WR_ICB25 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;;AN000;+ICB_CLR ;option word one | ||
| 1341 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 1342 | DW ICB_HOR ;AC069;SEH ;AN000;option word three | ||
| 1343 | DW 0 ;AN000;option word four | ||
| 1344 | DW 8 ;AN000;**;upper left corner field row | ||
| 1345 | DW 24 ;AN000;**;upper left corner field column | ||
| 1346 | DW 2 ;AN000;**;number of chars before wrapping | ||
| 1347 | DW 1 ;AN000;color index number assigned | ||
| 1348 | DW 0 ;AN000;default change/minus status | ||
| 1349 | DW 1 ;AN000;**;cursor character pos in field | ||
| 1350 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 1351 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 1352 | DW 0 ;AN000;ASCII code of the key returned | ||
| 1353 | DW 0 ;AN000;length of data entered into fld | ||
| 1354 | DW 2 ;AC069;SEH ;AN000;**;length of input field | ||
| 1355 | DW 0 ;AN000;??;offset of input field | ||
| 1356 | DW 0 ;AN000;??;segment of input field | ||
| 1357 | DW 0 ;AN000;offset of color attribute buffer | ||
| 1358 | DW 0 ;AN000;segment of color attr buffer | ||
| 1359 | DW 0 ;AN000;length of field's default value | ||
| 1360 | DW 0 ;AN000;offset field's default value | ||
| 1361 | DW 0 ;AN000;segment field's default value | ||
| 1362 | DW 0 ;AN000;length of return string | ||
| 1363 | DW 0 ;AN000;offset of return string | ||
| 1364 | DW 0 ;AN000;segment of return string | ||
| 1365 | DW WR_ALLOW_NUM_LEN ;AN000;length of allow chars | ||
| 1366 | DW WR_ALLOW_NUM ;AN000;offset of allow chars | ||
| 1367 | DW DATA ;AN000;segment of allow chars | ||
| 1368 | DW 0 ;AN000;length of skip chars | ||
| 1369 | DW 0 ;AN000;offset of skip chars | ||
| 1370 | DW 0 ;AN000;segment of skip chars | ||
| 1371 | DW 0 ;AN000;length of allow once chars | ||
| 1372 | DW 0 ;AN000;offset of allow once chars | ||
| 1373 | DW 0 ;AN000;segment of allow once chars | ||
| 1374 | DW 2 ;AN000;precision of decimal point | ||
| 1375 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 1376 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 1377 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 1378 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 1379 | DW 0 ;AN000;beginning row of minus and plus | ||
| 1380 | DW 0 ;AN000;beginning col of minus & plus | ||
| 1381 | DW 0 ;AN000;length of minus sign string | ||
| 1382 | DW 0 ;AN000;offset of minus sign string | ||
| 1383 | DW 0 ;AN000;segment of minus sign string | ||
| 1384 | DW 0 ;AN000;length of plus sign string | ||
| 1385 | DW 0 ;AN000;offset of plus sign string | ||
| 1386 | DW 0 ;AN000;segment of plus sign string | ||
| 1387 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1388 | ; | ||
| 1389 | ; ICB 26 NUM_DAY | ||
| 1390 | ; | ||
| 1391 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1392 | WR_ICB26 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;;AN000;+ICB_CLR ;option word one | ||
| 1393 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 1394 | DW ICB_HOR ;AC069;SEH ;AN000;option word three | ||
| 1395 | DW 0 ;AN000;option word four | ||
| 1396 | DW 10 ;AN000;**;upper left corner field row | ||
| 1397 | DW 24 ;AN000;**;upper left corner field column | ||
| 1398 | DW 2 ;AN000;**;number of chars before wrapping | ||
| 1399 | DW 1 ;AN000;color index number assigned | ||
| 1400 | DW 0 ;AN000;default change/minus status | ||
| 1401 | DW 1 ;AN000;**;cursor character pos in field | ||
| 1402 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 1403 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 1404 | DW 0 ;AN000;ASCII code of the key returned | ||
| 1405 | DW 0 ;AN000;length of data entered into fld | ||
| 1406 | DW 2 ;AC069;SEH ;AN000;**;length of input field | ||
| 1407 | DW 0 ;AN000;??;offset of input field | ||
| 1408 | DW 0 ;AN000;??;segment of input field | ||
| 1409 | DW 0 ;AN000;offset of color attribute buffer | ||
| 1410 | DW 0 ;AN000;segment of color attr buffer | ||
| 1411 | DW 0 ;AN000;length of field's default value | ||
| 1412 | DW 0 ;AN000;offset field's default value | ||
| 1413 | DW 0 ;AN000;segment field's default value | ||
| 1414 | DW 0 ;AN000;length of return string | ||
| 1415 | DW 0 ;AN000;offset of return string | ||
| 1416 | DW 0 ;AN000;segment of return string | ||
| 1417 | DW WR_ALLOW_NUM_LEN ;AN000;length of allow chars | ||
| 1418 | DW WR_ALLOW_NUM ;AN000;offset of allow chars | ||
| 1419 | DW DATA ;AN000;segment of allow chars | ||
| 1420 | DW 0 ;AN000;length of skip chars | ||
| 1421 | DW 0 ;AN000;offset of skip chars | ||
| 1422 | DW 0 ;AN000;segment of skip chars | ||
| 1423 | DW 0 ;AN000;length of allow once chars | ||
| 1424 | DW 0 ;AN000;offset of allow once chars | ||
| 1425 | DW 0 ;AN000;segment of allow once chars | ||
| 1426 | DW 2 ;AN000;precision of decimal point | ||
| 1427 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 1428 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 1429 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 1430 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 1431 | DW 0 ;AN000;beginning row of minus and plus | ||
| 1432 | DW 0 ;AN000;beginning col of minus & plus | ||
| 1433 | DW 0 ;AN000;length of minus sign string | ||
| 1434 | DW 0 ;AN000;offset of minus sign string | ||
| 1435 | DW 0 ;AN000;segment of minus sign string | ||
| 1436 | DW 0 ;AN000;length of plus sign string | ||
| 1437 | DW 0 ;AN000;offset of plus sign string | ||
| 1438 | DW 0 ;AN000;segment of plus sign string | ||
| 1439 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1440 | ; | ||
| 1441 | ; ICB 27 NUM_HOUR | ||
| 1442 | ; | ||
| 1443 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1444 | WR_ICB27 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;;AN000;+ICB_CLR ;option word one | ||
| 1445 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 1446 | DW ICB_HOR ;AC069;SEH ;AN000;option word three | ||
| 1447 | DW 0 ;AN000;option word four | ||
| 1448 | DW 16 ;AN000;**;upper left corner field row | ||
| 1449 | DW 24 ;AN000;**;upper left corner field column | ||
| 1450 | DW 2 ;AN000;**;number of chars before wrapping | ||
| 1451 | DW 1 ;AN000;color index number assigned | ||
| 1452 | DW 0 ;AN000;default change/minus status | ||
| 1453 | DW 1 ;AN000;**;cursor character pos in field | ||
| 1454 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 1455 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 1456 | DW 0 ;AN000;ASCII code of the key returned | ||
| 1457 | DW 0 ;AN000;length of data entered into fld | ||
| 1458 | DW 2 ;AC069;SEH ;AN000;**;length of input field | ||
| 1459 | DW 0 ;AN000;??;offset of input field | ||
| 1460 | DW 0 ;AN000;??;segment of input field | ||
| 1461 | DW 0 ;AN000;offset of color attribute buffer | ||
| 1462 | DW 0 ;AN000;segment of color attr buffer | ||
| 1463 | DW 0 ;AN000;length of field's default value | ||
| 1464 | DW 0 ;AN000;offset field's default value | ||
| 1465 | DW 0 ;AN000;segment field's default value | ||
| 1466 | DW 0 ;AN000;length of return string | ||
| 1467 | DW 0 ;AN000;offset of return string | ||
| 1468 | DW 0 ;AN000;segment of return string | ||
| 1469 | DW WR_ALLOW_NUM_LEN ;AN000;length of allow chars | ||
| 1470 | DW WR_ALLOW_NUM ;AN000;offset of allow chars | ||
| 1471 | DW DATA ;AN000;segment of allow chars | ||
| 1472 | DW 0 ;AN000;length of skip chars | ||
| 1473 | DW 0 ;AN000;offset of skip chars | ||
| 1474 | DW 0 ;AN000;segment of skip chars | ||
| 1475 | DW 0 ;AN000;length of allow once chars | ||
| 1476 | DW 0 ;AN000;offset of allow once chars | ||
| 1477 | DW 0 ;AN000;segment of allow once chars | ||
| 1478 | DW 2 ;AN000;precision of decimal point | ||
| 1479 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 1480 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 1481 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 1482 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 1483 | DW 0 ;AN000;beginning row of minus and plus | ||
| 1484 | DW 0 ;AN000;beginning col of minus & plus | ||
| 1485 | DW 0 ;AN000;length of minus sign string | ||
| 1486 | DW 0 ;AN000;offset of minus sign string | ||
| 1487 | DW 0 ;AN000;segment of minus sign string | ||
| 1488 | DW 0 ;AN000;length of plus sign string | ||
| 1489 | DW 0 ;AN000;offset of plus sign string | ||
| 1490 | DW 0 ;AN000;segment of plus sign string | ||
| 1491 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1492 | ; | ||
| 1493 | ; ICB 28 NUM_MINUTE | ||
| 1494 | ; | ||
| 1495 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1496 | WR_ICB28 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;;AN000;+ICB_CLR ;option word one | ||
| 1497 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 1498 | DW ICB_HOR ;AC069;SEH ;AN000;option word three | ||
| 1499 | DW 0 ;AN000;option word four | ||
| 1500 | DW 18 ;AN000;**;upper left corner field row | ||
| 1501 | DW 24 ;AN000;**;upper left corner field column | ||
| 1502 | DW 2 ;AN000;**;number of chars before wrapping | ||
| 1503 | DW 1 ;AN000;color index number assigned | ||
| 1504 | DW 0 ;AN000;default change/minus status | ||
| 1505 | DW 1 ;AN000;**;cursor character pos in field | ||
| 1506 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 1507 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 1508 | DW 0 ;AN000;ASCII code of the key returned | ||
| 1509 | DW 0 ;AN000;length of data entered into fld | ||
| 1510 | DW 2 ;AC069;SEH ;AN000;**;length of input field | ||
| 1511 | DW 0 ;AN000;??;offset of input field | ||
| 1512 | DW 0 ;AN000;??;segment of input field | ||
| 1513 | DW 0 ;AN000;offset of color attribute buffer | ||
| 1514 | DW 0 ;AN000;segment of color attr buffer | ||
| 1515 | DW 0 ;AN000;length of field's default value | ||
| 1516 | DW 0 ;AN000;offset field's default value | ||
| 1517 | DW 0 ;AN000;segment field's default value | ||
| 1518 | DW 0 ;AN000;length of return string | ||
| 1519 | DW 0 ;AN000;offset of return string | ||
| 1520 | DW 0 ;AN000;segment of return string | ||
| 1521 | DW WR_ALLOW_NUM_LEN ;AN000;length of allow chars | ||
| 1522 | DW WR_ALLOW_NUM ;AN000;offset of allow chars | ||
| 1523 | DW DATA ;AN000;segment of allow chars | ||
| 1524 | DW 0 ;AN000;length of skip chars | ||
| 1525 | DW 0 ;AN000;offset of skip chars | ||
| 1526 | DW 0 ;AN000;segment of skip chars | ||
| 1527 | DW 0 ;AN000;length of allow once chars | ||
| 1528 | DW 0 ;AN000;offset of allow once chars | ||
| 1529 | DW 0 ;AN000;segment of allow once chars | ||
| 1530 | DW 2 ;AN000;precision of decimal point | ||
| 1531 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 1532 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 1533 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 1534 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 1535 | DW 0 ;AN000;beginning row of minus and plus | ||
| 1536 | DW 0 ;AN000;beginning col of minus & plus | ||
| 1537 | DW 0 ;AN000;length of minus sign string | ||
| 1538 | DW 0 ;AN000;offset of minus sign string | ||
| 1539 | DW 0 ;AN000;segment of minus sign string | ||
| 1540 | DW 0 ;AN000;length of plus sign string | ||
| 1541 | DW 0 ;AN000;offset of plus sign string | ||
| 1542 | DW 0 ;AN000;segment of plus sign string | ||
| 1543 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1544 | ; | ||
| 1545 | ; ICB 29 NUM_SECOND | ||
| 1546 | ; | ||
| 1547 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1548 | WR_ICB29 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;;AN000;+ICB_CLR ;option word one | ||
| 1549 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 1550 | DW ICB_HOR ;AC0O69;SEH ;AN000;option word three | ||
| 1551 | DW 0 ;AN000;option word four | ||
| 1552 | DW 20 ;AN000;**;upper left corner field row | ||
| 1553 | DW 24 ;AN000;**;upper left corner field column | ||
| 1554 | DW 2 ;AN000;**;number of chars before wrapping | ||
| 1555 | DW 1 ;AN000;color index number assigned | ||
| 1556 | DW 0 ;AN000;default change/minus status | ||
| 1557 | DW 1 ;AN000;**;cursor character pos in field | ||
| 1558 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 1559 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 1560 | DW 0 ;AN000;ASCII code of the key returned | ||
| 1561 | DW 0 ;AN000;length of data entered into fld | ||
| 1562 | DW 2 ;AC069;SEH ;AN000;**;length of input field | ||
| 1563 | DW 0 ;AN000;??;offset of input field | ||
| 1564 | DW 0 ;AN000;??;segment of input field | ||
| 1565 | DW 0 ;AN000;offset of color attribute buffer | ||
| 1566 | DW 0 ;AN000;segment of color attr buffer | ||
| 1567 | DW 0 ;AN000;length of field's default value | ||
| 1568 | DW 0 ;AN000;offset field's default value | ||
| 1569 | DW 0 ;AN000;segment field's default value | ||
| 1570 | DW 0 ;AN000;length of return string | ||
| 1571 | DW 0 ;AN000;offset of return string | ||
| 1572 | DW 0 ;AN000;segment of return string | ||
| 1573 | DW WR_ALLOW_NUM_LEN ;AN000;length of allow chars | ||
| 1574 | DW WR_ALLOW_NUM ;AN000;offset of allow chars | ||
| 1575 | DW DATA ;AN000;segment of allow chars | ||
| 1576 | DW 0 ;AN000;length of skip chars | ||
| 1577 | DW 0 ;AN000;offset of skip chars | ||
| 1578 | DW 0 ;AN000;segment of skip chars | ||
| 1579 | DW 0 ;AN000;length of allow once chars | ||
| 1580 | DW 0 ;AN000;offset of allow once chars | ||
| 1581 | DW 0 ;AN000;segment of allow once chars | ||
| 1582 | DW 2 ;AN000;precision of decimal point | ||
| 1583 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 1584 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 1585 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 1586 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 1587 | DW 0 ;AN000;beginning row of minus and plus | ||
| 1588 | DW 0 ;AN000;beginning col of minus & plus | ||
| 1589 | DW 0 ;AN000;length of minus sign string | ||
| 1590 | DW 0 ;AN000;offset of minus sign string | ||
| 1591 | DW 0 ;AN000;segment of minus sign string | ||
| 1592 | DW 0 ;AN000;length of plus sign string | ||
| 1593 | DW 0 ;AN000;offset of plus sign string | ||
| 1594 | DW 0 ;AN000;segment of plus sign string | ||
| 1595 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1596 | ; | ||
| 1597 | ; ICB 30 PRIMARY_CP | ||
| 1598 | ; | ||
| 1599 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1600 | WR_ICB30 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;;AN000;+ICB_CLR ;option word one | ||
| 1601 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 1602 | DW ICB_WIN ;AN000;option word three | ||
| 1603 | DW 0 ;AN000;option word four | ||
| 1604 | DW 20 ;AN000;**;upper left corner field row | ||
| 1605 | DW 24 ;AN000;**;upper left corner field column | ||
| 1606 | DW 2 ;AN000;**;number of chars before wrapping | ||
| 1607 | DW 1 ;AN000;color index number assigned | ||
| 1608 | DW 0 ;AN000;default change/minus status | ||
| 1609 | DW 1 ;AN000;**;cursor character pos in field | ||
| 1610 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 1611 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 1612 | DW 0 ;AN000;ASCII code of the key returned | ||
| 1613 | DW 0 ;AN000;length of data entered into fld | ||
| 1614 | DW 0 ;AN000;**;length of input field | ||
| 1615 | DW 0 ;AN000;??;offset of input field | ||
| 1616 | DW 0 ;AN000;??;segment of input field | ||
| 1617 | DW 0 ;AN000;offset of color attribute buffer | ||
| 1618 | DW 0 ;AN000;segment of color attr buffer | ||
| 1619 | DW ICB_DEFBUF30_L+2 ;AN000;length of field's default value | ||
| 1620 | DW ICB_DEFBUF30 ;AN000;offset field's default value | ||
| 1621 | DW DATA ;AN000;segment field's default value | ||
| 1622 | DW 0 ;AN000;length of return string | ||
| 1623 | DW 0 ;AN000;offset of return string | ||
| 1624 | DW 0 ;AN000;segment of return string | ||
| 1625 | DW WR_ALLOW_NUM_LEN ;AN000;length of allow chars | ||
| 1626 | DW WR_ALLOW_NUM ;AN000;offset of allow chars | ||
| 1627 | DW DATA ;AN000;segment of allow chars | ||
| 1628 | DW 0 ;AN000;length of skip chars | ||
| 1629 | DW 0 ;AN000;offset of skip chars | ||
| 1630 | DW 0 ;AN000;segment of skip chars | ||
| 1631 | DW 0 ;AN000;length of allow once chars | ||
| 1632 | DW 0 ;AN000;offset of allow once chars | ||
| 1633 | DW 0 ;AN000;segment of allow once chars | ||
| 1634 | DW 2 ;AN000;precision of decimal point | ||
| 1635 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 1636 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 1637 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 1638 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 1639 | DW 0 ;AN000;beginning row of minus and plus | ||
| 1640 | DW 0 ;AN000;beginning col of minus & plus | ||
| 1641 | DW 0 ;AN000;length of minus sign string | ||
| 1642 | DW 0 ;AN000;offset of minus sign string | ||
| 1643 | DW 0 ;AN000;segment of minus sign string | ||
| 1644 | DW 0 ;AN000;length of plus sign string | ||
| 1645 | DW 0 ;AN000;offset of plus sign string | ||
| 1646 | DW 0 ;AN000;segment of plus sign string | ||
| 1647 | ; | ||
| 1648 | ICB_DEFBUF30 DW ICB_DEFBUF30_L ;AN000;Define default buffer ASCIIN | ||
| 1649 | DB '850' ;AN000;Define default buffer | ||
| 1650 | ICB_DEFBUF30_L EQU $-ICB_DEFBUF30-2 ;AN000; | ||
| 1651 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1652 | ; | ||
| 1653 | ; ICB 31 COUNTRY_LANG | ||
| 1654 | ; | ||
| 1655 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1656 | WR_ICB31 DW ICB_BEN+ICB_RTA+ICB_LFA+ICB_BKS ;;AN000;+ICB_CLR ;option word one | ||
| 1657 | DW ICB_INS+ICB_DEL+ICB_HOM+ICB_END+ICB_UPC ;AN000;option word two | ||
| 1658 | DW ICB_WIN ;AN000;option word three | ||
| 1659 | DW 0 ;AN000;option word four | ||
| 1660 | DW 20 ;AN000;**;upper left corner field row | ||
| 1661 | DW 24 ;AN000;**;upper left corner field column | ||
| 1662 | DW 2 ;AN000;**;number of chars before wrapping | ||
| 1663 | DW 1 ;AN000;color index number assigned | ||
| 1664 | DW 0 ;AN000;default change/minus status | ||
| 1665 | DW 1 ;AN000;**;cursor character pos in field | ||
| 1666 | DW 1 ;AN000;**;NEW ADD Hor scroll support | ||
| 1667 | DW SND_FREQ ;AN000;frequency of error beep | ||
| 1668 | DW 0 ;AN000;ASCII code of the key returned | ||
| 1669 | DW 0 ;AN000;length of data entered into fld | ||
| 1670 | DW 0 ;AN000;**;length of input field | ||
| 1671 | DW 0 ;AN000;??;offset of input field | ||
| 1672 | DW 0 ;AN000;??;segment of input field | ||
| 1673 | DW 0 ;AN000;offset of color attribute buffer | ||
| 1674 | DW 0 ;AN000;segment of color attr buffer | ||
| 1675 | DW ICB_DEFBUF31_L+2 ;AN000;??;length of field's default value | ||
| 1676 | DW ICB_DEFBUF31 ;AN000;??;offset field's default value | ||
| 1677 | DW DATA ;AN000;??;segment field's default value | ||
| 1678 | DW 0 ;AN000;length of return string | ||
| 1679 | DW 0 ;AN000;offset of return string | ||
| 1680 | DW 0 ;AN000;segment of return string | ||
| 1681 | DW WR_ALLOW_NUM_LEN ;AN000;length of allow chars | ||
| 1682 | DW WR_ALLOW_NUM ;AN000;offset of allow chars | ||
| 1683 | DW DATA ;AN000;segment of allow chars | ||
| 1684 | DW 0 ;AN000;length of skip chars | ||
| 1685 | DW 0 ;AN000;offset of skip chars | ||
| 1686 | DW 0 ;AN000;segment of skip chars | ||
| 1687 | DW 0 ;AN000;length of allow once chars | ||
| 1688 | DW 0 ;AN000;offset of allow once chars | ||
| 1689 | DW 0 ;AN000;segment of allow once chars | ||
| 1690 | DW 2 ;AN000;precision of decimal point | ||
| 1691 | DW 0 ;AN000;low numeric range (low intrgr) | ||
| 1692 | DW 0 ;AN000;low numeric range (high intrgr) | ||
| 1693 | DW 0 ;AN000;high numeric range (low intrgr) | ||
| 1694 | DW 0 ;AN000;high numeric range (high intrgr) | ||
| 1695 | DW 0 ;AN000;beginning row of minus and plus | ||
| 1696 | DW 0 ;AN000;beginning col of minus & plus | ||
| 1697 | DW 0 ;AN000;length of minus sign string | ||
| 1698 | DW 0 ;AN000;offset of minus sign string | ||
| 1699 | DW 0 ;AN000;segment of minus sign string | ||
| 1700 | DW 0 ;AN000;length of plus sign string | ||
| 1701 | DW 0 ;AN000;offset of plus sign string | ||
| 1702 | DW 0 ;AN000;segment of plus sign string | ||
| 1703 | ; | ||
| 1704 | ICB_DEFBUF31 DW ICB_DEFBUF31_L ;AN000;Define default buffer ASCIIN | ||
| 1705 | DB 'SG' ;AN000; | ||
| 1706 | ICB_DEFBUF31_L EQU $-ICB_DEFBUF31-2 ;AN000; | ||
| 1707 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1708 | ; | ||
| 1709 | ; Table of Key Definitions | ||
| 1710 | ; | ||
| 1711 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1712 | KD_BACKSPACE DB 8,0 ;AN000;ASCII backspace | ||
| 1713 | KD_UNDOKEY DB 0,59 ;AN000;ASCII code replace default key | ||
| 1714 | KD_SWCHKEY DB 0,60 ;AN000;ASCII code switch char direction | ||
| 1715 | KD_DEL DB 0,83 ;AN000;extended ASCII delete key | ||
| 1716 | KD_CTRLEND DB 0,117 ;AN000;extended ASCII Control-End key | ||
| 1717 | KD_HOME DB 0,71 ;AN000;extended ASCII home key | ||
| 1718 | KD_END DB 0,79 ;AN000;extended ASCII end key | ||
| 1719 | KD_INS DB 0,82 ;AN000;extended ASCII insert key | ||
| 1720 | KD_LARROW DB 0,75 ;AN000;extended ASCII left arrow | ||
| 1721 | KD_RARROW DB 0,77 ;AN000;extended ASCII right arrow | ||
| 1722 | KD_UARROW DB 0,72 ;AN000;extended ASCII up arrow | ||
| 1723 | KD_DARROW DB 0,80 ;AN000;extended ASCII down arrow | ||
| 1724 | KD_MINUS DB 45,0 ;AN000;ASCII minus sign | ||
| 1725 | KD_PLUS DB 43,0 ;AN000;ASCII plus sign | ||
| 1726 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1727 | ; | ||
| 1728 | ; Define Buffers and Strings | ||
| 1729 | ; | ||
| 1730 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1731 | WR_ALLOW_CHAR DB ', -�,' ;AN000; | ||
| 1732 | WR_ALLOW_CHAR_LEN EQU ($-WR_ALLOW_CHAR) ;AN000; | ||
| 1733 | WR_ALLOW_NUM DB ' ,0-9,' ;AN000; | ||
| 1734 | WR_ALLOW_NUM_LEN EQU ($-WR_ALLOW_NUM) ;AN000; | ||
| 1735 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1736 | DATA ENDS ;AN000; | ||
| 1737 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/INT13.C b/v4.0/src/SELECT/INT13.C new file mode 100644 index 0000000..daf32c2 --- /dev/null +++ b/v4.0/src/SELECT/INT13.C | |||
| @@ -0,0 +1,194 @@ | |||
| 1 | |||
| 2 | #include "stdio.h" /* ;AN000; */ | ||
| 3 | #include "stdlib.h" /* ;AN000; */ | ||
| 4 | #include "string.h" /* ;AN000; */ | ||
| 5 | #include "dos.h" /* ;AN000; */ | ||
| 6 | #include "get_stat.h" /* ;AN000; */ | ||
| 7 | #include "extern.h" /* ;AN000; */ | ||
| 8 | /* ;AN000; */ | ||
| 9 | char read_boot_record(unsigned,unsigned char,unsigned char,unsigned char); /* ;AN000; */ | ||
| 10 | void DiskIo(union REGS *,union REGS *, struct SREGS *); /* ;AN000; */ | ||
| 11 | unsigned cylinders_to_mbytes(unsigned,unsigned char,unsigned char); /* ;AN000; */ | ||
| 12 | char get_drive_parameters(unsigned char); /* ;AN000; */ | ||
| 13 | char get_disk_info(void); /* ;AN000; */ | ||
| 14 | /* ;AN000; */ | ||
| 15 | /* */ /* ;AN000; */ | ||
| 16 | char get_disk_info() /* ;AN000; */ | ||
| 17 | /* ;AN000; */ | ||
| 18 | BEGIN /* ;AN000; */ | ||
| 19 | /* ;AN000; */ | ||
| 20 | unsigned char i; /* ;AN000; */ | ||
| 21 | /* ;AN000; */ | ||
| 22 | /* Initialize values */ /* ;AN000; */ | ||
| 23 | number_of_drives = uc(0); /* ;AN000; */ | ||
| 24 | for (i=uc(0); i < uc(2); i++) /* ;AN000; */ | ||
| 25 | BEGIN /* ;AN000; */ | ||
| 26 | total_disk[i] = u(0); /* ;AN000; */ | ||
| 27 | total_mbytes[i] = f(0); /* ;AN000; */ | ||
| 28 | max_sector[i] = uc(0); /* ;AN000; */ | ||
| 29 | max_head[0] = uc(0); /* ;AN000; */ | ||
| 30 | END /* ;AN000; */ | ||
| 31 | /* ;AN000; */ | ||
| 32 | /* See how many drives there are */ /* ;AN000; */ | ||
| 33 | if (get_drive_parameters(uc(0x80))) /* ;AN000; */ | ||
| 34 | /* ;AN000; */ | ||
| 35 | BEGIN /* ;AN000; */ | ||
| 36 | /* Get the drive parameters for all drives */ /* ;AN000; */ | ||
| 37 | for (i = uc(0); i < number_of_drives;i++) /* ;AN000; */ | ||
| 38 | /* ;AN000; */ | ||
| 39 | BEGIN /* ;AN000; */ | ||
| 40 | if (get_drive_parameters(uc(0x80)+i)) /* ;AN000; */ | ||
| 41 | /* ;AN000; */ | ||
| 42 | BEGIN /* ;AN000; */ | ||
| 43 | /* Save drive parameters */ /* ;AN000; */ | ||
| 44 | max_sector[i] = ((unsigned char)(regs.h.cl & 0x3F)); /* ;AN000; */ | ||
| 45 | max_head[i] = ((unsigned char)(regs.h.dh +1)); /* ;AN000; */ | ||
| 46 | total_disk[i] = ((((unsigned)(regs.h.cl & 0xC0 )) & 0x00C0) << 2)+ ((unsigned)regs.h.ch) +1; /* ;AN000; */ | ||
| 47 | total_mbytes[i] = cylinders_to_mbytes(total_disk[i], max_sector[i], max_head[i]); /* ;AN000; */ | ||
| 48 | END /* ;AN000; */ | ||
| 49 | else /* ;AN000; */ | ||
| 50 | BEGIN /* ;AN000; */ | ||
| 51 | good_disk[i] = FALSE; /* ;AN000; */ | ||
| 52 | return(FALSE); /* ;AN000; */ | ||
| 53 | END /* ;AN000; */ | ||
| 54 | END /* ;AN000; */ | ||
| 55 | return(TRUE); /* ;AN000; */ | ||
| 56 | END /* ;AN000; */ | ||
| 57 | else /* ;AN000; */ | ||
| 58 | /* No drives present */ /* ;AN000; */ | ||
| 59 | BEGIN /* ;AN000; */ | ||
| 60 | no_fatal_error = FALSE; /* ;AN000; */ | ||
| 61 | return(FALSE); /* ;AN000; */ | ||
| 62 | END /* ;AN000; */ | ||
| 63 | END /* ;AN000; */ | ||
| 64 | /* ;AN000; */ | ||
| 65 | /* ;AN000; */ | ||
| 66 | /* ;AN000; */ | ||
| 67 | /* ;AN000; */ | ||
| 68 | /* */ /* ;AN000; */ | ||
| 69 | char get_drive_parameters(drive) /* ;AN000; */ | ||
| 70 | /* ;AN000; */ | ||
| 71 | unsigned char drive; /* ;AN000; */ | ||
| 72 | /* ;AN000; */ | ||
| 73 | BEGIN /* ;AN000; */ | ||
| 74 | /* See how many drives there are */ /* ;AN000; */ | ||
| 75 | regs.h.ah = uc(DISK_INFO); /* ;AN000; */ | ||
| 76 | regs.h.dl = drive; /* ;AN000; */ | ||
| 77 | DiskIo(®s,®s,&segregs); /* ;AN000; */ | ||
| 78 | /* ;AN000; */ | ||
| 79 | /* See if any drives exist */ /* ;AN000; */ | ||
| 80 | if ((regs.h.dl == uc(0)) || ((regs.x.cflag & 1) == u(1))) /* ;AN000; */ | ||
| 81 | BEGIN /* ;AN000; */ | ||
| 82 | return(FALSE); /* ;AN000; */ | ||
| 83 | END /* ;AN000; */ | ||
| 84 | else /* ;AN000; */ | ||
| 85 | BEGIN /* ;AN000; */ | ||
| 86 | /* Save the number of drives */ /* ;AN000; */ | ||
| 87 | number_of_drives = regs.h.dl; /* ;AN000; */ | ||
| 88 | if (number_of_drives < 2) good_disk[1] = FALSE; /* ;AN000; */ | ||
| 89 | if (number_of_drives < 1) good_disk[0] = FALSE; /* ;AN000; */ | ||
| 90 | return(TRUE); /* ;AN000; */ | ||
| 91 | END /* ;AN000; */ | ||
| 92 | /* ;AN000; */ | ||
| 93 | END /* ;AN000; */ | ||
| 94 | /* ;AN000; */ | ||
| 95 | /* */ /* ;AN000; */ | ||
| 96 | char read_boot_record(cylinder,which_disk,which_head,which_sector) /* ;AN000; */ | ||
| 97 | /* ;AN000; */ | ||
| 98 | unsigned cylinder; /* ;AN000; */ | ||
| 99 | unsigned char which_disk; /* ;AN000; */ | ||
| 100 | unsigned char which_head; /* ;AN000; */ | ||
| 101 | unsigned char which_sector; /* ;AN000; */ | ||
| 102 | /* ;AN000; */ | ||
| 103 | BEGIN /* ;AN000; */ | ||
| 104 | /* ;AN000; */ | ||
| 105 | char far *buffer_pointer = boot_record; /* ;AN000; */ | ||
| 106 | /* ;AN000; */ | ||
| 107 | /* Setup read, always on a cylinder boundary */ /* ;AN000; */ | ||
| 108 | regs.h.ah = uc(READ_DISK); /* ;AN000; */ | ||
| 109 | regs.h.al = uc(1); /* ;AN000; */ | ||
| 110 | regs.h.dh = which_head; /* ;AN000; */ | ||
| 111 | regs.h.cl = which_sector; /* ;AN000; */ | ||
| 112 | /* ;AN000; */ | ||
| 113 | /* Specify the disk */ /* ;AN000; */ | ||
| 114 | regs.h.dl = which_disk + 0x80; /* ;AN000; */ | ||
| 115 | /* ;AN000; */ | ||
| 116 | /* Need to scramble CX so that sectors and cyl's are in INT 13 format */ /* ;AN000; */ | ||
| 117 | /* ;AN000; */ | ||
| 118 | if (cylinder > u(255)) /* ;AN000; */ | ||
| 119 | BEGIN /* ;AN000; */ | ||
| 120 | regs.h.cl = regs.h.cl | ((char)((cylinder /256) << 6)); /* ;AN000; */ | ||
| 121 | END /* ;AN000; */ | ||
| 122 | regs.h.ch = (unsigned char)(cylinder & 0xFF); /* ;AN000; */ | ||
| 123 | /* ;AN000; */ | ||
| 124 | /* Point at the place to write the boot record */ /* ;AN000; */ | ||
| 125 | regs.x.bx = FP_OFF(buffer_pointer); /* ;AN000; */ | ||
| 126 | segregs.es = FP_SEG(buffer_pointer); /* ;AN000; */ | ||
| 127 | /* ;AN000; */ | ||
| 128 | /* read in the boot record */ /* ;AN000; */ | ||
| 129 | DiskIo(®s,®s,&segregs); /* ;AN000; */ | ||
| 130 | /* Check for error reading it */ /* ;AN000; */ | ||
| 131 | if ((regs.x.cflag & 1) != u(1)) /* ;AN000; */ | ||
| 132 | BEGIN /* ;AN000; */ | ||
| 133 | return(TRUE); /* ;AN000; */ | ||
| 134 | END /* ;AN000; */ | ||
| 135 | else /* ;AN000; */ | ||
| 136 | BEGIN /* ;AN000; */ | ||
| 137 | /* Tell user there was an error */ /* ;AN000; */ | ||
| 138 | good_disk[which_disk] = FALSE; /* ;AN000; */ | ||
| 139 | return(FALSE); /* ;AN000; */ | ||
| 140 | END /* ;AN000; */ | ||
| 141 | END /* ;AN000; */ | ||
| 142 | /* ;AN000; */ | ||
| 143 | /* */ /* ;AN000; */ | ||
| 144 | void DiskIo(InRegs,OutRegs,SegRegs) /* ;AN000; */ | ||
| 145 | union REGS *InRegs; /* ;AN000; */ | ||
| 146 | union REGS *OutRegs; /* ;AN000; */ | ||
| 147 | struct SREGS *SegRegs; /* ;AN000; */ | ||
| 148 | /* ;AN000; */ | ||
| 149 | BEGIN /* ;AN000; */ | ||
| 150 | /* ;AN000; */ | ||
| 151 | char *WritePtr; /* ;AN000; */ | ||
| 152 | /* ;AN000; */ | ||
| 153 | #ifdef DEBUG /* ;AN000; */ | ||
| 154 | /* ;AN000; */ | ||
| 155 | switch(InRegs->h.ah) /* ;AN000; */ | ||
| 156 | { /* ;AN000; */ | ||
| 157 | case 0: /* ;AN000; */ | ||
| 158 | case 1: /* ;AN000; */ | ||
| 159 | case 2: /* ;AN000; */ | ||
| 160 | case 4: /* ;AN000; */ | ||
| 161 | case 8: /* ;AN000; */ | ||
| 162 | case 15: /* ;AN000; */ | ||
| 163 | case 16: /* ;AN000; */ | ||
| 164 | int86x((int)DISK,InRegs,OutRegs,SegRegs); /* ;AN000; */ | ||
| 165 | break; /* ;AN000; */ | ||
| 166 | /* ;AN000; */ | ||
| 167 | default: /* ;AN000; */ | ||
| 168 | WritePtr = getenv("WRITE"); /* ;AN000; */ | ||
| 169 | if (strcmpi(WritePtr,"ON") != 0) /* ;AN000; */ | ||
| 170 | BEGIN /* ;AN000; */ | ||
| 171 | printf("\nDisallowing Disk I/O Request\n"); /* ;AN000; */ | ||
| 172 | printf("AX:%04X BX:%04X CX:%04X DX:%04X ES:%04X\n", /* ;AN000; */ | ||
| 173 | InRegs->x.ax,InRegs->x.bx,InRegs->x.cx,InRegs->x.dx,SegRegs->es); /* ;AN000; */ | ||
| 174 | /* ;AN000; */ | ||
| 175 | OutRegs->h.ah = (unsigned char) 0; /* ;AN000; */ | ||
| 176 | OutRegs->x.cflag = (unsigned) 0; /* ;AN000; */ | ||
| 177 | END /* ;AN000; */ | ||
| 178 | else int86x((int)DISK,InRegs,OutRegs,SegRegs); /* ;AN000; */ | ||
| 179 | /* ;AN000; */ | ||
| 180 | break; /* ;AN000; */ | ||
| 181 | /* ;AN000; */ | ||
| 182 | } /* ;AN000; */ | ||
| 183 | /* ;AN000; */ | ||
| 184 | #else /* ;AN000; */ | ||
| 185 | /* ;AN000; */ | ||
| 186 | int86x((int)DISK,InRegs,OutRegs,SegRegs); /* ;AN000; */ | ||
| 187 | /* ;AN000; */ | ||
| 188 | #endif /* ;AN000; */ | ||
| 189 | /* ;AN000; */ | ||
| 190 | return; /* ;AN000; */ | ||
| 191 | /* ;AN000; */ | ||
| 192 | END /* ;AN000; */ | ||
| 193 | /* ;AN000; */ | ||
| 194 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/INTVEC.ASM b/v4.0/src/SELECT/INTVEC.ASM new file mode 100644 index 0000000..23e0350 --- /dev/null +++ b/v4.0/src/SELECT/INTVEC.ASM | |||
| @@ -0,0 +1,546 @@ | |||
| 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2 | ; | ||
| 3 | ; | ||
| 4 | ; | ||
| 5 | ; | ||
| 6 | ; | ||
| 7 | ; Change History: | ||
| 8 | ; | ||
| 9 | ; | ||
| 10 | ; ;AN000; S.R. | ||
| 11 | ; ;AN000; D.T. | ||
| 12 | ; ;AN001; DCR219 | ||
| 13 | ; ;AN002; P1132 & P1136 | ||
| 14 | ; ;AN003; P1757 | ||
| 15 | ; ;AN004; P2683 - bad diskette in b: | ||
| 16 | ; | ||
| 17 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 18 | INCLUDE MAC_EQU.INC ;AN000; | ||
| 19 | INCLUDE PANEL.MAC ;AN000; | ||
| 20 | INCLUDE STRUC.INC ;AN000; | ||
| 21 | INCLUDE MACROS.INC ;AN000; | ||
| 22 | INCLUDE MACROS8.INC ;AN000; | ||
| 23 | INCLUDE VARSTRUC.INC ;AN000; | ||
| 24 | INCLUDE EXT.INC ;AN000; | ||
| 25 | INCLUDE PAN-LIST.INC ;AN000; | ||
| 26 | INCLUDE CASEXTRN.INC ;AN000; | ||
| 27 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 28 | ; | ||
| 29 | EXTRN HANDLE_PANEL_CALL2:FAR ;AN000; | ||
| 30 | EXTRN HANDLE_PANEL_CALL3:FAR ;AN111;JW | ||
| 31 | EXTRN FIND_FILE_ROUTINE:FAR ;AN000; | ||
| 32 | EXTRN DISPLAY_MESSAGE_ROUTINE:FAR ;AN000;DT | ||
| 33 | EXTRN BEEP_ROUTINE:FAR ;AN000;DT | ||
| 34 | ; | ||
| 35 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 36 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 37 | NULl_DEVICE DB 'nul',0 ;AN000; | ||
| 38 | CON_DEVICE DB 'con',0 ;AN000; | ||
| 39 | SUB_PROGRAM DB 0 ;AN000; | ||
| 40 | EXEC_ERR DB 0 ;AN000; | ||
| 41 | PUBLIC DSKCPY_WHICH,DSKCPY_PAN1,DSKCPY_PAN2;AN000; | ||
| 42 | PUBLIC DSKCPY_PAN3,DSKCPY_OPTION,DSKCPY_SOURCE;AN000; | ||
| 43 | DSKCPY_WHICH DB 0 ;AN000;DT | ||
| 44 | ;DSKCPY_TO_A_720 EQU 0 ;AN000;DT (MACROS8.INC for actual equates) | ||
| 45 | ;DSKCPY_TO_A_360 EQU 1 ;AN000;DT | ||
| 46 | ;DSKCPY_TO_B EQU 2 ;AN000;DT | ||
| 47 | |||
| 48 | DSKCPY_OPTION DB 0 ;AN000;DT | ||
| 49 | ;SOURCE1 EQU 0 ;AN000;DT | ||
| 50 | ;NO_SOURCE1 EQU 1 ;AN000;DT | ||
| 51 | |||
| 52 | DSKCPY_SOURCE DW 0 ;AN000;DT offset of filename to check for on diskette | ||
| 53 | DSKCPY_PAN1 DW 0 ;AN000;DT | ||
| 54 | DSKCPY_PAN2 DW 0 ;AN000;DT | ||
| 55 | DSKCPY_PAN3 DW 0 ;AN000;DT | ||
| 56 | |||
| 57 | PUBLIC DSKCPY_ERR ;AN000; | ||
| 58 | DSKCPY_ERR DB 0 ;AN000; | ||
| 59 | ;DSKCPY_EXIT EQU 1 | ||
| 60 | |||
| 61 | DATA ENDS ;AN000; DATA | ||
| 62 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 63 | ; | ||
| 64 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 65 | EXTRN CHK_W_PROTECT_FLAG:BYTE ;AN000; | ||
| 66 | EXTRN W_PROTECT_FLAG:BYTE ;AN000; | ||
| 67 | EXTRN EXIT_SELECT:FAR ;AN000; | ||
| 68 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 69 | ; | ||
| 70 | ; | ||
| 71 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 72 | CODE_FAR SEGMENT PARA PUBLIC 'CODE' ;AN000; Segment for far routine | ||
| 73 | ASSUME CS:CODE_FAR,DS:DATA ;AN000; | ||
| 74 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 75 | ; | ||
| 76 | ; The critical error handler. This routine should be placed in the CODE segment. | ||
| 77 | ; | ||
| 78 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 79 | OLD_STACK_SEG DW ? ;AN001;GHG | ||
| 80 | OLD_STACK_OFF DW ? ;AN001;GHG | ||
| 81 | ;GHG | ||
| 82 | PUBLIC INT_24_VECTOR ;AN000; | ||
| 83 | INT_24_VECTOR: ;AN000; | ||
| 84 | |||
| 85 | PUSHH <BX,CX,DX,SI,DI,ES,DS> ;AN000; | ||
| 86 | MOV AX,DATA ;AN000; | ||
| 87 | MOV DS,AX ;AN000; | ||
| 88 | MOV ES,AX ;AN000; | ||
| 89 | ; | ||
| 90 | MOV AX,CS ;AN002;S;GHG | ||
| 91 | CLI ;AN002;S;GHG | ||
| 92 | MOV OLD_STACK_SEG,SS ;AN002;S;GHG | ||
| 93 | MOV OLD_STACK_OFF,SP ;AN002;S;GHG | ||
| 94 | MOV SS,AX ;AN002;S;GHG | ||
| 95 | LEA SP,NEW_STACK_START ;AN002;S;GHG | ||
| 96 | STI ;AN002;S;GHG | ||
| 97 | ; | ||
| 98 | AND DI, 0FFH ;AN000; Mask off the high byte | ||
| 99 | .IF < CHK_W_PROTECT_FLAG EQ TRUE > ;AN000; Is this a check for write protect? | ||
| 100 | .IF < DI EQ 0 > ;AN000; Is this a write protect error? | ||
| 101 | MOV W_PROTECT_FLAG, TRUE ;AN000; If so, indicate to the calling program | ||
| 102 | .ENDIF ;AN000; | ||
| 103 | MOV AL, 3 ;AN000; Get DOS to trash this call | ||
| 104 | JMP EXIT_THE_INT ;AN000; Exit the interrupt | ||
| 105 | .ENDIF ;AN000; | ||
| 106 | ; | ||
| 107 | .IF < DI eq 0 > ;AN002;GHG | ||
| 108 | HANDLE_ERROR PAN_WRITE_PROT,2 ;AN002;GHG | ||
| 109 | MOV AL,1 ;AN002;GHG | ||
| 110 | .ELSEIF < DI eq 2 > ;AN002;GHG | ||
| 111 | HANDLE_ERROR PAN_DRIVE_ERROR,2 ;AN002;GHG | ||
| 112 | MOV AL,1 ;AN002;GHG | ||
| 113 | .ELSE ;AN002;GHG | ||
| 114 | .IF < SUB_PROGRAM EQ TRUE > ;AN000; | ||
| 115 | JMP END_SUB_PROGRAM ;AN000; | ||
| 116 | .ENDIF ;AN000; | ||
| 117 | MOV AL, 3 ;AN000; Fail this system call | ||
| 118 | .ENDIF ;AN000; | ||
| 119 | EXIT_THE_INT: ;AN000; | ||
| 120 | MOV SS,OLD_STACK_SEG ;AN002;S;GHG | ||
| 121 | MOV SP,OLD_STACK_OFF ;AN002;S;GHG | ||
| 122 | POPP <DS,ES,DI,SI,DX,CX,BX> ;AN000; | ||
| 123 | IRET ;AN000; Return from the interrupt | ||
| 124 | ; | ||
| 125 | END_SUB_PROGRAM: ;AN000; | ||
| 126 | MOV SS,OLD_STACK_SEG ;AN002;S;GHG | ||
| 127 | MOV SP,OLD_STACK_OFF ;AN002;S;GHG | ||
| 128 | POPP <DS,ES,DI,SI,DX,CX,BX> ;AN000; | ||
| 129 | ADD SP, 6 ;AN000; | ||
| 130 | ; | ||
| 131 | MOV AH, 4CH ;AN000; | ||
| 132 | MOV AL, 01 ;AN000; | ||
| 133 | DOSCALL ;AN000; | ||
| 134 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 135 | ; | ||
| 136 | ; The DISKCOPY INT 2F INTERFACE | ||
| 137 | ; | ||
| 138 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 139 | ; | ||
| 140 | EVEN ;AN000; | ||
| 141 | NEW_STACK DW 200 DUP('S') ;AN001;GHG | ||
| 142 | NEW_STACK_START DW 0 ;AN001;GHG | ||
| 143 | ;GHG | ||
| 144 | FIRST_CALL DB 0 ;AN001;GHG | ||
| 145 | ;GHG | ||
| 146 | PUBLIC INT_2F_VECTOR ;AN001;GHG | ||
| 147 | INT_2F_VECTOR: ;AN001;GHG | ||
| 148 | .IF < AX EQ 0ADC1H > near ;AN001;GHG | ||
| 149 | ;GHG | ||
| 150 | PUSHH <BX,CX,DX,SI,DI,ES,DS> ;AN001;GHG | ||
| 151 | MOV AX,DATA ;AN001;GHG | ||
| 152 | MOV DS,AX ;AN001;GHG | ||
| 153 | MOV ES,AX ;AN001;GHG | ||
| 154 | ;GHG | ||
| 155 | MOV AX,CS ;AN001;S;GHG | ||
| 156 | CLI ;AN001;S;GHG | ||
| 157 | MOV OLD_STACK_SEG,SS ;AN001;S;GHG | ||
| 158 | MOV OLD_STACK_OFF,SP ;AN001;S;GHG | ||
| 159 | MOV SS,AX ;AN001;S;GHG | ||
| 160 | LEA SP,NEW_STACK_START ;AN001;S;GHG | ||
| 161 | STI ;AN001;S;GHG | ||
| 162 | ;GHG | ||
| 163 | |||
| 164 | .IF < DSKCPY_WHICH eq DSKCPY_TO_B > near ;AN000;DT | ||
| 165 | ; | ||
| 166 | .IF < BX EQ 9 > and ;AN000;DT | ||
| 167 | .IF < DSKCPY_PAN1 ne NOPANEL > ;AN000;DT | ||
| 168 | .REPEAT ;AN000;DT | ||
| 169 | MOV BX,PAN_INSTALL_DOS ;AN000;DT | ||
| 170 | MOV AX,DSKCPY_PAN1 ;AN000;DT | ||
| 171 | CALL HANDLE_PANEL_CALL2 ;AN000;DT | ||
| 172 | CALL HANDLE_KEYSTROKE ;AN000;DT | ||
| 173 | MOV DI, DSKCPY_SOURCE ;AN000;DT | ||
| 174 | MOV CX, 0 ;AN000;DT | ||
| 175 | CALL FIND_FILE_ROUTINE ;AN000;DT | ||
| 176 | .LEAVE < nc > ;AN000;DT | ||
| 177 | MOV BX,ERR_DOS_DISK ;AN000;DT | ||
| 178 | CALL INT2F_ERROR ;AN000;DT | ||
| 179 | ;AN000;DT | ||
| 180 | .UNTIL ;AN000;DT | ||
| 181 | ;AN000;DT | ||
| 182 | MOV BX,PAN_INSTALL_DOS ;AN000;DT | ||
| 183 | MOV AX,DSKCPY_PAN2 ;AN000;DT | ||
| 184 | CALL HANDLE_PANEL_CALL2 ;AN000;DT | ||
| 185 | ;AN000;DT | ||
| 186 | .ELSEIF <BX eq 13 > ;AN000;DT | ||
| 187 | MOV BX,PAN_DRIVE_ERROR ;AN000; | ||
| 188 | CALL INT2F_ERROR ;AN000;DT | ||
| 189 | ; | ||
| 190 | .ELSEIF <BX eq 14 > ;AN001;GHG write protect | ||
| 191 | MOV BX,PAN_WRITE_PROT ;AN000; | ||
| 192 | CALL INT2F_ERROR ;AN000;DT | ||
| 193 | ; | ||
| 194 | .ELSEIF <BX eq 23 > or ;AN004;JW | ||
| 195 | .IF <BX eq 11 > or ;AN004;JW | ||
| 196 | .IF <BX eq 12 > or ;AN004;JW | ||
| 197 | .IF <BX eq 18 > or ;AN004;JW | ||
| 198 | .IF <BX eq 20 > ;AN004;JW | ||
| 199 | MOV BX,PAN_BAD_DISKET ;AN004;JW Bad diskette in b: | ||
| 200 | CALL INT2F_ERROR ;AN004;JW | ||
| 201 | MOV N_DSKCPY_ERR,E_DSKCPY_RETRY ;AN004;JW | ||
| 202 | ; | ||
| 203 | .ELSEIF <BX eq 16 > ;AN001;GHG | ||
| 204 | MOV FIRST_CALL,0 ;AN001;GHG | ||
| 205 | .ELSEIF <BX ne 2 > and ;AN001;GHG | ||
| 206 | .IF <BX ne 7 > and ;AN001;GHG | ||
| 207 | .IF <BX ne 8 > and ;AN001;GHG | ||
| 208 | .IF <BX ne 9 > and ;AN000;DT | ||
| 209 | .IF <BX ne 10 > and ;AN003;JW | ||
| 210 | .IF <BX ne 15 > and ;AN001;GHG | ||
| 211 | .IF <BX ne 17 > and ;AN001;GHG | ||
| 212 | .IF <BX ne 21 > and ;AN001;GHG | ||
| 213 | .IF <BX ne 26 > ;AN001;GHG | ||
| 214 | MOV BX,ERR_GENERAL ;AN000; | ||
| 215 | CALL INT2F_ERROR ;AN000;DT | ||
| 216 | .ENDIF ;AN000; | ||
| 217 | MOV AX,0FFFFH ;AN000;DT | ||
| 218 | |||
| 219 | .ELSEIF < DSKCPY_WHICH eq DSKCPY_TO_A_360 > near ;AN000;DT | ||
| 220 | .IF < BX EQ 8 > ;AN001;GHG | ||
| 221 | .IF < DSKCPY_OPTION eq SOURCE1 > or;AN000; | ||
| 222 | .IF <FIRST_CALL ne 0 > ;AN001;GHG | ||
| 223 | .REPEAT ;AN000; | ||
| 224 | MOV BX,PAN_INSTALL_DOS ;AN000;DT | ||
| 225 | MOV AX,DSKCPY_PAN1 ;AN000;DT | ||
| 226 | CALL HANDLE_PANEL_CALL2 ;AN000;DT | ||
| 227 | CALL HANDLE_KEYSTROKE ;AN000;DT | ||
| 228 | ;AN000;DT | ||
| 229 | MOV DI, DSKCPY_SOURCE ;AN000;DT | ||
| 230 | MOV CX, 0 ;AN000;DT | ||
| 231 | CALL FIND_FILE_ROUTINE ;AN000;DT | ||
| 232 | .LEAVE < nc > ;AN000;DT | ||
| 233 | MOV BX,ERR_DOS_DISK ;AN000;DT | ||
| 234 | CALL INT2F_ERROR ;AN000;DT | ||
| 235 | .UNTIL ;AN000;DT | ||
| 236 | ;AN000;DT | ||
| 237 | .ENDIF ;AN000; | ||
| 238 | MOV BX,PAN_INSTALL_DOS ;AN000;DT | ||
| 239 | MOV AX,DSKCPY_PAN2 ;AN000;DT | ||
| 240 | CALL HANDLE_PANEL_CALL2 ;AN000;DT | ||
| 241 | MOV FIRST_CALL,1 ;AN000;GHG | ||
| 242 | .ELSEIF <BX eq 9 > ;AN001;GHG | ||
| 243 | MOV BX,PAN_INSTALL_DOS ;AN000;DT | ||
| 244 | MOV AX,DSKCPY_PAN3 ;AN000;DT | ||
| 245 | CALL HANDLE_PANEL_CALL2 ;AN000;DT | ||
| 246 | CALL HANDLE_KEYSTROKE ;AN000;DT | ||
| 247 | MOV BX,PAN_INSTALL_DOS ;AN000;DT | ||
| 248 | MOV AX,DSKCPY_PAN2 ;AN000;DT | ||
| 249 | CALL HANDLE_PANEL_CALL2 ;AN000;DT | ||
| 250 | .ELSEIF <BX eq 13 > ;AN000;DT | ||
| 251 | MOV BX,PAN_DRIVE_ERROR ;AN000; | ||
| 252 | CALL INT2F_ERROR ;AN000;DT | ||
| 253 | ; | ||
| 254 | .ELSEIF <BX eq 14 > ;AN001;GHG write protect | ||
| 255 | MOV BX,PAN_WRITE_PROT ;AN000; | ||
| 256 | CALL INT2F_ERROR ;AN000; | ||
| 257 | ; | ||
| 258 | .ELSEIF <BX eq 23 > or ;AN004;JW | ||
| 259 | .IF <BX eq 11 > or ;AN004;JW | ||
| 260 | .IF <BX eq 12 > or ;AN004;JW | ||
| 261 | .IF <BX eq 18 > or ;AN004;JW | ||
| 262 | .IF <BX eq 20 > ;AN004;JW | ||
| 263 | MOV BX,PAN_BAD_DISKET ;AN004;JW Bad diskette in b: | ||
| 264 | CALL INT2F_ERROR ;AN004;JW | ||
| 265 | MOV N_DSKCPY_ERR,E_DSKCPY_RETRY ;AN004;JW | ||
| 266 | ; | ||
| 267 | .ELSEIF <BX eq 16 > ;AN001;GHG | ||
| 268 | MOV FIRST_CALL,0 ;AN001;GHG | ||
| 269 | .ELSEIF <BX ne 2 > and ;AN001;GHG | ||
| 270 | .IF <BX ne 7 > and ;AN001;GHG | ||
| 271 | .IF <BX ne 10 > and ;AN003;JW | ||
| 272 | .IF <BX ne 15 > and ;AN001;GHG | ||
| 273 | .IF <BX ne 17 > and ;AN001;GHG | ||
| 274 | .IF <BX ne 21 > and ;AN001;GHG | ||
| 275 | .IF <BX ne 26 > ;AN001;GHG | ||
| 276 | MOV BX,ERR_GENERAL ;AN000; | ||
| 277 | CALL INT2F_ERROR ;AN000; | ||
| 278 | .ENDIF ;AN001;GHG | ||
| 279 | ; | ||
| 280 | MOV AX,0FFFFH ;AN001;GHG | ||
| 281 | .ELSE near ;AN000; | ||
| 282 | .IF < BX EQ 9 > ;AN001;GHG | ||
| 283 | MOV AX,PAN_DSKCPY_SRC ;AN001;GHG | ||
| 284 | CALL HANDLE_PANEL_CALL ;AN001;GHG | ||
| 285 | CALL HANDLE_KEYSTROKE ;AN001;GHG | ||
| 286 | MOV AX,PAN_DSKCPY_CPY ;AN001;GHG | ||
| 287 | CALL HANDLE_PANEL_CALL ;AN001;GHG | ||
| 288 | .ELSEIF <BX eq 8 > ;AN001;GHG | ||
| 289 | .IF <FIRST_CALL ne 0 > ;AN001;GHG | ||
| 290 | MOV AX,PAN_DSKCPY_TAR ;AN001;GHG | ||
| 291 | CALL HANDLE_PANEL_CALL ;AN001;GHG | ||
| 292 | CALL HANDLE_KEYSTROKE ;AN001;GHG | ||
| 293 | .ELSE ;AN001;GHG | ||
| 294 | MOV FIRST_CALL,1 ;AN001;GHG | ||
| 295 | .ENDIF ;AN001;GHG | ||
| 296 | MOV AX,PAN_DSKCPY_CPY ;AN001;GHG | ||
| 297 | CALL HANDLE_PANEL_CALL ;AN001;GHG | ||
| 298 | .ELSEIF <BX eq 16 > ;AN001;GHG | ||
| 299 | MOV AX,0FFFFH ;AN001;GHG | ||
| 300 | MOV FIRST_CALL,0 ;AN001;GHG | ||
| 301 | JMP INT2F_1 ;AN001;GHG | ||
| 302 | .ELSEIF <BX eq 13 > ;AN000;DT drive not ready | ||
| 303 | MOV BX,PAN_DRIVE_ERROR ;AN000; | ||
| 304 | CALL INT2F_ERROR ;AN000;DT | ||
| 305 | .ELSEIF <BX eq 14 > ;AN001;GHG write protect | ||
| 306 | MOV BX,PAN_WRITE_PROT ;AN000; | ||
| 307 | CALL INT2F_ERROR ;AN000;DT | ||
| 308 | .ELSEIF <BX eq 23 > or ;AN004;JW | ||
| 309 | .IF <BX eq 11 > or ;AN004;JW | ||
| 310 | .IF <BX eq 12 > or ;AN004;JW | ||
| 311 | .IF <BX eq 18 > or ;AN004;JW | ||
| 312 | .IF <BX eq 20 > ;AN004;JW | ||
| 313 | MOV BX,PAN_BAD_DISKET ;AN004;JW Bad diskette in b: | ||
| 314 | CALL INT2F_ERROR ;AN004;JW | ||
| 315 | MOV N_DSKCPY_ERR,E_DSKCPY_RETRY ;AN004;JW | ||
| 316 | ; | ||
| 317 | .ELSEIF <BX ne 2 > and ;AN001;GHG | ||
| 318 | .IF <BX ne 7 > and ;AN001;GHG | ||
| 319 | .IF <BX ne 10 > and ;AN001;GHG | ||
| 320 | .IF <BX ne 15 > and ;AN001;GHG | ||
| 321 | .IF <BX ne 17 > and ;AN001;GHG | ||
| 322 | .IF <BX ne 21 > and ;AN001;GHG | ||
| 323 | .IF <BX ne 26 > ;AN001;GHG | ||
| 324 | MOV BX,ERR_GENERAL ;AN000; | ||
| 325 | CALL INT2F_ERROR ;AN000;DT | ||
| 326 | .ENDIF ;AN001;GHG | ||
| 327 | ; | ||
| 328 | MOV AX,0FFFFH ;AN001;GHG | ||
| 329 | |||
| 330 | .ENDIF ;AN000;DT | ||
| 331 | |||
| 332 | INT2F_1: MOV SS,OLD_STACK_SEG ;AN001;S;GHG | ||
| 333 | MOV SP,OLD_STACK_OFF ;AN001;S;GHG | ||
| 334 | |||
| 335 | ; | ||
| 336 | POPP <DS,ES,DI,SI,DX,CX,BX> ;AN001;GHG | ||
| 337 | ; | ||
| 338 | ; | ||
| 339 | IRET ;AN001;GHG | ||
| 340 | .ELSE ;AN001;GHG | ||
| 341 | JMP CS:OLD_INT_2F ;AN001;GHG | ||
| 342 | .ENDIF ;AN001;GHG | ||
| 343 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 344 | ; | ||
| 345 | ; The FORMAT INT2F interrupt routine | ||
| 346 | ; | ||
| 347 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 348 | PUBLIC INT_2F_FORMAT ;AN111;JW | ||
| 349 | INT_2F_FORMAT: ;AN111;JW | ||
| 350 | .IF < AX EQ 0ADC1H > near ;AN111;JW | ||
| 351 | ;AN111;JW | ||
| 352 | PUSHH <BX,CX,DX,SI,DI,ES,DS> ;AN111;JW | ||
| 353 | MOV AX,DATA ;AN111;JW | ||
| 354 | MOV DS,AX ;AN111;JW | ||
| 355 | MOV ES,AX ;AN111;JW | ||
| 356 | ;AN111;JW | ||
| 357 | MOV AX,CS ;AN111;JW | ||
| 358 | CLI ;AN111;JW | ||
| 359 | MOV OLD_STACK_SEG,SS ;AN111;JW | ||
| 360 | MOV OLD_STACK_OFF,SP ;AN111;JW | ||
| 361 | MOV SS,AX ;AN111;JW | ||
| 362 | LEA SP,NEW_STACK_START ;AN111;JW | ||
| 363 | STI ;AN111;JW | ||
| 364 | ;AN111;JW | ||
| 365 | .IF < FORMAT_WHICH eq STARTUP > ;AN111;JW | ||
| 366 | MOV AX,SUB_INS_STARTT_S360 ;AN111;JW | ||
| 367 | .ELSE ;AN111;JW | ||
| 368 | MOV AX,SUB_INS_SHELL_S360 ;AN111;JW | ||
| 369 | .ENDIF ;AN111;JW | ||
| 370 | MOV BX,PAN_INST_PROMPT ;AN111;JW | ||
| 371 | CALL HANDLE_PANEL_CALL2 ;AN111;JW | ||
| 372 | CALL HANDLE_KEYSTROKE ;AN111;JW | ||
| 373 | ;AN111;JW | ||
| 374 | .IF < FORMAT_WHICH eq STARTUP > ;AN111;JW | ||
| 375 | MOV AX,FORMAT_STARTUP ;AN111;JW | ||
| 376 | .ELSE ;AN111;JW | ||
| 377 | MOV AX,FORMAT_SHELL ;AN111;JW | ||
| 378 | .ENDIF ;AN111;JW | ||
| 379 | CALL HANDLE_PANEL_CALL3 ;AN111;JW | ||
| 380 | ;AN111;JW | ||
| 381 | MOV SS,OLD_STACK_SEG ;AN111;JW | ||
| 382 | MOV SP,OLD_STACK_OFF ;AN111;JW | ||
| 383 | POPP <DS,ES,DI,SI,DX,CX,BX> ;AN111;JW | ||
| 384 | IRET ;AN111;JW | ||
| 385 | .ELSE ;AN111;JW | ||
| 386 | JMP CS:OLD_INT_2F ;AN111;JW | ||
| 387 | .ENDIF ;AN111;JW | ||
| 388 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 389 | ; | ||
| 390 | ; The DISKCOPY INT 2F ERROR ROUTINE | ||
| 391 | ; | ||
| 392 | ; Input: BX = error panel | ||
| 393 | ; | ||
| 394 | ; Output: none | ||
| 395 | ; | ||
| 396 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 397 | INT2F_ERROR PROC NEAR ;AN000;DT | ||
| 398 | MOV CX,2 ;AN000;DT allow ESC and ENTER | ||
| 399 | CALL HANDLE_ERROR_CALL ;AN000;DT display error panel | ||
| 400 | JNC INT2F_ERROR_EXIT ;AN000;DT if ENTER pressed, then ok | ||
| 401 | ;AN000;DT else ESC | ||
| 402 | MOV DSKCPY_ERR,DSKCPY_EXIT ;AN000;DT indicate user wants to exit | ||
| 403 | MOV AX,4C01H ;AN000;DT and error message already up DOS | ||
| 404 | INT 21H ;AN000;DT exit with error | ||
| 405 | ;AN000;DT | ||
| 406 | INT2F_ERROR_EXIT: ;AN000;DT | ||
| 407 | RET ;AN000;DT | ||
| 408 | INT2F_ERROR ENDP ;AN000;DT | ||
| 409 | ;;;;;;;;;;;; | ||
| 410 | ; | ||
| 411 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 412 | ; | ||
| 413 | ; The DISKCOPY INT 2F INTERFACE (256KB DISKCOPY) | ||
| 414 | ; | ||
| 415 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 416 | PUBLIC INT_2F_256KB ;AN000;DT | ||
| 417 | INT_2F_256KB: ;AN000;DT | ||
| 418 | .IF < AX EQ 0ADC1H > near ;AN000;DT | ||
| 419 | ;AN000;DT | ||
| 420 | PUSHH <BX,CX,DX,SI,DI,ES,DS> ;AN000;DT | ||
| 421 | MOV AX,DATA ;AN000;DT | ||
| 422 | MOV DS,AX ;AN000;DT | ||
| 423 | MOV ES,AX ;AN000;DT | ||
| 424 | ;AN000;DT | ||
| 425 | MOV AX,CS ;AN000;DT | ||
| 426 | CLI ;AN000;DT | ||
| 427 | MOV OLD_STACK_SEG,SS ;AN000;DT | ||
| 428 | MOV OLD_STACK_OFF,SP ;AN000;DT | ||
| 429 | MOV SS,AX ;AN000;DT | ||
| 430 | LEA SP,NEW_STACK_START ;AN000;DT | ||
| 431 | STI ;AN000;DT | ||
| 432 | .IF < BX EQ 9 > ;AN000;DT | ||
| 433 | CLEAR_SCREEN ;AN000;DT | ||
| 434 | DISPLAY_MESSAGE 14 ;AN000;DT insert INSTALL | ||
| 435 | CALL HANDLE_KEY256KB ;AN000;DT | ||
| 436 | CLEAR_SCREEN ;AN000;DT | ||
| 437 | DISPLAY_MESSAGE 15 ;AN000;DT Copying diskettes | ||
| 438 | .ELSEIF <BX eq 8 > ;AN000;DT | ||
| 439 | .IF <FIRST_CALL ne 0 > ;AN000;DT | ||
| 440 | CLEAR_SCREEN ;AN000;DT | ||
| 441 | DISPLAY_MESSAGE 13 ;AN000;DT insert INSTALL COPY | ||
| 442 | CALL HANDLE_KEY256KB ;AN000;DT | ||
| 443 | .ELSE ;AN000;DT | ||
| 444 | MOV FIRST_CALL,1 ;AN000;DT | ||
| 445 | .ENDIF ;AN000;DT | ||
| 446 | CLEAR_SCREEN ;AN000;DT | ||
| 447 | DISPLAY_MESSAGE 15 ;AN000;DT Copying diskettes | ||
| 448 | .ELSEIF <BX eq 16 > ;AN000;DT | ||
| 449 | MOV AX,0FFFFH ;AN000;DT | ||
| 450 | MOV FIRST_CALL,0 ;AN000;DT | ||
| 451 | JMP INT2F_1_ALT ;AN000;DT | ||
| 452 | .ELSEIF <BX eq 13 > ;AN000;DT | ||
| 453 | CLEAR_SCREEN ;AN000;DT | ||
| 454 | DISPLAY_MESSAGE 16 ;AN000;DT Drive door open | ||
| 455 | CALL INT2F_ERRALT ;AN000;DT | ||
| 456 | .ELSEIF <BX eq 14 > ;AN000;DT | ||
| 457 | CLEAR_SCREEN ;AN000;DT | ||
| 458 | DISPLAY_MESSAGE 17 ;AN000;DT Write Protect error | ||
| 459 | CALL INT2F_ERRALT ;AN000;DT | ||
| 460 | ;AN000;DT | ||
| 461 | .ELSEIF <BX ne 2 > and ;AN000;DT | ||
| 462 | .IF <BX ne 7 > and ;AN000;DT | ||
| 463 | .IF <BX ne 10 > and ;AN000;DT | ||
| 464 | .IF <BX ne 15 > and ;AN000;DT | ||
| 465 | .IF <BX ne 17 > and ;AN000;DT | ||
| 466 | .IF <BX ne 21 > and ;AN000;DT | ||
| 467 | .IF <BX ne 26 > ;AN000;DT | ||
| 468 | CLEAR_SCREEN ;AN000;DT | ||
| 469 | DISPLAY_MESSAGE 18 ;AN000;DT General error | ||
| 470 | CALL INT2F_ERRALT ;AN000;DT | ||
| 471 | .ENDIF ;AN000;DT | ||
| 472 | ;AN000;DT | ||
| 473 | MOV AX,0FFFFH ;AN000;DT | ||
| 474 | ;AN000;DT | ||
| 475 | INT2F_1_ALT: MOV SS,OLD_STACK_SEG ;AN000;DT | ||
| 476 | MOV SP,OLD_STACK_OFF ;AN000;DT | ||
| 477 | ;AN000;DT | ||
| 478 | POPP <DS,ES,DI,SI,DX,CX,BX> ;AN000;DT | ||
| 479 | IRET ;;AN000;;DT | ||
| 480 | .ELSE ;AN000;DT | ||
| 481 | JMP CS:OLD_INT_2F ;AN000;DT | ||
| 482 | .ENDIF ;AN000;DT | ||
| 483 | ;AN000;DT | ||
| 484 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 485 | ; | ||
| 486 | ; The DISKCOPY INT 2F ERROR ROUTINE (256KB) | ||
| 487 | ; | ||
| 488 | ; Input: BX = error panel | ||
| 489 | ; | ||
| 490 | ; Output: none | ||
| 491 | ; | ||
| 492 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 493 | INT2F_ERRALT PROC NEAR ;AN000;DT | ||
| 494 | INT2F_AGN: ;AN000;DT | ||
| 495 | MOV AH,0 ;AN000;DT | ||
| 496 | INT 16H ;AN000;DT get keystroke | ||
| 497 | CMP AL,13 ;AN000;DT If ENTER the continue | ||
| 498 | JE INT2F_ERRALT_EXIT ;AN000;DT | ||
| 499 | CMP AL,27 ;AN000;DT If not ESC the again | ||
| 500 | JE INT2F_ALT_ABORT ;AN000; | ||
| 501 | DISPLAY_MESSAGE 11 ;AN000;DT BEEP | ||
| 502 | JMP INT2F_AGN ;AN000;DT | ||
| 503 | INT2F_ALT_ABORT: ;AN000;DT else ESC | ||
| 504 | MOV DSKCPY_ERR,DSKCPY_EXIT ;AN000;DT indicate user wants to exit | ||
| 505 | MOV AX,4C01H ;AN000;DT and error message already up DOS | ||
| 506 | INT 21H ;AN000;DT exit with error | ||
| 507 | ;AN000;DT | ||
| 508 | INT2F_ERRALT_EXIT: ;AN000;DT | ||
| 509 | RET ;AN000;DT | ||
| 510 | INT2F_ERRALT ENDP ;AN000;DT | ||
| 511 | ; | ||
| 512 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 513 | ; | ||
| 514 | ; The INT23 interrupt routine (CTRL-BREAK) | ||
| 515 | ; | ||
| 516 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 517 | ; | ||
| 518 | PUBLIC INT_23_VECTOR ;AN074;SEH | ||
| 519 | INT_23_VECTOR: ;AN074;SEH | ||
| 520 | ; | ||
| 521 | IRET ;AN074;SEH ignore ctrl-break and return | ||
| 522 | ; | ||
| 523 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 524 | ; | ||
| 525 | ; The DISKCOPY GET KEY ROUTINE (256KB) | ||
| 526 | ; | ||
| 527 | ; Input: none | ||
| 528 | ; | ||
| 529 | ; Output: none | ||
| 530 | ; | ||
| 531 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 532 | HANDLE_KEY256KB PROC NEAR ;AN000;DT | ||
| 533 | HAKEY_AGN: ;AN000;DT | ||
| 534 | MOV AH,0 ;AN000;DT | ||
| 535 | INT 16H ;AN000;DT get keystroke | ||
| 536 | CMP AL,13 ;AN000;DT If ENTER the continue | ||
| 537 | JE HAKEY_EXIT ;AN000;DT | ||
| 538 | DISPLAY_MESSAGE 11 ;AN000;DT BEEP | ||
| 539 | JMP HAKEY_AGN ;AN000;DT | ||
| 540 | ;AN000;DT | ||
| 541 | HAKEY_EXIT: ;AN000;DT | ||
| 542 | RET ;AN000;DT | ||
| 543 | HANDLE_KEY256KB ENDP ;AN000;DT | ||
| 544 | |||
| 545 | CODE_FAR ENDS ;AN000; | ||
| 546 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/MACROS.INC b/v4.0/src/SELECT/MACROS.INC new file mode 100644 index 0000000..a942878 --- /dev/null +++ b/v4.0/src/SELECT/MACROS.INC | |||
| @@ -0,0 +1,540 @@ | |||
| 1 | ;;**************************************************************************** | ||
| 2 | ;; Assembler MACROS for use with SELECT. | ||
| 3 | ;; File: MACROS.INC | ||
| 4 | ;; Latest Change Date: July 28, 1987 | ||
| 5 | ;; | ||
| 6 | ;; These macros define powerful assembler verbs neccessary for SELECT. | ||
| 7 | ;; | ||
| 8 | ;; Note: Many of the macros make use of an ASCII-N string for passing | ||
| 9 | ;; parameters. The string is defined below. | ||
| 10 | ;; DW count | ||
| 11 | ;; DB "string_variable",? | ||
| 12 | ;; | ||
| 13 | ;; COUNT is the length of the string and is a word. | ||
| 14 | ;; It is necessary to follow the string with at least one byte for the | ||
| 15 | ;; purpose of changing the ASCII-N string to an ASCII-Z string. | ||
| 16 | ;; | ||
| 17 | ;;**************************************************************************** | ||
| 18 | ;;**************************************************************************** | ||
| 19 | ;; Macro Change History. | ||
| 20 | ;; | ||
| 21 | ;; June 18, 1987 - Split MACROS.INC into 5 smaller files. They are: | ||
| 22 | ;; MACROS.INC | ||
| 23 | ;; MACROS2.INC | ||
| 24 | ;; MACROS3.INC | ||
| 25 | ;; MACROS4.INC | ||
| 26 | ;; MACROS5.INC | ||
| 27 | ;; At the end of the files, there is an INCLUDE statement | ||
| 28 | ;; to include the next file. Therefore, the modules which | ||
| 29 | ;; use these macros do not have to add more include statements. | ||
| 30 | ;; The only one that must have an INCLUDE statement is | ||
| 31 | ;; MACROS.INC. | ||
| 32 | ;; | ||
| 33 | ;; - Removed the PUSHH and POPP macros from the other macro | ||
| 34 | ;; definitions. | ||
| 35 | ;; | ||
| 36 | ;; June 22, 1987 - Added the SCAN_PARAMETERS macro. | ||
| 37 | ;; | ||
| 38 | ;; June 24, 1987 - Added the PREPARE_FILE, WRITE_LINE and SAVE_FILE macros. | ||
| 39 | ;; - Revised the SCAN_PARAMETERS macro to read two of the | ||
| 40 | ;; parameters from a file instead of the command line. | ||
| 41 | ;; | ||
| 42 | ;; June 26, 1987 - Changed the EXEC_PROGRAM macros to perform a call to | ||
| 43 | ;; EXEC_PROGRAM_ROUTINE which performs the same tasks are the | ||
| 44 | ;; previously defined macro. EXEC_PROGRAM_ROUTINE was added | ||
| 45 | ;; to ROUTINES.INC. | ||
| 46 | ;; | ||
| 47 | ;; June 29, 1987 - Changed the GET_COUNTRY_INDEX to a subroutine call to | ||
| 48 | ;; GET_CNTY_INDEX_ROUTINE. The routine has been changed | ||
| 49 | ;; to get the new information from the structure, NUM_DESIGNATES, | ||
| 50 | ;; CPSW_STAT, and RESERVED_1. | ||
| 51 | ;; - Changed GET_COUNTRY_DEFAULTS, GET_KEYBOARD_INDEX and | ||
| 52 | ;; GET_KEYBOARD macros to perform subroutines calls. | ||
| 53 | ;; | ||
| 54 | ;;**************************************************************************** | ||
| 55 | PAGE ;AN000; | ||
| 56 | INCLUDE MAC_EQU.INC ;AN000; | ||
| 57 | ;;**************************************************************************** | ||
| 58 | ;; | ||
| 59 | ;; PUSHH: pushes the listed registers on the stack | ||
| 60 | ;; | ||
| 61 | ;; SYNTAX: PUSHH <register list> | ||
| 62 | ;; | ||
| 63 | ;; INPUT: register list = AX, BX, CX, DX, SI, DI, BP, SS, SP, CS, DS, ES | ||
| 64 | ;; | ||
| 65 | ;; OUTPUT: none | ||
| 66 | ;; | ||
| 67 | ;; OPERATION: | ||
| 68 | ;; | ||
| 69 | ;; PUSHH ALLOWS THE PROGRAMER TO SPECIFY A LIST OF REGISTER TO | ||
| 70 | ;; BE PUSHED ON A SINGLE LINE. | ||
| 71 | ;; | ||
| 72 | ;;**************************************************************************** | ||
| 73 | PUSHH MACRO REG_LIST ;;AN000; | ||
| 74 | IRP REG,<REG_LIST> ;;AN000; | ||
| 75 | PUSH REG ;;AN000; save registers | ||
| 76 | ENDM ;;AN000; | ||
| 77 | ENDM ;;AN000; | ||
| 78 | ;;**************************************************************************** | ||
| 79 | ;; | ||
| 80 | ;; POPP: pops the listed registers on the stack | ||
| 81 | ;; | ||
| 82 | ;; SYNTAX: POPP <register list> | ||
| 83 | ;; | ||
| 84 | ;; INPUT: register list = AX, BX, CX, DX, SI, DI, BP, SS, SP, CS, DS, ES | ||
| 85 | ;; | ||
| 86 | ;; OUTPUT: none | ||
| 87 | ;; | ||
| 88 | ;; OPERATION: | ||
| 89 | ;; | ||
| 90 | ;; POPP ALLOWS THE PROGRAMER TO SPECIFY A LIST OF REGISTER TO | ||
| 91 | ;; BE POPPED ON A SINGLE LINE. | ||
| 92 | ;; | ||
| 93 | ;;**************************************************************************** | ||
| 94 | POPP MACRO REG_LIST ;;AN000; | ||
| 95 | IRP REG,<REG_LIST> ;;AN000; | ||
| 96 | POP REG ;;AN000; return registers to initial state | ||
| 97 | ENDM ;;AN000; | ||
| 98 | ENDM ;;AN000; | ||
| 99 | ;;**************************************************************************** | ||
| 100 | ;; | ||
| 101 | ;; DOSCALL: DOS interrupt 21 function call | ||
| 102 | ;; | ||
| 103 | ;; SYNTAX: DOSCALL | ||
| 104 | ;; | ||
| 105 | ;; INPUT: none | ||
| 106 | ;; | ||
| 107 | ;; OUTPUT: none | ||
| 108 | ;; | ||
| 109 | ;; OPERATION: | ||
| 110 | ;; | ||
| 111 | ;; DOSCALL INVOKES THE DOS INTERRUPT 21 FUNCTION CALL. | ||
| 112 | ;; THE AH REGISTER MUST ALREADY BE LOADED WITH THE | ||
| 113 | ;; REQUIRED VALUE. | ||
| 114 | ;; | ||
| 115 | ;;**************************************************************************** | ||
| 116 | DOSCALL MACRO ;;AN000; | ||
| 117 | INT 21H ;;AN000; call to DOS | ||
| 118 | ENDM ;;AN000; | ||
| 119 | ;;**************************************************************************** | ||
| 120 | ;; | ||
| 121 | ;; INIT_VAR: Load a variable with an immediate value. | ||
| 122 | ;; | ||
| 123 | ;; SYNTAX: INIT_VAR variable, expression | ||
| 124 | ;; | ||
| 125 | ;; INPUT: variable = Address of a variable. | ||
| 126 | ;; expression = The immediate value to load into the variable. | ||
| 127 | ;; | ||
| 128 | ;; OUTPUT: | ||
| 129 | ;; None. | ||
| 130 | ;; | ||
| 131 | ;; OPERATION: The memory variable identified by var is assigned the | ||
| 132 | ;; immediate value specified in immed. | ||
| 133 | ;; | ||
| 134 | ;;**************************************************************************** | ||
| 135 | INIT_VAR MACRO VARIABLE,EXPRESSION ;;AN000; | ||
| 136 | MOV VARIABLE,EXPRESSION ;;AN000; move expression into variable | ||
| 137 | ENDM ;;AN000; | ||
| 138 | ;;**************************************************************************** | ||
| 139 | ;; | ||
| 140 | ;; COPY_WORD: Copy a word variable to another word variable. | ||
| 141 | ;; | ||
| 142 | ;; SYNTAX: COPY_WORD var_dest, var_src | ||
| 143 | ;; | ||
| 144 | ;; INPUT: var_dest - The destination word variable. | ||
| 145 | ;; var_src - The source word variable. | ||
| 146 | ;; | ||
| 147 | ;; OUTPUT: none | ||
| 148 | ;; | ||
| 149 | ;; OPERATION: The contents of var_src remain intact. | ||
| 150 | ;; The contents of AX is destroyed. | ||
| 151 | ;; | ||
| 152 | ;;************************************************************************ | ||
| 153 | COPY_WORD MACRO VAR_DEST, VAR_SRC ;;AN000; | ||
| 154 | MOV AX, VAR_SRC ;;AN000; | ||
| 155 | MOV VAR_DEST,AX ;;AN000; | ||
| 156 | ENDM ;;AN000; | ||
| 157 | ;;**************************************************************************** | ||
| 158 | ;; | ||
| 159 | ;; COPY_BYTE: Copy a byte variable to another byte variable. | ||
| 160 | ;; | ||
| 161 | ;; SYNTAX: COPY_WORD var_dest, var_src | ||
| 162 | ;; | ||
| 163 | ;; INPUT: var_dest - The destination byte variable. | ||
| 164 | ;; var_src - The source byte variable. | ||
| 165 | ;; | ||
| 166 | ;; OUTPUT: none | ||
| 167 | ;; | ||
| 168 | ;; OPERATION: The contents of var_src remain intact. | ||
| 169 | ;; The contents of AL is destroyed. | ||
| 170 | ;; | ||
| 171 | ;;************************************************************************ | ||
| 172 | COPY_BYTE MACRO VAR_DEST, VAR_SRC ;;AN000; | ||
| 173 | MOV AL, VAR_SRC ;;AN000; | ||
| 174 | MOV VAR_DEST,AL ;;AN000; | ||
| 175 | ENDM ;;AN000; | ||
| 176 | ;;**************************************************************************** | ||
| 177 | ;; | ||
| 178 | ;; COMP_WORDS: Compare two 16 bit memory variable. | ||
| 179 | ;; | ||
| 180 | ;; SYNTAX: COMP_WORDS var_dest, var_src | ||
| 181 | ;; | ||
| 182 | ;; INPUT: var_dest - The destination memory variable (16 bits) | ||
| 183 | ;; var_src - The source memory variable (16 bits) | ||
| 184 | ;; | ||
| 185 | ;; OUTPUT: none | ||
| 186 | ;; | ||
| 187 | ;; OPERATION: The two 16 bit memory variables are compared and the status | ||
| 188 | ;; flags are updated. Refer to the ASSEMBLER reference for more details. | ||
| 189 | ;; | ||
| 190 | ;;************************************************************************ | ||
| 191 | COMP_WORDS MACRO VAR_DEST, VAR_SRC ;;AN000; | ||
| 192 | ; | ||
| 193 | MOV AX, VAR_DEST ;;AN000; | ||
| 194 | CMP AX, VAR_SRC ;;AN000; | ||
| 195 | ENDM ;;AN000; | ||
| 196 | ;;**************************************************************************** | ||
| 197 | ;; | ||
| 198 | ;; COMP_BYTES: Compare two 8 bit memory variables. | ||
| 199 | ;; | ||
| 200 | ;; SYNTAX: COMP_BYTES var_dest, var_src | ||
| 201 | ;; | ||
| 202 | ;; INPUT: var_dest - The destination memory variable ( 8 bits) | ||
| 203 | ;; var_src - The source memory variable ( 8 bits) | ||
| 204 | ;; | ||
| 205 | ;; OUTPUT: none | ||
| 206 | ;; | ||
| 207 | ;; OPERATION: The two 8 bit memory variables are compared and the status | ||
| 208 | ;; flags are updated. Refer to the ASSEMBLER reference for more details. | ||
| 209 | ;; | ||
| 210 | ;;************************************************************************ | ||
| 211 | COMP_BYTES MACRO VAR_DEST, VAR_SRC ;;AN000; | ||
| 212 | ; | ||
| 213 | MOV AL, VAR_DEST ;;AN000; | ||
| 214 | CMP AL, VAR_SRC ;;AN000; | ||
| 215 | ENDM ;;AN000; | ||
| 216 | ;;**************************************************************************** | ||
| 217 | ;; | ||
| 218 | ;; INC_VAR: Increment the specified memory variable by 1. | ||
| 219 | ;; | ||
| 220 | ;; SYNTAX: INC_VAR var_dest | ||
| 221 | ;; | ||
| 222 | ;; INPUT: var_dest - The destination memory variable. | ||
| 223 | ;; | ||
| 224 | ;; OUTPUT: none | ||
| 225 | ;; | ||
| 226 | ;; OPERATION: The memory variable is incremented by one. | ||
| 227 | ;; | ||
| 228 | ;;************************************************************************ | ||
| 229 | INC_VAR MACRO VAR_DEST ;;AN000; | ||
| 230 | INC VAR_DEST ;;AN000; | ||
| 231 | ENDM ;;AN000; | ||
| 232 | ;;**************************************************************************** | ||
| 233 | ;; | ||
| 234 | ;; DEC_VAR: Decrement the specified memory variable by 1. | ||
| 235 | ;; | ||
| 236 | ;; SYNTAX: DEC_VAR var_dest | ||
| 237 | ;; | ||
| 238 | ;; INPUT: var_dest - The destination memory variable. | ||
| 239 | ;; | ||
| 240 | ;; OUTPUT: none | ||
| 241 | ;; | ||
| 242 | ;; OPERATION: The memory variable is decremented by one. | ||
| 243 | ;; | ||
| 244 | ;;************************************************************************ | ||
| 245 | DEC_VAR MACRO VAR_DEST ;;AN000; | ||
| 246 | DEC VAR_DEST ;;AN000; | ||
| 247 | ENDM ;;AN000; | ||
| 248 | ;;**************************************************************************** | ||
| 249 | ;; | ||
| 250 | ;; INIT: initializes the DS to the beginning of the data | ||
| 251 | ;; | ||
| 252 | ;; SYNTAX: INIT | ||
| 253 | ;; | ||
| 254 | ;; INPUT: none | ||
| 255 | ;; | ||
| 256 | ;; OUTPUT: none | ||
| 257 | ;; | ||
| 258 | ;; OPERATION: | ||
| 259 | ;; | ||
| 260 | ;; THE MACRO SIMPLY SETS UP THE DATA SEGMENT. | ||
| 261 | ;; | ||
| 262 | ;;**************************************************************************** | ||
| 263 | INIT MACRO ;;AN000; | ||
| 264 | PUSH DS ;;AN000; | ||
| 265 | XOR AX,AX ;;AN000; make AX = 0 | ||
| 266 | PUSH AX ;;AN000; | ||
| 267 | MOV AX,DATA ;;AN000; | ||
| 268 | MOV DS,AX ;;AN000; initialize DS reg to beginning of data | ||
| 269 | ENDM ;;AN000; | ||
| 270 | ;;************************************************************************** | ||
| 271 | ;; | ||
| 272 | ;; MERGE_STRING: merges 2 string blocks together to form a third one | ||
| 273 | ;; | ||
| 274 | ;; SYNTAX: MERGE_STRING name_dest, immed_max, name_src1, name_src2 | ||
| 275 | ;; | ||
| 276 | ;; INPUT: name_dest - Destination string variable (ASCII-N format) | ||
| 277 | ;; immed_max - Maximum length of destination string | ||
| 278 | ;; name_src1 - Source string variable 1 (ASCII-N format) | ||
| 279 | ;; name_src2 - Source string variable 2 (ASCII-N format) | ||
| 280 | ;; | ||
| 281 | ;; OUTPUT: | ||
| 282 | ;; None. | ||
| 283 | ;; | ||
| 284 | ;; OPERATION: | ||
| 285 | ;; The string pointed to by name_scr1 is copied to the destination string | ||
| 286 | ;; first followed by the string pointed to by name_scr2. If the | ||
| 287 | ;; destination string is not long enough to hold the new string, then | ||
| 288 | ;; the strings are copied until all the space is used up. | ||
| 289 | ;; It is assumed that the input strings and the output string | ||
| 290 | ;; are in the current data segment. | ||
| 291 | ;; | ||
| 292 | ;; | ||
| 293 | ;;************************************************************************************** | ||
| 294 | MERGE_STRING MACRO NAME_DEST, IMMED_MAX, NAME_SRC1, NAME_SRC2 ;;AN000; | ||
| 295 | |||
| 296 | LEA DI, NAME_DEST ;;AN000; | ||
| 297 | LEA SI, NAME_SRC1 ;;AN000; | ||
| 298 | MOV AX, IMMED_MAX ;;AN000; | ||
| 299 | CALL COPY_ROUTINE ;;AN000; | ||
| 300 | MOV CX, IMMED_MAX ;;AN000; | ||
| 301 | LEA DI, NAME_DEST ;;AN000; | ||
| 302 | LEA SI, NAME_SRC2 ;;AN000; | ||
| 303 | CALL APPEND_STRING_ROUTINE ;;AN000; | ||
| 304 | ENDM ;;AN000; | ||
| 305 | ;;************************************************************************** | ||
| 306 | ;; | ||
| 307 | ;; APPEND_STRING: Appends an ASCII-N string to the specified string. | ||
| 308 | ;; | ||
| 309 | ;; SYNTAX: APPEND_STRING name_dest, immed_max, name_src | ||
| 310 | ;; | ||
| 311 | ;; INPUT: name_dest - Destination string variable (ASCII-N format) | ||
| 312 | ;; immed_max - Maximum length of destination string | ||
| 313 | ;; name_src - Source string variable (ASCII-N format) | ||
| 314 | ;; | ||
| 315 | ;; OUTPUT: | ||
| 316 | ;; None. | ||
| 317 | ;; | ||
| 318 | ;; OPERATION: | ||
| 319 | ;; The ASCII-N string text defined in name_scr is appended to the | ||
| 320 | ;; end of name_dest. | ||
| 321 | ;; | ||
| 322 | ;;************************************************************************************** | ||
| 323 | APPEND_STRING MACRO NAME_DEST, IMMED_MAX, NAME_SRC ;;AN000; | ||
| 324 | MOV CX, IMMED_MAX ;;AN000; | ||
| 325 | LEA DI, NAME_DEST ;;AN000; | ||
| 326 | LEA SI, NAME_SRC ;;AN000; | ||
| 327 | CALL APPEND_STRING_ROUTINE ;;AN000; | ||
| 328 | ENDM ;;AN000; | ||
| 329 | ;;************************************************************************** | ||
| 330 | ;; | ||
| 331 | ;; COPY_STRING: Copy ASCII-N string text. | ||
| 332 | ;; | ||
| 333 | ;; SYNTAX: MOVE_STRING name_dest, immed_max, name_src | ||
| 334 | ;; | ||
| 335 | ;; INPUT: | ||
| 336 | ;; name_dest - The destination string variable. | ||
| 337 | ;; immed_max - The maximum length of destination string. | ||
| 338 | ;; name_src - source string veriable (ASCII-N format) | ||
| 339 | ;; | ||
| 340 | ;; OUTPUT: | ||
| 341 | ;; None. | ||
| 342 | ;; | ||
| 343 | ;; OPERATION: ASCII-N string text defined in name_src is copied to name_dest. | ||
| 344 | ;; The number of characters copied to name_dest will not exceed immed_max. | ||
| 345 | ;; | ||
| 346 | ;;************************************************************************** | ||
| 347 | COPY_STRING MACRO NAME_DEST, IMMED_MAX, NAME_SRC ;;AN000; | ||
| 348 | ; | ||
| 349 | LEA DI, NAME_DEST ;;AN000; | ||
| 350 | LEA SI, NAME_SRC ;;AN000; | ||
| 351 | MOV AX, IMMED_MAX ;;AN000; | ||
| 352 | CALL COPY_ROUTINE ;;AN000; | ||
| 353 | ENDM ;;AN000; | ||
| 354 | ;;************************************************************************** | ||
| 355 | ;; | ||
| 356 | ;; PUSH_HEADING: Push screen label address to the SELECT stack | ||
| 357 | ;; | ||
| 358 | ;; SYNTAX: PUSH_HEADING immed_lab | ||
| 359 | ;; | ||
| 360 | ;; INPUT: | ||
| 361 | ;; immed_lab - screen label | ||
| 362 | ;; | ||
| 363 | ;; OUTPUT: | ||
| 364 | ;; None. | ||
| 365 | ;; | ||
| 366 | ;; OPERATION: The screen label address is pushed onto the SELECT stack | ||
| 367 | ;; provided the numher of entries on the stack will not exceed the | ||
| 368 | ;; maximum. Error will NOT be generated if the function was not | ||
| 369 | ;; successful. | ||
| 370 | ;; | ||
| 371 | ;;**************************************************************************** | ||
| 372 | PUSH_HEADING MACRO IMMED_LAB ;;AN000; | ||
| 373 | MOV AX, OFFSET IMMED_LAB ;;AN000; | ||
| 374 | CALL PUSH_ROUTINE ;;AN000; | ||
| 375 | ENDM ;;AN000; | ||
| 376 | ;;************************************************************************** | ||
| 377 | ;; | ||
| 378 | ;; POP_HEADING: Pop screen label address from the SELECT stack and jump | ||
| 379 | ;; to the label address. | ||
| 380 | ;; | ||
| 381 | ;; SYNTAX: POP_HEADING | ||
| 382 | ;; | ||
| 383 | ;; INPUT: | ||
| 384 | ;; None. | ||
| 385 | ;; | ||
| 386 | ;; OUTPUT: | ||
| 387 | ;; None. | ||
| 388 | ;; | ||
| 389 | ;; OPERATION: The screen label address from the SELECT stack is poped | ||
| 390 | ;; if the number of entries on the stack is not zero. If the number | ||
| 391 | ;; of entries is zero, the EXIT_DOS screen label address will be used. | ||
| 392 | ;; A jump to the screen label address is also performed. | ||
| 393 | ;; | ||
| 394 | ;;**************************************************************************** | ||
| 395 | POP_HEADING MACRO ;;AN000; | ||
| 396 | CALL POP_ROUTINE ;;AN000; | ||
| 397 | JMP SI ;;AN000; | ||
| 398 | ENDM ;;AN000; | ||
| 399 | ;;**************************************************************************** | ||
| 400 | ;; | ||
| 401 | ;; DIR: get current directory | ||
| 402 | ;; | ||
| 403 | ;; SYNTAX: DIR dir_buffer | ||
| 404 | ;; | ||
| 405 | ;; INPUT: dir_buffer = POINTER TO A 64-BYTE USER MEMORY AREA | ||
| 406 | ;; | ||
| 407 | ;; OUTPUT: CY = 0, AX = N/A, successful | ||
| 408 | ;; CY = 1, AX = error code | ||
| 409 | ;; | ||
| 410 | ;; OPERATION: | ||
| 411 | ;; | ||
| 412 | ;; DIR PLACES THE FULL PATH NAME OF THE CURRENT DIRECTORY FOR THE | ||
| 413 | ;; SPECIFIED DRIVE IN THE BUFFER. | ||
| 414 | ;; THE RETURNING STRING IS AN ASCIIZ STRING AND IT DOES NOT | ||
| 415 | ;; HAVE THE DRIVE LETTER OR A BACKSLASH. | ||
| 416 | ;; IF AN ERROR OCCURS, THE CARRY FLAG IS SET, AND THE ERROR CODE | ||
| 417 | ;; IS RETURNED IN AX. | ||
| 418 | ;; | ||
| 419 | ;;**************************************************************************** | ||
| 420 | DIR MACRO DIR_BUFFER ;;AN000; | ||
| 421 | CALL HOOK_INT_24 ;;AN000; | ||
| 422 | MOV SI,OFFSET DIR_BUFFER ;;AN000; pointer to 64 byte user area | ||
| 423 | MOV DL,0 ;;AN000; give directory of the default drive | ||
| 424 | MOV AH,47H ;;AN000; get current directory | ||
| 425 | DOSCALL ;;AN000; | ||
| 426 | CALL RESTORE_INT_24 ;;AN000; | ||
| 427 | ENDM ;;AN000; | ||
| 428 | ;;**************************************************************************** | ||
| 429 | ;; | ||
| 430 | ;; MAKE_DIR: Make a Directory | ||
| 431 | ;; | ||
| 432 | ;; SYNTAX: MAKE_DIR directory | ||
| 433 | ;; | ||
| 434 | ;; INPUT: directory = An ASCII-N STRING GIVING THE REQUIRED | ||
| 435 | ;; PATH | ||
| 436 | ;; OUTPUT: CY = 0, AX = undefined, call was successful | ||
| 437 | ;; CY = 1, AX = error code | ||
| 438 | ;; | ||
| 439 | ;; OPERATION: | ||
| 440 | ;; | ||
| 441 | ;; THE DIRECTORY IS MADE USING THE DOS INT 21H (AH=39H) CALL. | ||
| 442 | ;; IF AN ERROR OCCURS, THE CARRY FLAG IS SET, AND THE ERROR CODE | ||
| 443 | ;; IS RETURNED IN AX. | ||
| 444 | ;; | ||
| 445 | ;; | ||
| 446 | ;;**************************************************************************** | ||
| 447 | MAKE_DIR MACRO dir_len ;;AN000; | ||
| 448 | CALL HOOK_INT_24 ;;AN000; | ||
| 449 | |||
| 450 | MOV DI,OFFSET dir_len ;;AN000; | ||
| 451 | CALL POS_ZERO ;;AN000; position the '0' at the end of the path | ||
| 452 | MOV DX,OFFSET dir_len[2] ;;AN000; advance pointer to beginning of path | ||
| 453 | MOV AH,39H ;;AN000; make directory interrupt | ||
| 454 | DOSCALL ;;AN000; call to DOS interrupt 21 | ||
| 455 | CALL RESTORE_INT_24 ;;AN000; | ||
| 456 | ENDM ;;AN000; | ||
| 457 | ;;************************************************************************** | ||
| 458 | ;; | ||
| 459 | ;; MAKE_DIR_PATHS: Create the specified directory including all the specified | ||
| 460 | ;; sub-directories if they do not exist. | ||
| 461 | ;; | ||
| 462 | ;; SYNTAX: MAKE_DIR_PATHS name_dir | ||
| 463 | ;; | ||
| 464 | ;; INPUT: | ||
| 465 | ;; name_dir - Directory pathname in ASCII-N string format. | ||
| 466 | ;; | ||
| 467 | ;; OUTPUT: | ||
| 468 | ;; CY = 0 Success | ||
| 469 | ;; CY = 1 Error - AX will contain an error code. | ||
| 470 | ;; | ||
| 471 | ;; OPERATION: The directory pathname is created. | ||
| 472 | ;; If the drive letter and colon are not followed by a '\', then the | ||
| 473 | ;; macro will start creating the directories from the default directory. | ||
| 474 | ;; If they are followed by a '\', then the macro will start at the root. | ||
| 475 | ;; | ||
| 476 | ;; | ||
| 477 | ;;**************************************************************************** | ||
| 478 | MAKE_DIR_PATHS MACRO NAME_DIR ;;AN000; | ||
| 479 | |||
| 480 | MOV BX, OFFSET NAME_DIR ;;AN000; Address of the ASCII-N string | ||
| 481 | CALL MAKE_DIR_PATHS_ROUTINE ;;AN000; | ||
| 482 | ENDM ;;AN000; | ||
| 483 | ;;**************************************************************************** | ||
| 484 | ;; | ||
| 485 | ;; REMOVE_DIR: Remove Directory | ||
| 486 | ;; | ||
| 487 | ;; SYNTAX: REMOVE_DIR directory | ||
| 488 | ;; | ||
| 489 | ;; INPUT: directory = An ASCII-N STRING giving the REQUIRED PATH | ||
| 490 | ;; | ||
| 491 | ;; OUTPUT: CY = 0, AX = undefined, successful | ||
| 492 | ;; CY = 1, AX = error code | ||
| 493 | ;; | ||
| 494 | ;; OPERATION: | ||
| 495 | ;; | ||
| 496 | ;; THE DIRECTORY IS REMOVED USING THE DOS INT 21H (AH=3AH) CALL. | ||
| 497 | ;; IF AN ERROR OCCURS, THE CARRY FLAG IS SET, AND THE ERROR CODE | ||
| 498 | ;; IS RETURNED IN AX. | ||
| 499 | ;; | ||
| 500 | ;; It is assumed that the string is located in the data segment | ||
| 501 | ;; | ||
| 502 | ;;**************************************************************************** | ||
| 503 | REMOVE_DIR MACRO dir_len ;;AN000; | ||
| 504 | |||
| 505 | CALL HOOK_INT_24 ;;AN000; | ||
| 506 | MOV DI,OFFSET dir_len ;;AN000; | ||
| 507 | CALL POS_ZERO ;;AN000; position the '0' at the end of the path | ||
| 508 | MOV DX,OFFSET dir_len[2] ;;AN000; advance pointer to beginning of path | ||
| 509 | MOV AH,3AH ;;AN000; remove the specified directory | ||
| 510 | DOSCALL ;;AN000; call to DOS interrupt 21 | ||
| 511 | CALL RESTORE_INT_24 ;;AN000; | ||
| 512 | ENDM ;;AN000; | ||
| 513 | ;;************************************************************************** | ||
| 514 | ;; | ||
| 515 | ;; CHANGE_DIR: Change the current directory to the specified directory. | ||
| 516 | ;; | ||
| 517 | ;; SYNTAX: CHANGE_DIR name_dir | ||
| 518 | ;; | ||
| 519 | ;; INPUT: | ||
| 520 | ;; name_dir - directory pathname in ASCII-N string format. | ||
| 521 | ;; | ||
| 522 | ;; OUTPUT: | ||
| 523 | ;; CY = 0 Success | ||
| 524 | ;; CY = 1 Error AX will contain an error code | ||
| 525 | ;; | ||
| 526 | ;; OPERATION: The directory pathname identified by the ASCII-N string | ||
| 527 | ;; becomes the default directory. | ||
| 528 | ;; | ||
| 529 | ;;**************************************************************************** | ||
| 530 | CHANGE_DIR MACRO NAME_DIR ;;AN000; | ||
| 531 | |||
| 532 | CALL HOOK_INT_24 ;;AN000; | ||
| 533 | MOV DI,OFFSET NAME_DIR ;;AN000; Get the offset of the string | ||
| 534 | CALL POS_ZERO ;;AN000; Make into an ASCII-Z string | ||
| 535 | MOV DX,OFFSET NAME_DIR+2 ;;AN000; Get the start of the string | ||
| 536 | MOV AH,3BH ;;AN000; DOS function call number | ||
| 537 | DOSCALL ;;AN000; | ||
| 538 | CALL RESTORE_INT_24 ;;AN000; | ||
| 539 | ENDM ;;AN000; | ||
| 540 | INCLUDE MACROS2.INC ;;AN000; | ||
diff --git a/v4.0/src/SELECT/MACROS2.INC b/v4.0/src/SELECT/MACROS2.INC new file mode 100644 index 0000000..6bb1741 --- /dev/null +++ b/v4.0/src/SELECT/MACROS2.INC | |||
| @@ -0,0 +1,437 @@ | |||
| 1 | ;;**************************************************************************** | ||
| 2 | ;; Assembler MACROS for use with SELECT. | ||
| 3 | ;; File: MACROS2.INC | ||
| 4 | ;; Latest Change Date: August 04, 1987 | ||
| 5 | ;; | ||
| 6 | ;; These macros define powerful assembler verbs neccessary for SELECT. | ||
| 7 | ;; | ||
| 8 | ;; Note: Many of the macros make use of an ASCII-N string for passing | ||
| 9 | ;; parameters. The string is defined below. | ||
| 10 | ;; DW count | ||
| 11 | ;; DB "string_variable",? | ||
| 12 | ;; | ||
| 13 | ;; COUNT is the length of the string and is a word. | ||
| 14 | ;; It is necessary to follow the string with at least one byte for the | ||
| 15 | ;; purpose of changing the ASCII-N string to an ASCII-Z string. | ||
| 16 | ;; | ||
| 17 | ;;**************************************************************************** | ||
| 18 | page ;AN000; | ||
| 19 | ;;************************************************************************ | ||
| 20 | ;; | ||
| 21 | ;; CLOSE_FILE: Close File | ||
| 22 | ;; | ||
| 23 | ;; SYNTAX: CLOSE_FILE handle | ||
| 24 | ;; | ||
| 25 | ;; INPUT: handle = The handle of the file to close. | ||
| 26 | ;; | ||
| 27 | ;; OUTPUT: CY = 0, AX = undefined, successful | ||
| 28 | ;; CY = 1, AX = error code | ||
| 29 | ;; | ||
| 30 | ;; OPERATION: | ||
| 31 | ;; | ||
| 32 | ;; THIS MACROS CLOSES THE FILE WITH THE GIVEN FILE HANDLE. | ||
| 33 | ;; IT MAKES USE OF INT 21 (AH=3EH). | ||
| 34 | ;; IF AN ERROR OCCURS, THE CARRY FLAG IS SET, AND THE ERROR CODE | ||
| 35 | ;; IS RETURNED IN AX. | ||
| 36 | ;; | ||
| 37 | ;;************************************************************************** | ||
| 38 | CLOSE_FILE MACRO HANDLE ;;AN000; | ||
| 39 | ;; | ||
| 40 | MOV BX, HANDLE ;;AN000; | ||
| 41 | CALL FAR PTR CLOSE_FILE_ROUTINE ;;AN000; | ||
| 42 | ENDM ;;AN000; | ||
| 43 | ;;************************************************************** | ||
| 44 | ;; | ||
| 45 | ;; CREATE_FILE: Create new File | ||
| 46 | ;; | ||
| 47 | ;; SYNTAX: CREATE_FILE name_file, immed_attr, var_handle | ||
| 48 | ;; | ||
| 49 | ;; INPUT: name_file - filename in ASCII-N string format. | ||
| 50 | ;; immed_attr - file attribute | ||
| 51 | ;; | ||
| 52 | ;; OUTPUT: CY = 0 Success: var_handle contain the file handle | ||
| 53 | ;; CY = 1 Error: AX contains as error code | ||
| 54 | ;; | ||
| 55 | ;; | ||
| 56 | ;; OPERATION: | ||
| 57 | ;; | ||
| 58 | ;; CREATE_FILE CREATES A FILE WITH THE GIVEN NAME USING INT 21H (AH=5BH) | ||
| 59 | ;; IF AN ERROR OCCURS, THE CARRY FLAG IS SET, AND THE ERROR CODE | ||
| 60 | ;; IS RETURNED IN AX. | ||
| 61 | ;; | ||
| 62 | ;;************************************************************************** | ||
| 63 | CREATE_FILE MACRO NAME_FILE, IMMED_ATTR, VAR_HANDLE ;;AN000; | ||
| 64 | LEA DI, NAME_FILE ;;AN000; | ||
| 65 | MOV CX, IMMED_ATTR ;;AN000; | ||
| 66 | CALL CREATE_FILE_ROUTINE ;;AN000; | ||
| 67 | MOV VAR_HANDLE, AX ;;AN000; | ||
| 68 | ENDM ;;AN000; | ||
| 69 | ;;**************************************************************************** | ||
| 70 | ;; | ||
| 71 | ;; ERASE_FILE: Erase File | ||
| 72 | ;; | ||
| 73 | ;; SYNTAX: ERASE_FILE filename | ||
| 74 | ;; | ||
| 75 | ;; INPUT: filename = POINTER TO ASCII-N STRING - FILE NAME | ||
| 76 | ;; | ||
| 77 | ;; OUTPUT: CY = 0, AX = undefined, successful | ||
| 78 | ;; CY = 1, AX = error code | ||
| 79 | ;; | ||
| 80 | ;; OPERATION: | ||
| 81 | ;; | ||
| 82 | ;; ERASE_FILE ERASES THE FILE USING INT 21H (AH=41H). | ||
| 83 | ;; IF AN ERROR OCCURS, THE CARRY FLAG IS SET, AND THE ERROR CODE | ||
| 84 | ;; IS RETURNED IN AX. | ||
| 85 | ;; | ||
| 86 | ;;**************************************************************************** | ||
| 87 | ERASE_FILE MACRO FILE_NAME ;;AN000; | ||
| 88 | |||
| 89 | LEA DI, FILE_NAME ;;AN000; | ||
| 90 | CALL ERASE_FILE_ROUTINE ;;AN000; | ||
| 91 | ENDM ;;AN000; | ||
| 92 | ;;**************************************************************************** | ||
| 93 | ;; | ||
| 94 | ;; CHMOD_FILE: Change file attributes to read/write | ||
| 95 | ;; | ||
| 96 | ;; SYNTAX: CHMOD_FILE filename | ||
| 97 | ;; | ||
| 98 | ;; INPUT: filename = POINTER TO ASCII-N STRING - FILE NAME | ||
| 99 | ;; | ||
| 100 | ;; OUTPUT: None. | ||
| 101 | ;; | ||
| 102 | ;; OPERATION: | ||
| 103 | ;; The CHMOD dos call is executed (43H) to change the file's attributes | ||
| 104 | ;; to read/write. | ||
| 105 | ;; | ||
| 106 | ;;**************************************************************************** | ||
| 107 | CHMOD_FILE MACRO FILE_NAME ;;AN000; | ||
| 108 | |||
| 109 | LEA DI, FILE_NAME ;;AN000; | ||
| 110 | CALL CHMOD_FILE_ROUTINE ;;AN000; | ||
| 111 | ENDM ;;AN000; | ||
| 112 | ;;************************************************************************ | ||
| 113 | ;; FIND_FILE: Find File | ||
| 114 | ;; | ||
| 115 | ;; SYNTAX: FIND_FILE name, attribute | ||
| 116 | ;; | ||
| 117 | ;; INPUT: name = POINTER TO ASCII-N STRING - FILE NAME | ||
| 118 | ;; attribute - the file attribute used in the search | ||
| 119 | ;; | ||
| 120 | ;; OUTPUT: CY = 0, AX = undefined, successful | ||
| 121 | ;; CY = 1, AX = error code | ||
| 122 | ;; | ||
| 123 | ;; OPERATION: | ||
| 124 | ;; | ||
| 125 | ;; FINDFILE FINDS THE FIRST FILENAME SPECIFIED USING INT 21 (AH=4EH). | ||
| 126 | ;; AND LOADS INFORMATION INTO THE CURRENT DTA. | ||
| 127 | ;; NOTE : THE DEFAULT DTA IS AT 80H IN THE PSP. | ||
| 128 | ;; IF AN ERROR OCCURS, THE CARRY FLAG IS SET, AND THE ERROR CODE | ||
| 129 | ;; IS RETURNED IN AX. | ||
| 130 | ;; | ||
| 131 | ;;************************************************************************ | ||
| 132 | FIND_FILE MACRO LOC_FILE,ATTRIBUTE ;;AN000; | ||
| 133 | ;; | ||
| 134 | LEA DI, LOC_FILE ;;AN000; | ||
| 135 | MOV CX, ATTRIBUTE ;;AN000; | ||
| 136 | CALL FIND_FILE_ROUTINE ;;AN000; | ||
| 137 | ENDM ;;AN000; | ||
| 138 | ;;************************************************************************ | ||
| 139 | ;; FIND_NEXT: Find the next match in the directory. | ||
| 140 | ;; | ||
| 141 | ;; SYNTAX: FIND_NEXT | ||
| 142 | ;; | ||
| 143 | ;; INPUT: | ||
| 144 | ;; None. | ||
| 145 | ;; | ||
| 146 | ;; OUTPUT: CY = 0, AX = undefined, successful | ||
| 147 | ;; CY = 1, AX = error code | ||
| 148 | ;; | ||
| 149 | ;; OPERATION: This macro must be called after FIND_FIRST. It searched | ||
| 150 | ;; the same directory as the FIND_FIRST command for the next match. | ||
| 151 | ;; If none is found then the carry flag is set. | ||
| 152 | ;; This macro uses the data in the DTA for the directory seach so | ||
| 153 | ;; it is important not to change the address of the current DTA. | ||
| 154 | ;; | ||
| 155 | ;; | ||
| 156 | ;;************************************************************************ | ||
| 157 | FIND_NEXT MACRO LOC_FILE,ATTRIBUTE ;;AN000; | ||
| 158 | CALL HOOK_INT_24 ;;AN000; | ||
| 159 | MOV INT_24_ERROR, FALSE ;;AN000; Zero the number of critical errors | ||
| 160 | MOV AH,4FH ;;AN000; | ||
| 161 | DOSCALL ;;AN000; | ||
| 162 | CALL RESTORE_INT_24 ;;AN000; | ||
| 163 | ENDM ;;AN000; | ||
| 164 | ;;************************************************************************** | ||
| 165 | ;; | ||
| 166 | ;; OPEN_FILE - Open File | ||
| 167 | ;; | ||
| 168 | ;; SYNTAX: OPEN_FILE file_name, mode, handle | ||
| 169 | ;; | ||
| 170 | ;; INPUT: file_name = POINTER TO ASCII-N STRING - FILE NAME | ||
| 171 | ;; mode = 0,1,2 (read,write,read/write) | ||
| 172 | ;; handle = POINTER TO A LOCATION TO STORE FILE HANDLE | ||
| 173 | ;; | ||
| 174 | ;; OUTPUT: CY = 0, AX = FILE HANDLE, successful | ||
| 175 | ;; CY = 1, AX = error code | ||
| 176 | ;; | ||
| 177 | ;; OPERATION: | ||
| 178 | ;; | ||
| 179 | ;; THIS MACRO OPENS A FILE FOR READ/WRITE OPERATIONS. | ||
| 180 | ;; IT MAKES USE OF INT 21 (AH=3DH). | ||
| 181 | ;; IF AN ERROR OCCURS, THE CARRY FLAG IS SET, AND THE ERROR CODE | ||
| 182 | ;; IS RETURNED IN AX. | ||
| 183 | ;; | ||
| 184 | ;;************************************************************************** | ||
| 185 | OPEN_FILE MACRO FILE_NAME,MODE,HANDLE ;;AN000; | ||
| 186 | |||
| 187 | LEA DI, FILE_NAME ;;AN000; | ||
| 188 | MOV AL, MODE ;;AN000; | ||
| 189 | CALL OPEN_FILE_ROUTINE ;;AN000; | ||
| 190 | MOV HANDLE, AX ;;AN000; | ||
| 191 | ENDM ;;AN000; | ||
| 192 | ;;************************************************************************** | ||
| 193 | ;; | ||
| 194 | ;; RENAME_FILE - Rename File | ||
| 195 | ;; | ||
| 196 | ;; SYNTAX: RENAME_FILE old_name, new_name | ||
| 197 | ;; | ||
| 198 | ;; INPUT: old_name = POINTER TO ASCII-N STRING -OLD FILE NAME | ||
| 199 | ;; new_name = POINTER TO ASCII-N STRING -NEW FILE NAME | ||
| 200 | ;; | ||
| 201 | ;; OUTPUT: CY = 0, AX = undefined, successful | ||
| 202 | ;; CY = 1, AX = error code | ||
| 203 | ;; | ||
| 204 | ;; OPERATION: | ||
| 205 | ;; | ||
| 206 | ;; THIS MACRO RENAMES A FILE GIVEN 2 NAMES. | ||
| 207 | ;; IT MAKES USE OF INT 21 (AH=56H). | ||
| 208 | ;; IF AN ERROR OCCURS, THE CARRY FLAG IS SET, AND THE ERROR CODE | ||
| 209 | ;; IS RETURNED IN AX. | ||
| 210 | ;; | ||
| 211 | ;;************************************************************************** | ||
| 212 | RENAME_FILE MACRO OLD_NAME,NEW_NAME ;;AN000; | ||
| 213 | ;; | ||
| 214 | LEA SI, OLD_NAME ;;AN000; | ||
| 215 | LEA DI, NEW_NAME ;;AN000; | ||
| 216 | CALL RENAME_FILE_ROUTINE ;;AN000; | ||
| 217 | ENDM ;;AN000; | ||
| 218 | ;;************************************************************************** | ||
| 219 | ;; | ||
| 220 | ;; READ_FILE: Transfer the specified number of bytes from a file into a | ||
| 221 | ;; buffer location. | ||
| 222 | ;; | ||
| 223 | ;; SYNTAX: READ_FILE var_handle, buffer, immed_char, var_char | ||
| 224 | ;; | ||
| 225 | ;; INPUT: | ||
| 226 | ;; var_handle - The handle of the file to read. | ||
| 227 | ;; buffer - The address of where to store the data | ||
| 228 | ;; immed_char - The number of characters to read | ||
| 229 | ;; | ||
| 230 | ;; OUTPUT: | ||
| 231 | ;; CY = 0, Read success. var_char - number of bytes read | ||
| 232 | ;; CY = 1, Read error. AX contains the error code. | ||
| 233 | ;; | ||
| 234 | ;; OPERATION: | ||
| 235 | ;; | ||
| 236 | ;; THIS MACRO READS TO AN ALREADY OPENED FILE. | ||
| 237 | ;; IT MAKES USE OF INT 21 (AH=3FH). | ||
| 238 | ;; AX WILL RETURN THE NUMBER BYTES ACTUALLY WRITTEN. | ||
| 239 | ;; | ||
| 240 | ;;************************************************************************ | ||
| 241 | READ_FILE MACRO VAR_HANDLE,BUFFER,IMMED_CHAR, VAR_CHAR ;;AN000; | ||
| 242 | |||
| 243 | MOV BX,VAR_HANDLE ;;AN000; | ||
| 244 | MOV DX,OFFSET BUFFER ;;AN000; | ||
| 245 | MOV CX,IMMED_CHAR ;;AN000; | ||
| 246 | CALL READ_FILE_ROUTINE ;;AN000; | ||
| 247 | ENDM ;;AN000; | ||
| 248 | ;;************************************************************************** | ||
| 249 | ;; | ||
| 250 | ;; WRITE_FILE: Transfer the specified number of bytes from a buffer into a | ||
| 251 | ;; specified file. | ||
| 252 | ;; | ||
| 253 | ;; SYNTAX: WRITE_FILE var_handle, buffer, immed_char, var_char | ||
| 254 | ;; | ||
| 255 | ;; INPUT: | ||
| 256 | ;; var_handle - The handle of the file to write to. | ||
| 257 | ;; buffer - The address of where the data is stored. | ||
| 258 | ;; immed_char - The number of characters to write. | ||
| 259 | ;; | ||
| 260 | ;; OUTPUT: | ||
| 261 | ;; CY = 0, Write success. var_char - number of bytes written. | ||
| 262 | ;; CY = 1, Write error. AX contains the error code. | ||
| 263 | ;; | ||
| 264 | ;; OPERATION: | ||
| 265 | ;; | ||
| 266 | ;; THIS MACRO WRITES TO AN ALREADY OPENED FILE. | ||
| 267 | ;; IT MAKES USE OF INT 21 (AH=3DH). | ||
| 268 | ;; AX WILL RETURN THE NUMBER BYTES ACTUALLY WRITTEN. | ||
| 269 | ;; | ||
| 270 | ;;************************************************************************ | ||
| 271 | WRITE_FILE MACRO VAR_HANDLE, BUFFER, IMMED_CHAR, VAR_CHAR ;;AN000; | ||
| 272 | ;; | ||
| 273 | MOV BX,VAR_HANDLE ;;AN000; | ||
| 274 | MOV DX,OFFSET BUFFER ;;AN000; | ||
| 275 | MOV CX,IMMED_CHAR ;;AN000; | ||
| 276 | CALL WRITE_FILE_ROUTINE ;;AN000; | ||
| 277 | ENDM ;;AN000; | ||
| 278 | ;;************************************************************************** | ||
| 279 | ;; | ||
| 280 | ;; PREPARE_FILE: Prepare a file and a buffer for the construction of that | ||
| 281 | ;; file line by line. | ||
| 282 | ;; | ||
| 283 | ;; SYNTAX: PREPARE_FILE filename | ||
| 284 | ;; | ||
| 285 | ;; INPUT: | ||
| 286 | ;; filename = The name of the file to create. (ASCII-N format) | ||
| 287 | ;; | ||
| 288 | ;; OUTPUT: CY = 0: No error was encountered. | ||
| 289 | ;; CY = 1: There was an error encountered. | ||
| 290 | ;; | ||
| 291 | ;; OPERATION: A attempt is made to create the file. If it fails because | ||
| 292 | ;; the file already exists, then the file is opened for writing. | ||
| 293 | ;; The user will then write to the file be calling WRITE_LINE macro. The | ||
| 294 | ;; data will be temperarily stored in a buffer to limit the actual number | ||
| 295 | ;; of writes to the file. | ||
| 296 | ;; | ||
| 297 | ;;************************************************************************** | ||
| 298 | PREPARE_FILE MACRO FILENAME ;;AN000; | ||
| 299 | |||
| 300 | MOV BX, OFFSET FILENAME ;;AN000; Pass the address of the filename string | ||
| 301 | CALL PREPARE_FILE_ROUTINE ;;AN000; Call a routine to do that actual work | ||
| 302 | ENDM ;;AN000; | ||
| 303 | ;;************************************************************************** | ||
| 304 | ;; | ||
| 305 | ;; WRITE_LINE: Write a line to the file being constructed. | ||
| 306 | ;; | ||
| 307 | ;; SYNTAX: WRITE_LINE line | ||
| 308 | ;; | ||
| 309 | ;; INPUT: | ||
| 310 | ;; line = The line to write to the file. (ASCII-N format) | ||
| 311 | ;; | ||
| 312 | ;; OUTPUT: CY = 0: No error was encountered. | ||
| 313 | ;; CY = 1: An error was encountered. | ||
| 314 | ;; | ||
| 315 | ;; OPERATION: The line that is passed, has a CR and a LF appended to the | ||
| 316 | ;; end of the line. The data is then stored in a buffer. When the | ||
| 317 | ;; buffer is full, the data is written to the disk. | ||
| 318 | ;; | ||
| 319 | ;;************************************************************************** | ||
| 320 | WRITE_LINE MACRO LINE ;;AN000; | ||
| 321 | |||
| 322 | MOV BX, OFFSET LINE ;;AN000; Pass the address of the line to write | ||
| 323 | CALL WRITE_LINE_ROUTINE ;;AN000; Call a routine to do the actual work | ||
| 324 | ENDM ;;AN000; | ||
| 325 | ;;************************************************************************** | ||
| 326 | ;; | ||
| 327 | ;; SAVE_FILE: Empty the data in the buffer being used to create the file | ||
| 328 | ;; and then close the file. | ||
| 329 | ;; | ||
| 330 | ;; SYNTAX: SAVE_FILE file_name, error_code | ||
| 331 | ;; | ||
| 332 | ;; INPUT: | ||
| 333 | ;; file_name = The name of the file being built. If there has been | ||
| 334 | ;; an error encountered, then the file will be erased. | ||
| 335 | ;; | ||
| 336 | ;; OUTPUT: CY = 0: No error was encountered. | ||
| 337 | ;; CY = 1: An error was encountered. | ||
| 338 | ;; ERROR_CODE will contain the code of the error which | ||
| 339 | ;; occured. | ||
| 340 | ;; | ||
| 341 | ;; OPERATION: The routine will check to see if there is any data left in | ||
| 342 | ;; the buffer. If there is, the data is written to the file being | ||
| 343 | ;; created. The file is then closed. If errors were encountered at | ||
| 344 | ;; anytime during the create process, then the carry flag will be set | ||
| 345 | ;; and the error code will be returned in ERROR_CODE. | ||
| 346 | ;; | ||
| 347 | ;;************************************************************************** | ||
| 348 | SAVE_FILE MACRO FILE_NAME, ERROR_CODE ;;AN000; | ||
| 349 | |||
| 350 | MOV BX, OFFSET FILE_NAME ;;AN000; Get the address of the file name string | ||
| 351 | CALL SAVE_FILE_ROUTINE ;;AN000; Call a subroutine to do the actual work | ||
| 352 | MOV ERROR_CODE, AX ;;AN000; Store the returned error code | ||
| 353 | ENDM ;;AN000; | ||
| 354 | ;;************************************************************************** | ||
| 355 | ;; | ||
| 356 | ;; CHECK_DOS_VERSION: Check DOS Version level is 4.00 | ||
| 357 | ;; | ||
| 358 | ;; SYNTAX: CHECK_DOS_VERSION | ||
| 359 | ;; | ||
| 360 | ;; INPUT: | ||
| 361 | ;; None. | ||
| 362 | ;; | ||
| 363 | ;; OUTPUT: CY = 0: Current DOS Version is 4.00 | ||
| 364 | ;; CY = 1: Current DOS Version is other than level 4.00 | ||
| 365 | ;; | ||
| 366 | ;; OPERATION: DOS function call 30h is performed to get the current DOS | ||
| 367 | ;; version number. If the DOS version is not 4.00, the carry flag is set. | ||
| 368 | ;; | ||
| 369 | ;;************************************************************************** | ||
| 370 | CHECK_DOS_VERSION MACRO ;;AN000; | ||
| 371 | MOV AH, 30H ;;AN000; DOS function number to perform | ||
| 372 | DOSCALL ;;AN000; | ||
| 373 | .IF < AL EQ MAJOR_VERSION > AND ;;AC047;SEH check is now made in VERSIONA.INC | ||
| 374 | .IF < AH EQ MINOR_VERSION > ;;AC047;SEH Check the DOS minor version | ||
| 375 | CLC ;;AN000; This is the correct version | ||
| 376 | .ELSE ;;AN000; | ||
| 377 | STC ;;AN000; This is the incorrect version | ||
| 378 | .ENDIF ;;AN000; | ||
| 379 | ENDM ;;AN000; | ||
| 380 | ;;************************************************************************** | ||
| 381 | ;; | ||
| 382 | ;; SET_DISPLAY_MODE: Set the display mode to 80 column. | ||
| 383 | ;; | ||
| 384 | ;; SYNTAX: SET_DISPLAY_MODE | ||
| 385 | ;; | ||
| 386 | ;; INPUT: | ||
| 387 | ;; None. | ||
| 388 | ;; | ||
| 389 | ;; OUTPUT: | ||
| 390 | ;; None. | ||
| 391 | ;; | ||
| 392 | ;; OPERATION: The Video Interrupt (INT 10H, AH = 0) is performed to set | ||
| 393 | ;; the display to 80 column mode. | ||
| 394 | ;; | ||
| 395 | ;;************************************************************************ | ||
| 396 | SET_DISPLAY_MODE MACRO ;;AN000; | ||
| 397 | |||
| 398 | CALL SET_DISPLAY_MODE_ROUTINE ;;AN000; | ||
| 399 | ENDM ;;AN000; | ||
| 400 | |||
| 401 | ;;************************************************************************ | ||
| 402 | ;; | ||
| 403 | ;; CHECK_EXPANDED_MEMORY: Check if the system supports expanded memory. | ||
| 404 | ;; | ||
| 405 | ;; SYNTAX: CHECK_EXPANDED_MEMORY var_xma | ||
| 406 | ;; | ||
| 407 | ;; INPUT: | ||
| 408 | ;; None. | ||
| 409 | ;; | ||
| 410 | ;; OUTPUT: | ||
| 411 | ;; var_xma = 0: Expanded memory is NOT supported. | ||
| 412 | ;; = 1: Expanded memory is supported. | ||
| 413 | ;; var_mod80 = 0: Not model 80 | ||
| 414 | ;; = 1: Model 80 | ||
| 415 | ;; | ||
| 416 | ;; OPERATION: A call to the system services (INT 15H, AH = C0H) is performed | ||
| 417 | ;; to get the system configuration parameters. (model byte). | ||
| 418 | ;; | ||
| 419 | ;; The Personal System/2 Model 80 (model byte = 0F8h) always support | ||
| 420 | ;; expanded memory. | ||
| 421 | ;; | ||
| 422 | ;; The Personal System/2 Models 50 and 60 (model byte = 0FCh) support | ||
| 423 | ;; expanded memory if the ??? 2 is present. The ??? 2 card has | ||
| 424 | ;; the identity number of F7FEh. F7H is read through the port address | ||
| 425 | ;; 101h and FEH is read through port 100H | ||
| 426 | ;; | ||
| 427 | ;; All other models do not support expanded memory. | ||
| 428 | ;; | ||
| 429 | ;;************************************************************************ | ||
| 430 | CHECK_EXPANDED_MEMORY MACRO VAR_XMA, VAR_MOD80 ;;AC000;JW | ||
| 431 | |||
| 432 | CALL CHK_EX_MEM_ROUTINE ;;AN000; | ||
| 433 | MOV VAR_XMA, SI ;;AN000; | ||
| 434 | MOV VAR_MOD80,BX ;;AN000;JW | ||
| 435 | ENDM ;;AN000; | ||
| 436 | |||
| 437 | INCLUDE MACROS3.INC ;;AN000; | ||
diff --git a/v4.0/src/SELECT/MACROS3.INC b/v4.0/src/SELECT/MACROS3.INC new file mode 100644 index 0000000..13af97e --- /dev/null +++ b/v4.0/src/SELECT/MACROS3.INC | |||
| @@ -0,0 +1,382 @@ | |||
| 1 | ;;**************************************************************************** | ||
| 2 | ;; Assembler MACROS for use with SELECT. | ||
| 3 | ;; File: MACROS3.INC | ||
| 4 | ;; Latest Change Date: July 28, 1987 | ||
| 5 | ;; | ||
| 6 | ;; These macros define powerful assembler verbs neccessary for SELECT. | ||
| 7 | ;; | ||
| 8 | ;; Note: Many of the macros make use of an ASCII-N string for passing | ||
| 9 | ;; parameters. The string is defined below. | ||
| 10 | ;; DW count | ||
| 11 | ;; DB "string_variable",? | ||
| 12 | ;; | ||
| 13 | ;; COUNT is the length of the string and is a word. | ||
| 14 | ;; It is necessary to follow the string with at least one byte for the | ||
| 15 | ;; purpose of changing the ASCII-N string to an ASCII-Z string. | ||
| 16 | ;; | ||
| 17 | ;;**************************************************************************** | ||
| 18 | page ;AN000; | ||
| 19 | ;;************************************************************************;; | ||
| 20 | ;; | ||
| 21 | ;; CHECK_DEFAULT_DRIVE: Determine if default drive is drive A: | ||
| 22 | ;; | ||
| 23 | ;; SYNTAX: CHECK_DEFAULT_DRIVE | ||
| 24 | ;; | ||
| 25 | ;; INPUT: | ||
| 26 | ;; None. | ||
| 27 | ;; | ||
| 28 | ;; OUTPUT: | ||
| 29 | ;; CY = 0: Drive A is the default drive | ||
| 30 | ;; CY = 1: Drive A is NOT the default drive | ||
| 31 | ;; | ||
| 32 | ;; OPERATION: DOS Function Call 19h is performed to get the default drive. | ||
| 33 | ;; If the default drive is not drive A (AL <> 0), the carry flag is set. | ||
| 34 | ;; | ||
| 35 | ;;************************************************************************;; | ||
| 36 | CHECK_DEFAULT_DRIVE MACRO ;;AN000; | ||
| 37 | MOV AH, 19H ;;AN000; Fn. Number for getting current drive | ||
| 38 | DOSCALL ;;AN000; | ||
| 39 | .IF < ZERO AL > ;;AN000; Is A the default drive? | ||
| 40 | CLC ;;AN000; Yes! | ||
| 41 | .ELSE ;;AN000; | ||
| 42 | STC ;;AN000; No! | ||
| 43 | .ENDIF ;;AN000; | ||
| 44 | ENDM ;;AN000; | ||
| 45 | ;;************************************************************************;; | ||
| 46 | ;; | ||
| 47 | ;; CHECK_DISK: Check is the specified fixed disk is present. If disk is | ||
| 48 | ;; present, return disk partition status. | ||
| 49 | ;; | ||
| 50 | ;; SYNTAX: CHECK_DISK immed_disk, var_disk, var_status, var_status_2, buffer | ||
| 51 | ;; | ||
| 52 | ;; INPUT: | ||
| 53 | ;; immed_disk = 1: First fixed disk. | ||
| 54 | ;; = 2: Second fixed disk. | ||
| 55 | ;; | ||
| 56 | ;; OUTPUT: | ||
| 57 | ;; var_disk = 0: Disk not present. | ||
| 58 | ;; = 1: Disk present - No DOS or EDOS partitions | ||
| 59 | ;; = 2: Disk present - DOS or EDOS partitions exist | ||
| 60 | ;; var_status = 01H: Primary DOS partition exists | ||
| 61 | ;; = 02H: Extended DOS partitions exists | ||
| 62 | ;; = 04H: Logical drives exist | ||
| 63 | ;; = 08H: Free space exists in EDOS partition | ||
| 64 | ;; = 10H: Free space exists on disk | ||
| 65 | ;; More than one status bit can be set | ||
| 66 | ;; var_status_2 = 0: There is no free space in EDOS partition and the | ||
| 67 | ;; disk. | ||
| 68 | ;; = 1: There is free space in the EDOS partition. | ||
| 69 | ;; = 2: There is no EDOS partition, but there is free | ||
| 70 | ;; disk space. | ||
| 71 | ;; buffer = Buffer for fixed disk status information. | ||
| 72 | ;; | ||
| 73 | ;; OPERATION: A call is performed to the FDISK utility (GET_DISK_STATUS) | ||
| 74 | ;; to get the status of the specified fixed disk drive. The returned | ||
| 75 | ;; status information is checked and the memory variables are set as | ||
| 76 | ;; specified above. | ||
| 77 | ;; | ||
| 78 | ;;************************************************************************;; | ||
| 79 | CHECK_DISK MACRO IMMED_DISK, VAR_DISK, VAR_STATUS, VAR_STATUS_2, BUFFER ;;AN000; | ||
| 80 | |||
| 81 | LEA DI, BUFFER ;;AN000; | ||
| 82 | MOV AX, IMMED_DISK ;;AN000; | ||
| 83 | CALL CHECK_DISK_ROUTINE ;;AN000; | ||
| 84 | MOV VAR_DISK, CX ;;AN000; | ||
| 85 | MOV VAR_STATUS, BX ;;AN000; | ||
| 86 | MOV VAR_STATUS_2, DX ;;AN000; | ||
| 87 | ENDM ;;AN000; | ||
| 88 | ;;************************************************************************;; | ||
| 89 | ;; | ||
| 90 | ;; CHECK_DISKETTE: Check the type of diskettes attached to the system. | ||
| 91 | ;; | ||
| 92 | ;; SYNTAX: CHECK_DISKETTE var_disk_a, var_disk_b, var_tot, buffer | ||
| 93 | ;; | ||
| 94 | ;; INPUT: | ||
| 95 | ;; buffer = Buffer for IOCTL | ||
| 96 | ;; | ||
| 97 | ;; OUTPUT: | ||
| 98 | ;; var_disk_a = 0FFH Diskette drive A not present | ||
| 99 | ;; = 0 360k diskette (5.25 inch) | ||
| 100 | ;; = 1 740K diskette (3.5 inch) | ||
| 101 | ;; = 2 1.2M diskette (5.25 inch) | ||
| 102 | ;; = 7 1.44M diskette (3.5 inch) | ||
| 103 | ;; var_disk_b = 0FFH Diskette drive B not present | ||
| 104 | ;; = 0, 1, 2, 7 as defined above for diskette A. | ||
| 105 | ;; var_tot = total number of diskettes attached (1 or 2) | ||
| 106 | ;; | ||
| 107 | ;; OPERATION: Interrupt 11H is performed to get equipment status. The number | ||
| 108 | ;; of diskettes attached will be returned as specified above. A call | ||
| 109 | ;; is then made to the IOCTL function of DOS (AH = 44h) to get the type | ||
| 110 | ;; of media the disk drives are. The function returns its data in a | ||
| 111 | ;; 26 byte buffer, where the second byte contains a description of the | ||
| 112 | ;; drive. The codes are as follows: | ||
| 113 | ;; 0 = 320/360 KB 5-1/4-inch | ||
| 114 | ;; 1 = 5-1/4-inch, 1.2 MB | ||
| 115 | ;; 2 = 3-1/2-inch, 720 KB | ||
| 116 | ;; 3 = 8 inch single density | ||
| 117 | ;; 4 = 8 inch double density | ||
| 118 | ;; 5 = Fixed disk | ||
| 119 | ;; 6 = Tape drive | ||
| 120 | ;; 7 = Other | ||
| 121 | ;; | ||
| 122 | ;;************************************************************************;; | ||
| 123 | CHECK_DISKETTE MACRO VAR_DISK_A, VAR_DISK_B, VAR_TOT, BUFFER ;;AN000; | ||
| 124 | INT 11H ;;AN000; See how many diskette drives there are | ||
| 125 | .IF < BIT AL NAND DISKETTES_EXIST > ;;AN000; Are there diskettes? | ||
| 126 | MOV AX, 0 ;;AN000; There are no diskettes. | ||
| 127 | .ELSE ;;AN000; | ||
| 128 | MOV CL,6 ;;AN000; Number of bits to shift | ||
| 129 | SHR AL,CL ;;AN000; Diskette bits are 6 and 7. Shift to right | ||
| 130 | MOV AH, 0 ;;AN000; Clear the high byte | ||
| 131 | INC AX ;;AN000; Make into the actual number of diskettes | ||
| 132 | .IF < AX GT MAX_NUM_DISKETTE > ;;AN000; Are there more then 2 diskette drives? | ||
| 133 | MOV AX, MAX_NUM_DISKETTE ;;AN000; Yes, but we are only concern with two. | ||
| 134 | .ENDIF ;;AN000; | ||
| 135 | .ENDIF ;;AN000; | ||
| 136 | MOV VAR_TOT, AL ;;AN000; Store the number of diskette drives. | ||
| 137 | ;;********************************************************************** | ||
| 138 | ;; Examine diskette drive A first. | ||
| 139 | ;;********************************************************************** | ||
| 140 | MOV VAR_DISK_A, E_DISKETTE_INV ;;AN000; | ||
| 141 | MOV VAR_DISK_B, E_DISKETTE_INV ;;AN000; | ||
| 142 | MOV DI, OFFSET VAR_DISK_A ;;AN000; | ||
| 143 | .FOR BL = 1 TO VAR_TOT ;;AN000; | ||
| 144 | MOV AX, 440DH ;;AN000; | ||
| 145 | MOV CX, 0860H ;;AN000; | ||
| 146 | MOV DX, OFFSET BUFFER ;;AN000; | ||
| 147 | DOSCALL ;;AN000; | ||
| 148 | MOV SI, OFFSET BUFFER + 1 ;;AN000; | ||
| 149 | MOV AL, [SI] ;;AN000; | ||
| 150 | .IF < AL EQ E_DISKETTE_1200 > ;;AN111;JW | ||
| 151 | MOV AL,E_DISKETTE_360 ;;AN111;JW | ||
| 152 | .ENDIF ;;AN111;JW | ||
| 153 | .IF < AL EQ E_DISKETTE_1440 > ;;AN000; | ||
| 154 | .IF < <WORD PTR [SI+3]> NE E_1440_TRACKS > OR ;;AN000; | ||
| 155 | .IF < <WORD PTR [SI+19]> NE E_1440_SECTORS > ;;AN000; | ||
| 156 | MOV AL, E_DISKETTE_INV ;;AN000; | ||
| 157 | .else ;yuk- don't have time to get this working on 1.4M drives | ||
| 158 | mov al, e_diskette_720 ;so pretend there is no such thing | ||
| 159 | .ENDIF ;;AN000; | ||
| 160 | .ENDIF ;;AN000; | ||
| 161 | MOV [DI], AL ;;AN000; | ||
| 162 | MOV DI, OFFSET VAR_DISK_B ;;AN000; | ||
| 163 | .NEXT BL ;;AN000; | ||
| 164 | ;;********************************************************************** | ||
| 165 | ;; Check for compatible A: to B: combinations ;AN000;JW | ||
| 166 | ;;********************************************************************** | ||
| 167 | .IF < VAR_DISK_A eq E_DISKETTE_720 > or ;;AN000;JW | ||
| 168 | .IF < VAR_DISK_A eq E_DISKETTE_1440 > ;;AN000;JW | ||
| 169 | .IF < VAR_DISK_B eq E_DISKETTE_360 > ;;AN000;JW | ||
| 170 | MOV VAR_DISK_B, E_DISKETTE_INV ;;AN000;JW | ||
| 171 | DEC VAR_TOT ;;AN000;JW | ||
| 172 | .ENDIF ;;AN000;JW | ||
| 173 | .ENDIF ;;AN000;JW | ||
| 174 | .IF < VAR_DISK_A eq E_DISKETTE_360 > ;;AN000;JW | ||
| 175 | .IF < VAR_DISK_B eq E_DISKETTE_720 > or ;;AN000;JW | ||
| 176 | .IF < VAR_DISK_B eq E_DISKETTE_1440 > ;;AN000;JW | ||
| 177 | MOV VAR_DISK_B, E_DISKETTE_INV ;;AN000;JW | ||
| 178 | DEC VAR_TOT ;;AN000;JW | ||
| 179 | .ENDIF ;;AN000;JW | ||
| 180 | .ENDIF ;;AN000;JW | ||
| 181 | ;; | ||
| 182 | ENDM ;;AN000; | ||
| 183 | ;;************************************************************************;; | ||
| 184 | ;; | ||
| 185 | ;; CHECK_VALID_MEDIA: Check if the diskettes attached will support | ||
| 186 | ;; installation of SELECT. Also, check if install destination will | ||
| 187 | ;; be selected by user or determined by SELECT. | ||
| 188 | ;; | ||
| 189 | ;; SYNTAX: CHECK_VALID_MEDIA var_disk_a, var_disk_b, var_tot, var_disk, | ||
| 190 | ;; var_def, var_index, var_option | ||
| 191 | ;; | ||
| 192 | ;; INPUT: | ||
| 193 | ;; var_disk_a = diskette A presence and type | ||
| 194 | ;; var_disk_b = diskette B presence and type | ||
| 195 | ;; var_tot = total number of dikettes | ||
| 196 | ;; var_disk = 0: first fixed disk is not present | ||
| 197 | ;; > 0: first fixed disk is present | ||
| 198 | ;; | ||
| 199 | ;; OUTPUT: | ||
| 200 | ;; CY = 0: Success variables are returned as defined below. | ||
| 201 | ;; CY = 1: Error - invalid media | ||
| 202 | ;; var_def = 0 use default destination drive | ||
| 203 | ;; = 1 default destination drive not applicable | ||
| 204 | ;; var_index = 1 default destination is drive C | ||
| 205 | ;; = 2 default destination is drive B | ||
| 206 | ;; var_option = 1 possible drive B or C | ||
| 207 | ;; = 2 possible drive A or C | ||
| 208 | ;; = 3 possible drive A or B or C | ||
| 209 | ;; = 4 possible drive A or B | ||
| 210 | ;; | ||
| 211 | ;; OPERATION: The diskette drive types are checked for valid media type. | ||
| 212 | ;; If the diskette media types are valid, a check is made to determine if | ||
| 213 | ;; install destination will be user selected or will be determined by | ||
| 214 | ;; SELECT. The following checks are made. | ||
| 215 | ;; | ||
| 216 | ;; - if one diskette, return valid media and default destination is A | ||
| 217 | ;; | ||
| 218 | ;; - If two diskettes only, return valid and: | ||
| 219 | ;; if A = B, default = B | ||
| 220 | ;; if A <> B, default = A | ||
| 221 | ;; if A and B are mixed 720 and 1.44, destination option is A or B | ||
| 222 | ;; | ||
| 223 | ;; - If one diskette and a fixed disk only, return valid media and | ||
| 224 | ;; destination option is drive A or C. | ||
| 225 | ;; | ||
| 226 | ;; - If two diskettes and a fixed disk, return valid media and: | ||
| 227 | ;; if A = B, destination option is B or C | ||
| 228 | ;; if A <> B, destination option is A or C | ||
| 229 | ;; if A and B are mixed 720 and 1.44, destination option is | ||
| 230 | ;; A or B or C | ||
| 231 | ;; | ||
| 232 | ;;************************************************************************;; | ||
| 233 | CHECK_VALID_MEDIA MACRO VAR_DISK_A, VAR_DISK_B, VAR_TOT, VAR_DISK, VAR_DEF, VAR_INDEX, VAR_OPTION ;;AN111;JW | ||
| 234 | |||
| 235 | MOV AL, VAR_DISK_A ;;AN111;JW | ||
| 236 | MOV BL, VAR_DISK_B ;;AN111;JW | ||
| 237 | MOV SI, VAR_DISK ;;AN111;JW | ||
| 238 | CALL CHECK_VALID_MEDIA_ROUTINE ;;AN111;JW | ||
| 239 | MOV VAR_DEF, CL ;;AN111;JW | ||
| 240 | MOV VAR_INDEX, DX ;;AN111;JW | ||
| 241 | MOV VAR_OPTION, DI ;;AN111;JW | ||
| 242 | ENDM ;;AN111;JW | ||
| 243 | ;;************************************************************************;; | ||
| 244 | ;; | ||
| 245 | ;; SCAN_DISK_TABLE: Scan the specified disk status table from the | ||
| 246 | ;; specified index item for specified field and return status information. | ||
| 247 | ;; | ||
| 248 | ;; SYNTAX: SCAN_DISK_TABLE immed_disk, var_index, var_ref | ||
| 249 | ;; | ||
| 250 | ;; INPUT: | ||
| 251 | ;; immed_disk = 1: First fixed disk | ||
| 252 | ;; = 2: Second fixed disk | ||
| 253 | ;; var_index = Index of the information to return | ||
| 254 | ;; | ||
| 255 | ;; OUTPUT: | ||
| 256 | ;; var_ret = 0: Success - Index into table is valid | ||
| 257 | ;; = 1: Error - Index invalid or end of table | ||
| 258 | ;; N_NAME_PART = Partition name. | ||
| 259 | ;; N_SIZE_PART = Partition size. | ||
| 260 | ;; N_STATUS_PART = Partition status | ||
| 261 | ;; P_DRIVE_PART = Drive letter assigned. | ||
| 262 | ;; | ||
| 263 | ;; OPERATION: | ||
| 264 | ;; Starts scanning the disk table from the point indicated by var_index | ||
| 265 | ;; for either the name, status or type. The table is scanned until either | ||
| 266 | ;; the desired entry is found, or the end of the table is reached. If | ||
| 267 | ;; the end of the table is reached before a marching entry is found, then | ||
| 268 | ;; var_ret returns 1, else if an entry is found, it returns 0. | ||
| 269 | ;; If found, var_index will also return the index of the entry. | ||
| 270 | ;; | ||
| 271 | ;; Note: The index of the first entry in the table is 1. | ||
| 272 | ;; | ||
| 273 | ;;************************************************************************;; | ||
| 274 | SCAN_DISK_TABLE MACRO IMMED_DISK, VAR_INDEX, VAR_RET ;;AN000; | ||
| 275 | |||
| 276 | MOV CX, IMMED_DISK ;;AN000; | ||
| 277 | MOV AX, VAR_INDEX ;;AN000; | ||
| 278 | CALL SCAN_DISK_TABLE_ROUTINE ;;AN000; | ||
| 279 | MOV VAR_RET, AX ;;AN000; | ||
| 280 | ENDM ;;AN000; | ||
| 281 | ;;************************************************************************;; | ||
| 282 | ;; | ||
| 283 | ;; UPDATE_DISK_TABLE: Update the specifed disk status table for the | ||
| 284 | ;; specified index item. | ||
| 285 | ;; | ||
| 286 | ;; SYNTAX: UPDATE_DISK_TABLE immed_disk, var_index, var_ref | ||
| 287 | ;; | ||
| 288 | ;; INPUT: | ||
| 289 | ;; immed_disk = 1: First fixed disk | ||
| 290 | ;; = 2: Second fixed disk | ||
| 291 | ;; var_index = Index into table | ||
| 292 | ;; | ||
| 293 | ;; OUTPUT: | ||
| 294 | ;; var_ret = 0: Success - Index into table is valid | ||
| 295 | ;; = 1: Error - Index into table is not valid | ||
| 296 | ;; partition name = N_NAME_PART | ||
| 297 | ;; partition size = N_SIZE_PART | ||
| 298 | ;; partition status = N_STATUS_PART | ||
| 299 | ;; partition type = N_TYPE_PART | ||
| 300 | ;; drive letter = P_DRIVE_PART | ||
| 301 | ;; | ||
| 302 | ;; OPERATION: If the index into the disk table is valid, the disk table | ||
| 303 | ;; is updated for the specifed index. Disk status information is obtained | ||
| 304 | ;; from pre-defined locations as specified above. | ||
| 305 | ;; | ||
| 306 | ;;************************************************************************;; | ||
| 307 | UPDATE_DISK_TABLE MACRO IMMED_DISK, VAR_INDEX, VAR_REF ;;AN000; | ||
| 308 | |||
| 309 | MOV CX, IMMED_DISK ;;AN000; | ||
| 310 | MOV AX, VAR_INDEX ;;AN000; | ||
| 311 | CALL UPDATE_DISK_TABLE_ROUTINE ;;AN000; | ||
| 312 | MOV VAR_REF, AX ;;AN000; | ||
| 313 | ENDM ;;AN000; | ||
| 314 | ;;************************************************************************;; | ||
| 315 | ;; | ||
| 316 | ;; GET_PARTITION_SIZE: Return DOS and EDOS partition size in ASCII-N format. | ||
| 317 | ;; | ||
| 318 | ;; SYNTAX: GET_PARTITION_SIZE var_tot, var_dos, name_dos, name_edos | ||
| 319 | ;; | ||
| 320 | ;; INPUT: | ||
| 321 | ;; var_tot = Free disk space | ||
| 322 | ;; var_dos = Size of DOS partition | ||
| 323 | ;; | ||
| 324 | ;; OUTPUT: | ||
| 325 | ;; name_dos = Size of DOS partition in ASCII-N format. | ||
| 326 | ;; name_edos = Size of EDOS partition in ASCII-N format. | ||
| 327 | ;; | ||
| 328 | ;; OPERATION: The DOS partition size is converted to ASCII-N format. | ||
| 329 | ;; The size of the Extended DOS partition is obtained by subtracting | ||
| 330 | ;; the size of DOS partition from the free disk space. If the size of | ||
| 331 | ;; any partition is zero, a zero string length is returned. | ||
| 332 | ;; | ||
| 333 | ;;************************************************************************;; | ||
| 334 | GET_PARTITION_SIZE MACRO VAR_TOT, VAR_DOS, NAME_DOS, NAME_EDOS ;;AN000; | ||
| 335 | ;; | ||
| 336 | PUSH VAR_TOT ;;AN000; Save the variable | ||
| 337 | MOV AX, VAR_DOS ;;AN000; Size of the DOS partition. | ||
| 338 | SUB VAR_TOT, AX ;;AN000; Subtract the dos partition size | ||
| 339 | WORD_TO_CHAR VAR_TOT, NAME_EDOS ;;AN000; Convert binay values to ASCII | ||
| 340 | WORD_TO_CHAR VAR_DOS, NAME_DOS ;;AN000; | ||
| 341 | POP VAR_TOT ;;AN000; | ||
| 342 | ENDM ;;AN000; | ||
| 343 | ;;************************************************************************;; | ||
| 344 | ;; | ||
| 345 | ;; CHECK_MACHINE: Return the model byte | ||
| 346 | ;; | ||
| 347 | ;; SYNTAX: CHECK_MACHINE mac_type p_flag | ||
| 348 | ;; | ||
| 349 | ;; INPUT: | ||
| 350 | ;; | ||
| 351 | ;; OUTPUT: | ||
| 352 | ;; mac_type = model byte | ||
| 353 | ;; p_flag = PS2 presence (E_YES, E_NO) | ||
| 354 | ;; | ||
| 355 | ;; OPERATION: An INT 15H is executed to return a pointer to the system | ||
| 356 | ;; descriptor vector. The model byte is retrieved from this vector | ||
| 357 | ;; and placed in the supplied variable. The ps2 flag is also set. | ||
| 358 | ;; | ||
| 359 | ;;************************************************************************;; | ||
| 360 | CHECK_MACHINE MACRO MAC_TYPE, P_FLAG ;;AN000;JW | ||
| 361 | ;; | ||
| 362 | MOV AH,0C0H ;;AN000; INT 15H system config request | ||
| 363 | INT 15H ;;AN000; system services | ||
| 364 | .IF < nc > ;;AN000; | ||
| 365 | MOV AH,ES: BYTE PTR [BX+2] ;;AN000; get the model byte | ||
| 366 | .ELSE ;;AN000; | ||
| 367 | MOV AH,00 ;;AN000; | ||
| 368 | .ENDIF ;;AN000; | ||
| 369 | MOV MAC_TYPE,AH ;;AN000; save the model byte | ||
| 370 | MOV P_FLAG,E_YES ;;AN000; | ||
| 371 | ;; | ||
| 372 | .IF < AH eq 0 > or ;;AN000; if old pc | ||
| 373 | .IF < AH eq 0FBH > or ;;AN000; if pc XT | ||
| 374 | .IF < AH eq 0F9H > or ;;AN000; if pc convertible | ||
| 375 | .IF < AH eq 0FCH > and ;;AN000; if pc AT and | ||
| 376 | .IF <<ES:BYTE PTR [BX+3]> le 02 > ;;AN000; sub-model byte le 2 | ||
| 377 | MOV P_FLAG,E_NO ;;AN000; not a ps2 | ||
| 378 | .ENDIF ;;AN000; | ||
| 379 | ENDM ;;AN000; | ||
| 380 | |||
| 381 | INCLUDE MACROS4.INC ;AN000; | ||
| 382 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/MACROS4.INC b/v4.0/src/SELECT/MACROS4.INC new file mode 100644 index 0000000..43278d5 --- /dev/null +++ b/v4.0/src/SELECT/MACROS4.INC | |||
| @@ -0,0 +1,345 @@ | |||
| 1 | ;;**************************************************************************** | ||
| 2 | ;; Assembler MACROS for use with SELECT. | ||
| 3 | ;; File: MACROS4.INC | ||
| 4 | ;; Latest Change Date: July 16, 1987 | ||
| 5 | ;; | ||
| 6 | ;; These macros define powerful assembler verbs neccessary for SELECT. | ||
| 7 | ;; | ||
| 8 | ;; Note: Many of the macros make use of an ASCII-N string for passing | ||
| 9 | ;; parameters. The string is defined below. | ||
| 10 | ;; DW count | ||
| 11 | ;; DB "string_variable",? | ||
| 12 | ;; | ||
| 13 | ;; COUNT is the length of the string and is a word. | ||
| 14 | ;; It is necessary to follow the string with at least one byte for the | ||
| 15 | ;; purpose of changing the ASCII-N string to an ASCII-Z string. | ||
| 16 | ;; | ||
| 17 | ;;**************************************************************************** | ||
| 18 | page ;;AN000; | ||
| 19 | ;;**************************************************************************** | ||
| 20 | ;; | ||
| 21 | ;; GET_DATE: Get the current system date. | ||
| 22 | ;; | ||
| 23 | ;; SYNTAX: GET_DATE var_year, var_month, var_day | ||
| 24 | ;; | ||
| 25 | ;; INPUT: NONE | ||
| 26 | ;; | ||
| 27 | ;; OUTPUT: CY = 0: CURRENT SYSTEM DATE IS 1/1/80 | ||
| 28 | ;; CY = 1: CURRENT SYSTEM DATE IS NOT 1/1/80 | ||
| 29 | ;; VAR_YEAR - SYSTEM YEAR (16 BITS) | ||
| 30 | ;; VAR_MONTH - SYSTEM MONTH (16 BITS) | ||
| 31 | ;; VAR_DAY - SYSTEM DAY (16 BITS) | ||
| 32 | ;; | ||
| 33 | ;; OPERATION: DOS function call 2Ah is performed to get the current | ||
| 34 | ;; system date. If the system date is not 1/1/80, the | ||
| 35 | ;; carry flag is set. | ||
| 36 | ;; | ||
| 37 | ;;**************************************************************************** | ||
| 38 | GET_DATE MACRO VAR_YEAR, VAR_MONTH, VAR_DAY ;;AN000; | ||
| 39 | |||
| 40 | MOV AH,2AH ;;AN000; get time dos interrupt | ||
| 41 | DOSCALL ;;AN000; | ||
| 42 | MOV VAR_YEAR, CX ;;AN000; Save the date. | ||
| 43 | MOV CH,0 ;;AN000; Clear the byte | ||
| 44 | MOV CL,DH ;;AN000; | ||
| 45 | MOV VAR_MONTH, CX ;;AN000; | ||
| 46 | MOV CL,DL ;;AN000; | ||
| 47 | MOV VAR_DAY, CX ;;AN000; | ||
| 48 | .IF < VAR_YEAR EQ 1980 > AND ;;AN000; See if it is the base year. | ||
| 49 | .IF < DX EQ 0101H> ;;AN000; i.e. 1/1/80 | ||
| 50 | CLC ;;AN000; Yes it is. | ||
| 51 | .ELSE ;;AN000; | ||
| 52 | STC ;;AN000; | ||
| 53 | .ENDIF ;;AN000; | ||
| 54 | |||
| 55 | ENDM ;;AN000; | ||
| 56 | ;;**************************************************************************** | ||
| 57 | ;; | ||
| 58 | ;; GET_TIME: Get current system time. | ||
| 59 | ;; | ||
| 60 | ;; SYNTAX: GET_TIME var_hour, var_minutes, var_seconds | ||
| 61 | ;; | ||
| 62 | ;; INPUT: None. | ||
| 63 | ;; | ||
| 64 | ;; OUTPUT: VAR_HOUR - SYSTEM HOUR (16 BITS) | ||
| 65 | ;; VAR_MINUTES - SYSTEM MINUTES (16 BITS) | ||
| 66 | ;; VAR_SECONDS - SYSTEM SECONDS (16 BITS) | ||
| 67 | ;; | ||
| 68 | ;; OPERATION: DOS function call 2Ch is performed to get the current | ||
| 69 | ;; system time. | ||
| 70 | ;; | ||
| 71 | ;; | ||
| 72 | ;;**************************************************************************** | ||
| 73 | GET_TIME MACRO VAR_HOUR, VAR_MINUTES, VAR_SECONDS ;;AN000; | ||
| 74 | |||
| 75 | |||
| 76 | MOV AH,2CH ;;AN000; get time dos interrupt | ||
| 77 | DOSCALL ;;AN000; | ||
| 78 | |||
| 79 | MOV AH, 0 ;;AN000; | ||
| 80 | MOV AL, CH ;;AN000; | ||
| 81 | MOV VAR_HOUR, AX ;;AN000; | ||
| 82 | MOV AL, CL ;;AN000; | ||
| 83 | MOV VAR_MINUTES, AX ;;AN000; | ||
| 84 | MOV AL, DH ;;AN000; | ||
| 85 | MOV VAR_SECONDS, AX ;;AN000; | ||
| 86 | |||
| 87 | |||
| 88 | ENDM ;;AN000; | ||
| 89 | ;;************************************************************************;; | ||
| 90 | ;; SET_DATE: Sets the system date | ||
| 91 | ;; | ||
| 92 | ;; SYNTAX: SET_DATE var_year, var_month, var_day | ||
| 93 | ;; | ||
| 94 | ;; INPUT: var_year - 1980 - 2099 ( 16 bits ) | ||
| 95 | ;; var_month - 1 - 12 ( 16 bits ) | ||
| 96 | ;; var_day - 1 - 31 ( 16 bits ) | ||
| 97 | ;; | ||
| 98 | ;; OUTPUT: CY = 0: SUCCESSFUL | ||
| 99 | ;; CY = 1: ERROR - Date is not valid | ||
| 100 | ;; | ||
| 101 | ;; OPERATION: DOS function call 2Bh is performed to set the system date. | ||
| 102 | ;; If the date is not valid, the carry flag is set. | ||
| 103 | ;; | ||
| 104 | ;;************************************************************;; | ||
| 105 | SET_DATE MACRO VAR_YEAR, VAR_MONTH, VAR_DAY ;;AN000; | ||
| 106 | MOV CX, VAR_YEAR ;;AN000; | ||
| 107 | MOV AX, VAR_MONTH ;;AN000; | ||
| 108 | MOV DH, AL ;;AN000; | ||
| 109 | MOV AX, VAR_DAY ;;AN000; | ||
| 110 | MOV DL, AL ;;AN000; | ||
| 111 | MOV AH,2BH ;;AN000; set date dos interrupt | ||
| 112 | DOSCALL ;;AN000; | ||
| 113 | .IF < ZERO AL > ;;AN000; | ||
| 114 | CLC ;;AN000; | ||
| 115 | .ELSE ;;AN000; | ||
| 116 | STC ;;AN000; | ||
| 117 | .ENDIF ;;AN000; | ||
| 118 | ENDM ;;AN000; | ||
| 119 | ;;**************************************************************************** | ||
| 120 | ;; | ||
| 121 | ;; SET_TIME: Sets the current system time. | ||
| 122 | ;; | ||
| 123 | ;; SYNTAX: SET_TIME var_hour, var_minutes, var_seconds | ||
| 124 | ;; | ||
| 125 | ;; INPUT: var_hour = 0 - 23 ( 16 BITS ) | ||
| 126 | ;; var_minutes = 0 - 59 ( 16 BITS ) | ||
| 127 | ;; var_seconds = 0 - 59 ( 16 BITS ) | ||
| 128 | ;; hundredth = Assumed to be zero | ||
| 129 | ;; | ||
| 130 | ;; OUTPUT: CY = 0: SUCCESSFUL | ||
| 131 | ;; CY = 1: Error - Date is not valid | ||
| 132 | ;; | ||
| 133 | ;; OPERATION: DOS function call 2Dh is performed to set the current system | ||
| 134 | ;; time. If the time is not valid, the carry flag will be set. | ||
| 135 | ;; | ||
| 136 | ;;**************************************************************************** | ||
| 137 | SET_TIME MACRO VAR_HOUR, VAR_MINUTES, VAR_SECONDS ;;AN000; | ||
| 138 | |||
| 139 | MOV AX, VAR_HOUR ;;AN000; | ||
| 140 | MOV CH, AL ;;AN000; | ||
| 141 | MOV AX, VAR_MINUTES ;;AN000; | ||
| 142 | MOV CL, AL ;;AN000; | ||
| 143 | MOV AX, VAR_SECONDS ;;AN000; | ||
| 144 | MOV DH, AL ;;AN000; | ||
| 145 | MOV DL, 0 ;;AN000; Hundredths of seconds is 0 | ||
| 146 | MOV AH,2DH ;;AN000; set time dos interrupt | ||
| 147 | DOSCALL ;;AN000; | ||
| 148 | .IF < ZERO AL > ;;AN000; | ||
| 149 | CLC ;;AN000; | ||
| 150 | .ELSE ;;AN000; | ||
| 151 | STC ;;AN000; | ||
| 152 | .ENDIF ;;AN000; | ||
| 153 | ENDM ;;AN000; | ||
| 154 | ;;**************************************************************************** | ||
| 155 | ;; | ||
| 156 | ;; CHECK_TIME_CHANGE: Check if user entered time is different from the | ||
| 157 | ;; specified system time. | ||
| 158 | ;; | ||
| 159 | ;; SYNTAX: CHECK_TIME_CHANGE: var_u_hour, var_u_min, var_u_sec, | ||
| 160 | ;; var_s_hour, var_s_min, var_s_sec | ||
| 161 | ;; | ||
| 162 | ;; INPUT: var_u_hour = User specified hour ( 16 bits ) | ||
| 163 | ;; var_u_min = User specified minutes ( 16 bits ) | ||
| 164 | ;; var_u_sec = User specified seconds ( 16 bits ) | ||
| 165 | ;; var_s_hour = System hour ( 16 bits ) | ||
| 166 | ;; var_s_min = System min ( 16 bits ) | ||
| 167 | ;; var_s_sec = System sec ( 16 bits ) | ||
| 168 | ;; | ||
| 169 | ;; OUTPUT: CY = 0: User specified time is the same as the system time. | ||
| 170 | ;; CY = 1: User specified time is different from the system time. | ||
| 171 | ;; | ||
| 172 | ;; OPERATION: The user time and system time are compared and the carry | ||
| 173 | ;; flag is updated as specified above. | ||
| 174 | ;; | ||
| 175 | ;;************************************************************************;; | ||
| 176 | CHECK_TIME_CHANGE MACRO VAR_U_HOUR, VAR_U_MIN, VAR_U_SEC, VAR_S_HOUR, VAR_S_MIN, VAR_S_SEC ;;AN000; | ||
| 177 | LOCAL EXIT_CHECK_TIME_CHANGE ;;AN000; | ||
| 178 | MOV AX, VAR_S_HOUR ;;AN000; | ||
| 179 | .IF < VAR_U_HOUR EQ AX > ;;AN000; | ||
| 180 | MOV AX, VAR_S_MIN ;;AN000; | ||
| 181 | .IF < VAR_U_MIN EQ AX > ;;AN000; | ||
| 182 | MOV AX, VAR_S_SEC ;;AN000; | ||
| 183 | .IF < VAR_U_SEC EQ AX > ;;AN000; | ||
| 184 | CLC ;;AN000; | ||
| 185 | JMP EXIT_CHECK_TIME_CHANGE;AN000; | ||
| 186 | .ENDIF ;;AN000; | ||
| 187 | .ENDIF ;;AN000; | ||
| 188 | .ENDIF ;;AN000; | ||
| 189 | STC ;;AN000; | ||
| 190 | EXIT_CHECK_TIME_CHANGE: ;;AN000; | ||
| 191 | ENDM ;;AN000; | ||
| 192 | ;;**************************************************************************** | ||
| 193 | ;; | ||
| 194 | ;; CHECK_DATE_CHANGE: Check if user entered date is different from the | ||
| 195 | ;; specified system date. | ||
| 196 | ;; | ||
| 197 | ;; SYNTAX: CHECK_DATE_CHANGE: var_u_year, var_u_month, var_u_day, | ||
| 198 | ;; var_s_year, var_s_month, var_s_day | ||
| 199 | ;; | ||
| 200 | ;; INPUT: var_u_year = User specified year ( 16 bits ) | ||
| 201 | ;; var_u_month = User specified month ( 16 bits ) | ||
| 202 | ;; var_u_day = User specified day ( 16 bits ) | ||
| 203 | ;; var_s_year = System year ( 16 bits ) | ||
| 204 | ;; var_s_month = System month ( 16 bits ) | ||
| 205 | ;; var_s_day = System day ( 16 bits ) | ||
| 206 | ;; | ||
| 207 | ;; OUTPUT: CY = 0: User specified date is the same as the system date. | ||
| 208 | ;; CY = 1: User specified date is different from the system date. | ||
| 209 | ;; | ||
| 210 | ;; OPERATION: The user date and system date are compared and the carry | ||
| 211 | ;; flag is updated as specified above. | ||
| 212 | ;; | ||
| 213 | ;;************************************************************************;; | ||
| 214 | CHECK_DATE_CHANGE MACRO VAR_U_YEAR, VAR_U_MONTH, VAR_U_DAY, VAR_S_YEAR, VAR_S_MONTH, VAR_S_DAY ;;AN000; | ||
| 215 | LOCAL EXIT_CHECK_DATE_CHANGE ;;AN000; | ||
| 216 | MOV AX, VAR_S_YEAR ;;AN000; | ||
| 217 | .IF < VAR_U_YEAR EQ AX > ;;AN000; | ||
| 218 | MOV AX, VAR_S_MONTH ;;AN000; | ||
| 219 | .IF < VAR_U_MONTH EQ AX > ;;AN000; | ||
| 220 | MOV AX, VAR_S_DAY ;;AN000; | ||
| 221 | .IF < VAR_U_DAY EQ AX > ;;AN000; | ||
| 222 | CLC ;;AN000; | ||
| 223 | JMP EXIT_CHECK_DATE_CHANGE ;;AN000; | ||
| 224 | .ENDIF ;;AN000; | ||
| 225 | .ENDIF ;;AN000; | ||
| 226 | .ENDIF ;;AN000; | ||
| 227 | STC ;;AN000; | ||
| 228 | EXIT_CHECK_DATE_CHANGE: ;;AN000; | ||
| 229 | ENDM ;;AN000; | ||
| 230 | ;;**************************************************************************** | ||
| 231 | ;; | ||
| 232 | ;; SET_FILE_DATE_TIME: Set a files date and time. | ||
| 233 | ;; | ||
| 234 | ;; SYNTAX: SET_FILE_DATE_TIME file_handle, var_hour, var_minutes, var_seconds | ||
| 235 | ;; var_year, var_month, var_day | ||
| 236 | ;; | ||
| 237 | ;; INPUT: | ||
| 238 | ;; file_handle = The handle of the file to set the time/date of. | ||
| 239 | ;; var_hour = 0 - 23 ( 16 bits ) | ||
| 240 | ;; var_minutes = 0 - 59 ( 16 bits ) | ||
| 241 | ;; var_seconds = 0 - 59 ( 16 bits ) | ||
| 242 | ;; var_year = 1980 - 2099 ( 16 bits ) | ||
| 243 | ;; var_month = 1 - 12 ( 16 bits ) | ||
| 244 | ;; var_day = 1 - 31 ( 16 bits ) | ||
| 245 | ;; | ||
| 246 | ;; OUTPUTS: | ||
| 247 | ;; CY = 0: Success | ||
| 248 | ;; CY = 1: Error - Date/Time format is invalid | ||
| 249 | ;; | ||
| 250 | ;; OPERATION: The data and time values are converted to internal formats | ||
| 251 | ;; defined below and DOS function call 57h is performed to set the | ||
| 252 | ;; files date and time. | ||
| 253 | ;; | ||
| 254 | ;; | ||
| 255 | ;; The internal time format is: | ||
| 256 | ;; bits 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 | ||
| 257 | ;; h h h h h m m m m m m x x x x x | ||
| 258 | ;; | ||
| 259 | ;; h - Binary number of hours ( 0 - 23 ) | ||
| 260 | ;; m - Binary number of minutes ( 0 - 59 ) | ||
| 261 | ;; x - Binary number of two second increments | ||
| 262 | ;; | ||
| 263 | ;; The internal date format is: | ||
| 264 | ;; bits 15 14 13 12 11 10 09 08 07 06 05 04 03 02 01 00 | ||
| 265 | ;; y y y y y y y m m m m d d d d d | ||
| 266 | ;; | ||
| 267 | ;; y - 0 - 119 ( 1980 - 2099 ) | ||
| 268 | ;; m - 1 - 31 | ||
| 269 | ;; d - 1 - 31 | ||
| 270 | ;; | ||
| 271 | ;;**************************************************************************** | ||
| 272 | SET_FILE_DATE_TIME MACRO FILE_HANDLE, VAR_HOUR, VAR_MINUTES, VAR_SECONDS, VAR_YEAR, VAR_MONTH, VAR_DAY ;;AN000; | ||
| 273 | CALL HOOK_INT_24 ;;AN000; | ||
| 274 | ;; | ||
| 275 | ;; Handle the file's time first | ||
| 276 | ;; | ||
| 277 | MOV BX, VAR_SECONDS ;;AN000; Get the number of seconds | ||
| 278 | SHR BX, 1 ;;AN000; Need the number of 2 seconds | ||
| 279 | MOV AX, VAR_MINUTES ;;AN000; Get the number of minutes | ||
| 280 | MOV CL, 5 ;;AN000; | ||
| 281 | SHL AX, CL ;;AN000; Least significant bit #5 | ||
| 282 | OR BX, AX ;;AN000; | ||
| 283 | MOV AX, VAR_HOUR ;;AN000; Get the number of hours | ||
| 284 | XCHG AH, AL ;;AN000; | ||
| 285 | MOV CL, 3 ;;AN000; | ||
| 286 | SHL AX, CL ;;AN000; Put hours at bit #11 | ||
| 287 | OR BX, AX ;;AN000; | ||
| 288 | ;; | ||
| 289 | ;; Handle the file's date now | ||
| 290 | ;; | ||
| 291 | MOV DX, VAR_DAY ;;AN000; Get the day. | ||
| 292 | MOV AX, VAR_MONTH ;;AN000; | ||
| 293 | MOV CL, 5 ;;AN000; | ||
| 294 | SHL AX, CL ;;AN000; Least significant month bit #5 | ||
| 295 | OR DX, AX ;;AN000; | ||
| 296 | MOV AX, VAR_YEAR ;;AN000; Get the year (1980 - 2099) | ||
| 297 | SUB AX, 1980 ;;AN000; Put in the range 0 - 119 | ||
| 298 | XCHG AL, AH ;;AN000; | ||
| 299 | SHL AX, 1 ;;AN000; | ||
| 300 | OR DX, AX ;;AN000; | ||
| 301 | |||
| 302 | MOV CX, BX ;;AN000; | ||
| 303 | MOV BX, FILE_HANDLE ;;AN000; | ||
| 304 | MOV AX, 5701H ;;AN000; | ||
| 305 | DOSCALL ;;AN000; | ||
| 306 | CALL RESTORE_INT_24 ;;AN000; | ||
| 307 | |||
| 308 | ENDM ;;AN000; | ||
| 309 | ;;************************************************************************;; | ||
| 310 | ;; | ||
| 311 | ;; CHECK_CLOCK: Check if the real time clock is operating. | ||
| 312 | ;; | ||
| 313 | ;; SYNTAX: CHECK_CLOCK | ||
| 314 | ;; | ||
| 315 | ;; INPUT: | ||
| 316 | ;; None. | ||
| 317 | ;; | ||
| 318 | ;; OUTPUT: | ||
| 319 | ;; CY = 0: Real time clock is operating | ||
| 320 | ;; CY = 1: Real time clock is not operating | ||
| 321 | ;; | ||
| 322 | ;; OPERATION: A call to the real time clock services (INT 1Ah, AH = 02h) | ||
| 323 | ;; is performed to get the real time clock. If the clock is operating, | ||
| 324 | ;; the time is returned in the registers and CF = 0 is returned. If the | ||
| 325 | ;; clock is not operating, CF = 1 is returned. | ||
| 326 | ;; | ||
| 327 | ;; Since the older machines may not have the clock services interrupt, | ||
| 328 | ;; the registers are set to zero before the call is made and checked for | ||
| 329 | ;; non-zero on return. | ||
| 330 | ;; | ||
| 331 | ;;**************************************************************************** | ||
| 332 | CHECK_CLOCK MACRO ;;AN000; | ||
| 333 | MOV CX, 0 ;;AN000; Zero the registers for later comparison | ||
| 334 | MOV DX, 0 ;;AN000; | ||
| 335 | MOV AH, 02 ;;AN000; | ||
| 336 | INT 1AH ;;AN000; Time of day service routine | ||
| 337 | .IF < ZERO CX > AND ;;AN000; If CX and DH are zero, clock is not there. | ||
| 338 | .IF < ZERO DH > ;;AN000; | ||
| 339 | STC ;;AN000; | ||
| 340 | .ELSE ;;AN000; | ||
| 341 | CLC ;;AN000; The clock is there! | ||
| 342 | .ENDIF ;;AN000; | ||
| 343 | |||
| 344 | ENDM ;;AN000; | ||
| 345 | INCLUDE MACROS5.INC ;;AN000; | ||
diff --git a/v4.0/src/SELECT/MACROS5.INC b/v4.0/src/SELECT/MACROS5.INC new file mode 100644 index 0000000..f6d40c0 --- /dev/null +++ b/v4.0/src/SELECT/MACROS5.INC | |||
| @@ -0,0 +1,538 @@ | |||
| 1 | ;;**************************************************************************** | ||
| 2 | ;; Assembler MACROS for use with SELECT. | ||
| 3 | ;; File: MACROS5.INC | ||
| 4 | ;; Latest Change Date: July 28, 1987 | ||
| 5 | ;; | ||
| 6 | ;; These macros define powerful assembler verbs neccessary for SELECT. | ||
| 7 | ;; | ||
| 8 | ;; Note: Many of the macros make use of an ASCII-N string for passing | ||
| 9 | ;; parameters. The string is defined below. | ||
| 10 | ;; DW count | ||
| 11 | ;; DB "string_variable",? | ||
| 12 | ;; | ||
| 13 | ;; COUNT is the length of the string and is a word. | ||
| 14 | ;; It is necessary to follow the string with at least one byte for the | ||
| 15 | ;; purpose of changing the ASCII-N string to an ASCII-Z string. | ||
| 16 | ;; | ||
| 17 | ;;**************************************************************************** | ||
| 18 | page ;;AN000; | ||
| 19 | ;;************************************************************************;; | ||
| 20 | ;; | ||
| 21 | ;; GET_COUNTRY_DEFAULTS: Get country, keyboard and codepage for the | ||
| 22 | ;; specified entry from the CTY_TABLE. | ||
| 23 | ;; | ||
| 24 | ;; SYNTAX: GET_COUNTRY_DEFAULTS VAR_TABLE, VAR_INDEX | ||
| 25 | ;; | ||
| 26 | ;; INPUT: | ||
| 27 | ;; VAR_TABLE = 1: Use CTY_TAB_A | ||
| 28 | ;; = 2: Use CTY_TAB_B | ||
| 29 | ;; VAR_INDEX = index into country list table | ||
| 30 | ;; | ||
| 31 | ;; OUTPUT: | ||
| 32 | ;; N_COUNTRY = Country code | ||
| 33 | ;; N_KYBD_VAL = 0: Keyboard code is not valid | ||
| 34 | ;; = 1: Keyboard code is valid | ||
| 35 | ;; S_KEYBOARD = Keyboard code (ASCII-N format) | ||
| 36 | ;; N_CP_PRI = Primary code page | ||
| 37 | ;; N_CP_SEC = Secondary code page | ||
| 38 | ;; N_DESIGNATES = Number of disignates | ||
| 39 | ;; N_CPSW = Cpsw status | ||
| 40 | ;; N_CTY_RES = Reserved | ||
| 41 | ;; | ||
| 42 | ;; | ||
| 43 | ;; OPERATION: The country code, keyboard, primary codepage and the | ||
| 44 | ;; seondary codepage from the CTY_TABLE for the specified index is | ||
| 45 | ;; returned as spedified above. | ||
| 46 | ;; | ||
| 47 | ;; Note: Index of the first item is the table is 1. | ||
| 48 | ;; | ||
| 49 | ;;**************************************************************************** | ||
| 50 | GET_COUNTRY_DEFAULTS MACRO VAR_TABLE, VAR_INDEX ;;AN000; | ||
| 51 | |||
| 52 | MOV BX, VAR_TABLE ;;AN000; Get which table to search | ||
| 53 | MOV AX, VAR_INDEX ;;AN000; Get where to start in the table | ||
| 54 | CALL GET_CNTY_DEF_ROUTINE ;;AN000; | ||
| 55 | ENDM ;;AN000; | ||
| 56 | |||
| 57 | ;;************************************************************************;; | ||
| 58 | ;; | ||
| 59 | ;; GET_DOS_COUNTRY: Get current country information. | ||
| 60 | ;; | ||
| 61 | ;; SYNTAX: GET_DOS_COUNTRY buffer, var_country | ||
| 62 | ;; | ||
| 63 | ;; INPUT: | ||
| 64 | ;; BUFFER = 38 byte data buffer area for country information. | ||
| 65 | ;; | ||
| 66 | ;; OUTPUT: | ||
| 67 | ;; VAR_COUNTRY = Default country code | ||
| 68 | ;; | ||
| 69 | ;; OPERATION: DOS function call 65h (id=1) is performed to get the extended | ||
| 70 | ;; country information into the specified data buffer for the default | ||
| 71 | ;; and the active CON device. The country code value from the data buffer | ||
| 72 | ;; is returned in the memory variable specified. | ||
| 73 | ;; | ||
| 74 | ;;**************************************************************************** | ||
| 75 | GET_DOS_COUNTRY MACRO BUFFER, VAR_COUNTRY ;;AN000; | ||
| 76 | |||
| 77 | |||
| 78 | PUSH ES ;;AN000; | ||
| 79 | PUSH DS ;;AN000; | ||
| 80 | POP ES ;;AN000; | ||
| 81 | |||
| 82 | MOV DI, OFFSET BUFFER ;;AN000; Get the address of the buffer | ||
| 83 | MOV AX, 6501H ;;AN000; Fn call 65h with ID value = 1 | ||
| 84 | MOV BX, -1 ;;AN000; Code page of interest (current) | ||
| 85 | MOV DX, -1 ;;AN000; Get information for default country | ||
| 86 | MOV CX, 38 ;;AN000; Amount of data to return | ||
| 87 | DOSCALL ;;AN000; | ||
| 88 | |||
| 89 | MOV BX, [DI]+3 ;;AN000; Get the country ID | ||
| 90 | MOV VAR_COUNTRY, BX ;;AN000; | ||
| 91 | |||
| 92 | POP ES ;;AN000; | ||
| 93 | |||
| 94 | ENDM ;;AN000; | ||
| 95 | ;;**************************************************************************** | ||
| 96 | ;; | ||
| 97 | ;; GET_COUNTRY_INDEX: Scan CTY_TABLE for the specified country code and | ||
| 98 | ;; return index of country code into the table. | ||
| 99 | ;; | ||
| 100 | ;; SYNTAX: GET_COUNTRY_INDEX var_country, var_tab, var_index | ||
| 101 | ;; | ||
| 102 | ;; INPUT: | ||
| 103 | ;; var_country = The country code | ||
| 104 | ;; | ||
| 105 | ;; OUTPUT: | ||
| 106 | ;; var_tab = 1: Country code is in table CTY_TAB_A | ||
| 107 | ;; = 2: Country code is in table CTY_TAB_B | ||
| 108 | ;; var_index = The index into the country list. | ||
| 109 | ;; | ||
| 110 | ;; OPERATION: The CTY_TABLE is scanned for the specified country code and | ||
| 111 | ;; the index into the table is returned. | ||
| 112 | ;; | ||
| 113 | ;; Note: The index of the first item in the table is 1. | ||
| 114 | ;; | ||
| 115 | ;;************************************************************************;; | ||
| 116 | GET_COUNTRY_INDEX MACRO VAR_COUNTRY, VAR_TAB, VAR_INDEX ;;AN000; | ||
| 117 | |||
| 118 | MOV CX, VAR_COUNTRY ;;AN000; Get the country index | ||
| 119 | CALL GET_CNTY_INDEX_ROUTINE ;;AN000; Search the table for this value | ||
| 120 | MOV VAR_TAB, DX ;;AN000; Which table it was found in | ||
| 121 | MOV VAR_INDEX, BX ;;AN000; Which location in that table | ||
| 122 | ENDM ;;AN000; | ||
| 123 | ;;**************************************************************************** | ||
| 124 | ;; | ||
| 125 | ;; GET_KEYBOARD_INDEX: Scan KYBD_TABLE for the specified keyboard code and | ||
| 126 | ;; return index of keyboard code in the table and the | ||
| 127 | ;; alternate keyboard indicator. | ||
| 128 | ;; | ||
| 129 | ;; SYNTAX: GET_KEYBOARD_INDEX name_kybd, var_table, var_index, var_alt | ||
| 130 | ;; | ||
| 131 | ;; INPUT: | ||
| 132 | ;; name_kybd = The keyboard code in ASCII-N format. | ||
| 133 | ;; | ||
| 134 | ;; OUTPUT: | ||
| 135 | ;; var_table = 1: Keyboard is IN table KYBD_TAB_A | ||
| 136 | ;; = 2: Keyboard is in table KYBD_TAB_B | ||
| 137 | ;; var_index = The index into keyboard table. | ||
| 138 | ;; var_alt = 0: No alternate keyboard | ||
| 139 | ;; = 1: Alternate keyboard present | ||
| 140 | ;; | ||
| 141 | ;; OPERATION: The KYBD_TABLE is scanned for the specifies keyboard code and | ||
| 142 | ;; the index into the table is returned. | ||
| 143 | ;; | ||
| 144 | ;; Note: The index of the first item in the table is 1. | ||
| 145 | ;; | ||
| 146 | ;;************************************************************************ | ||
| 147 | GET_KEYBOARD_INDEX MACRO NAME_KYBD, VAR_TABLE, VAR_INDEX, VAR_ALT ;;AN000; | ||
| 148 | |||
| 149 | MOV DI, OFFSET NAME_KYBD ;;AN000; The name of the keyboard to search for | ||
| 150 | CALL GET_KYBD_INDEX_ROUTINE ;;AN000; Search for this keyboard code | ||
| 151 | MOV VAR_TABLE, DX ;;AN000; Which table the code was found in | ||
| 152 | MOV VAR_INDEX, BX ;;AN000; Which index in the table | ||
| 153 | MOV VAR_ALT, AL ;;AN000; Returned alternate keyboard byte | ||
| 154 | ENDM ;;AN000; | ||
| 155 | ;;************************************************************************;; | ||
| 156 | ;; | ||
| 157 | ;; GET_KEYBOARD: Get the keyboard code and the alternate keyboard | ||
| 158 | ;; indicator from the KYBD_TABLE for the item specified by the index | ||
| 159 | ;; into the keyboard table. | ||
| 160 | ;; | ||
| 161 | ;; SYNTAX: GET_KEYBOARD var_table, var_index, name_kybd, var_alt | ||
| 162 | ;; | ||
| 163 | ;; INPUT: | ||
| 164 | ;; var_table = 1: Keyboard code is in table KYBD_TAB_A | ||
| 165 | ;; = 2: Keyboard code is is table KYBD_TAB_B | ||
| 166 | ;; var_index = index into the keyboard table. | ||
| 167 | ;; | ||
| 168 | ;; OUTPUT: | ||
| 169 | ;; name_kybd = keyboard code in ASCII-N format. | ||
| 170 | ;; var_alt = 0: No alternate keyboard | ||
| 171 | ;; = 1: Alternate keyboard present | ||
| 172 | ;; | ||
| 173 | ;; OPERATION: The keyboard code from the KYBD_TABLE for the specified | ||
| 174 | ;; index item is returned. Also, the alternate keyboard present | ||
| 175 | ;; variable is updated. | ||
| 176 | ;; | ||
| 177 | ;; Note: Index of the first item in the table is 1. | ||
| 178 | ;; | ||
| 179 | ;;**************************************************************************** | ||
| 180 | GET_KEYBOARD MACRO VAR_TABLE, VAR_INDEX, NAME_KYBD, VAR_ALT ;;AN000; | ||
| 181 | |||
| 182 | MOV AX, VAR_INDEX ;;AN000; Where to start the search | ||
| 183 | MOV CX, VAR_TABLE ;;AN000; Which table to search | ||
| 184 | MOV DI, OFFSET NAME_KYBD ;;AN000; The name of the keyboard code returned | ||
| 185 | CALL GET_KYBD_ROUTINE ;;AN000; | ||
| 186 | MOV VAR_ALT, AL ;;AN000; Returned alternate code | ||
| 187 | ENDM ;;AN000; | ||
| 188 | ;;************************************************************************;; | ||
| 189 | ;; | ||
| 190 | ;; GET_ALT_KYBD_TABLE: Scan the ALT_KYB_TABLE for the specified keyboard, | ||
| 191 | ;; and return the pointer to the specified keyboards alternate keyboard | ||
| 192 | ;; code list. | ||
| 193 | ;; | ||
| 194 | ;; SYNTAX: GET_ALT_KYBD_TABLE name_kybd, var_table, var_kyb | ||
| 195 | ;; | ||
| 196 | ;; INPUT: | ||
| 197 | ;; name_kybd = Keyboard code in ASCII-N format. | ||
| 198 | ;; | ||
| 199 | ;; OUTPUT: | ||
| 200 | ;; var_table = Pointer to alternat keyboards list. | ||
| 201 | ;; var_kyb = 1: French | ||
| 202 | ;; = 2: Italian | ||
| 203 | ;; = 3: UK English | ||
| 204 | ;; | ||
| 205 | ;; OPERATION: The ALT_KYB_TABLE is scanned for the specified keyboard | ||
| 206 | ;; code. Pointer to a table of alternate keyboards available for the | ||
| 207 | ;; specified keyboard code is returned as well as the keyboard identifier. | ||
| 208 | ;; | ||
| 209 | ;;**************************************************************************** | ||
| 210 | GET_ALT_KYBD_TABLE MACRO NAME_KYBD, VAR_TABLE, VAR_KYB ;;AN000; | ||
| 211 | ;; | ||
| 212 | MOV SI, OFFSET ALT_KYB_TAB_1 ;;AN000; Offset of the data in the table | ||
| 213 | MOV AL, ALT_KYB_TABLE ;;AN000; Number of entries in the table | ||
| 214 | MOV BX, 1 ;;AN000; Index currently being scaned | ||
| 215 | ;; | ||
| 216 | MOV DX, NAME_KYBD+2 ;;AN000; | ||
| 217 | .WHILE <<WORD PTR [SI]> NE DX > AND ;;AN000; | ||
| 218 | .WHILE < BL LE AL > ;;AN000; | ||
| 219 | INC BL ;;AN000; | ||
| 220 | ADD SI, TYPE ALT_KYB_DEF ;;AN000; | ||
| 221 | .ENDWHILE ;;AN000; | ||
| 222 | ;; | ||
| 223 | .IF < BL GT AL > ;;AN000; Entry NOT found | ||
| 224 | MOV VAR_KYB, 0 ;;AN000; | ||
| 225 | MOV VAR_TABLE, 0 ;;AN000; Pointer is 0 since entry not found | ||
| 226 | .ELSE ;;AN000; | ||
| 227 | COPY_WORD VAR_TABLE, [SI]+2 ;;AN000; Copy the table entries | ||
| 228 | COPY_BYTE VAR_KYB, [SI]+4 ;;AN000; | ||
| 229 | .ENDIF ;;AN000; | ||
| 230 | ;; | ||
| 231 | ENDM ;;AN000; | ||
| 232 | ;;************************************************************************;; | ||
| 233 | ;; | ||
| 234 | ;; GET_ALT_KEYBOARD: Get the alternate keyboard code from the specified | ||
| 235 | ;; alternate keyboard table for the item specified by the index. | ||
| 236 | ;; | ||
| 237 | ;; SYNTAX: GET_ALT_KEYBOARD var_table, var_kyb, var_index, name_kybd | ||
| 238 | ;; | ||
| 239 | ;; INPUT: | ||
| 240 | ;; var_table = Pointer to alternate keyboard table | ||
| 241 | ;; var_kyb = 1: French | ||
| 242 | ;; = 2: Italian | ||
| 243 | ;; = 3: UK English | ||
| 244 | ;; var_index = Index into the keyboard table. | ||
| 245 | ;; | ||
| 246 | ;; OUTPUT: | ||
| 247 | ;; name_kybd = The keyboard code in ASCII-N format. | ||
| 248 | ;; | ||
| 249 | ;; OPERATION: The keyboard code from the specified table for the | ||
| 250 | ;; specified index item is returned. | ||
| 251 | ;; | ||
| 252 | ;; NOTE: The index of the first item is the table is 1. | ||
| 253 | ;; | ||
| 254 | ;;**************************************************************************** | ||
| 255 | GET_ALT_KEYBOARD MACRO VAR_TABLE, VAR_KYB, VAR_INDEX, NAME_KYBD ;;AN000; | ||
| 256 | |||
| 257 | MOV AX, VAR_INDEX ;;AN000; Get the table index | ||
| 258 | DEC AX ;;AN000; Make the index start at 0 | ||
| 259 | MOV SI, VAR_TABLE ;;AN000; Pointer to the table | ||
| 260 | INC SI ;;AN000; Adjust pointer for table length byte | ||
| 261 | .IF < VAR_KYB EQ ALT_FRENCH> ;;AN000; | ||
| 262 | MOV CX, TYPE FR_STRUC ;;AN000; | ||
| 263 | .ELSEIF < VAR_KYB EQ ALT_ITALIAN > ;;AN000; | ||
| 264 | MOV CX, TYPE IT_STRUC ;;AN000; | ||
| 265 | .ELSE ;;AN000; | ||
| 266 | MOV CX, TYPE UK_STRUC ;;AN000; | ||
| 267 | .ENDIF ;;AN000; | ||
| 268 | MUL CX ;;AN000; | ||
| 269 | ADD SI, AX ;;AN000; Get the address of the required entry | ||
| 270 | ;; | ||
| 271 | PUSH ES ;;AN000; | ||
| 272 | PUSH DS ;;AN000; | ||
| 273 | POP ES ;;AN000; | ||
| 274 | MOV DI, OFFSET NAME_KYBD ;;AN000; | ||
| 275 | MOV CX, LEN_ALT_KYBD_ID ;;AN000; Number of bytes in the keyboard code | ||
| 276 | MOV [DI], CX ;;AN000; | ||
| 277 | ADD DI, 2 ;;AN000; | ||
| 278 | CLD ;;AN000; | ||
| 279 | REP MOVSB ;;AN000; | ||
| 280 | POP ES ;;AN000; | ||
| 281 | ENDM ;;AN000; | ||
| 282 | ;;**************************************************************************** | ||
| 283 | ;; | ||
| 284 | ;; EXEC_PROGRAM: Loads another program into memory and begins execution. | ||
| 285 | ;; | ||
| 286 | ;; SYNTAX: EXEC_PROGRAM child, name_com, parm_block, re_dir | ||
| 287 | ;; | ||
| 288 | ;; INPUT: child = Name of the program to execute (ASCII-N format) | ||
| 289 | ;; name_com = The command line to be passed to parm_block | ||
| 290 | ;; parm_block = Parameter block for child program. | ||
| 291 | ;; re_dir = 1: Redirect Stdout and Stderr to null | ||
| 292 | ;; = 0: Don't redirect output. | ||
| 293 | ;; | ||
| 294 | ;; OUTPUT: CY = 0: Successful | ||
| 295 | ;; CY = 1: Error - AX has the error code. | ||
| 296 | ;; | ||
| 297 | ;; OPERATION: The command line to be passed to the parameter block is | ||
| 298 | ;; copied to the command buffer specified for the parameter block and | ||
| 299 | ;; a carrage return is appended to the end of the buffer. (The | ||
| 300 | ;; command line length can be zero. | ||
| 301 | ;; | ||
| 302 | ;; The segment offsets in the parameter block are defined and DOS | ||
| 303 | ;; function call 29H is performed to set up the default FCB's. | ||
| 304 | ;; | ||
| 305 | ;; DOS function call 4Bh is performed to load and execute the | ||
| 306 | ;; specified child program. The contents of SS and SP are destroyed | ||
| 307 | ;; during the call, so they must be save and restored later. When the | ||
| 308 | ;; parent program (SELECT) gets control, all available memory is | ||
| 309 | ;; allocated to it. It is assumed that memory has been freed (Function | ||
| 310 | ;; call 4Ah - FREE_MEM) before invoking this function. | ||
| 311 | ;; | ||
| 312 | ;;************************************************************************;; | ||
| 313 | EXEC_PROGRAM MACRO CHILD, NAME_COM, PARM_BLOCK, RE_DIR ;;AN000; | ||
| 314 | |||
| 315 | MOV AX, OFFSET CHILD ;;AN000; | ||
| 316 | PUSH AX ;;AN000; | ||
| 317 | MOV AX, OFFSET NAME_COM ;;AN000; | ||
| 318 | PUSH AX ;;AN000; | ||
| 319 | MOV AX, OFFSET PARM_BLOCK ;;AN000; | ||
| 320 | PUSH AX ;;AN000; | ||
| 321 | MOV AX, RE_DIR ;;AN000; | ||
| 322 | PUSH AX ;;AN000; | ||
| 323 | CALL EXEC_PROGRAM_ROUTINE ;;AN000; | ||
| 324 | ENDM ;;AN000; | ||
| 325 | ;;***************************************************************************** | ||
| 326 | ;; | ||
| 327 | ;; FREE_MEM: Free memory by modifying the memory block | ||
| 328 | ;; | ||
| 329 | ;; SYNTAX: FREE_MEM address | ||
| 330 | ;; | ||
| 331 | ;; INPUT: | ||
| 332 | ;; address - The address of the first free paragraph in memory. | ||
| 333 | ;; | ||
| 334 | ;; OUTPUT: CY = 0, AX=undefined, successful | ||
| 335 | ;; CY = 1, AX= error code | ||
| 336 | ;; | ||
| 337 | ;; OPERATION: | ||
| 338 | ;; | ||
| 339 | ;; FREEMEM MODIFIES ALLOCATED MEMORY BLOCKS TO | ||
| 340 | ;; CONTAIN THE NEW SPECIFIED BLOCK SIZE. | ||
| 341 | ;; IT MAKES USE OF DOS INT 21 (AH=4AH). | ||
| 342 | ;; IF AN ERROR OCCURS, THE CARRY FLAG IS SET, AND THE ERROR CODE | ||
| 343 | ;; IS RETURNED IN AX. | ||
| 344 | ;; | ||
| 345 | ;;**************************************************************************** | ||
| 346 | FREE_MEM MACRO address ;;AN000; | ||
| 347 | PUSH ES ;;AN000; | ||
| 348 | MOV AH,62H ;;AN000; | ||
| 349 | DOSCALL ;;AN000; Get the current PSP segment | ||
| 350 | MOV ES,BX ;;AN000; Load current PSP segment | ||
| 351 | MOV BX, ADDRESS ;;AN000; size of program in paragraphs in bx reg | ||
| 352 | |||
| 353 | MOV AH,4AH ;;AN000; free memory function | ||
| 354 | DOSCALL ;;AN000; | ||
| 355 | POP ES ;;AN000; | ||
| 356 | ENDM ;;AN000; | ||
| 357 | ;;**************************************************************************** | ||
| 358 | ;; | ||
| 359 | ;; CLEAR_SCREEN: clear the screen to white on blue | ||
| 360 | ;; | ||
| 361 | ;; SYNTAX: CLEAR_SCREEN | ||
| 362 | ;; | ||
| 363 | ;; INPUT: | ||
| 364 | ;; None. | ||
| 365 | ;; | ||
| 366 | ;; OUTPUT: | ||
| 367 | ;; None. | ||
| 368 | ;; | ||
| 369 | ;; OPERATION: Clears the screen using the BIOS function to scroll the | ||
| 370 | ;; screen completely. | ||
| 371 | ;; | ||
| 372 | ;;**************************************************************************** | ||
| 373 | CLEAR_SCREEN MACRO ;;AN000; | ||
| 374 | MOV CX,0 ;;AN000; | ||
| 375 | MOV DX,184Fh ;;AN000; scroll screen from (0,0) tO (24,79) | ||
| 376 | MOV AX,0600h ;;AN000; AH = 6, Scroll Function | ||
| 377 | ;; AL = 0, Clear scroll area | ||
| 378 | MOV BH,01FH ;;AN000; video I/O interrupt | ||
| 379 | INT 10H ;;AN000; | ||
| 380 | MOV DX,0 ;;AN000; RKJ-set cursor posn to top right hand corner | ||
| 381 | MOV BH,0 ;;AN000; RKJ | ||
| 382 | MOV AH,2 ;;AN000; RKJ | ||
| 383 | INT 10H ;;AN000; RKJ | ||
| 384 | ENDM ;;AN000; | ||
| 385 | ;;**************************************************************************** | ||
| 386 | ;; | ||
| 387 | ;; CLEAR_SCREEN2: clear the screen to white on black | ||
| 388 | ;; | ||
| 389 | ;; SYNTAX: CLEAR_SCREEN2 | ||
| 390 | ;; | ||
| 391 | ;; INPUT: | ||
| 392 | ;; None. | ||
| 393 | ;; | ||
| 394 | ;; OUTPUT: | ||
| 395 | ;; None. | ||
| 396 | ;; | ||
| 397 | ;; OPERATION: Clears the screen using the BIOS function to scroll the | ||
| 398 | ;; screen completely. | ||
| 399 | ;; | ||
| 400 | ;;**************************************************************************** | ||
| 401 | CLEAR_SCREEN2 MACRO ;;AN000; | ||
| 402 | MOV CX,0 ;;AN000; | ||
| 403 | MOV DX,184Fh ;;AN000; scroll screen from (0,0) tO (24,79) | ||
| 404 | MOV AX,0600h ;;AN000; AH = 6, Scroll Function | ||
| 405 | ;; AL = 0, Clear scroll area | ||
| 406 | MOV BH,7 ;;AN000; video I/O interrupt | ||
| 407 | INT 10H ;;AN000; | ||
| 408 | MOV DX,0 ;;AN000; RKJ-set cursor posn to top right hand corner | ||
| 409 | MOV BH,0 ;;AN000; RKJ | ||
| 410 | MOV AH,2 ;;AN000; RKJ | ||
| 411 | INT 10H ;;AN000; RKJ | ||
| 412 | ENDM ;;AN000; | ||
| 413 | ;;**************************************************************************** | ||
| 414 | ;; | ||
| 415 | ;; POS_CURSOR: position the cursor to top left corner of screen | ||
| 416 | ;; | ||
| 417 | ;; SYNTAX: POS_CURSOR | ||
| 418 | ;; | ||
| 419 | ;; INPUT: | ||
| 420 | ;; None. | ||
| 421 | ;; | ||
| 422 | ;; OUTPUT: | ||
| 423 | ;; None. | ||
| 424 | ;; | ||
| 425 | ;; OPERATION: Homes the cursor using the BIOS function call. | ||
| 426 | ;; | ||
| 427 | ;;**************************************************************************** | ||
| 428 | POS_CURSOR MACRO ;;AN085; SEH | ||
| 429 | PUSH AX ;;AN085; SEH | ||
| 430 | PUSH BX ;;AN085; SEH | ||
| 431 | PUSH CX ;;AN085; SEH | ||
| 432 | PUSH DX ;;AN085; SEH | ||
| 433 | PUSH SI ;;AN085; SEH | ||
| 434 | PUSH DI ;;AN085; SEH | ||
| 435 | PUSH ES ;;AN085; SEH | ||
| 436 | MOV DX,0 ;;AN085; SEH-set cursor posn to top left hand corner | ||
| 437 | XOR BH,BH ;;AN085; SEH | ||
| 438 | MOV AH,2 ;;AN085; SEH | ||
| 439 | INT 10H ;;AN085; SEH | ||
| 440 | POP ES ;;AN085; SEH | ||
| 441 | POP DI ;;AN085; SEH | ||
| 442 | POP SI ;;AN085; SEH | ||
| 443 | POP DX ;;AN085; SEH | ||
| 444 | POP CX ;;AN085; SEH | ||
| 445 | POP BX ;;AN085; SEH | ||
| 446 | POP AX ;;AN085; SEH | ||
| 447 | ENDM ;;AN085; SEH | ||
| 448 | ;;**************************************************************************** | ||
| 449 | ;; | ||
| 450 | ;; BEEP: Produce a tone on the PC speaker | ||
| 451 | ;; | ||
| 452 | ;; SYNTAX: BEEP frequency, duration | ||
| 453 | ;; | ||
| 454 | ;; INPUT: frequency = 37 to 32767 | ||
| 455 | ;; duration = 1 to 65535 | ||
| 456 | ;; | ||
| 457 | ;; OUTPUT: A SOUND | ||
| 458 | ;; | ||
| 459 | ;; OPERATION: | ||
| 460 | ;; | ||
| 461 | ;; BEEP CREATES A TONE USING THE PC SPEAKER | ||
| 462 | ;; | ||
| 463 | ;;**************************************************************************** | ||
| 464 | BEEP MACRO FREQ,DUR ;;AN000; | ||
| 465 | |||
| 466 | |||
| 467 | MOV DI, FREQ ;;AN000; set the frequency | ||
| 468 | MOV BX, DUR ;;AN000; set the duration | ||
| 469 | CALL BEEP_ROUTINE ;;AN000; | ||
| 470 | |||
| 471 | ENDM ;;AN000; | ||
| 472 | ;;************************************************************************** | ||
| 473 | ;; | ||
| 474 | ;; GOTO : used instead of branching assembler intructions | ||
| 475 | ;; | ||
| 476 | ;; SYNTAX: GOTO label | ||
| 477 | ;; | ||
| 478 | ;; INPUT: label = an assembler label for a branching instruction | ||
| 479 | ;; | ||
| 480 | ;; OUTPUT: none | ||
| 481 | ;; | ||
| 482 | ;; OPERATION: | ||
| 483 | ;; | ||
| 484 | ;; | ||
| 485 | ;;************************************************************************** | ||
| 486 | GOTO MACRO LABEL ;;AN000; | ||
| 487 | JMP LABEL ;;AN000; jump to label | ||
| 488 | ENDM ;;AN000; | ||
| 489 | ;;************************************************************************;; | ||
| 490 | ;; | ||
| 491 | ;; BYTE_TO_CHAR: Convert a 8-bit binary number to ASCII format. | ||
| 492 | ;; | ||
| 493 | ;; SYNTAX: BYTE_TO_CHAR var_num, name_str | ||
| 494 | ;; | ||
| 495 | ;; INPUT: | ||
| 496 | ;; var_num = binary number to convert. (8 bits) | ||
| 497 | ;; | ||
| 498 | ;; OUTPUT: | ||
| 499 | ;; name_str = ASCII-N string for the specifed value. | ||
| 500 | ;; | ||
| 501 | ;; OPERATION: The specified 8 bit numeric variable contents are converted | ||
| 502 | ;; to ASCII and stored in ASCII-N format. Leading zeros will not be | ||
| 503 | ;; stored. | ||
| 504 | ;; | ||
| 505 | ;;************************************************************************;; | ||
| 506 | BYTE_TO_CHAR MACRO VAR_NUM, NAME_STR ;;AN000; | ||
| 507 | |||
| 508 | |||
| 509 | MOV AL, VAR_NUM ;;AN000; | ||
| 510 | MOV AH, 0 ;;AN000; | ||
| 511 | MOV DI, OFFSET NAME_STR ;;AN000; | ||
| 512 | CALL BIN_TO_CHAR_ROUTINE ;;AN000; | ||
| 513 | ENDM ;;AN000; | ||
| 514 | ;;************************************************************************;; | ||
| 515 | ;; | ||
| 516 | ;; WORD_TO_CHAR: Convert a binary number to ASCII format. | ||
| 517 | ;; | ||
| 518 | ;; SYNTAX: WORD_TO_CHAR var_num, name_str | ||
| 519 | ;; | ||
| 520 | ;; INPUT: | ||
| 521 | ;; var_num = binary number to convert. (16 bits) | ||
| 522 | ;; | ||
| 523 | ;; OUTPUT: | ||
| 524 | ;; name_str = ASCII-N string for the specifed value. | ||
| 525 | ;; | ||
| 526 | ;; OPERATION: The specified 16 bit numeric variable contents are converted | ||
| 527 | ;; to ASCII and stored in ASCII-N format. Leading zeros will not be | ||
| 528 | ;; stored. | ||
| 529 | ;; | ||
| 530 | ;;************************************************************************;; | ||
| 531 | WORD_TO_CHAR MACRO VAR_NUM, NAME_STR ;;AN000; | ||
| 532 | |||
| 533 | MOV AX, VAR_NUM ;;AN000; | ||
| 534 | MOV DI, OFFSET NAME_STR ;;AN000; | ||
| 535 | CALL BIN_TO_CHAR_ROUTINE ;;AN000; | ||
| 536 | ENDM ;;AN000; | ||
| 537 | |||
| 538 | INCLUDE MACROS6.INC ;;AN000; | ||
diff --git a/v4.0/src/SELECT/MACROS6.INC b/v4.0/src/SELECT/MACROS6.INC new file mode 100644 index 0000000..954e232 --- /dev/null +++ b/v4.0/src/SELECT/MACROS6.INC | |||
| @@ -0,0 +1,719 @@ | |||
| 1 | ;;**************************************************************************** ;;AN000; | ||
| 2 | ;; Assembler MACROS for use with SELECT. ;;AN000; | ||
| 3 | ;; File: MACROS6.INC ;;AN000; | ||
| 4 | ;; Latest Change Date: July 27, 1987 ;;AN000; | ||
| 5 | ;; ;;AN000; | ||
| 6 | ;; These macros define powerful assembler verbs neccessary for SELECT. ;;AN000; | ||
| 7 | ;; ;;AN000; | ||
| 8 | ;; Note: Many of the macros make use of an ASCII-N string for passing ;;AN000; | ||
| 9 | ;; parameters. The string is defined below. ;;AN000; | ||
| 10 | ;; DW count ;;AN000; | ||
| 11 | ;; DB "string_variable",? ;;AN000; | ||
| 12 | ;; ;;AN000; | ||
| 13 | ;; COUNT is the length of the string and is a word. ;;AN000; | ||
| 14 | ;; It is necessary to follow the string with at least one byte for the ;;AN000; | ||
| 15 | ;; purpose of changing the ASCII-N string to an ASCII-Z string. ;;AN000; | ||
| 16 | ;; ;;AN000; | ||
| 17 | ;;**************************************************************************** ;;AN000; | ||
| 18 | page ;;AN000; ;;AN000; | ||
| 19 | ;;**************************************************************************** ;;AN000; | ||
| 20 | ;; ;;AN000; | ||
| 21 | ;; SCAN_PARAMETERS: Scan SELECT command line for parameters. ;;AN000; | ||
| 22 | ;; ;;AN000; | ||
| 23 | ;; SYNTAX: SCAN_PARAMETERS mode ;;AN000; | ||
| 24 | ;; ;;AN000; | ||
| 25 | ;; INPUT: ;;AN000; | ||
| 26 | ;; PSP command line ;;AN000; | ||
| 27 | ;; ;;AN000; | ||
| 28 | ;; OUTPUT: ;;AN000; | ||
| 29 | ;; mode = Install mode ;;AN000; | ||
| 30 | ;; = 0: Parameter is MENU ;;AN000; | ||
| 31 | ;; = 1: Parameter is FDISK ;;AN000; | ||
| 32 | ;; = 0FFH: Parameter is invalid ;;AN000; | ||
| 33 | ;; ;;AN000; | ||
| 34 | ;; OPERATION: The SELECT command line is scanned for parameters. The ;;AN000; | ||
| 35 | ;; return codes for the various parameters are provided in variables ;;AN000; | ||
| 36 | ;; defined above. ;;AN000; | ||
| 37 | ;; ;;AN000; | ||
| 38 | ;; Note: ;;AN000; | ||
| 39 | ;; Before this macro is executed, there must be as ASSUME ES:DATA ;;AN000; | ||
| 40 | ;; statement. If not, the parser will not execute properly and ;;AN000; | ||
| 41 | ;; either the computer will hang or erroneous values will be returned. ;;AN000; | ||
| 42 | ;; ;;AN000; | ||
| 43 | ;;**************************************************************************** ;;AN000; | ||
| 44 | SCAN_PARAMETERS MACRO MODE ;;AN000; | ||
| 45 | ;;AN000; | ||
| 46 | CALL SCAN_PARAMETERS_ROUTINE ;;AN000; | ||
| 47 | MOV MODE, AX ;;AN000; | ||
| 48 | ENDM ;;AN000; | ||
| 49 | ;;**************************************************************************** ;;AN000; | ||
| 50 | ;; ;;AN000; | ||
| 51 | ;; SCAN_INFO_FILE: Scan SELECT.TMP for parameters. ;;AN000; | ||
| 52 | ;; ;;AN000; | ||
| 53 | ;; SYNTAX: SCAN_INFO_FILE option_0, option_1, option_2, option_3, path, filename, buffer, buff_size ;;AC033;SEH add option_3 parameter | ||
| 54 | ;; ;;AN000; | ||
| 55 | ;; INPUT: ;;AN000; | ||
| 56 | ;; filename = The name of the file which contains the FDISK parameters. ;;AN000; | ||
| 57 | ;; (ASCII-N format) ;;AN000; | ||
| 58 | ;; buffer = A buffer where the data read from the file can be stored. ;;AN000; | ||
| 59 | ;; buff_size = The size of the buffer. ;;AN000; | ||
| 60 | ;; ;;AN000; | ||
| 61 | ;; OUTPUT: ;;AN000; | ||
| 62 | ;; option_1 = 1 ;;AC033; | ||
| 63 | ;; = 2 ;;AC033; | ||
| 64 | ;; = 3 ;;AC033; | ||
| 65 | ;; = 0FFh: Parameter is invalid (not 1, 2, 3) ;;AC033; | ||
| 66 | ;; option_2 = 1 ;;AC033; | ||
| 67 | ;; = 2 ;;AC033; | ||
| 68 | ;; = 0FFh: Parameter is invalid (not 1, 2) ;;AC033; | ||
| 69 | ;; option_3 = 1 ;;AC033; | ||
| 70 | ;; = 2 ;;AC033; | ||
| 71 | ;; = 0FFh: Parameter is invalid (not 1, 2) ;;AC033; | ||
| 72 | ;; path = Install path in ASCII-N format ;;AN000; | ||
| 73 | ;; ;;AN000; | ||
| 74 | ;; OPERATION: ;;AN000; | ||
| 75 | ;; If the parameter on the command line is FDISK, then the ;;AN000; | ||
| 76 | ;; file specified in FILENAME is opened and additional parameters ;;AN000; | ||
| 77 | ;; are read. If the parameters in the file are invalid, or if the file ;;AN000; | ||
| 78 | ;; cannot be found, then 0FFh is returned in MODE and OPTION, and the ;;AN000; | ||
| 79 | ;; path length is set to zero. ;;AN000; | ||
| 80 | ;; ;;AN000; | ||
| 81 | ;;**************************************************************************** ;;AN000; | ||
| 82 | SCAN_INFO_FILE MACRO OPTION_0, OPTION_1, OPTION_2, OPTION_3, PATH, FILENAME, BUFFER, BUFF_SIZE | ||
| 83 | ;;AN000; | ||
| 84 | MOV AX, OFFSET PATH ;;AN000; | ||
| 85 | PUSH AX ;;AN000; | ||
| 86 | MOV AX, OFFSET FILENAME ;;AN000; | ||
| 87 | PUSH AX ;;AN000; | ||
| 88 | MOV AX, OFFSET BUFFER ;;AN000; | ||
| 89 | PUSH AX ;;AN000; | ||
| 90 | MOV AX, BUFF_SIZE ;;AN000; | ||
| 91 | PUSH AX ;;AN000; | ||
| 92 | CALL SCAN_INFO_FILE_ROUTINE ;;AN000; | ||
| 93 | mov option_0, ax | ||
| 94 | MOV OPTION_1, BX ;;AN000; | ||
| 95 | MOV OPTION_2, CX ;;AN000; | ||
| 96 | MOV OPTION_3, DX ;;AN033;SEH return OPTION_3, also | ||
| 97 | ENDM ;;AN000; | ||
| 98 | ;;**************************************************************************** ;;AN000; | ||
| 99 | ;; ;;AN000; | ||
| 100 | ;; COPY_FILES: Copy a list of files from the A diskette to either the B ;;AN000; | ||
| 101 | ;; or C drive. ;;AN000; | ||
| 102 | ;; ;;AN000; | ||
| 103 | ;; SYNTAX: COPY_FILES target_disk, file_table, num_files, path ;;AN000; | ||
| 104 | ;; ;;AN000; | ||
| 105 | ;; INPUT: ;;AN000; | ||
| 106 | ;; target_disk = 1: Copy the files to the B drive ;;AN000; | ||
| 107 | ;; = 2: Copy the files to the C drive ;;AN000; | ||
| 108 | ;; ;;AN000; | ||
| 109 | ;; path = The path where the files are to be copied if the ;;AN000; | ||
| 110 | ;; destination is the hard disk. ;;AN000; | ||
| 111 | ;; ;;AN000; | ||
| 112 | ;; file_table = A table listing the files to copy. It is of the ;;AN000; | ||
| 113 | ;; following format. ;;AN000; | ||
| 114 | ;; ;;AN000; | ||
| 115 | ;; db filename ;;AN000; | ||
| 116 | ;; ;;AN000; | ||
| 117 | ;; - The filename must be padded out to 12 characters. ;;AN000; | ||
| 118 | ;; ;;AN000; | ||
| 119 | ;; num_files = The number of files in the list. ;;AN000; | ||
| 120 | ;; ;;AN000; | ||
| 121 | ;; OUTPUT: ;;AN000; | ||
| 122 | ;; None. ;;AN000; | ||
| 123 | ;; ;;AN000; | ||
| 124 | ;; OPERATION: The files listed in the table are copied to the destination ;;AN000; | ||
| 125 | ;; from the A drive. If the destination is C, then a path ;;AN000; | ||
| 126 | ;; path can be specified. ;;AN000; | ||
| 127 | ;; ;;AN000; | ||
| 128 | ;;**************************************************************************** ;;AN000; | ||
| 129 | COPY_FILES MACRO DEST, FILE_TABLE, NUM_FILES ;;AN000; | ||
| 130 | ;;AN000; | ||
| 131 | MOV AX, DEST ;;AN000; | ||
| 132 | MOV BX, OFFSET FILE_TABLE ;;AN000; | ||
| 133 | MOV CX, NUM_FILES ;;AN000; | ||
| 134 | CALL HOOK_INT_24 ;AN000;JW ;;AN000;JW | ||
| 135 | CALL MOD_XCOPY ;;AN000; | ||
| 136 | CALL RESTORE_INT_24 ;AN000;JW ;;AN000;JW | ||
| 137 | ENDM ;;AN000; | ||
| 138 | ;;AN000;JW | ||
| 139 | COPY_FILES2 MACRO DEST, FILE_TABLE, NUM_FILES, PATH ;;AN111;JW | ||
| 140 | ;;AN111;JW | ||
| 141 | MOV AX, DEST ;;AN111;JW | ||
| 142 | MOV BX, OFFSET FILE_TABLE ;;AN111;JW | ||
| 143 | MOV CX, NUM_FILES ;;AN111;JW | ||
| 144 | MOV SI, OFFSET PATH ;;AN111;JW | ||
| 145 | CALL HOOK_INT_24 ;AN000;JW ;;AN111;JW | ||
| 146 | CALL MOD_XCOPY ;;AN111;JW | ||
| 147 | CALL RESTORE_INT_24 ;AN000;JW ;;AN111;JW | ||
| 148 | ENDM ;;AN111;JW | ||
| 149 | ;;AN000; | ||
| 150 | ;;**************************************************************************** ;;AN000; | ||
| 151 | ;; ;;AN000; | ||
| 152 | ;; INSTALL_FILES: Install the files from the original diskettes to the ;;AN000; | ||
| 153 | ;; startup and the operations diskette. ;;AN000; | ||
| 154 | ;; ;;AN000; | ||
| 155 | ;; SYNTAX: INSTALL_FILES source_disk, target_disk ;;AN000; | ||
| 156 | ;; ;;AN000; | ||
| 157 | ;; INPUT: ;;AN000; | ||
| 158 | ;; source_disk = 1: Read the files from the first diskette ;;AN000; | ||
| 159 | ;; = 2: Read the files from the second diskette ;;AN000; | ||
| 160 | ;; ;;AN000; | ||
| 161 | ;; target_disk = 1: Copy the files to the start-up diskette ;;AN000; | ||
| 162 | ;; = 2: Copy the files to the operations diskette ;;AN000; | ||
| 163 | ;; = 3: Copy the files to the hard disk ;;AN000; | ||
| 164 | ;; ;;AN000; | ||
| 165 | ;; OUTPUT: ;;AN000; | ||
| 166 | ;; None. ;;AN000; | ||
| 167 | ;; ;;AN000; | ||
| 168 | ;; OPERATION: ;;AN000; | ||
| 169 | ;; ;;AN000; | ||
| 170 | ;;**************************************************************************** ;;AN000; | ||
| 171 | INSTALL_FILES MACRO SOURCE_DISK, TARGET_DISK ;;AN000; | ||
| 172 | ;;AN000; | ||
| 173 | COPY_FILES SOURCE_DISK, TARGET_DISK, S_INSTALL_PATH, DOS_FILES, NUM_DOS_FILES ;;AN000; | ||
| 174 | ENDM ;;AN000; | ||
| 175 | ;;**************************************************************************** ;;AN000; | ||
| 176 | ;; ;;AN000; | ||
| 177 | ;; GET_PRINTER_TITLES: Read the printer profile file and load the printer ;;AN000; | ||
| 178 | ;; names into a table. ;;AN000; | ||
| 179 | ;; ;;AN000; | ||
| 180 | ;; SYNTAX: GET_PRINTER_TITLES filename ;;AN000; | ||
| 181 | ;; ;;AN000; | ||
| 182 | ;; INPUT: ;;AN000; | ||
| 183 | ;; filename = A ASCII-N string containing the name of the file containing ;;AN000; | ||
| 184 | ;; the printer profile. ;;AN000; | ||
| 185 | ;; ;;AN000; | ||
| 186 | ;; OUTPUT: ;;AN000; | ||
| 187 | ;; If CY = 0, No error was encountered. The following information is returned: ;;AN000; | ||
| 188 | ;; SEGMENT_LOCATION = The segment where the printer names table is held ( 16 bit ) ;;AN000; | ||
| 189 | ;; NAMES_TABLE_OFFSET = The offset in the segment of the printer names table ( 16 bit ) ;;AN000; | ||
| 190 | ;; LONGEST_NAME = The longest printer name in the file ( 16 bit ) ;;AN000; | ||
| 191 | ;; SIZE_NAMES_TABLE_ENTRY = The number of bytes between each printer name in the table (abs value ) ;;AN000; | ||
| 192 | ;; PRINTER_NAME_INDEX = The number of names in the table. ( 16 bit ) ;;AN000; | ||
| 193 | ;; If CY = 1, An error was encountered. ;;AN000; | ||
| 194 | ;; BX - Contains an error number as defined below. ;;AN000; | ||
| 195 | ;; AX - Contains the DOS error number if the error listed in BX is a ;;AN000; | ||
| 196 | ;; file related error. ;;AN000; | ||
| 197 | ;; ;;AN000; | ||
| 198 | ;; Error number Explaination. ;;AN000; | ||
| 199 | ;; ;;AN000; | ||
| 200 | ;; 1 There is not enough memory to build the names ;;AN000; | ||
| 201 | ;; table and provide a data buffer for reading the ;;AN000; | ||
| 202 | ;; file information. ;;AN000; | ||
| 203 | ;; ;;AN000; | ||
| 204 | ;; 2 There was an error opening the printer profile file. ;;AN000; | ||
| 205 | ;; AX contains the DOS error code. ;;AN000; | ||
| 206 | ;; ;;AN000; | ||
| 207 | ;; 3 There was an error reading the printer profile file. ;;AN000; | ||
| 208 | ;; AX contains the DOS error code. ;;AN000; | ||
| 209 | ;; ;;AN000; | ||
| 210 | ;; 4 The number at the beginning of the printer profile ;;AN000; | ||
| 211 | ;; giving the number of definitions in the file was ;;AN000; | ||
| 212 | ;; either missing or was greater then 255. ;;AN000; | ||
| 213 | ;; ;;AN000; | ||
| 214 | ;; 5 A line in the printer profile file was found to ;;AN000; | ||
| 215 | ;; be longer then allowed in the buffer. ;;AN000; | ||
| 216 | ;; ;;AN000; | ||
| 217 | ;; 6 There was an error find a printer name in the file ;;AN000; | ||
| 218 | ;; ;;AN000; | ||
| 219 | ;; 7 There was an error updating the file pointer ;;AN000; | ||
| 220 | ;; ;;AN000; | ||
| 221 | ;; 8 There are more then 255 printer definitions in the ;;AN000; | ||
| 222 | ;; file. ;;AN000; | ||
| 223 | ;; ;;AN000; | ||
| 224 | ;; 9 The number of actual definitions in the printer profile ;;AN000; | ||
| 225 | ;; file did not agree with the number given at the ;;AN000; | ||
| 226 | ;; beginning of the file. ;;AN000; | ||
| 227 | ;; ;;AN000; | ||
| 228 | ;; 10 There was an error allocating the memory needed for ;;AN000; | ||
| 229 | ;; the data. ;;AN000; | ||
| 230 | ;; ;;AN000; | ||
| 231 | ;; ;;AN000; | ||
| 232 | ;; OPERATION: ;;AN000; | ||
| 233 | ;; ;;AN000; | ||
| 234 | ;;**************************************************************************** ;;AN000; | ||
| 235 | GET_PRINTER_TITLES MACRO FILENAME ;;AN000; | ||
| 236 | ;;AN000; | ||
| 237 | MOV DI, OFFSET FILENAME ; The name of the printer definition file ;;AN000; | ||
| 238 | CALL GET_PRINTER_TITLES_ROUTINE ; Subroutine to perform the function. ;;AN000; | ||
| 239 | ENDM ;;AN000; | ||
| 240 | ;;**************************************************************************** ;;AN000; | ||
| 241 | ;; ;;AN000; | ||
| 242 | ;; GET_PRINTER_INFO: Given the number of a printer, this routines retrieves ;;AN000; | ||
| 243 | ;; the information for this printer from the profile file. ;;AN000; | ||
| 244 | ;; ;;AN000; | ||
| 245 | ;; SYNTAX: GET_PRINTER_INFO printer_num ;;AN000; | ||
| 246 | ;; ;;AN000; | ||
| 247 | ;; INPUT: ;;AN000; | ||
| 248 | ;; printer_num = The number the printer to get the information on. ;;AN000; | ||
| 249 | ;; The number is the location of this printer in the ;;AN000; | ||
| 250 | ;; printer names list. ;;AN000; | ||
| 251 | ;; OUTPUT: ;;AN000; | ||
| 252 | ;; If CY = 0, there were no errors. ;;AN000; | ||
| 253 | ;; The following variable are updated with the information found in ;;AN000; | ||
| 254 | ;; the file: ;;AN000; | ||
| 255 | ;; I_PRINTER ;;AN000; | ||
| 256 | ;; N_PRINTER_TYPE ;;AN000; | ||
| 257 | ;; S_MODE_PARM ;;AN000; | ||
| 258 | ;; S_CP_DRIVER ;;AN000; | ||
| 259 | ;; S_CP_PREPARE ;;AN000; | ||
| 260 | ;; S_GRAPH_PARM ;;AN000; | ||
| 261 | ;; ;;AN000; | ||
| 262 | ;; If CY = 1, There were errors encountered. ;;AN000; | ||
| 263 | ;; BX = An error code indicating the type of error that occured. ;;AN000; | ||
| 264 | ;; ;;AN000; | ||
| 265 | ;; = 3 There was an error reading the file ;;AN000; | ||
| 266 | ;; = 7 There was a error accessing the file ;;AN000; | ||
| 267 | ;; = 11 A printer definition has either a CDP or a CPP ;;AN000; | ||
| 268 | ;; Prefix, but BOTH were not present. ;;AN000; | ||
| 269 | ;; = 12 There was an error in the printer definition. ;;AN000; | ||
| 270 | ;; - A line was found with an invalid prefix ;;AN000; | ||
| 271 | ;; ;;AN000; | ||
| 272 | ;; If the error was a result of a DOS function, then ;;AN000; | ||
| 273 | ;; on return, AX will contain the DOS error code. ;;AN000; | ||
| 274 | ;; ;;AN000; | ||
| 275 | ;; OPERATION: ;;AN000; | ||
| 276 | ;; ;;AN000; | ||
| 277 | ;;**************************************************************************** ;;AN000; | ||
| 278 | GET_PRINTER_INFO MACRO VAR_PRT ;;AN000; | ||
| 279 | ;;AN000; | ||
| 280 | MOV AX, VAR_PRT ;;AN000; | ||
| 281 | CALL GET_PRINTER_INFO_ROUTINE ;;AN000; | ||
| 282 | ENDM ;;AN000; | ||
| 283 | ;;AN000; | ||
| 284 | ;;**************************************************************************** ;;AN000; | ||
| 285 | ;; ;;AN000; | ||
| 286 | ;; RELEASE_PRINTER_INFO: Close the printer profile file and free the ;;AN000; | ||
| 287 | ;; allocated memory. ;;AN000; | ||
| 288 | ;; ;;AN000; | ||
| 289 | ;; SYNTAX: RELEASE_PRINTER_INFO ;;AN000; | ||
| 290 | ;; ;;AN000; | ||
| 291 | ;; INPUT: ;;AN000; | ||
| 292 | ;; None. ;;AN000; | ||
| 293 | ;; ;;AN000; | ||
| 294 | ;; OUTPUT: ;;AN000; | ||
| 295 | ;; If CY = 0, There were no error encountered. ;;AN000; | ||
| 296 | ;; If CY = 1, There was an error. ;;AN000; | ||
| 297 | ;; AX = The DOS error code for the deallocate memory function ;;AN000; | ||
| 298 | ;; ;;AN000; | ||
| 299 | ;; OPERATION: Closes the printer profile file and deallocted memory. ;;AN000; | ||
| 300 | ;; ;;AN000; | ||
| 301 | ;;**************************************************************************** ;;AN000; | ||
| 302 | RELEASE_PRINTER_INFO MACRO ;;AN000; | ||
| 303 | ;;AN000; | ||
| 304 | CALL RELEASE_PRINTER_INFO_ROUTINE ;;AN000; | ||
| 305 | ENDM ;;AN000; | ||
| 306 | ;;**************************************************************************** ;;AN000; | ||
| 307 | ;; ;;AN000; | ||
| 308 | ;; GET_PRINTER_PARAMS: Get parameters for specified printer. ;;AN000; | ||
| 309 | ;; ;;AN000; | ||
| 310 | ;; SYNTAX: GET_PRINTER_PARAMS var_prt, var_port, var_status ;;AN000; | ||
| 311 | ;; ;;AN000; | ||
| 312 | ;; INPUT: ;;AN000; | ||
| 313 | ;; var_prt = The printer number. ;;AN000; | ||
| 314 | ;; var_port = The number of the port to retrieve the information on. ;;AN000; | ||
| 315 | ;; If var_port = 0, the information that is returned is ;;AN000; | ||
| 316 | ;; that which cooresponds to var_prt. ;;AN000; | ||
| 317 | ;; var_port = 0 : Get the information on printer number VAR_PRT ;;AN000; | ||
| 318 | ;; = 1 : Get the information for the printer attached to LPT1 ;;AN000; | ||
| 319 | ;; = 2 : Get the information for the printer attached to LPT2 ;;AN000; | ||
| 320 | ;; = 3 : Get the information for the printer attached to LPT3 ;;AN000; | ||
| 321 | ;; = 4 : Get the information for the printer attached to COM1 ;;AN000; | ||
| 322 | ;; = 5 : Get the information for the printer attached to COM2 ;;AN000; | ||
| 323 | ;; = 6 : Get the information for the printer attached to COM3 ;;AN000; | ||
| 324 | ;; = 7 : Get the information for the printer attached to COM4 ;;AN000; | ||
| 325 | ;; ;;AN000; | ||
| 326 | ;; OUTPUT: ;;AN000; | ||
| 327 | ;; var_status = 1: Printer information is valid ;;AN000; | ||
| 328 | ;; = 0: Printer not valid: default values returned ;;AN000; | ||
| 329 | ;; ;;AN000; | ||
| 330 | ;; OPERATION: Printer information for the specified printer is returned. ;;AN000; | ||
| 331 | ;; If the specified printer is not defined, default values will be ;;AN000; | ||
| 332 | ;; returned. ;;AN000; | ||
| 333 | ;; I_PRINTER = Index into printer list (16 bit variable) : default 1 ;;AN000; | ||
| 334 | ;; N_PRINTER_TYPE = P: Parallel printer ;;AN000; | ||
| 335 | ;; = S: Serial printer ;;AN000; | ||
| 336 | ;; I_PORT = Port number (16 bit variable) : default 1 ;;AN000; | ||
| 337 | ;; I_REDIRECT = Redirection port number (16 bit variable) : default 1 ;;AN000; | ||
| 338 | ;; S_MODE_PARM = Mode parameters - ASCII-N format ;;AN000; | ||
| 339 | ;; S_CP_DRIVER = Code page driver parameters - ASCII-N format ;;AN000; | ||
| 340 | ;; S_CP_PREPARE = Code prepare parameters - ASCII-N format ;;AN000; | ||
| 341 | ;; S_GRAPH_PARM = Graphics parameters - ASCII-N format ;;AN000; | ||
| 342 | ;; ;;AN000; | ||
| 343 | ;; The structures of printer information are searched for the one with ;;AN000; | ||
| 344 | ;; the same number as specified by VAR_PRT. If found, the information ;;AN000; | ||
| 345 | ;; in that structure is returned in the variables listed above. ;;AN000; | ||
| 346 | ;; ;;AN000; | ||
| 347 | ;;**************************************************************************** ;;AN000; | ||
| 348 | GET_PRINTER_PARAMS MACRO VAR_PRT, VAR_PORT, VAR_STATUS ;;AN000; | ||
| 349 | ;;AN000; | ||
| 350 | MOV AX, VAR_PRT ;;AN000; | ||
| 351 | MOV BX, VAR_PORT ;;AN000; | ||
| 352 | CALL GET_PRINTER_PARAMS_ROUTINE ;;AN000; | ||
| 353 | MOV VAR_STATUS, AX ;;AN000; | ||
| 354 | ENDM ;;AN000; | ||
| 355 | ;;**************************************************************************** ;;AN000; | ||
| 356 | ;; ;;AN000; | ||
| 357 | ;; SAVE_PRINTER_PARAMS: Save the printer information in the printer structures ;;AN000; | ||
| 358 | ;; ;;AN000; | ||
| 359 | ;; SYNTAX: SAVE_PRINTER_PARAMS var_prt ;;AN000; | ||
| 360 | ;; ;;AN000; | ||
| 361 | ;; INPUT: ;;AN000; | ||
| 362 | ;; var_prt = The printer number. ;;AN000; | ||
| 363 | ;; ;;AN000; | ||
| 364 | ;; OUTPUT: ;;AN000; | ||
| 365 | ;; None. ;;AN000; | ||
| 366 | ;; ;;AN000; | ||
| 367 | ;; OPERATION: Printer information for the specified printer is stored. ;;AN000; | ||
| 368 | ;; I_PRINTER = Index into printer list (16 bit variable) : default 1 ;;AN000; | ||
| 369 | ;; N_PRINTER_TYPE = P: Parallel printer ;;AN000; | ||
| 370 | ;; = S: Serial printer ;;AN000; | ||
| 371 | ;; I_PORT = Port number (16 bit variable) : default 1 ;;AN000; | ||
| 372 | ;; I_REDIRECT = Redirection port number (16 bit variable) : default 1 ;;AN000; | ||
| 373 | ;; S_MODE_PARM = Mode parameters - ASCII-N format ;;AN000; | ||
| 374 | ;; S_CP_DRIVER = Code page driver parameters - ASCII-N format ;;AN000; | ||
| 375 | ;; S_CP_PREPARE = Code prepare parameters - ASCII-N format ;;AN000; | ||
| 376 | ;; S_GRAPH_PARM = Graphics parameters - ASCII-N format ;;AN000; | ||
| 377 | ;; ;;AN000; | ||
| 378 | ;; The information is stored in the structures according to the type ;;AN000; | ||
| 379 | ;; and port number of this printer. The first three structures are for ;;AN000; | ||
| 380 | ;; LPT1 - LPT3, while the next four are for COM1 - COM2. ;;AN000; | ||
| 381 | ;; ;;AN000; | ||
| 382 | ;;**************************************************************************** ;;AN000; | ||
| 383 | SAVE_PRINTER_PARAMS MACRO VAR_PRT ;;AN000; | ||
| 384 | ;;AN000; | ||
| 385 | MOV AX, VAR_PRT ;;AN000; | ||
| 386 | CALL SAVE_PRINTER_PARAMS_ROUTINE ;;AN000; | ||
| 387 | ENDM ;;AN000; | ||
| 388 | ;;**************************************************************************** ;;AN000; | ||
| 389 | ;; ;;AN000; | ||
| 390 | ;; CHANGE_AUTOEXEC: Search for the SELECT command in the autoexec.bat and ;;AN000; | ||
| 391 | ;; change the parameters for that line. ;;AN000; | ||
| 392 | ;; ;;AN000; | ||
| 393 | ;; SYNTAX: CHANGE_AUTOEXEC FILENAME, APPEND_STRING ;;AN000; | ||
| 394 | ;; ;;AN000; | ||
| 395 | ;; INPUT: ;;AN000; | ||
| 396 | ;; FILENAME = An ASCII-N string containing the name of the file to change. ;;AN000; | ||
| 397 | ;; Since the string has to be converted into an ASCII-Z string, ;;AN000; | ||
| 398 | ;; an extra byte must always be available following the string. ;;AN000; | ||
| 399 | ;; APPEND_STRING = An ASCII-N string containing the parameters to add to ;;AN000; | ||
| 400 | ;; the SELECT command. ;;AN000; | ||
| 401 | ;; ;;AN000; | ||
| 402 | ;; OUTPUT: ;;AN000; | ||
| 403 | ;; None. ;;AN000; | ||
| 404 | ;; ;;AN000; | ||
| 405 | ;; OPERATION: ;;AN000; | ||
| 406 | ;; ;;AN000; | ||
| 407 | ;;**************************************************************************** ;;AN000; | ||
| 408 | CHANGE_AUTOEXEC MACRO FILENAME, APPEND_STRING ;;AN000; | ||
| 409 | ;;AN000; | ||
| 410 | MOV DI, OFFSET FILENAME ;;AN000; | ||
| 411 | MOV SI, OFFSET APPEND_STRING ;;AN000; | ||
| 412 | CALL CHANGE_AUTOEXEC_ROUTINE ;;AN000; | ||
| 413 | ENDM ;;AN000; | ||
| 414 | ;;AN000; | ||
| 415 | ;;**************************************************************************** ;;AN000; | ||
| 416 | ;; ;;AN000; | ||
| 417 | ;; LOAD_MESSAGES: Load the messages and initialize the message retriever. ;;AN000; | ||
| 418 | ;; ;;AN000; | ||
| 419 | ;; SYNTAX: LOAD_MESSAGES ;;AN000; | ||
| 420 | ;; ;;AN000; | ||
| 421 | ;; INPUT: ;;AN000; | ||
| 422 | ;; None. ;;AN000; | ||
| 423 | ;; ;;AN000; | ||
| 424 | ;; OUTPUT: ;;AN000; | ||
| 425 | ;; If CY = 1, there was an error loading the messages. ;;AN000; | ||
| 426 | ;; If CY = 0, there were no errors. ;;AN000; | ||
| 427 | ;; ;;AN000; | ||
| 428 | ;; OPERATION: ;;AN000; | ||
| 429 | ;; ;;AN000; | ||
| 430 | ;;**************************************************************************** ;;AN000; | ||
| 431 | LOAD_MESSAGES MACRO ;;AN000; | ||
| 432 | ;;AN000; | ||
| 433 | CALL SYSLOADMSG ;;AN000; | ||
| 434 | ENDM ;;AN000; | ||
| 435 | ;;**************************************************************************** ;;AN000; | ||
| 436 | ;; ;;AN000; | ||
| 437 | ;; DISPLAY_MESSAGE: Call the message retriever to display a message. ;;AN000; | ||
| 438 | ;; ;;AN000; | ||
| 439 | ;; SYNTAX: DISPLAY_MESSAGE msg_number ;;AN000; | ||
| 440 | ;; ;;AN000; | ||
| 441 | ;; INPUT: ;;AN000; | ||
| 442 | ;; msg_number = The number of the message to be displayed. (16 bit value) ;;AN000; | ||
| 443 | ;; ;;AN000; | ||
| 444 | ;; OUTPUT: ;;AN000; | ||
| 445 | ;; If CY = 1, there was an error displaying the message. ;;AN000; | ||
| 446 | ;; If CY = 0, there were no errors. ;;AN000; | ||
| 447 | ;; ;;AN000; | ||
| 448 | ;; OPERATION: ;;AN000; | ||
| 449 | ;; ;;AN000; | ||
| 450 | ;;**************************************************************************** ;;AN000; | ||
| 451 | DISPLAY_MESSAGE MACRO MSG_NUMBER ;;AN000; | ||
| 452 | ;;AN000; | ||
| 453 | MOV AX, MSG_NUMBER ;;AN000; | ||
| 454 | CALL DISPLAY_MESSAGE_ROUTINE ;;AN000; | ||
| 455 | ENDM ;;AN000; | ||
| 456 | ;;**************************************************************************** ;;AN000; | ||
| 457 | ;; ;;AN000; | ||
| 458 | ;; CHECK_DOS_PATH: Check to see if a path for the SET PATH command is valid ;;AN000; | ||
| 459 | ;; ;;AN000; | ||
| 460 | ;; SYNTAX: CHECK_DOS_PATH path_str ;;AN000; | ||
| 461 | ;; ;;AN000; | ||
| 462 | ;; INPUT: ;;AN000; | ||
| 463 | ;; path_str - An ASCII-N string containing the path to check. ;;AN000; | ||
| 464 | ;; ;;AN000; | ||
| 465 | ;; OUTPUT: ;;AN000; | ||
| 466 | ;; If CY = 0, the path is valid. ;;AN000; | ||
| 467 | ;; If CY = 1, The path is NOT valid: ;;AN000; | ||
| 468 | ;; ;;AN000; | ||
| 469 | ;; OPERATION: ;;AN000; | ||
| 470 | ;; ;;AN000; | ||
| 471 | ;;**************************************************************************** ;;AN000; | ||
| 472 | CHECK_DOS_PATH MACRO PATH_STR ;;AN000; | ||
| 473 | ;;AN000; | ||
| 474 | LEA SI, PATH_STR ;;AN000; | ||
| 475 | CALL CHECK_DOS_PATH_ROUTINE ;;AN000; | ||
| 476 | ENDM ;;AN000; | ||
| 477 | ;;**************************************************************************** ;;AN000; | ||
| 478 | ;; ;;AN000; | ||
| 479 | ;; CHECK_PATH: Check to see if a path is valid. ;;AN000; | ||
| 480 | ;; ;;AN000; | ||
| 481 | ;; SYNTAX: CHECK_PATH path_str, drive, root ;;AN000; | ||
| 482 | ;; ;;AN000; | ||
| 483 | ;; INPUT: ;;AN000; | ||
| 484 | ;; path_str - An ASCII-N string containing the path to check. ;;AN000; | ||
| 485 | ;; ;;AN000; | ||
| 486 | ;; drive = 0: Drive letter cannot be specified. (8 bit or immediate value) ;;AN000; | ||
| 487 | ;; = 1: Drive letter is optional and can be specified. ;;AN000; | ||
| 488 | ;; = 2: Drive letter must be specified. ;;AN000; | ||
| 489 | ;; ;;AN000; | ||
| 490 | ;; root = 0: First non-drive character cannot be a backslash ('\') (8 bit or immediate value) ;;AN000; | ||
| 491 | ;; = 1: First non-drive character may be a backslash ('\') ;;AN000; | ||
| 492 | ;; = 2: First non-drive character must be a backslash ('\') ;;AN000; | ||
| 493 | ;; ;;AN000; | ||
| 494 | ;; OUTPUT: ;;AN000; | ||
| 495 | ;; If CY = 0, the path is valid. ;;AN000; | ||
| 496 | ;; If CY = 1, The path is NOT valid: ;;AN000; | ||
| 497 | ;; AX = 1, The drive specified is invalid. ;;AN000; | ||
| 498 | ;; = 2, There was no drive specified. ;;AN000; | ||
| 499 | ;; = 3, There was a drive specified. ;;AN000; | ||
| 500 | ;; = 4, There was a leading backslash ;;AN000; | ||
| 501 | ;; = 5, The leading backslash was NOT present. ;;AN000; | ||
| 502 | ;; = 6, There was a trailing backslash. ;;AN000; | ||
| 503 | ;; ;;AN000; | ||
| 504 | ;; OPERATION: ;;AN000; | ||
| 505 | ;; ;;AN000; | ||
| 506 | ;;**************************************************************************** ;;AN000; | ||
| 507 | CHECK_PATH MACRO PATH_STR, DRIVE, ROOT ;;AN000; | ||
| 508 | ;;AN000; | ||
| 509 | LEA SI, PATH_STR ;;AN000; | ||
| 510 | MOV DI, SI ;;AN000; | ||
| 511 | CALL POS_ZERO ;;AN000; | ||
| 512 | MOV CX, [SI] ;;AN000; | ||
| 513 | ADD SI, 2 ;;AN000; | ||
| 514 | MOV AL, DRIVE ;;AN000; | ||
| 515 | MOV AH, ROOT ;;AN000; | ||
| 516 | CALL CHECK_VALID_PATH ;;AN000; | ||
| 517 | ENDM ;;AN000; | ||
| 518 | ;;**************************************************************************** ;;AN000; | ||
| 519 | ;; ;;AN000; | ||
| 520 | ;; GET_NUMBER_PORTS: Get the number of parallel and serial ports attached ;;AN000; | ||
| 521 | ;; to the computer. ;;AN000; | ||
| 522 | ;; ;;AN000; | ||
| 523 | ;; SYNTAX: GET_NUMBER_PORTS parallel, serial ;;AN000; | ||
| 524 | ;; ;;AN000; | ||
| 525 | ;; INPUT: ;;AN000; | ||
| 526 | ;; None. ;;AN000; | ||
| 527 | ;; ;;AN000; | ||
| 528 | ;; OUTPUT: ;;AN000; | ||
| 529 | ;; parallel = The number of parallel ports attached. (8 bit value) ;;AN000; | ||
| 530 | ;; serial = The number of serial ports attached. (8 bit value) ;;AN000; | ||
| 531 | ;; ;;AN000; | ||
| 532 | ;; OPERATION: The macro performs a call to interrupt 11H to determine ;;AN000; | ||
| 533 | ;; the number of ports available. ;;AN000; | ||
| 534 | ;; ;;AN000; | ||
| 535 | ;;**************************************************************************** ;;AN000; | ||
| 536 | GET_NUMBER_PORTS MACRO PARALLEL, SERIAL ;;AN000; | ||
| 537 | ;;AN000; | ||
| 538 | INT 11H ;; Determine equipment attached ;;AN000; | ||
| 539 | SHR AH, 1 ;; Put the number of serial ports in L.S. Bits ;;AN000; | ||
| 540 | MOV BH, 0 ;;AN000; | ||
| 541 | MOV BL, AH ;;AN000; | ||
| 542 | MOV SERIAL, BX ;;AN000; | ||
| 543 | AND SERIAL, 0000000000000111B ;; Mask off the unwanted information ;;AN000; | ||
| 544 | MOV CL, 5 ;; Number of bits to shift ;;AN000; | ||
| 545 | SHR AH, CL ;; Put the number of parallel ports in L.S. Bits ;;AN000; | ||
| 546 | MOV BL, AH ;;AN000; | ||
| 547 | MOV PARALLEL, BX ;; Store ;;AN000; | ||
| 548 | AND PARALLEL, 0000000000000011B ;; Mask off the unwanted infromation ;;AN000; | ||
| 549 | ENDM ;;AN000; | ||
| 550 | ;;**************************************************************************** ;;AN000; | ||
| 551 | ;; ;;AN000; | ||
| 552 | ;; CHANGE_ATTRIBUTE: Change the attributes on a group of file to be hidden ;;AN000; | ||
| 553 | ;; files. ;;AN000; | ||
| 554 | ;; ;;AN000; | ||
| 555 | ;; SYNTAX: CHANGE_ATTRIBUTE list_ptr, num_files ;;AN000; | ||
| 556 | ;; ;;AN000; | ||
| 557 | ;; INPUT: ;;AN000; | ||
| 558 | ;; list_ptr = A pointer to a the list of files to change the attributes ;;AN000; | ||
| 559 | ;; of. The list must be of the form: ;;AN000; | ||
| 560 | ;; db filename,?,? ;;AN000; | ||
| 561 | ;; Where the filename takes up 12 bytes. ;;AN000; | ||
| 562 | ;; num_file = The number of files in the list. ;;AN000; | ||
| 563 | ;; ;;AN000; | ||
| 564 | ;; OUTPUT: ;;AN000; | ||
| 565 | ;; If CY = 1, there was an error encountered. ;;AN000; | ||
| 566 | ;; If CY = 0, there were no errors. ;;AN000; | ||
| 567 | ;; ;;AN000; | ||
| 568 | ;; OPERATION: The macro reads the attribute of the file, stores it in the ;;AN000; | ||
| 569 | ;; word following the filename in the list, and then assigns the new ;;AN000; | ||
| 570 | ;; attribute to the file. ;;AN000; | ||
| 571 | ;; ;;AN000; | ||
| 572 | ;;**************************************************************************** ;;AN000; | ||
| 573 | CHANGE_ATTRIBUTE MACRO LIST_PTR, NUM_FILES ;;AN000; | ||
| 574 | ;;AN000; | ||
| 575 | LEA SI, LIST_PTR ;; Get the address of the file list ;;AN000; | ||
| 576 | MOV AX, 0 ;; Indicate we are to attach a new attribute to the file ;;AN000; | ||
| 577 | MOV BX, NUM_FILES ;; Load the number of files in the list ;;AN000; | ||
| 578 | CALL CHANGE_ATTRIBUTE_ROUTINE ;; Change the attributes ;;AN000; | ||
| 579 | ENDM ;;AN000; | ||
| 580 | ;;**************************************************************************** ;;AN000; | ||
| 581 | ;; ;;AN000; | ||
| 582 | ;; RESTORE_ATTRIBUTE: Restore the original attributes on a group of file. ;;AN000; | ||
| 583 | ;; ;;AN000; | ||
| 584 | ;; SYNTAX: RESTORE_ATTRIBUTE list_ptr, num_files ;;AN000; | ||
| 585 | ;; ;;AN000; | ||
| 586 | ;; INPUT: ;;AN000; | ||
| 587 | ;; list_ptr = A pointer to a the list of files to change the attributes ;;AN000; | ||
| 588 | ;; of. The list must be of the form: ;;AN000; | ||
| 589 | ;; db filename,?,? ;;AN000; | ||
| 590 | ;; Where the filename takes up 12 bytes. ;;AN000; | ||
| 591 | ;; num_files = The number of files in the list. ;;AN000; | ||
| 592 | ;; ;;AN000; | ||
| 593 | ;; OUTPUT: ;;AN000; | ||
| 594 | ;; If CY = 1, there was an error encountered. ;;AN000; | ||
| 595 | ;; If CY = 0, there were no errors. ;;AN000; | ||
| 596 | ;; ;;AN000; | ||
| 597 | ;; OPERATION: This macros restores the attribute previously stored for the ;;AN000; | ||
| 598 | ;; listed files. ;;AN000; | ||
| 599 | ;; ;;AN000; | ||
| 600 | ;;**************************************************************************** ;;AN000; | ||
| 601 | RESTORE_ATTRIBUTE MACRO LIST_PTR, NUM_FILES ;;AN000; | ||
| 602 | ;;AN000; | ||
| 603 | LEA SI, LIST_PTR ;; Get the address of the file list ;;AN000; | ||
| 604 | MOV AX, 1 ;; Indicate we are to attach a new attribute to the file ;;AN000; | ||
| 605 | MOV BX, NUM_FILES ;; Load the number of files in the list ;;AN000; | ||
| 606 | CALL CHANGE_ATTRIBUTE_ROUTINE ;; Change the attributes ;;AN000; | ||
| 607 | ENDM ;;AN000; | ||
| 608 | ;;**************************************************************************** ;;AN000; | ||
| 609 | ;; ;;AN000; | ||
| 610 | ;; COMPARE_STRINGS: Compare two strings. ;;AN000; | ||
| 611 | ;; ;;AN000; | ||
| 612 | ;; SYNTAX: COMPARE_STRINGS string_1, string_2 ;;AN000; | ||
| 613 | ;; ;;AN000; | ||
| 614 | ;; INPUT: ;;AN000; | ||
| 615 | ;; string_1 = The address of the first string. (ASCII-N string) ;;AN000; | ||
| 616 | ;; string_2 = The address of the second string. (ASCII-N string) ;;AN000; | ||
| 617 | ;; ;;AN000; | ||
| 618 | ;; OUTPUT: ;;AN000; | ||
| 619 | ;; If CY = 1, the strings do no compare. ;;AN000; | ||
| 620 | ;; If CY = 0, the strings are the same. ;;AN000; | ||
| 621 | ;; ;;AN000; | ||
| 622 | ;; OPERATION: ;;AN000; | ||
| 623 | ;; ;;AN000; | ||
| 624 | ;;**************************************************************************** ;;AN000; | ||
| 625 | COMPARE_STRINGS MACRO STRING_1, STRING_2 ;;AN000; | ||
| 626 | ;;AN000; | ||
| 627 | LEA SI, STRING_1 ;;AN000; | ||
| 628 | LEA DI, STRING_2 ;;AN000; | ||
| 629 | CALL COMPARE_ROUTINE ;;AN000; | ||
| 630 | ENDM ;;AN000; | ||
| 631 | ;;**************************************************************************** ;;AN000; | ||
| 632 | ;; ;;AN000; | ||
| 633 | ;; CHECK_WRITE_PROTECT Determine if the diskette in drive A/B is write ;;AC000;JW | ||
| 634 | ;; protected. ;;AN000; | ||
| 635 | ;; ;;AN000; | ||
| 636 | ;; SYNTAX: CHECK_WRITE_PROTECT RET_CODE ;;AN000; | ||
| 637 | ;; ;;AN000; | ||
| 638 | ;; INPUT: ;;AN000; | ||
| 639 | ;; DRIVE = A_DRIVE (0) Check the diskette in the A drive ;;AC000;JW | ||
| 640 | ;; DRIVE = B_DRIVE (1) Check the diskette in the B drive ;;AC000;JW | ||
| 641 | ;; ;;AN000; | ||
| 642 | ;; OUTPUT: ;;AN000; | ||
| 643 | ;; If CY = 1, There was an error accessing the drive. ;;AN000; | ||
| 644 | ;; If CY = 0, There were no errors. ;;AN000; | ||
| 645 | ;; RET_CODE = 1: The diskette IS write protected. ;;AN000; | ||
| 646 | ;; = 0: The diskette is NOT write protected. ;;AN000; | ||
| 647 | ;; ;;AN000; | ||
| 648 | ;; OPERATION: ;;AN000; | ||
| 649 | ;; ;;AN000; | ||
| 650 | ;;**************************************************************************** ;;AN000; | ||
| 651 | CHECK_WRITE_PROTECT MACRO DRIVE, RET_CODE ;;AC000;JW | ||
| 652 | MOV CX,DRIVE ;;AN000;JW | ||
| 653 | CALL CHECK_WRITE_ROUTINE ;;AN000; | ||
| 654 | MOV RET_CODE, AX ;;AN000; | ||
| 655 | ENDM ;;AN000; | ||
| 656 | ;;**************************************************************************** ;;AN000; | ||
| 657 | ;; ;;AN000; | ||
| 658 | ;; GET_FREE_SPACE Determine the free disk space on a diskette. ;;AN000; | ||
| 659 | ;; ;;AN000; | ||
| 660 | ;; SYNTAX: GET_FREE_SPACE drive, space ;;AN000; | ||
| 661 | ;; ;;AN000; | ||
| 662 | ;; INPUT: ;;AN000; | ||
| 663 | ;; drive = 1: Examine diskette in drive A ;;AN000; | ||
| 664 | ;; = 2: Examine diskette in drive B ;;AN000; | ||
| 665 | ;; ;;AN000; | ||
| 666 | ;; OUTPUT: ;;AN000; | ||
| 667 | ;; If CY = 1, there was an error accessing the disk ;;AN000; | ||
| 668 | ;; If CY = 0, there were no errors. ;;AN000; | ||
| 669 | ;; space = The amount of free space on the disk (32-bit value) ;;AN000; | ||
| 670 | ;; ;;AN000; | ||
| 671 | ;; OPERATION: ;;AN000; | ||
| 672 | ;; ;;AN000; | ||
| 673 | ;;**************************************************************************** ;;AN000; | ||
| 674 | GET_FREE_SPACE MACRO DRIVE, SPACE ;;AN000; | ||
| 675 | ;;AN000; | ||
| 676 | MOV DL, DRIVE ;;AN000; | ||
| 677 | MOV AH, 36H ;;AN000; | ||
| 678 | DOSCALL ;;AN000; | ||
| 679 | .IF < NC > ;;AN000; | ||
| 680 | MUL BX ;;AN000; | ||
| 681 | MUL CX ;;AN000; | ||
| 682 | MOV WORD PTR SPACE[0], AX ;;AN000; | ||
| 683 | MOV WORD PTR SPACE[2], DX ;;AN000; | ||
| 684 | .ENDIF ;;AN000; | ||
| 685 | ENDM ;;AN000; | ||
| 686 | ;;**************************************************************************** ;;AN000; | ||
| 687 | ;; ;;AN000; | ||
| 688 | ;; MATCH_DISK_FILES Determine if a list of file exist on a disk. ;;AN000; | ||
| 689 | ;; ;;AN000; | ||
| 690 | ;; SYNTAX: GET_FREE_SPACE path, file_list, list_type, num_files, ret_code ;;AN000; | ||
| 691 | ;; ;;AN000; | ||
| 692 | ;; INPUT: ;;AN000; | ||
| 693 | ;; path = ASCII-N string containing the drive, and path of where to ;;AN000; | ||
| 694 | ;; search. ;;AN000; | ||
| 695 | ;; file_list = The address of the list of files to use. If AX=2, then ;;AN000; | ||
| 696 | ;; the first two bytes are ignored. ;;AN000; | ||
| 697 | ;; list_type = 1: Use a small list with 12 byte between filenames. ;;AN000; | ||
| 698 | ;; = 2: Use a list with 14 bytes between filenames. ;;AN000; | ||
| 699 | ;; ;;AN000; | ||
| 700 | ;; OUTPUT: ;;AN000; | ||
| 701 | ;; If CY = 1, There was an error accessing the disk. ;;AN000; | ||
| 702 | ;; If CY = 0, there were no errors. ;;AN000; | ||
| 703 | ;; ret_code = 1: All the files are on the disk. ;;AN000; | ||
| 704 | ;; ret_code = 0: All the file are NOT on the disk. ;;AN000; | ||
| 705 | ;; ;;AN000; | ||
| 706 | ;; OPERATION: ;;AN000; | ||
| 707 | ;; ;;AN000; | ||
| 708 | ;;**************************************************************************** ;;AN000; | ||
| 709 | MATCH_DISK_FILES MACRO PATH, FILE_LIST, LIST_TYPE, NUM_FILES, RET_CODE ;;AN000; | ||
| 710 | ;;AN000; | ||
| 711 | LEA DI, PATH ;;AN000; | ||
| 712 | LEA SI, FILE_LIST ;;AN000; | ||
| 713 | MOV AX, LIST_TYPE ;;AN000; | ||
| 714 | MOV CX, NUM_FILES ;;AN000; | ||
| 715 | CALL MATCH_FILES_ROUTINE ;;AN000; | ||
| 716 | MOV RET_CODE, AX ;;AN000; | ||
| 717 | ENDM ;;AN000; | ||
| 718 | ;;AN000; | ||
| 719 | INCLUDE MACROS7.INC ;;AN000; | ||
diff --git a/v4.0/src/SELECT/MACROS7.INC b/v4.0/src/SELECT/MACROS7.INC new file mode 100644 index 0000000..0c8ca06 --- /dev/null +++ b/v4.0/src/SELECT/MACROS7.INC | |||
| @@ -0,0 +1,126 @@ | |||
| 1 | PROCESS_ESC MACRO ;;AN000; | ||
| 2 | .IF < N_USER_FUNC eq E_ESCAPE > ;;AN000; | ||
| 3 | .THEN ;;AN000; | ||
| 4 | POP_HEADING ;;AN000; | ||
| 5 | .ENDIF ;;AN000; | ||
| 6 | ENDM ;;AN000; | ||
| 7 | ;;AN000; | ||
| 8 | PROCESS_F3 MACRO ;;AN000; | ||
| 9 | .IF < N_USER_FUNC eq E_F3 > ;;AN000; | ||
| 10 | .THEN ;;AN000; | ||
| 11 | GOTO EXIT_DOS ;;AN000; | ||
| 12 | .ENDIF ;;AN000; | ||
| 13 | ENDM ;;AN000; | ||
| 14 | |||
| 15 | INIT_VAR_MINIMIZE MACRO | ||
| 16 | INIT_VAR S_BUFFERS, 0 ;;AN000;set BUFFERS = null (spaces) | ||
| 17 | INIT_VAR S_FCBS, 0 ;;AN000;set FCBS = null (spaces) | ||
| 18 | INIT_VAR F_ANSI, E_ANSI_NO ;;AN000;set ANSI = no | ||
| 19 | INIT_VAR S_ANSI, 0 ;;AN000;set ANSI field = null (spaces) | ||
| 20 | INIT_VAR F_FASTOPEN, E_FASTOPEN_NO ;;AN000;set FASTOPEN = no | ||
| 21 | INIT_VAR S_FASTOPEN, 0 ;;AN000;set FASTOPEN = null (spaces) | ||
| 22 | INIT_VAR F_GRAPHICS, E_GRAPHICS_NO ;;AN000;set GRAPHICS = no | ||
| 23 | INIT_VAR S_GRAPHICS, 0 ;;AN000;set GRAPHICS field = null (spaces) | ||
| 24 | COPY_STRING S_FILES, M_FILES, D_FILES_2 ;AN000; set FILES = 8 | ||
| 25 | ENDM | ||
| 26 | |||
| 27 | INIT_VAR_BALANCE MACRO | ||
| 28 | COPY_STRING S_BUFFERS, M_BUFFERS, D_BUFFERS_1 ;;AN000;set BUFFERS = 20 | ||
| 29 | INIT_VAR S_FCBS, 0 ;;AN000;set FCBS = null (spaces) | ||
| 30 | INIT_VAR F_ANSI, E_ANSI_YES ;;AN000;set ANSI = yes | ||
| 31 | INIT_VAR S_ANSI, 0 ;;AN000;set ANSI field = null (spaces) | ||
| 32 | INIT_VAR F_FASTOPEN, E_FASTOPEN_YES ;;AN000;set FASTOPEN = yes | ||
| 33 | COPY_STRING S_FASTOPEN, M_FASTOPEN, D_FASTOPEN_1 ;;AN000;set FASTOPEN = C:=(50,25) | ||
| 34 | INIT_VAR F_GRAPHICS, E_GRAPHICS_YES ;;AN000;set GRAPHICS = yes | ||
| 35 | INIT_VAR S_GRAPHICS, 0 ;;AN000;set GRAPHICS field = null (spaces) | ||
| 36 | COPY_STRING S_FILES, M_FILES, D_FILES_1 ;AN000; set FILES = 20 | ||
| 37 | ENDM | ||
| 38 | |||
| 39 | INIT_VAR_MAXIMIZE MACRO | ||
| 40 | COPY_STRING S_BUFFERS, M_BUFFERS, D_BUFFERS_2 ;;AN000;set BUFFERS = 50,4 | ||
| 41 | COPY_STRING S_FCBS, M_FCBS, D_FCBS_1 ;;AN000;set FCBS = 20,8 | ||
| 42 | INIT_VAR F_ANSI, E_ANSI_YES ;;AN000;set ANSI = yes | ||
| 43 | COPY_STRING S_ANSI, M_ANSI, D_ANSI_1 ;;AN000;set ANSI field = /X | ||
| 44 | INIT_VAR F_FASTOPEN, E_FASTOPEN_YES ;;AN000;set FASTOPEN = yes | ||
| 45 | COPY_STRING S_FASTOPEN, M_FASTOPEN, D_FASTOPEN_2 ;;AN000;set FASTOPEN = C:(150,150) | ||
| 46 | INIT_VAR F_GRAPHICS, E_GRAPHICS_YES ;;AN000;set GRAPHICS = yes | ||
| 47 | INIT_VAR S_GRAPHICS, 0 ;;AN000;set GRAPHICS field = null (spaces) | ||
| 48 | COPY_STRING S_FILES, M_FILES, D_FILES_1 ;AN000; set FILES = 20 | ||
| 49 | ENDM | ||
| 50 | |||
| 51 | SAVE_PARAMETERS MACRO SAV_FILE, RET_CODE ;;AN000; | ||
| 52 | PREPARE_FILE SAV_FILE ;;AN000; | ||
| 53 | WORD_TO_CHAR F_SHELL, S_STR120_1 | ||
| 54 | WRITE_LINE S_STR120_1 | ||
| 55 | WORD_TO_CHAR N_FORMAT_MODE, S_STR120_1 ;;AN000; | ||
| 56 | WRITE_LINE S_STR120_1 ;;AN000; | ||
| 57 | WORD_TO_CHAR N_DISK_1, S_STR120_1 ;;AN000; | ||
| 58 | WRITE_LINE S_STR120_1 ;;AN000; | ||
| 59 | WORD_TO_CHAR I_DESTINATION,S_STR120_1 ;;AN033;SEH save destination, too | ||
| 60 | WRITE_LINE S_STR120_1 ;;AN033;SEH | ||
| 61 | WRITE_LINE S_INSTALL_PATH ;;AN000; | ||
| 62 | SAVE_FILE SAV_FILE, RET_CODE ;;AN000; | ||
| 63 | ENDM ;;AN000; | ||
| 64 | |||
| 65 | CREATE_CONFIG MACRO CONFIG_FILE, RET_CODE ;;AN000; | ||
| 66 | PREPARE_FILE CONFIG_FILE ;;AN000; | ||
| 67 | CALL CREATE_CONFIG_SYS ;;AN000; | ||
| 68 | SAVE_FILE CONFIG_FILE, RET_CODE ;;AN000; | ||
| 69 | ENDM ;;AN000; | ||
| 70 | |||
| 71 | CREATE_AUTOEXEC MACRO AUTO_FILE, DEST, RET_CODE ;;AN000; | ||
| 72 | MOV N_DEST, DEST ;;AN000; | ||
| 73 | PREPARE_FILE AUTO_FILE ;;AN000; | ||
| 74 | CALL CREATE_AUTOEXEC_BAT ;;AN000; | ||
| 75 | SAVE_FILE AUTO_FILE, RET_CODE ;;AN000; | ||
| 76 | ENDM ;;AN000; | ||
| 77 | |||
| 78 | CREATE_SHELL MACRO SHELL_FILE, RET_CODE ;;AN000; | ||
| 79 | PREPARE_FILE SHELL_FILE ;;AN000; | ||
| 80 | CALL CREATE_SHELL_BAT ;;AN000; | ||
| 81 | SAVE_FILE SHELL_FILE, RET_CODE ;;AN000; | ||
| 82 | ENDM ;;AN000; | ||
| 83 | |||
| 84 | ADD_WORD MACRO VAR1, VAR2 ;;AN000; | ||
| 85 | MOV AX,VAR2 ;;AN000; | ||
| 86 | ADD VAR1,AX ;;AN000; | ||
| 87 | ENDM ;;AN000; | ||
| 88 | |||
| 89 | CHECK_DISPLAY MACRO ;;AN000; | ||
| 90 | CALL VIDEO_CHECK ;;AN000; | ||
| 91 | ENDM ;;AN000; | ||
| 92 | |||
| 93 | SAVE_PANEL_LIST MACRO ;;AN000; | ||
| 94 | MOV AX,0ADC0H ;;AN000; | ||
| 95 | MOV BX,0FFFFH ;;AN000; | ||
| 96 | INT 2FH ;;AN000; | ||
| 97 | ENDM ;;AN000; | ||
| 98 | |||
| 99 | PREP_FOR_ONE MACRO CPOS ;;AN000; | ||
| 100 | MOV DH,CPOS ;;AN000; | ||
| 101 | CALL DO_PREP_FOR_ONE ;;AN000; | ||
| 102 | ENDM ;;AN000; | ||
| 103 | |||
| 104 | HOOK15 MACRO ;;AN000; | ||
| 105 | CALL DO_HOOK15 ;;AN000; | ||
| 106 | ENDM ;;AN000; | ||
| 107 | |||
| 108 | UNHOOK15 MACRO ;;AN000; | ||
| 109 | CALL DO_UNHOOK15 ;;AN000; | ||
| 110 | ENDM ;;AN000; | ||
| 111 | |||
| 112 | GET_INSTALLED_MEM MACRO MEMORY ;;AN000; | ||
| 113 | INT 12H ;;AN000; | ||
| 114 | MOV MEMORY,AX ;;AN000; | ||
| 115 | ENDM ;;AN000; | ||
| 116 | |||
| 117 | HOOK_2F_FORMAT MACRO ;;AN000; | ||
| 118 | CALL HOOK_INT_2F_FORMAT ;;AN000; | ||
| 119 | ENDM ;;AN000; | ||
| 120 | |||
| 121 | UNHOOK_2F MACRO ;;AN000; | ||
| 122 | CALL RESTORE_INT_2F ;;AN000; | ||
| 123 | ENDM ;;AN000; | ||
| 124 | |||
| 125 | INCLUDE MACROS8.INC ;AN000; | ||
| 126 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/MACROS8.INC b/v4.0/src/SELECT/MACROS8.INC new file mode 100644 index 0000000..7008fce --- /dev/null +++ b/v4.0/src/SELECT/MACROS8.INC | |||
| @@ -0,0 +1,48 @@ | |||
| 1 | ;DSKCPY_ERR DB 0 | ||
| 2 | DSKCPY_EXIT EQU 1 ;AN000;DT user chose to exit diskcopy | ||
| 3 | |||
| 4 | ;DSKCPY_WHICH DB | ||
| 5 | DSKCPY_TO_A_720 EQU 0 ;AN000;DT | ||
| 6 | DSKCPY_TO_A_360 EQU 1 ;AN000;DT | ||
| 7 | DSKCPY_TO_B EQU 2 ;AN000;DT | ||
| 8 | |||
| 9 | ;DSKCPY_OPTION DB | ||
| 10 | SOURCE1 EQU 0 ;AN000;DT | ||
| 11 | NO_SOURCE1 EQU 1 ;AN000;DT | ||
| 12 | |||
| 13 | NOCHECK EQU 0 | ||
| 14 | DISKCOPY_TO MACRO WHERE,HOW,CHECK ;;AN000; | ||
| 15 | MOV DSKCPY_WHICH,WHERE ;;AN000; | ||
| 16 | MOV DSKCPY_OPTION,HOW ;;AN000; | ||
| 17 | LEA AX,CHECK ;;AN000; | ||
| 18 | MOV DSKCPY_SOURCE,AX ;;AN000; | ||
| 19 | ENDM ;;AN000; | ||
| 20 | |||
| 21 | NOPANEL EQU 0 ;;AN000; | ||
| 22 | DISKCOPY_PANELS MACRO PANEL1, PANEL2, PANEL3 ;;AN000; | ||
| 23 | MOV DSKCPY_PAN1,PANEL1 ;;AN000; | ||
| 24 | MOV DSKCPY_PAN2,PANEL2 ;;AN000; | ||
| 25 | MOV DSKCPY_PAN3,PANEL3 ;;AN000; | ||
| 26 | ENDM ;;AN000; | ||
| 27 | |||
| 28 | INSERT_DISK MACRO DSK_PANEL, SRCH_FILE ;;AN000; | ||
| 29 | MOV DISK_PANEL, DSK_PANEL ;;AN000; | ||
| 30 | LEA DI,SRCH_FILE ;;AN000; | ||
| 31 | MOV SEARCH_FILE, DI ;;AN000; | ||
| 32 | CALL INSERT_DISK_ROUTINE ;;AN000; | ||
| 33 | ENDM ;;AN000; | ||
| 34 | |||
| 35 | HANDLE_FORMAT_ERROR MACRO ;;AN000; | ||
| 36 | LOCAL FORERR1,FORERR2,FORERR3 ;;AN000; | ||
| 37 | CMP SUB_ERROR,6 ;;AN000; | ||
| 38 | JNE FORERR1 ;;AN000; | ||
| 39 | MOV AX,PAN_DRIVE_ERROR ;;AN000; | ||
| 40 | JMP FORERR3 ;;AN000; | ||
| 41 | FORERR1: CMP SUB_ERROR,7 ;;AN000; | ||
| 42 | JNE FORERR2 ;;AN000; | ||
| 43 | MOV AX,PAN_WRITE_PROT ;;AN000; | ||
| 44 | JMP FORERR3 ;;AN000; | ||
| 45 | FORERR2: MOV AX,ERR_GENERAL ;;AN000; | ||
| 46 | FORERR3: HANDLE_ERROR AX,E_RETURN ;;AN000; | ||
| 47 | ENDM ;;AN000; | ||
| 48 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/MAC_EQU.INC b/v4.0/src/SELECT/MAC_EQU.INC new file mode 100644 index 0000000..7800602 --- /dev/null +++ b/v4.0/src/SELECT/MAC_EQU.INC | |||
| @@ -0,0 +1,87 @@ | |||
| 1 | INCLUDE VERSIONA.INC ;AN047;SEH check DOS version in VERSIONA.INC instead of in MAC_EQU.INC | ||
| 2 | |||
| 3 | TRUE = 1 ;AN000; | ||
| 4 | FALSE = 0 ;AN000; | ||
| 5 | |||
| 6 | ; Equates from PRN_DEF.ASM | ||
| 7 | |||
| 8 | ERR_NOT_ENOUGH_MEM EQU 1 ;AN000; There was not enough memory to build the names table | ||
| 9 | ERR_OPENING_FILE EQU 2 ;AN000; Error opening a file | ||
| 10 | ERR_READING_FILE EQU 3 ;AN000; Error reading from a file | ||
| 11 | ERR_FINDING_VALUE EQU 4 ;AN000; Error finding the number of prn defs at the beginning of the file | ||
| 12 | ERR_LINE_TOO_LONG EQU 5 ;AN000; There was a line too long for the buffer | ||
| 13 | ERR_FINDING_NAME EQU 6 ;AN000; There was an error locating a printer name after a P or S | ||
| 14 | ERR_ACCESSING_FILE EQU 7 ;AN000; There was an error updating the file pointer | ||
| 15 | ERR_TOO_MANY_DEFS EQU 8 ;AN000; There are too many defintion in the file | ||
| 16 | ERR_NUMBER_MATCH EQU 9 ;AN000; The number of actual definition do not match the number expected | ||
| 17 | ERR_ALLOCATING_MEM EQU 10 ;AN000; There was an error allocating memory | ||
| 18 | ERR_CDP_CPP EQU 11 ;AN000; A prn defn had either a CDP or CPP but not both | ||
| 19 | ERR_PRN_DEFN EQU 12 ;AN000; There was an error in a printer definition | ||
| 20 | |||
| 21 | ; Equates from MACROS.INC ; | ||
| 22 | ; Equates from MACROS2.INC ; | ||
| 23 | ;MAJOR_DOS_VER EQU 4 ;AC047;SEH check now done in VERSIONA.INC ;AC045;SEH | ||
| 24 | ;MINOR_DOS_VER EQU 00 ;AC047;SEH ;AC045;SEH version update to DOS 4.00 | ||
| 25 | ; | ||
| 26 | ; Equates from MACROS3.INC ; | ||
| 27 | PRESENT_WITH_PART EQU 2 ;AN000; | ||
| 28 | PRESENT_WITHOUT_PART EQU 1 ;AN000; | ||
| 29 | NOT_PRESENT EQU 0 ;AN000; | ||
| 30 | NO_EDOS_SPACE EQU 0 ;AN000; | ||
| 31 | FREE_EDOS_SPACE EQU 1 ;AN000; | ||
| 32 | NO_EDOS_BUT_SPACE EQU 2 ;AN000; | ||
| 33 | ; | ||
| 34 | M_DOS_EXISTS EQU 1H ;AN000; | ||
| 35 | M_EDOS_EXISTS EQU 2H ;AN000; | ||
| 36 | M_LOGICAL_EXISTS EQU 4H ;AN000; | ||
| 37 | M_EDOS_SPACE EQU 8H ;AN000; | ||
| 38 | M_FREE_SPACE EQU 10H ;AN000; | ||
| 39 | M_DOS_EDOS_PART EQU 3H ;AN000; | ||
| 40 | ; | ||
| 41 | DISKETTES_EXIST EQU 1 ;AN000; | ||
| 42 | MAX_NUM_DISKETTE EQU 2 ;AN000; | ||
| 43 | ; | ||
| 44 | TABLE_ONE EQU 1 ;AN000; | ||
| 45 | TABLE_TWO EQU 2 ;AN000; | ||
| 46 | ; | ||
| 47 | DATA_VALID EQU 0 ;AN000; | ||
| 48 | DATA_INVALID EQU 1 ;AN000; | ||
| 49 | ; | ||
| 50 | USE_DEFAULT EQU 0 ;AN000; | ||
| 51 | DO_NOT_USE_DEFAULT EQU 1 ;AN000; | ||
| 52 | ; | ||
| 53 | DEF_DEST_A EQU 3 ;AN111;JW | ||
| 54 | DEF_DEST_B EQU 2 ;AN000; | ||
| 55 | DEF_DEST_C EQU 1 ;AN000; | ||
| 56 | ; | ||
| 57 | E_1440_TRACKS EQU 80 ;AN000; | ||
| 58 | E_1440_SECTORS EQU 18 ;AN000; | ||
| 59 | ; | ||
| 60 | ; Equates from MACROS4.INC ; | ||
| 61 | ; Equates from MACROS5.INC ; | ||
| 62 | B_DRIVE EQU 1 ;AN000; | ||
| 63 | C_DRIVE EQU 2 ;AN000; | ||
| 64 | A_DRIVE EQU 3 ;AN111;JW | ||
| 65 | LEN_ALT_KYBD_ID EQU 3 ;AN000; | ||
| 66 | ; Equates from MACROS6.INC ; | ||
| 67 | ; | ||
| 68 | ; | ||
| 69 | ; Equates from ROUTINES.ASM ; | ||
| 70 | STDOUT EQU 1 ;AN000; | ||
| 71 | STDERR EQU 2 ;AN000; | ||
| 72 | EXEC_DIR EQU 1 ;AN000; | ||
| 73 | EXEC_NO_DIR EQU 0 ;AN000; | ||
| 74 | ; | ||
| 75 | ; Equates from SELECT.SKL ; | ||
| 76 | MSG_INV_DOS EQU 1 ;AN000; | ||
| 77 | MSG_INV_BOOT_MEDIA EQU 4 ;AN000; | ||
| 78 | MSG_INV_DISK_MEDIA EQU 5 ;AN000; | ||
| 79 | MSG_INV_PARMS EQU 6 ;AN000; | ||
| 80 | MSG_INV_INSTALL EQU 7 ;AN000; | ||
| 81 | MSG_LOADING EQU 8 ;AN000; | ||
| 82 | MSG_RELOADING EQU 9 ;AN000; | ||
| 83 | ; | ||
| 84 | ; Equates for SEL_FLG (DB) in PRN_DEF.ASM | ||
| 85 | ; SEL_FLG DB 0 | ||
| 86 | INSTALLRW EQU 80H ;AN000;The INSTALL diskette is read/write | ||
| 87 | |||
diff --git a/v4.0/src/SELECT/MAKEFILE b/v4.0/src/SELECT/MAKEFILE new file mode 100644 index 0000000..1838228 --- /dev/null +++ b/v4.0/src/SELECT/MAKEFILE | |||
| @@ -0,0 +1,249 @@ | |||
| 1 | # | ||
| 2 | ###### Make file for SELECT.EXE, SELECT.DAT, SELECT.COM, SELECT.HLP ##### | ||
| 3 | # | ||
| 4 | |||
| 5 | msg =..\messages | ||
| 6 | dos =..\dos | ||
| 7 | inc =..\inc | ||
| 8 | hinc =..\h | ||
| 9 | shell =..\shell | ||
| 10 | cas =..\shell\cassfar | ||
| 11 | make =nmake | ||
| 12 | here =..\..\select | ||
| 13 | |||
| 14 | # | ||
| 15 | ####################### dependencies begin here. ######################### | ||
| 16 | # | ||
| 17 | |||
| 18 | all: select.exe select.dat select.com select.hlp | ||
| 19 | |||
| 20 | # | ||
| 21 | ############################ Make SELECT.EXE ############################# | ||
| 22 | # | ||
| 23 | |||
| 24 | select.ctl: select.skl $(msg)\$(COUNTRY).msg | ||
| 25 | |||
| 26 | select0.obj: select0.asm $(inc)\struc.inc $(inc)\sysmsg.inc casextrn.inc \ | ||
| 27 | panel.mac select.inc pan-list.inc castruc.inc macros.inc \ | ||
| 28 | macros2.inc macros3.inc macros4.inc macros5.inc macros6.inc \ | ||
| 29 | macros7.inc mac_equ.inc ext.inc varstruc.inc rout_ext.inc \ | ||
| 30 | select.ctl macros8.inc pcequate.inc | ||
| 31 | |||
| 32 | select1.obj: select1.asm $(inc)\struc.inc $(inc)\sysmsg.inc casextrn.inc \ | ||
| 33 | panel.mac select.inc pan-list.inc castruc.inc macros.inc \ | ||
| 34 | macros2.inc macros3.inc macros4.inc macros5.inc macros6.inc \ | ||
| 35 | macros7.inc mac_equ.inc ext.inc varstruc.inc rout_ext.inc \ | ||
| 36 | macros8.inc pcequate.inc | ||
| 37 | |||
| 38 | select2.obj: select2.asm $(inc)\struc.inc $(inc)\sysmsg.inc casextrn.inc \ | ||
| 39 | panel.mac select.inc pan-list.inc castruc.inc macros.inc \ | ||
| 40 | macros2.inc macros3.inc macros4.inc macros5.inc macros6.inc \ | ||
| 41 | macros7.inc mac_equ.inc ext.inc varstruc.inc rout_ext.inc \ | ||
| 42 | macros8.inc pcequate.inc | ||
| 43 | |||
| 44 | select2a.obj: select2a.asm $(inc)\struc.inc $(inc)\sysmsg.inc casextrn.inc \ | ||
| 45 | panel.mac select.inc pan-list.inc castruc.inc macros.inc \ | ||
| 46 | macros2.inc macros3.inc macros4.inc macros5.inc macros6.inc \ | ||
| 47 | macros7.inc mac_equ.inc ext.inc varstruc.inc rout_ext.inc \ | ||
| 48 | macros8.inc pcequate.inc | ||
| 49 | |||
| 50 | select3.obj: select3.asm $(inc)\struc.inc $(inc)\sysmsg.inc casextrn.inc \ | ||
| 51 | panel.mac select.inc pan-list.inc castruc.inc macros.inc \ | ||
| 52 | macros2.inc macros3.inc macros4.inc macros5.inc macros6.inc \ | ||
| 53 | macros7.inc mac_equ.inc ext.inc varstruc.inc rout_ext.inc \ | ||
| 54 | macros8.inc pcequate.inc | ||
| 55 | |||
| 56 | select4.obj: select4.asm $(inc)\struc.inc $(inc)\sysmsg.inc casextrn.inc \ | ||
| 57 | panel.mac select.inc pan-list.inc castruc.inc macros.inc \ | ||
| 58 | macros2.inc macros3.inc macros4.inc macros5.inc macros6.inc \ | ||
| 59 | macros7.inc mac_equ.inc ext.inc varstruc.inc rout_ext.inc \ | ||
| 60 | macros8.inc pcequate.inc | ||
| 61 | |||
| 62 | select5.obj: select5.asm $(inc)\struc.inc $(inc)\sysmsg.inc casextrn.inc \ | ||
| 63 | panel.mac select.inc pan-list.inc castruc.inc macros.inc \ | ||
| 64 | macros2.inc macros3.inc macros4.inc macros5.inc macros6.inc \ | ||
| 65 | macros7.inc mac_equ.inc ext.inc varstruc.inc rout_ext.inc \ | ||
| 66 | macros8.inc pcequate.inc | ||
| 67 | |||
| 68 | select5a.obj: select5a.asm $(inc)\struc.inc $(inc)\sysmsg.inc casextrn.inc \ | ||
| 69 | panel.mac select.inc pan-list.inc castruc.inc macros.inc \ | ||
| 70 | macros2.inc macros3.inc macros4.inc macros5.inc macros6.inc \ | ||
| 71 | macros7.inc mac_equ.inc ext.inc varstruc.inc rout_ext.inc \ | ||
| 72 | macros8.inc pcequate.inc | ||
| 73 | |||
| 74 | select6.obj: select6.asm $(inc)\struc.inc $(inc)\sysmsg.inc casextrn.inc \ | ||
| 75 | panel.mac select.inc pan-list.inc castruc.inc macros.inc \ | ||
| 76 | macros2.inc macros3.inc macros4.inc macros5.inc macros6.inc \ | ||
| 77 | macros7.inc mac_equ.inc ext.inc varstruc.inc rout_ext.inc \ | ||
| 78 | macros8.inc pcequate.inc | ||
| 79 | |||
| 80 | select7.obj: select7.asm $(inc)\struc.inc $(inc)\sysmsg.inc casextrn.inc \ | ||
| 81 | panel.mac select.inc pan-list.inc castruc.inc macros.inc \ | ||
| 82 | macros2.inc macros3.inc macros4.inc macros5.inc macros6.inc \ | ||
| 83 | macros7.inc mac_equ.inc ext.inc varstruc.inc rout_ext.inc \ | ||
| 84 | macros8.inc pcequate.inc | ||
| 85 | |||
| 86 | select8.obj: select8.asm $(inc)\struc.inc $(inc)\sysmsg.inc casextrn.inc \ | ||
| 87 | panel.mac select.inc pan-list.inc castruc.inc macros.inc \ | ||
| 88 | macros2.inc macros3.inc macros4.inc macros5.inc macros6.inc \ | ||
| 89 | macros7.inc mac_equ.inc ext.inc varstruc.inc rout_ext.inc \ | ||
| 90 | macros8.inc pcequate.inc | ||
| 91 | |||
| 92 | select9.obj: select9.asm $(inc)\struc.inc $(inc)\sysmsg.inc casextrn.inc \ | ||
| 93 | panel.mac select.inc pan-list.inc castruc.inc macros.inc \ | ||
| 94 | macros2.inc macros3.inc macros4.inc macros5.inc macros6.inc \ | ||
| 95 | macros7.inc mac_equ.inc ext.inc varstruc.inc rout_ext.inc \ | ||
| 96 | macros8.inc pcequate.inc | ||
| 97 | |||
| 98 | gen_coms.obj: gen_coms.asm $(inc)\struc.inc $(inc)\sysmsg.inc casextrn.inc \ | ||
| 99 | panel.mac select.inc pan-list.inc castruc.inc macros.inc \ | ||
| 100 | macros2.inc macros3.inc macros4.inc macros5.inc macros6.inc \ | ||
| 101 | macros7.inc mac_equ.inc ext.inc varstruc.inc rout_ext.inc \ | ||
| 102 | macros8.inc pcequate.inc | ||
| 103 | |||
| 104 | mparse.obj: mparse.asm $(inc)\parse.asm data.mac | ||
| 105 | |||
| 106 | initmem.obj: initmem.asm $(inc)\struc.inc macros.inc macros2.inc macros3.inc \ | ||
| 107 | macros4.inc macros5.inc macros6.inc macros7.inc macros8.inc \ | ||
| 108 | mac_equ.inc | ||
| 109 | |||
| 110 | input.obj: input.asm pcequate.inc | ||
| 111 | |||
| 112 | routines.obj: routines.asm $(inc)\struc.inc mac_equ.inc varstruc.inc ext.inc \ | ||
| 113 | macros.inc macros2.inc macros3.inc macros4.inc macros5.inc \ | ||
| 114 | macros6.inc macros7.inc macros8.inc pan-list.inc panel.mac | ||
| 115 | |||
| 116 | |||
| 117 | routine2.obj: routine2.asm $(inc)\struc.inc mac_equ.inc ext.inc varstruc.inc \ | ||
| 118 | macros.inc macros2.inc macros3.inc macros4.inc macros5.inc \ | ||
| 119 | macros6.inc macros7.inc macros8.inc | ||
| 120 | |||
| 121 | var.obj: var.asm $(inc)\sysmsg.inc sel_file.inc varstruc.inc | ||
| 122 | |||
| 123 | prn_def.obj: prn_def.asm $(inc)\struc.inc macros.inc macros2.inc macros3.inc \ | ||
| 124 | macros4.inc macros5.inc macros6.inc macros7.inc macros8.inc \ | ||
| 125 | mac_equ.inc | ||
| 126 | |||
| 127 | scn_parm.obj: scn_parm.asm $(inc)\struc.inc ext.inc macros.inc macros2.inc \ | ||
| 128 | macros3.inc macros4.inc macros5.inc macros6.inc macros7.inc \ | ||
| 129 | macros8.inc mac_equ.inc | ||
| 130 | |||
| 131 | s_disply.obj: s_disply.asm $(inc)\struc.inc | ||
| 132 | |||
| 133 | mod_copy.obj: mod_copy.asm $(inc)\struc.inc dos.equ xcopy.equ dosfiles.inc \ | ||
| 134 | macros.inc macros2.inc macros3.inc macros4.inc macros5.inc \ | ||
| 135 | macros6.inc macros7.inc pan-list.inc macros8.inc mac_equ.inc \ | ||
| 136 | xmainmsg.equ panel.mac casextrn.inc | ||
| 137 | |||
| 138 | bridge.obj: bridge.asm $(inc)\casvar.inc $(inc)\casrn.inc | ||
| 139 | |||
| 140 | caservic.obj: caservic.asm $(inc)\casvar.inc $(inc)\casrn.inc pan-list.inc \ | ||
| 141 | select.inc castruc.inc data.mac panel.mac macros.inc \ | ||
| 142 | $(inc)\struc.inc pcequate.inc mac_equ.inc | ||
| 143 | |||
| 144 | ckdisp.obj: ckdisp.asm $(inc)\struc.inc | ||
| 145 | |||
| 146 | intvec.obj: intvec.asm $(inc)\struc.inc mac_equ.inc pan-list.inc \ | ||
| 147 | panel.mac macros.inc varstruc.inc ext.inc casextrn.inc \ | ||
| 148 | macros8.inc | ||
| 149 | |||
| 150 | asm2c.obj : asm2c.asm | ||
| 151 | |||
| 152 | get_stat.obj : get_stat.c get_stat.h extern.h | ||
| 153 | |||
| 154 | int13.obj : int13.c | ||
| 155 | |||
| 156 | global.obj : global.c | ||
| 157 | |||
| 158 | ..\cmd\fdisk\bootrec.obj: | ||
| 159 | cd ..\cmd\fdisk | ||
| 160 | $(make) bootrec.obj | ||
| 161 | cd ..\..\select | ||
| 162 | |||
| 163 | bootrec.obj : ..\cmd\fdisk\bootrec.obj | ||
| 164 | copy ..\cmd\fdisk\bootrec.obj | ||
| 165 | |||
| 166 | selquit.obj : selquit.asm panel.mac pcequate.inc pan-list.inc castruc.inc \ | ||
| 167 | ext.inc $(inc)\struc.inc macros.inc macros2.inc macros3.inc \ | ||
| 168 | macros4.inc macros5.inc macros6.inc macros7.inc macros8.inc \ | ||
| 169 | mac_equ.inc | ||
| 170 | |||
| 171 | selchild.obj : selchild.asm pcequate.inc castruc.inc macros.inc macros2.inc \ | ||
| 172 | macros3.inc macros4.inc macros5.inc macros6.inc macros7.inc \ | ||
| 173 | macros8.inc mac_equ.inc | ||
| 174 | |||
| 175 | services.obj : services.asm pcequate.inc castruc.inc $(inc)\casvar.inc \ | ||
| 176 | macros.inc macros2.inc macros3.inc macros4.inc macros5.inc \ | ||
| 177 | macros6.inc macros7.inc macros8.inc mac_equ.inc | ||
| 178 | |||
| 179 | get_help.obj : get_help.asm | ||
| 180 | |||
| 181 | selserv.obj : selserv.asm | ||
| 182 | |||
| 183 | services.lib : selquit.obj selchild.obj services.obj get_help.obj selserv.obj | ||
| 184 | |||
| 185 | lib services.lib -+ selquit; | ||
| 186 | lib services.lib -+ selchild; | ||
| 187 | lib services.lib -+ services; | ||
| 188 | lib services.lib -+ get_help; | ||
| 189 | lib services.lib -+ selserv; | ||
| 190 | |||
| 191 | select.exe: select0.obj select1.obj select2.obj select2a.obj select3.obj \ | ||
| 192 | select4.obj select5.obj select6.obj select7.obj select8.obj select9.obj \ | ||
| 193 | routines.obj routine2.obj gen_coms.obj intvec.obj select5a.obj \ | ||
| 194 | ckdisp.obj scn_parm.obj prn_def.obj var.obj caservic.obj input.obj \ | ||
| 195 | initmem.obj mparse.obj mod_copy.obj s_disply.obj bridge.obj \ | ||
| 196 | asm2c.obj get_stat.obj global.obj int13.obj bootrec.obj select5a.obj \ | ||
| 197 | services.lib | ||
| 198 | link /noe @select.lnk | ||
| 199 | # The "/noe" is so symbols defined in source files supercede library routines | ||
| 200 | |||
| 201 | # | ||
| 202 | ####################### make select.com ##################### | ||
| 203 | # | ||
| 204 | |||
| 205 | sstub.obj: sstub.asm $(inc)\sysmsg.inc select.ctl | ||
| 206 | |||
| 207 | select.com: sstub.obj | ||
| 208 | link sstub; | ||
| 209 | exe2bin sstub.exe select.com | ||
| 210 | |||
| 211 | # | ||
| 212 | ####################### make select.dat #################### | ||
| 213 | # | ||
| 214 | |||
| 215 | |||
| 216 | panel.inf: USA.inf | ||
| 217 | copy USA.inf panel.inf | ||
| 218 | |||
| 219 | panels.obj: panels.asm sel-pan.inc pan-list.inc panel.inf | ||
| 220 | |||
| 221 | colors.obj: colors.asm sel-pan.inc | ||
| 222 | |||
| 223 | scroll.obj: scroll.asm sel-pan.inc panel.inf | ||
| 224 | |||
| 225 | sel-pan.obj: sel-pan.asm $(inc)\casvar.inc sel-pan.inc | ||
| 226 | |||
| 227 | sel-pan.exe: sel-pan.obj panels.obj colors.obj scroll.obj | ||
| 228 | link @sel-pan.lnk | ||
| 229 | |||
| 230 | select.dat: sel-pan.exe | ||
| 231 | exe2bin sel-pan.exe sel-pan.dat | ||
| 232 | compress | ||
| 233 | |||
| 234 | # | ||
| 235 | ###################### make select.hlp ##################### | ||
| 236 | # | ||
| 237 | |||
| 238 | #$(shell)\shellhlp\asc2hlp.exe : | ||
| 239 | # cd $(shell)\shellhlp | ||
| 240 | # $(make) asc2hlp.exe | ||
| 241 | # cd $(here) | ||
| 242 | |||
| 243 | select.hlp: USA.txt | ||
| 244 | erase select.hlp | ||
| 245 | attrib -R USA.txt | ||
| 246 | asc2hlp USA.txt select.hlp | ||
| 247 | attrib +R USA.txt | ||
| 248 | |||
| 249 | |||
diff --git a/v4.0/src/SELECT/MOD_COPY.ASM b/v4.0/src/SELECT/MOD_COPY.ASM new file mode 100644 index 0000000..a4e65d8 --- /dev/null +++ b/v4.0/src/SELECT/MOD_COPY.ASM | |||
| @@ -0,0 +1,2484 @@ | |||
| 1 | PAGE, 132 ;AN000; | ||
| 2 | TITLE XCOPY WITH FULL MEMORY USE ;AN000; | ||
| 3 | |||
| 4 | ; ##### R E A D M E ##### | ||
| 5 | ; | ||
| 6 | ; This file contains a copy of the XCOPY code. The code has been | ||
| 7 | ; Revised (additions and many parts commented out) to conform to the | ||
| 8 | ; needs of SELECT. | ||
| 9 | ; | ||
| 10 | ; ######################### | ||
| 11 | |||
| 12 | ;****************** START OF SPECIFICATIONS ***************************** | ||
| 13 | ; MODULE NAME: XCOPY | ||
| 14 | ; | ||
| 15 | ; DESCRIPTIVE NAME: selectively copy groups of files, which can include | ||
| 16 | ; lower level subdirectories. | ||
| 17 | ; | ||
| 18 | ; FUNCTION: The modules of XCOPY will be placed in the following order - | ||
| 19 | ; SSEG, DSEG(MAIN DATA, MAIN MSG), CSEG (MAIN + INIT), | ||
| 20 | ; DSEG_INIT(INIT DATA, INIT MSG) | ||
| 21 | ; | ||
| 22 | ; HEADER - informations needed about the file, subdirectory ... | ||
| 23 | ; Continue_Info -> 0 - a whole single file in this header | ||
| 24 | ; segment, or dir. | ||
| 25 | ; 1 - Continuation of a small file. | ||
| 26 | ; 2 - Continuation of a Big file | ||
| 27 | ; 3 - Eof of continuation | ||
| 28 | ; Next_Ptr -> points to the next header segment | ||
| 29 | ; Before_Ptr -> points to the old header segment | ||
| 30 | ; | ||
| 31 | ; By optionally using the Archive bit in the directory of each | ||
| 32 | ; file, XCOPY can be used as an alternative method of creating | ||
| 33 | ; backup files which can be accessed directly by DOS and its | ||
| 34 | ; applications without the need to "restore" the backup files. | ||
| 35 | ; | ||
| 36 | ; XCOPY is especially useful when several files are being copied | ||
| 37 | ; and there is a generous amount of RAM available, because XCOPY | ||
| 38 | ; will fill the memory with all the source files it can read in | ||
| 39 | ; before starting to create output files. If the memory is not | ||
| 40 | ; enough to hold all the source, this cycle will be repeated until | ||
| 41 | ; the process is completed. For single drive systems, this maximum | ||
| 42 | ; usage of the memory greatly reduces the amount of diskette | ||
| 43 | ; swapping that would be required by the usual COPY command. | ||
| 44 | ; | ||
| 45 | ; ENTRY POINT: MAIN | ||
| 46 | ; | ||
| 47 | ; INPUT: (DOS COMMAND LINE PARAMETERS) | ||
| 48 | ; | ||
| 49 | ; SOURCE OPERAND: TARGET OPERAND: | ||
| 50 | ; | ||
| 51 | ; [d:] [path] filename[.ext] [d:] [path] [filename[.ext]] | ||
| 52 | ; or | ||
| 53 | ; [d:] path [filename[.ext]] | ||
| 54 | ; or | ||
| 55 | ; d: [path] [filename[.ext]] | ||
| 56 | ; | ||
| 57 | ; | ||
| 58 | ; SWITCHES: | ||
| 59 | ; | ||
| 60 | ; /A /D /E /M /P /S /V /W | ||
| 61 | ; | ||
| 62 | ;The /A switch will copy only those files whose archive bit of the attribute is | ||
| 63 | ;set to one. The attribute of the source file is not changed. This option is | ||
| 64 | ;useful when making multiple backups when doing the non-final backup. | ||
| 65 | ;The archive bit is one when a file has be created or Revised since the last | ||
| 66 | ;time the bit was turned off. XCOPY /M or BACKUP /M will turn this bit off. | ||
| 67 | ;The ATTRIB command can also be used to change the setting of the archive bit. | ||
| 68 | ; | ||
| 69 | ;The /D switch will copy only those files whose date is the same or later than | ||
| 70 | ;the date specified. Depending on the country code you selected using the | ||
| 71 | ;COUNTRY command, the date is specified in the format corresponding to the | ||
| 72 | ;indicated country. | ||
| 73 | ; | ||
| 74 | ;The /E switch will create subdirectories on the target even if they end up | ||
| 75 | ;being empty after all copying is over. If /E is not specified, empty | ||
| 76 | ;subdirectories are not created. | ||
| 77 | ; | ||
| 78 | ;The /M switch will copy only those files whose archive bit is set in its | ||
| 79 | ;attribute. Unlike the /A switch, /M will cause the archive bit in the source | ||
| 80 | ;file to be turned off. This allows XCOPY to be used in making a final backup. | ||
| 81 | ;The archive bit is one when a file has be created or Revised since the last | ||
| 82 | ;time the bit was turned off. XCOPY /M or BACKUP /M will turn this bit off. | ||
| 83 | ;The ATTRIB command can also be used to change the setting of the archive bit. | ||
| 84 | ; | ||
| 85 | ;The /P switch will prompt the operator before copying each file. In this | ||
| 86 | ;situation, each file is copied onto the target before reading in the next | ||
| 87 | ;file. The multi-file copy into a large memory buffer is not done. The prompt | ||
| 88 | ;displays the complete filespec it proposes to copy and asks for (Y/N) | ||
| 89 | ;response, which is then read in from the standard input device. | ||
| 90 | ; | ||
| 91 | ;The /S switch will not only copy the files in the current source directory but | ||
| 92 | ;also those in all the subdirectories below the current one, with XCOPY | ||
| 93 | ;following the Tree of the subdirectories to access these files. /S does not | ||
| 94 | ;create an empty subdirectory on the target (unless /E is also specified). | ||
| 95 | ;If the /S switch is not specified, XCOPY works only within the specified (or | ||
| 96 | ;current) subdirectory of the source. | ||
| 97 | ; | ||
| 98 | ;The /V switch will cause DOS to verify that the sectors written on the target | ||
| 99 | ;are recorded properly. This option has been provided so you can verify that | ||
| 100 | ;critical data has been correctly recorded. This option will cause XCOPY to | ||
| 101 | ;run more slowly, due to the additional overhead of verification. | ||
| 102 | ; | ||
| 103 | ;The /W switch will instruct XCOPY to pause before actually starting the | ||
| 104 | ;movement of data, thus permit the copying of diskettes that do not actually | ||
| 105 | ;have XCOPY available on them. The diskette containing XCOPY can be mounted | ||
| 106 | ;first, the XCOPY command given with the /W option, then when the prompt | ||
| 107 | ;requesting permission to continue is given, that diskette can then be removed | ||
| 108 | ;and the source diskette mounted in its place, then the operator can press any | ||
| 109 | ;key to continue after the pause. This feature is especially useful in a | ||
| 110 | ;non-hardfile system. | ||
| 111 | ; | ||
| 112 | ; EXIT-NORMAL: ERRORLEVEL_0 - This is the normal completion code. | ||
| 113 | ; ERRORLEVEL_2 - This is due to termination via Control-Break. | ||
| 114 | ; ERRORLEVEL_4 - This is used to indicate an error condition. | ||
| 115 | ; | ||
| 116 | ; There are many types of problems that are detected and result in this | ||
| 117 | ; return code, such as: | ||
| 118 | ; | ||
| 119 | ; write failure due to hard disk error | ||
| 120 | ; disk full | ||
| 121 | ; conflict between name of new subdirectory and existing filename | ||
| 122 | ; access denied | ||
| 123 | ; too many open files | ||
| 124 | ; sharing violation | ||
| 125 | ; lock violation | ||
| 126 | ; general failure | ||
| 127 | ; file not found | ||
| 128 | ; path not found | ||
| 129 | ; directory full | ||
| 130 | ; invalid parms | ||
| 131 | ; reserved file name as source | ||
| 132 | ; insufficient memory | ||
| 133 | ; incorrect DOS version | ||
| 134 | ; | ||
| 135 | ; | ||
| 136 | ; INTERNAL REFERENCES: | ||
| 137 | ; | ||
| 138 | ; ROUTINES: | ||
| 139 | ; | ||
| 140 | ; | ||
| 141 | ; DATA AREAS: | ||
| 142 | ; | ||
| 143 | ; | ||
| 144 | ; EXTERNAL REFERENCES: | ||
| 145 | ; | ||
| 146 | ; ROUTINES: | ||
| 147 | ; | ||
| 148 | ; | ||
| 149 | ; DATA AREAS: | ||
| 150 | ; | ||
| 151 | ; | ||
| 152 | ; NOTES: This module should be processed with the SALUT pre-processor | ||
| 153 | ; with the re-alignment not requested, as: | ||
| 154 | ; | ||
| 155 | ; SALUT XCOPY,NUL,; | ||
| 156 | ; | ||
| 157 | ; To assemble these modules, the sequential | ||
| 158 | ; ordering of segments may be used. | ||
| 159 | ; | ||
| 160 | ; For LINK instructions: | ||
| 161 | ; link profile ..\lib | ||
| 162 | ; | ||
| 163 | ; REVISION HISTORY: A000 Version 4.00: add PARSER, System Message Handler, | ||
| 164 | ; Remove the BELL char.,turn off APPEND during TREE | ||
| 165 | ; search,Extended Attribute processing, Uppercasing | ||
| 166 | ; and "Out Of Space" during write to standard out. | ||
| 167 | ; A001 PTM0011 XCOPY not handling path >63 characters. | ||
| 168 | ; CHK_MAX_LENGTH proc(XCPYINIT) is Revised to err if | ||
| 169 | ; >63 chrs. | ||
| 170 | ; A002 PTM0012 XCOPY unnecessarily accessing current drive. | ||
| 171 | ; ORG_S_T_DEF is Revised to ignore CHDIR if drive | ||
| 172 | ; is not TARGET or SOURCE. | ||
| 173 | ; A003 PTM0088 XCOPY (\) missing in 'FILE SHARING ERROR'. | ||
| 174 | ; This problem is fixed with incorporation of the | ||
| 175 | ; new message services. | ||
| 176 | ; A005 DCR0201 10/9/87 Incorperate new format for EXTENDED | ||
| 177 | ; ATTRIBUTES. | ||
| 178 | ; | ||
| 179 | ; | ||
| 180 | ; Label: "DOS XCOPY Utility" | ||
| 181 | ; "Version 4.00 (C) Copyright 1988 Microsoft" | ||
| 182 | ; "Licensed Material - Program Property of Microsoft" | ||
| 183 | ; | ||
| 184 | ;****************** END OF SPECIFICATIONS ***************************** | ||
| 185 | |||
| 186 | CLEAR_SCREEN2 MACRO;AN000; | ||
| 187 | MOV CX,0 ;;AN000; | ||
| 188 | MOV DX,184Fh ;;AN000; scroll screen from (0,0) tO (24,79) | ||
| 189 | MOV AX,0600h ;;AN000; AH = 6, Scroll Function | ||
| 190 | ;; AL = 0, Clear scroll area | ||
| 191 | MOV BH,7 ;;AN000; video I/O interrupt | ||
| 192 | INT 10H ;;AN000; | ||
| 193 | MOV DX,0 ;;AN000; RKJ-set cursor posn to top right hand corner | ||
| 194 | MOV BH,0 ;;AN000; RKJ | ||
| 195 | MOV AH,2 ;;AN000; RKJ | ||
| 196 | INT 10H ;;AN000; RKJ | ||
| 197 | ENDM ;;AN000; | ||
| 198 | ;-------------------------------- | ||
| 199 | ; Include Files | ||
| 200 | ;-------------------------------- | ||
| 201 | INCLUDE STRUC.INC ;AN000; SAR | ||
| 202 | INCLUDE XMAINMSG.EQU ;AN000;message file | ||
| 203 | INCLUDE DOS.EQU ;AN000; | ||
| 204 | INCLUDE XCOPY.EQU ;AN000; | ||
| 205 | INCLUDE PAN-LIST.INC ;AN111;JW | ||
| 206 | INCLUDE PANEL.MAC ;AN111;JW | ||
| 207 | INCLUDE CASEXTRN.INC ;AN111;JW | ||
| 208 | |||
| 209 | |||
| 210 | EXTRN FK_ENT:BYTE ;AN111;JW | ||
| 211 | EXTRN FK_ENT_LEN:ABS ;AN111;JW | ||
| 212 | EXTRN E_RETURN:ABS ;AN111;JW | ||
| 213 | EXTRN S_DOS_SHEL_DISK:WORD ;AN111;JW | ||
| 214 | EXTRN S_DOS_SEL_360:WORD ;AN111;JW | ||
| 215 | EXTRN E_FILE_ATTR:ABS ;AN111;JW | ||
| 216 | |||
| 217 | EXTRN FIND_FILE_ROUTINE:FAR ;AN111;JW | ||
| 218 | EXTRN EXIT_SELECT:near ;AN111;JW | ||
| 219 | |||
| 220 | ;------------------------------- | ||
| 221 | ; Structures | ||
| 222 | ;------------------------------- | ||
| 223 | ;HEADER - informations needed about the file, subdirectory ... | ||
| 224 | ;Continue_Info -> 0 - a whole single file in this header segment, or dir. | ||
| 225 | ; 1 - Continuation of a small file. | ||
| 226 | ; 2 - Continuation of a Big file | ||
| 227 | ; 3 - EOF of continuation | ||
| 228 | ;Next_Ptr -> points to the next header segment | ||
| 229 | ;Before_Ptr -> points to the old header segment | ||
| 230 | |||
| 231 | HEADER STRUC ;AN000; | ||
| 232 | CONTINUE_INFO DB 0 ;AN000;set for filesize bigger then 0FFD0h | ||
| 233 | NEXT_PTR DW ? ;AN000;next buffer ptr in para | ||
| 234 | BEFORE_PTR DW ? ;AN000;before ptr in para | ||
| 235 | DIR_DEPTH DB ? ;AN000;same as S_DEPTH | ||
| 236 | CX_BYTES DW 0 ;AN000;actual # of bytes in this buffer seg. | ||
| 237 | ATTR_FOUND DB ? ;AN000;attribute found | ||
| 238 | FILE_TIME_FOUND DW ?;AN000; | ||
| 239 | FILE_DATE_FOUND DW ?;AN000; | ||
| 240 | LOW_SIZE_FOUND DW ?;AN000; | ||
| 241 | HIGH_SIZE_FOUND DW ?;AN000; | ||
| 242 | TARGET_DRV_LET DB " :" ;AN000;used for writing | ||
| 243 | FILENAME_FOUND DB 13 DUP (0) ;AN000; FILENAME | ||
| 244 | ATTRIB_LIST DB ? ;AC005;EXTENDED ATTRIBUTE BUFFER | ||
| 245 | ;------------------------------------------------------------------- | ||
| 246 | ; extended attribute list used by extended open & get extended | ||
| 247 | ;------------------------------------------------------------------- | ||
| 248 | ; ATTRIB_LIST LABEL BYTE extended attribute buffer | ||
| 249 | ; | ||
| 250 | ;EA STRUC ; EXTENDED ATTRIBUTE | ||
| 251 | ;EA_TYPE DB ? ; TYPE | ||
| 252 | ;EAISUNDEF EQU 0 ; UNDEFINED TYPE (ATTRIB SKIPS) | ||
| 253 | ; ; (OR TYPE NOT APPLICABLE) | ||
| 254 | ; ; LENGTH: 0 TO 64K-1 BYTES | ||
| 255 | ;EAISLOGICAL EQU 1 ; LOGICAL (0 OR 1) (ATTRIB DISPLAYS) ; LENGTH: 1 BYTE | ||
| 256 | ;EAISBINARY EQU 2 ; BINARY INTEGER (ATTRIB DISPLAYS) | ||
| 257 | ; ; LENGTH: 1, 2, 4 BYTES | ||
| 258 | ;EAISASCII EQU 3 ; ASCII TYPE (ATTRIB DISPLAYS) | ||
| 259 | ; ; LENGTH: 0 TO 128 BYTES | ||
| 260 | ;EAISDATE EQU 4 ; DOS FILE DATE FORMAT (ATTRIB DISPLAYS) | ||
| 261 | ; ; LENGTH: 2 BYTES | ||
| 262 | ;EAISTIME EQU 5 ; DOS FILE TIME FORMAT (ATTRIB DISPLAYS) | ||
| 263 | ; ; LENGTH: 2 BYTES | ||
| 264 | ; ; OTHER VALUES RESERVED | ||
| 265 | ;EA_FLAGS DW ? ; FLAGS | ||
| 266 | ;EASYSTEM EQU 8000H ; EA IS SYSTEM DEFINED | ||
| 267 | ; ; (BUILTIN, NOT APPLICATION DEFINED) | ||
| 268 | ;EAREADONLY EQU 4000H ; EA IS READ ONLY (CANT BE CHANGED) | ||
| 269 | ;EAHIDDEN EQU 2000H ; EA IS HIDDEN FROM ATTRIB | ||
| 270 | ;EACREATEONLY EQU 1000H ; EA IS SETABLE ONLY AT CREATE TIME | ||
| 271 | ; ; OTHER BITS RESERVED | ||
| 272 | ;EA_RC DB ? ; FAILURE REASON CODE (SET BY DOS) | ||
| 273 | ;EARCNOTFOUND EQU 1 ; NAME NOT FOUND | ||
| 274 | ;EARCNOSPACE EQU 2 ; NO SPACE TO HOLD NAME OR VALUE | ||
| 275 | ;EARCNOTNOW EQU 3 ; NAME CAN'T BE SET ON THIS FUNCTION | ||
| 276 | ;EARCNOTEVER EQU 4 ; NAME CAN'T BE SET | ||
| 277 | ;EARCUNDEF EQU 5 ; NAME KNOWN TO THIS FS BUT NOT SUPPORTED | ||
| 278 | ;EARCDEFBAD EQU 6 ; EA DEFINTION BAD (TYPE, LENGTH, ETC) | ||
| 279 | ;EARCACCESS EQU 7 ; EA ACCESS DENIED | ||
| 280 | ;EARCUNKNOWN EQU -1 ; UNDETERMINED CAUSE | ||
| 281 | ;EA_NAMELEN DB ? ; LENGTH OF NAME | ||
| 282 | ;EA_VALLEN DW ? ; LENGTH OF VALUE | ||
| 283 | ;EA_NAME DB ? ; FIRST BYTE OF NAME | ||
| 284 | ; | ||
| 285 | ;EA_VALUE DB ? ; FIRST BYTE OF VALUE | ||
| 286 | ; | ||
| 287 | HEADER ENDS ;AN000; | ||
| 288 | |||
| 289 | ;;;;SUB_LIST STRUC ; SAR | ||
| 290 | ;;;; DB 11 ; SAR ;AN000; | ||
| 291 | ;;;; DB 0 ; SAR ;AN000; | ||
| 292 | ;;;;DATA_OFF DW 0 ; SAR ;AN000; offset of data to be inserted | ||
| 293 | ;;;;DATA_SEG DW 0 ; SAR ;AN000; offset of data to be inserted | ||
| 294 | ;;;;MSG_ID DB 0 ; SAR ;AN000; n of %n | ||
| 295 | ;;;;FLAGS DB 0 ; SAR ;AN000; Flags | ||
| 296 | ;;;;MAX_WIDTH DB 0 ; SAR ;AN000; Maximum field width | ||
| 297 | ;;;;MIN_WIDTH DB 0 ; SAR ;AN000; Minimum field width | ||
| 298 | ;;;;PAD_CHAR DB 0 ; SAR ;AN000; character for pad field | ||
| 299 | ;;;; ; SAR | ||
| 300 | ;;;;SUB_LIST ENDS ; SAR | ||
| 301 | ;****************************************************************************** | ||
| 302 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; DATA Segment | ||
| 303 | |||
| 304 | INCLUDE DOSFILES.INC ;AN000; SAR | ||
| 305 | |||
| 306 | ;; ERRORLEVEL DB 0 ; SAR ;errorlevel | ||
| 307 | ;; INPUT_DATE DW 0 ; SAR | ||
| 308 | ;; INPUT_TIME DW 0 ; SAR | ||
| 309 | PSP_SEG DW ? ;AN000; | ||
| 310 | SAV_DEFAULT_DRV DB ? ;AN000;1 = A, 2 = B etc. saved default | ||
| 311 | SAV_DEF_DIR_ROOT DB '\';AN000; | ||
| 312 | SAV_DEFAULT_DIR DB 64 DUP (0);AN000; | ||
| 313 | SAV_S_DRV DB 'A:\' ;AN000; | ||
| 314 | SAV_S_CURDIR DB 64 DUP (0);AN000; | ||
| 315 | SAV_T_DRV DB 'B:\' ;AN000; | ||
| 316 | SAV_T_CURDIR DB 64 DUP (0);AN000; | ||
| 317 | |||
| 318 | PUBLIC SOURCE_PANEL, DEST_PANEL, CHECK_FILE ;AN111;JW | ||
| 319 | SOURCE_PANEL DW ? ;AN111;JW | ||
| 320 | DEST_PANEL DW ? ;AN111;JW | ||
| 321 | CHECK_FILE DW ? ;AN111;JW | ||
| 322 | |||
| 323 | SOURCE_IN DB ? ;AN111;JW | ||
| 324 | YES EQU 0 ;AN111;JW | ||
| 325 | NO EQU 1 ;AN111;JW | ||
| 326 | |||
| 327 | OLD_DTA_SEG DW ? ;AN111;JW | ||
| 328 | OLD_DTA_OFF DW ? ;AN111;JW | ||
| 329 | |||
| 330 | ; | ||
| 331 | |||
| 332 | ;; DISP_S_PATH DB 67 DUP (0) ; SAR ;mirror image of source path. used for display message when copying | ||
| 333 | ;; DISP_S_FILE DB 13 DUP (0) ; SAR | ||
| 334 | ;; DISP_T_PATH DB 67 DUP (0) ; SAR ;mirror image of target path | ||
| 335 | ;; DISP_T_FILE DB 13 DUP (0) ; SAR | ||
| 336 | ; | ||
| 337 | ;;B_SLASH DB '\',0 ; SAR | ||
| 338 | |||
| 339 | |||
| 340 | FILE_COUNT LABEL WORD ;AN000; | ||
| 341 | FILE_CNT_LOW DW 0 ;AN000;copied file count | ||
| 342 | FILE_CNT_HIGH DW 0 ;AN000; | ||
| 343 | ; | ||
| 344 | |||
| 345 | ;- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
| 346 | ;; APPENDFLAG DW 0 ; SAR ;append /X status save area | ||
| 347 | FOUND_FILE_FLAG DB 0 ;AN000;used for showing the message "File not found" | ||
| 348 | ; | ||
| 349 | S_DRV_NUMBER DB 0 ;AN000;source, target drv # | ||
| 350 | T_DRV_NUMBER DB 0 ;AN000; | ||
| 351 | ; | ||
| 352 | S_DRV_PATH LABEL BYTE ;AN000;source drv, path used for single_drv_copy | ||
| 353 | S_DRV DB 'A:\' ;AN000; | ||
| 354 | S_PATH DB 80 DUP (0) ;AN000;Initialized by calling GET CUR DIR | ||
| 355 | S_DEPTH DB 0 ;AN000; | ||
| 356 | S_DRV_1 DB 'A:' ;AN000; | ||
| 357 | S_FILE DB '????????.???',0 ;AN000;default filename to find file | ||
| 358 | ;; S_DIR DB '????????.???',0 ; SAR ;to find any subdirectory name | ||
| 359 | |||
| 360 | ;; S_PARENT DB '..',0 ; SAR ;source parent used for non single_drv_copy | ||
| 361 | S_HANDLE DW 0 ;AN000;file handle opened | ||
| 362 | |||
| 363 | ;; S_ARC_DRV_PATH LABEL BYTE ; SAR ;informations used to change source file's | ||
| 364 | ;; S_ARC_DRV DB 'A:\' ; SAR ;archieve bits. | ||
| 365 | ;; S_ARC_PATH DB 64 DUP (0) ; SAR | ||
| 366 | ;; S_ARC_DEPTH DB 0 ; SAR | ||
| 367 | |||
| 368 | T_DRV_PATH LABEL BYTE ;AN000;target drv, path used all the time | ||
| 369 | T_DRV DB 'B:\' ;AN000; | ||
| 370 | T_PATH DB 64 DUP (0) ;AN000;initialized by calling GET CUR DIR in INIT | ||
| 371 | T_DEPTH DB 0 ;AN000; | ||
| 372 | |||
| 373 | ;; T_FILE LABEL BYTE ; SAR ;target filename for file creation | ||
| 374 | ;; T_DRV_1 DB 'B:' ; SAR ;target drv letter | ||
| 375 | ;; T_FILENAME DB 13 DUP (0) ; SAR ;target filename | ||
| 376 | ;; T_TEMPLATE DB 11 DUP (0) ; SAR ;if global chr entered, this will be used instead of filename. | ||
| 377 | |||
| 378 | ;; T_PARENT LABEL BYTE ; SAR | ||
| 379 | ;; T_DRV_2 DB 'B:' ; SAR | ||
| 380 | ;; T_PARENT_1 DB '..',0 ; SAR | ||
| 381 | T_HANDLE DW 0 ;AN000;target handle created | ||
| 382 | ;; T_MKDIR_LVL DB 0 ; SAR ;# of target starting directories created. | ||
| 383 | ; | ||
| 384 | ;------------------------------------------ | ||
| 385 | ; PRINT_STDOUT input parameter save area | ||
| 386 | ;------------------------------------------ | ||
| 387 | ;; SUBST_COUNT DW 0 ; SAR ;AN000; message substitution count | ||
| 388 | ;; MSG_CLASS DB 0 ; SAR ;AN000; message class | ||
| 389 | ;; INPUT_FLAG DB 0 ; SAR ;AN000; Type of INT 21 used for KBD input | ||
| 390 | ;; MSG_NUM DW 0 ; SAR ;AN000; message number | ||
| 391 | |||
| 392 | ;---------------------------------------------- | ||
| 393 | ; Parameter list used by extended open DOS call | ||
| 394 | ;---------------------------------------------- | ||
| 395 | PARAM_LIST LABEL WORD;AN000; | ||
| 396 | E_A_LST DD 0 ;AN005; E A LIST POINTER | ||
| 397 | DW 1 ;AN005; number of additional parameters | ||
| 398 | DB 6 ;AN005; ID for IO mode = WORD VALUE | ||
| 399 | DW 1 ;AN005; IO mode = PURE SEQUENTIAL | ||
| 400 | |||
| 401 | |||
| 402 | ;; INPUT_BUFF db 20 dup(0) ; SAR ;AN000; keyboard input buffer used | ||
| 403 | ;for user response (Y/N) | ||
| 404 | |||
| 405 | ;-------------------------------------------------------------- | ||
| 406 | ; Following three sublists are used by the Message Retriever | ||
| 407 | ;-------------------------------------------------------------- | ||
| 408 | ;;SUBLIST1 LABEL DWORD ; SAR ;AN000;SUBSTITUTE LIST 1 | ||
| 409 | ;; DB 11 ; SAR ;AN000;sublist size | ||
| 410 | ;; DB 0 ; SAR ;AN000;reserved | ||
| 411 | ;; DD 0 ; SAR ;AN000;substition data Offset | ||
| 412 | ;; DB 1 ; SAR ;AN000;n of %n | ||
| 413 | ;; DB 0 ; SAR ;AN000;data type | ||
| 414 | ;; DB 0 ; SAR ;AN000;maximum field width | ||
| 415 | ;; DB 0 ; SAR ;AN000;minimum field width | ||
| 416 | ;; DB 0 ; SAR ;AN000;characters for Pad field | ||
| 417 | ;; ; SAR | ||
| 418 | ;; ; SAR | ||
| 419 | ;;SUBLIST2 LABEL DWORD ; SAR ;AN000;SUBSTITUTE LIST 2 | ||
| 420 | ;; DB 11 ; SAR ;AN000;sublist size | ||
| 421 | ;; DB 0 ; SAR ;AN000;reserved | ||
| 422 | ;; DD 0 ; SAR ;AN000;substition data Offset | ||
| 423 | ;; DB 2 ; SAR ;AN000;n of %n | ||
| 424 | ;; DB 0 ; SAR ;AN000;data type | ||
| 425 | ;; DB 0 ; SAR ;AN000;maximum field width | ||
| 426 | ;; DB 0 ; SAR ;AN000;minimum field width | ||
| 427 | ;; DB 0 ; SAR ;AN000;characters for Pad field | ||
| 428 | ;; ; SAR | ||
| 429 | ;; ; SAR | ||
| 430 | ;;SUBLIST3 LABEL DWORD ; SAR ;AN000;SUBSTITUTE LIST 3 | ||
| 431 | ;; DB 11 ; SAR ;AN000;sublist size | ||
| 432 | ;; DB 0 ; SAR ;AN000;reserved | ||
| 433 | ;; DD 0 ; SAR ;AN000;substition data Offset | ||
| 434 | ;; DB 3 ; SAR ;AN000;n of %n | ||
| 435 | ;; DB 0 ; SAR ;AN000;data type | ||
| 436 | ;; DB 0 ; SAR ;AN000;maximum field width | ||
| 437 | ;; DB 0 ; SAR ;AN000;minimum field width | ||
| 438 | ;; DB 0 ; SAR ;AN000;characters for Pad field | ||
| 439 | ;; | ||
| 440 | |||
| 441 | |||
| 442 | FILE_SEARCH_ATTR DW NORM_ATTR;AN000; | ||
| 443 | ;; DIR_SEARCH_ATTR DW INCL_H_S_DIR_ATTR ; SAR | ||
| 444 | ; | ||
| 445 | OPEN_MODE DB Read_Only_Deny_Write ;AN000;READ_ONLY_DENY_WRITE ;access, sharing mode | ||
| 446 | ; | ||
| 447 | ;Equates are defined in XCOPY.EQU | ||
| 448 | |||
| 449 | MY_FLAG DB 0 ;AN000;informations for a tree walk | ||
| 450 | ; find_first_flag equ 01h ;set MY_FLAG by "OR" | ||
| 451 | ; findfile_flag equ 02h | ||
| 452 | ; no_more_file equ 04h | ||
| 453 | ; single_copy_flag equ 08h ;single copy instead of multi copy | ||
| 454 | ; visit_parent_flag equ 10h ;visit parent node | ||
| 455 | ; found_flag equ 20h ;found flag - for find subdir | ||
| 456 | ; missing_link_flag equ 40h ;insuffiecient info. for not creating empty dir | ||
| 457 | ; is_source_flag equ 80h ;if set, dealing with source | ||
| 458 | ; reset_find_first equ 0FEh ;reset by AND | ||
| 459 | ; reset_findfile equ 0FDh | ||
| 460 | ; reset_no_more equ 0FBh | ||
| 461 | ; reset_visit_parent equ 0EFh | ||
| 462 | ; reset_found equ 0DFh | ||
| 463 | ; reset_missing_link equ 0BFh | ||
| 464 | ; reset_is_source equ 07Fh | ||
| 465 | |||
| 466 | FILE_FLAG DB 0 ;AN000; | ||
| 467 | ; cont_flag equ 01h | ||
| 468 | ; eof_flag equ 02h | ||
| 469 | ; big_file_flag equ 04h | ||
| 470 | ; file_bigger_flag equ 08h | ||
| 471 | ; created_flag equ 10h | ||
| 472 | ; reset_cont equ 0FEh | ||
| 473 | ; reset_eof equ 0FDh | ||
| 474 | ; reset_big_file equ 0FBh | ||
| 475 | ; reset_file_bigger equ 0F7h | ||
| 476 | ; reset_created equ 0EFh | ||
| 477 | ; reset_readfile equ 0F0h ;reset FILE_FLAG for read a file | ||
| 478 | ; | ||
| 479 | COPY_STATUS DB 0;AN000; | ||
| 480 | ; open_error_flag equ 01h | ||
| 481 | ; read_error_flag equ 02h | ||
| 482 | ; create_error_flag equ 04h | ||
| 483 | ; write_error_flag equ 08h | ||
| 484 | ; mkdir_error_flag equ 10h | ||
| 485 | ; chdir_error_flag equ 20h | ||
| 486 | ; maybe_itself_flag equ 40h | ||
| 487 | ; disk_full_flag equ 80h | ||
| 488 | ; reset_open_error equ 0FEh | ||
| 489 | ; reset_read_error equ 0FDh | ||
| 490 | ; reset_create_error equ 0FBh | ||
| 491 | ; reset_write_error equ 0F7h | ||
| 492 | ; reset_close_error equ 0EFh | ||
| 493 | ; reset_chdir_error equ 0DFh | ||
| 494 | ; | ||
| 495 | ACTION_FLAG DB 0;AN000; | ||
| 496 | ; reading_flag equ 01h ;display "Reading source files..." | ||
| 497 | ; reset_reading equ 0FEh ;do not display. | ||
| 498 | ; | ||
| 499 | SYS_FLAG DB 0 ;AN000;system information | ||
| 500 | ; one_disk_copy_flag equ 01h ;xcopy with only one logical drive. | ||
| 501 | ; default_drv_set_flag equ 02h ;default drive has been changed by this program | ||
| 502 | ; default_s_dir_flag equ 04h ;source current directory saved. | ||
| 503 | ; default_t_dir_flag equ 08h ;target current directory saved. | ||
| 504 | ; removalble_drv_flag equ 10h | ||
| 505 | ; sharing_source_flag equ 20h ;source shared | ||
| 506 | ; sharing_target_flag equ 40h | ||
| 507 | ; turn_verify_off_flag equ 80h ;turn the verify off when exit to dos | ||
| 508 | ; reset_default_s_dir equ 0FBh ;reset default_s_dir_flag | ||
| 509 | ; | ||
| 510 | OPTION_FLAG DB 0;AN000; | ||
| 511 | ; slash_a equ 01h ;soft archieve ? | ||
| 512 | ; slash_d equ 02h ;date? | ||
| 513 | ; slash_e equ 04h ;create empty dir? | ||
| 514 | ; slash_m equ 08h ;hard archieve ? (turn off source archieve bit) | ||
| 515 | ; slash_p equ 10h ;prompt? | ||
| 516 | ; slash_s equ 20h ;walk the tree? | ||
| 517 | ; slash_v equ 40h ;verify on? | ||
| 518 | ; slash_w equ 80h ;show "Press any key to begin copying" msg) | ||
| 519 | ; reset_slash_a equ 0FEh ;turn off soft archieve | ||
| 520 | ; reset_slash_m equ 0F7h ;turn off hard archieve | ||
| 521 | |||
| 522 | MAX_CX DW 0 ;AN000;less than 0FFD0h | ||
| 523 | ACT_BYTES DW 0 ;AN000;actual bytes read. | ||
| 524 | HIGH_FILE_SIZE DW 0;AN000; | ||
| 525 | LOW_FILE_SIZE DW 0;AN000; | ||
| 526 | ; | ||
| 527 | TOP_OF_MEMORY DW 0 ;AN000;para | ||
| 528 | BUFFER_BASE DW 0 ;AN000;para | ||
| 529 | MAX_BUFFER_SIZE DW 0 ;AN000;para. BUFFER_LEFT at INIT time. | ||
| 530 | BUFFER_LEFT DW 0 ;AN000;para | ||
| 531 | BUFFER_PTR DW 0 ;AN000;para. If buffer_left=0 then invalid value | ||
| 532 | DATA_PTR DW 0 ;AN000;buffer_ptr + 2 (32 bytes) | ||
| 533 | OLD_BUFFER_PTR DW 0 ;AN000;last buffer_ptr | ||
| 534 | SIZ_OF_BUFF DW ? ;AN005;para. EXTENDED ATTRIB BUFF SIZE | ||
| 535 | BYTS_OF_HDR DW ? ;AN005;bytes TOTAL HEADER SIZE | ||
| 536 | PARA_OF_HDR DW ? ;AN005;para. TOTAL HEADER SIZE | ||
| 537 | OPEN_FILE_COUNT DW ? ;AN005;TRACKING OF OPEN FLS FOR BUFFER | ||
| 538 | ; ;SIZE CALCULATION. | ||
| 539 | ; | ||
| 540 | ;structured data storage allocation | ||
| 541 | FILE_DTA Find_DTA <> ;AN000;DTA for find file | ||
| 542 | DTAS Find_DTA 32 dup (<>) ;AN000;DTA STACK for find dir | ||
| 543 | ;** Througout the program BP will be used for referencing fieldsname in DTAS. | ||
| 544 | ;For example, DS:[BP].dta_filename. | ||
| 545 | DATA ENDS ;AN000; | ||
| 546 | |||
| 547 | ;****************************************************************************** | ||
| 548 | |||
| 549 | SELECT SEGMENT PARA PUBLIC 'SELECT';AN000; | ||
| 550 | ASSUME CS:SELECT, DS:DATA ;AN000; | ||
| 551 | |||
| 552 | ;--- START OF A PROGRAM --- | ||
| 553 | |||
| 554 | PUBLIC MOD_XCOPY ;AN000; | ||
| 555 | MOD_XCOPY PROC NEAR ;AN000; SAR | ||
| 556 | |||
| 557 | |||
| 558 | PUSH ES ;AN000; SAR | ||
| 559 | PUSH BP ;AN000; SAR | ||
| 560 | ; SAR | ||
| 561 | PUSH DS ;AN000; SAR | ||
| 562 | POP ES ;AN000; SAR | ||
| 563 | MOV SP_SAVE, SP ;AN000; SAR | ||
| 564 | ; SAR | ||
| 565 | MOV SOURCE_IN,YES ;AN111;JW | ||
| 566 | .IF < AL eq 1 > ;AN000; | ||
| 567 | MOV AL,2 ;AN000; | ||
| 568 | .ELSEIF < AL eq 2 > ;AN000; | ||
| 569 | MOV AL,1 ;AN000; | ||
| 570 | .ENDIF ;AN000; | ||
| 571 | MOV DEST,AL ;AN000; SAR | ||
| 572 | MOV TABLE_OFFSET, BX ;AN000; SAR | ||
| 573 | MOV NUMBER_OF_FILES, CX ;AN000; SAR | ||
| 574 | MOV PATH_OFFSET, SI ;AN000; SAR | ||
| 575 | CALL SAVE_DTA ;AN000; | ||
| 576 | |||
| 577 | MOV AH, 62H ;AN000; SAR | ||
| 578 | INT 21H ;AN000; SAR | ||
| 579 | MOV PSP_SEG, BX ;AN000; SAR | ||
| 580 | |||
| 581 | CALL ALLOCATE ;AN000; SAR | ||
| 582 | .IF < C > ;AN000; SAR | ||
| 583 | JMP JUST_EXIT ;AN000; SAR | ||
| 584 | .ENDIF ;AN000; SAR | ||
| 585 | |||
| 586 | XCOPY_INIT: ;AN000; | ||
| 587 | CALL INIT ;AN000;initialization | ||
| 588 | JC MAIN_EXIT ;AN000;error. (Already message has been displayed) | ||
| 589 | |||
| 590 | MOV BP, OFFSET DTAS ;AN000;initialize BP | ||
| 591 | OR ACTION_FLAG, READING_FLAG ;AN000;set reading flag for copy message | ||
| 592 | |||
| 593 | CALL TREE_COPY ;AN000; | ||
| 594 | |||
| 595 | CALL ORG_S_DEF ;AN000;restore the original source default dir | ||
| 596 | |||
| 597 | CALL WRITE_FROM_BUFFER ;AN000;write from buffer if we missed it. | ||
| 598 | |||
| 599 | CALL SWITCH_DTAS ;AN111;JW | ||
| 600 | |||
| 601 | CLC ;AN000; SAR | ||
| 602 | JMP RESTORE_DIRS ;AN000; SAR | ||
| 603 | |||
| 604 | MAIN_EXIT: ;AN000; | ||
| 605 | ;;;;; MOV BX, DATA ; SAR | ||
| 606 | ;;;;; MOV DS, BX ; SAR re initialize ds, es | ||
| 607 | ;;;;; MOV ES, BX ; SAR exit here if the status of source, target or default drv has been changed. | ||
| 608 | ;;;;; CALL CHK_FILE_NOT_FOUND ; SAR if no files has been found, show the message. | ||
| 609 | |||
| 610 | MAIN_EXIT_A: ;AN000; | ||
| 611 | STC ;AN000; SAR | ||
| 612 | |||
| 613 | RESTORE_DIRS:;AN000; | ||
| 614 | MOV BX, DATA ;AN000; SAR | ||
| 615 | MOV DS, BX ;AN000;re initialize ds, es | ||
| 616 | MOV ES, BX ;AN000;exit here if the status of source, target or default drv has been changed. | ||
| 617 | ;;;;; CALL CHK_MKDIR_LVL ; SAR starting target directory has been created? | ||
| 618 | PUSHF ;AN000; SAR | ||
| 619 | CALL ORG_S_T_DEF ;AN000;restore original target, source, default drv, and verify status | ||
| 620 | POPF ;AN000; SAR | ||
| 621 | JMP DO_DEALLOCATE ;AN000; SAR | ||
| 622 | JUST_EXIT: ;AN000;unconditional immediate exit | ||
| 623 | MOV AX, DATA ;AN000; SAR | ||
| 624 | MOV DS, AX ;AN000; SAR | ||
| 625 | STC ;AN000; SAR | ||
| 626 | |||
| 627 | DO_DEALLOCATE: ;AN000; SAR | ||
| 628 | ; Restore the original status of APPEND if active. | ||
| 629 | CALL DEALLOCATE ;AN000; SAR | ||
| 630 | .IF < NC > ;AN000; SAR | ||
| 631 | .IF < NOT_FOUND_FLAG EQ 1 > ;AN000; SAR | ||
| 632 | STC ;AN000; SAR | ||
| 633 | .ELSE ;AN000; SAR | ||
| 634 | CLC ;AN000; SAR | ||
| 635 | .ENDIF ;AN000; SAR | ||
| 636 | .ENDIF ;AN000; SAR | ||
| 637 | MOV SP, SP_SAVE ;AN000; SAR | ||
| 638 | POP BP ;AN000; SAR | ||
| 639 | POP ES ;AN000; SAR | ||
| 640 | RET ;AN000; SAR | ||
| 641 | |||
| 642 | ; MOV AH, 4Ch ;return to dos | ||
| 643 | ; MOV AL, ERRORLEVEL ;set return code whatever | ||
| 644 | ; INT 21H | ||
| 645 | |||
| 646 | MOD_XCOPY ENDP;AN000; | ||
| 647 | ; | ||
| 648 | |||
| 649 | |||
| 650 | ;----------------- SUBROUTINES --------------------------------------------- | ||
| 651 | |||
| 652 | ALLOCATE PROC NEAR ;AN000; SAR | ||
| 653 | ; SAR | ||
| 654 | MOV BX, 0FFFFH ;AN000; SAR Attempt to allocate as much as possible | ||
| 655 | MOV AH, 48H ;AN000; SAR | ||
| 656 | INT 21H ;AN000; SAR | ||
| 657 | MOV AH, 48H ;AN000; SAR BX contains the amount of memory available | ||
| 658 | INT 21H ;AN000; SAR | ||
| 659 | MOV ALLOCATE_START, AX ;AN000; SAR | ||
| 660 | ; SAR | ||
| 661 | RET ;AN000; SAR | ||
| 662 | ; SAR | ||
| 663 | ALLOCATE ENDP ;AN000; SAR | ||
| 664 | ; SAR | ||
| 665 | DEALLOCATE PROC NEAR ;AN000; SAR | ||
| 666 | ; SAR | ||
| 667 | PUSHF ;AN000; SAR | ||
| 668 | PUSH ES ;AN000; SAR | ||
| 669 | MOV AX, ALLOCATE_START ;AN000; SAR | ||
| 670 | MOV ES, AX ;AN000; SAR | ||
| 671 | MOV AH, 49H ;AN000; SAR | ||
| 672 | INT 21H ;AN000; SAR | ||
| 673 | POP ES ;AN000; SAR | ||
| 674 | POPF ;AN000; SAR | ||
| 675 | ; SAR | ||
| 676 | RET ;AN000; SAR | ||
| 677 | ; SAR | ||
| 678 | DEALLOCATE ENDP ;AN000; SAR | ||
| 679 | |||
| 680 | |||
| 681 | |||
| 682 | |||
| 683 | TREE_COPY PROC NEAR ;AN000; | ||
| 684 | |||
| 685 | ;Walk the source tree to read files and subdirectories | ||
| 686 | |||
| 687 | .IF < DEST EQ 1 > ;AN000; SAR Copying to drive b? | ||
| 688 | MOV SI, OFFSET B_TARGET ;AN000; SAR Yes! Copy the drive information | ||
| 689 | MOV CX, LENGTH_B_TARGET ;AN000; SAR | ||
| 690 | .ELSEIF < DEST EQ 3 > ;AN111;JW ; SAR Copying to drive A? | ||
| 691 | MOV SI, OFFSET A_TARGET ;AN111;JW ; SAR Yes! Copy the drive information | ||
| 692 | MOV CX, LENGTH_A_TARGET ;AN111;JW ; SAR | ||
| 693 | .ELSE ;AN000; SAR | ||
| 694 | MOV SI, PATH_OFFSET ;AN000; SAR No! Copy to this directory. | ||
| 695 | MOV CX, WORD PTR [SI] ;AN000; SAR | ||
| 696 | ADD SI, 2 ;AN000; SAR Adjust for the length word | ||
| 697 | .ENDIF ;AN000; SAR | ||
| 698 | MOV DI,OFFSET T_DRV_PATH ;AN000; SAR | ||
| 699 | CLD ;AN000; SAR | ||
| 700 | REP MOVSB ;AN000; SAR | ||
| 701 | |||
| 702 | |||
| 703 | |||
| 704 | OR MY_FLAG, FINDFILE_FLAG ;AN000;deals with files | ||
| 705 | OR MY_FLAG, FIND_FIRST_FLAG ;AN000;find first | ||
| 706 | |||
| 707 | MOV NOT_FOUND_FLAG, 0 ;AN000; SAR | ||
| 708 | ; SAR | ||
| 709 | NEXT_PASS: ;AN000; SAR | ||
| 710 | ; SAR | ||
| 711 | MOV SI, TABLE_OFFSET ;AN000; SAR | ||
| 712 | MOV DOS_FILE_PTR,SI ;AN000; SAR | ||
| 713 | MOV FILE_NUM,1 ;AN000; SAR | ||
| 714 | |||
| 715 | CALL SET_MY_DTA ;AN000;set DTA to FILE_DTA | ||
| 716 | ; $DO | ||
| 717 | $$DO1: ;AN000; | ||
| 718 | AND MY_FLAG, RESET_NO_MORE ;AN000; SAR | ||
| 719 | CALL LOAD_DOS_FILENAME ;AN000; SAR | ||
| 720 | TEST MY_FLAG, NO_MORE_FILE ;AN000; SAR | ||
| 721 | ; $LEAVE NZ ; SAR | ||
| 722 | JNZ $$EN1 ;AN000; | ||
| 723 | |||
| 724 | .IF < SOURCE_IN EQ NO > AND ;AN000; | ||
| 725 | .IF < DEST EQ 3 > ;AN000; | ||
| 726 | CALL GET_SOURCE ;AN000; | ||
| 727 | .ENDIF ;AN000; | ||
| 728 | |||
| 729 | CALL FIND_FILE ;AN000;find first (next) ; SAR | ||
| 730 | .IF < BIT MY_FLAG NAND NO_MORE_FILE > ;AN000; SAR | ||
| 731 | CALL READ_INTO_BUFFER ;AN000; SAR | ||
| 732 | .ELSE ;AN000; SAR | ||
| 733 | MOV NOT_FOUND_FLAG, 1 ;AN000; SAR | ||
| 734 | .ENDIF ;AN000; SAR | ||
| 735 | ; $ENDDO ; SAR | ||
| 736 | JMP SHORT $$DO1 ;AN000; | ||
| 737 | $$EN1: ;AN000; | ||
| 738 | CLC ;AN000; SAR | ||
| 739 | |||
| 740 | ; SAR | ||
| 741 | ;;;;;; TEST OPTION_FLAG, SLASH_S ;walk the tree? | ||
| 742 | ; $IF NZ,LONG | ||
| 743 | ; | ||
| 744 | ; AND MY_FLAG, RESET_FINDFILE ;now, deals with directory | ||
| 745 | ; OR MY_FLAG, FIND_FIRST_FLAG ;find first | ||
| 746 | ; $DO | ||
| 747 | ; CALL SET_MY_DTA ;set DTA to DTAS according to BP | ||
| 748 | ; CALL FIND_DIR ;find first (next) | ||
| 749 | ; TEST MY_FLAG, NO_MORE_FILE ;no more subdirectory? | ||
| 750 | ; $LEAVE NZ ;then leave this loop to return to caller | ||
| 751 | ; LEA DI, S_DRV_PATH | ||
| 752 | ; LEA SI, [BP].DTA_FILENAME | ||
| 753 | ; CMP S_PATH, 0 ;root directory? | ||
| 754 | ; $IF E | ||
| 755 | ; MOV AL, 0FFh ;then '\' is already provided. Just concat. | ||
| 756 | ; $ELSE | ||
| 757 | ; MOV AL, PATH_DELIM ;put delimiter | ||
| 758 | ; $ENDIF | ||
| 759 | ; CALL CONCAT_ASCIIZ ;make new path | ||
| 760 | ; test option_flag, slash_p ;prompt mode? | ||
| 761 | ; $IF NZ | ||
| 762 | ; call p_concat_display_path | ||
| 763 | ; $ENDIF | ||
| 764 | ; INC S_DEPTH ;increase depth | ||
| 765 | ; CALL MAKE_HEADER ;make header in the buffer | ||
| 766 | ; OR MY_FLAG, IS_SOURCE_FLAG ;dealing with source | ||
| 767 | ; AND MY_FLAG, RESET_VISIT_PARENT ;going to visit child node | ||
| 768 | ; CALL CHANGE_S_DIR ;change source dir | ||
| 769 | ; ADD BP, type FIND_DTA ;increase DTAS stack pointer | ||
| 770 | ; CALL TREE_COPY ;tree copy the sub directory | ||
| 771 | ; $ENDDO | ||
| 772 | ; | ||
| 773 | ; CMP S_DEPTH, 0 ;starting directory? then exit | ||
| 774 | ; $IF NE ;else | ||
| 775 | ; DEC S_DEPTH ;dec depth | ||
| 776 | ; TEST OPTION_FLAG, SLASH_E ;copy subdirectories even if empty? | ||
| 777 | ; $IF Z | ||
| 778 | ; CALL DEL_EMPTY ;then check the old_buffer_ptr and | ||
| 779 | ; ;if it is a directory, then restore | ||
| 780 | ; ;buffer_ptr to old. | ||
| 781 | ; $ENDIF | ||
| 782 | ; LEA DI, S_DRV_PATH | ||
| 783 | ; CALL LAST_DIR_OUT ;change environments | ||
| 784 | ; test option_flag, slash_p ;prompt mode? | ||
| 785 | ; $IF NZ | ||
| 786 | ; call p_cut_display_path | ||
| 787 | ; $ENDIF | ||
| 788 | ; LEA DX, S_DRV_PATH ;before returning to the caller | ||
| 789 | ; OR MY_FLAG, IS_SOURCE_FLAG | ||
| 790 | ; OR MY_FLAG, VISIT_PARENT_FLAG | ||
| 791 | ; CALL CHANGE_S_DIR | ||
| 792 | ; SUB BP, type FIND_DTA | ||
| 793 | ; $ENDIF | ||
| 794 | ;;;;;;; $ENDIF ;walk the tree | ||
| 795 | RET ;AN000; | ||
| 796 | TREE_COPY ENDP;AN000; | ||
| 797 | |||
| 798 | |||
| 799 | GET_SOURCE PROC NEAR;AN000; | ||
| 800 | |||
| 801 | CALL SWITCH_DTAS;AN000; | ||
| 802 | |||
| 803 | .REPEAT ;AN000; | ||
| 804 | |||
| 805 | INIT_PQUEUE PAN_INST_PROMPT ;AN000; initialize queue | ||
| 806 | PREPARE_PANEL SOURCE_PANEL ;AN000; remove select from A: & insert DOS | ||
| 807 | PREPARE_PANEL PAN_HBAR ;AN000; | ||
| 808 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 809 | DISPLAY_PANEL ;AN000; | ||
| 810 | ; | ||
| 811 | GET_FUNCTION FK_ENT ;AN000; | ||
| 812 | |||
| 813 | .IF < SOURCE_PANEL eq SUB_REM_DOS_A > ;AN000; | ||
| 814 | LEA DI, S_DOS_SEL_360 ;AN000; | ||
| 815 | .ELSE ;AN000; | ||
| 816 | LEA DI, S_DOS_SHEL_DISK ;AN000; | ||
| 817 | .ENDIF ;AN000; | ||
| 818 | MOV CX, E_FILE_ATTR ;AN000; | ||
| 819 | CALL FIND_FILE_ROUTINE ;AN000; | ||
| 820 | .LEAVE < nc > ;AN000; | ||
| 821 | ; | ||
| 822 | HANDLE_ERROR ERR_DOS_DISK, E_RETURN ;AN000; | ||
| 823 | ; | ||
| 824 | .UNTIL ;AN000; | ||
| 825 | |||
| 826 | ;;;copying files from diskette 1 screen ; | ||
| 827 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 828 | PREPARE_PANEL SUB_COPYING ;AN000; prepare copying from diskette 1 message | ||
| 829 | DISPLAY_PANEL ;AN000; | ||
| 830 | |||
| 831 | MOV SOURCE_IN,YES ;AN000; | ||
| 832 | |||
| 833 | CALL SWITCH_DTAS ;AN000; | ||
| 834 | |||
| 835 | RET ;AN000; | ||
| 836 | GET_SOURCE ENDP ;AN000; | ||
| 837 | |||
| 838 | GET_DEST PROC NEAR ;AN000; | ||
| 839 | |||
| 840 | |||
| 841 | INIT_PQUEUE PAN_INST_PROMPT ;AN000; initialize queue | ||
| 842 | PREPARE_PANEL DEST_PANEL ;AN000; remove select from A: & insert DOS | ||
| 843 | PREPARE_PANEL PAN_HBAR ;AN000; | ||
| 844 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 845 | DISPLAY_PANEL ;AN000; | ||
| 846 | ; | ||
| 847 | GET_FUNCTION FK_ENT ;AN000; | ||
| 848 | ; | ||
| 849 | |||
| 850 | ;;;copying files from diskette 1 screen ; | ||
| 851 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 852 | PREPARE_PANEL SUB_COPYING ;AN000; prepare copying from diskette 1 message | ||
| 853 | DISPLAY_PANEL ;AN000; | ||
| 854 | |||
| 855 | MOV SOURCE_IN,NO ;AN000; | ||
| 856 | ; SUB DOS_FILE_PTR,12 | ||
| 857 | ; DEC FILE_NUM | ||
| 858 | |||
| 859 | RET ;AN000; | ||
| 860 | GET_DEST ENDP ;AN000; | ||
| 861 | ; | ||
| 862 | ;****************************************************************************** | ||
| 863 | ; Subroutine: LOAD_DOS_FILENAME - Load the next filename into S_FILE. | ||
| 864 | ; INPUT: | ||
| 865 | ; SI - Points to the start of the filename | ||
| 866 | ; | ||
| 867 | ; OUTPUT: | ||
| 868 | ; The S_FILE field in the data segment is updated. | ||
| 869 | ;Registers Affected: | ||
| 870 | ; SI - At the end, SI points to the end of the filename. It therefore | ||
| 871 | ; also points to the beginning of the next filename. | ||
| 872 | ; | ||
| 873 | ;****************************************************************************** | ||
| 874 | LOAD_DOS_FILENAME PROC NEAR;AN000; | ||
| 875 | |||
| 876 | PUSH DI ;AN000; | ||
| 877 | PUSH ES ;AN000; | ||
| 878 | |||
| 879 | OR MY_FLAG, FIND_FIRST_FLAG ;AN000; Find first in the directory | ||
| 880 | |||
| 881 | MOV SI,DOS_FILE_PTR ;AN000; | ||
| 882 | |||
| 883 | LDF_SEE_IF_DONE: ;AN000; | ||
| 884 | ; | ||
| 885 | ; See if we are finished this pass of the files | ||
| 886 | ; | ||
| 887 | OR MY_FLAG, NO_MORE_FILE ;AN000; For now, assume there are not files found | ||
| 888 | MOV DX, NUMBER_OF_FILES ;AN000; Get the number of files in the table | ||
| 889 | .IF < FILE_NUM BE DX > ;AN000; Search while there are still more files | ||
| 890 | AND MY_FLAG, RESET_NO_MORE ;AN000; Indicate that there are more files | ||
| 891 | LEA DI,S_FILE ;AN000; Where to put the name | ||
| 892 | MOV CX,12 ;AN000; Number of bytes | ||
| 893 | CLD ;AN000; | ||
| 894 | REP MOVSB ;AN000; | ||
| 895 | INC FILE_NUM ;AN000; | ||
| 896 | .ENDIF ;AN000; | ||
| 897 | |||
| 898 | MOV DOS_FILE_PTR,SI ;AN000; Save the pointer to the files | ||
| 899 | POP ES ;AN000; | ||
| 900 | POP DI ;AN000; | ||
| 901 | RET ;AN000; | ||
| 902 | |||
| 903 | LOAD_DOS_FILENAME ENDP ;AN000; | ||
| 904 | ; | ||
| 905 | READ_INTO_BUFFER PROC NEAR ;AN000; | ||
| 906 | ;Read *** a *** file into buffer | ||
| 907 | |||
| 908 | ; SAR | ||
| 909 | ; TEST MY_FLAG, SINGLE_COPY_FLAG ;single copy? | ||
| 910 | ; $IF Z,AND ;no, multi copy | ||
| 911 | ; TEST ACTION_FLAG, READING_FLAG ;show message? | ||
| 912 | ; $IF NZ ;yes. | ||
| 913 | ; MOV AX,MSG_READING_SOURCE ;AN000; message number | ||
| 914 | ; MOV MSG_NUM,AX ;AN000; set message number | ||
| 915 | ; MOV SUBST_COUNT,0 ;AN000; no message substitution | ||
| 916 | ; MOV MSG_CLASS,-1 ;AN000; message class | ||
| 917 | ; MOV INPUT_FLAG,0 ;AN000; no input | ||
| 918 | ; MOV AX,MSG_READING_SOURCE | ||
| 919 | ; CALL PRINT_STDOUT ;show message "Reading source files" | ||
| 920 | ; | ||
| 921 | ; AND ACTION_FLAG, RESET_READING ;reset it | ||
| 922 | ;;;;;;; $ENDIF | ||
| 923 | |||
| 924 | AND FILE_FLAG, RESET_READFILE ;AN000;reset file_flag to read a file | ||
| 925 | MOV AX,FILE_DTA.DTA_FILE_SIZE_HIGH;AN000; | ||
| 926 | MOV HIGH_FILE_SIZE, AX ;AN000; | ||
| 927 | MOV AX,FILE_DTA.DTA_FILE_SIZE_LOW;AN000; | ||
| 928 | MOV LOW_FILE_SIZE, AX ;AN000; | ||
| 929 | |||
| 930 | MOV AX, PARA_OF_HDR ;AN005;GET THE HEADER SIZE (para.) | ||
| 931 | CMP MAX_BUFFER_SIZE,AX ;AN005;IS EA BUFFER TOO LARGE? | ||
| 932 | JB RIB_ERROR ;AN005;CLOSE THE FILE AND GET THE NEXT | ||
| 933 | |||
| 934 | CALL CMP_FILESIZE_TO_BUFFER_LEFT ;AN000;compare sizes | ||
| 935 | TEST FILE_FLAG, FILE_BIGGER_FLAG ;AN000;filesize > buffer_left - header? | ||
| 936 | JZ RIB_SMALL ;AN000;if not, then small file | ||
| 937 | MOV BX, S_HANDLE ;AN005; | ||
| 938 | CALL CLOSE_A_FILE ;AN005;ONLY OPENED TO GET BUFFER SIZE | ||
| 939 | CALL WRITE_FROM_BUFFER;AN000; | ||
| 940 | |||
| 941 | .IF < SOURCE_IN EQ NO > AND ;AN111;JW | ||
| 942 | .IF < DEST EQ 3 > ;AN111;JW | ||
| 943 | CALL GET_SOURCE ;AN111;JW put source diskette in A: | ||
| 944 | .ENDIF ;AN111;JW | ||
| 945 | |||
| 946 | ; JC RIB_ERROR ;any problem with writing? | ||
| 947 | CALL CMP_FILESIZE_TO_BUFFER_LEFT ;AN000;compare again | ||
| 948 | TEST FILE_FLAG, FILE_BIGGER_FLAG ;AN000;still bigger? | ||
| 949 | JNZ RIB_BIG ;AN000;yes. Big file | ||
| 950 | RIB_SMALL: ;AN000; | ||
| 951 | CALL SMALL_FILE;AN000; | ||
| 952 | JC RIB_ERROR ;AN000; | ||
| 953 | JMP RIB_EXIT ;AN000; | ||
| 954 | RIB_BIG: ;AN000; | ||
| 955 | MOV BX, S_HANDLE ;AN005; | ||
| 956 | CALL CLOSE_A_FILE ;AN005;ONLY OPENED TO GET BUFFER SIZE | ||
| 957 | CALL BIG_FILE ;AN000; | ||
| 958 | JNC RIB_EXIT ;AN000; | ||
| 959 | RIB_ERROR: ;AN000; | ||
| 960 | TEST COPY_STATUS, OPEN_ERROR_FLAG ;AN000;open error? | ||
| 961 | JNZ RIB_EXIT ;AN000;just exit. find next file | ||
| 962 | MOV BX, S_HANDLE ;AN000;else write error | ||
| 963 | CALL CLOSE_A_FILE ;AN000;close the troubled file | ||
| 964 | ;and find next file | ||
| 965 | RIB_EXIT: ;AN000; | ||
| 966 | TEST MY_FLAG, SINGLE_COPY_FLAG ;AN000;single copy? | ||
| 967 | ; $IF NZ | ||
| 968 | JZ $$IF4 ;AN000; | ||
| 969 | CALL WRITE_FROM_BUFFER ;AN000;then write a file | ||
| 970 | ; $ENDIF | ||
| 971 | $$IF4: ;AN000; | ||
| 972 | RET ;AN000; | ||
| 973 | READ_INTO_BUFFER ENDP ;AN000; | ||
| 974 | ; | ||
| 975 | |||
| 976 | SMALL_FILE PROC NEAR ;AN000; | ||
| 977 | ;handles a file smaller than max_buffer_size or buffer_left, i.e. fit in memory. | ||
| 978 | ;This routine will call MAKE_HEADER, SET_BUFFER_PTR< READ_A_FILE, OPEN_A_FIEL | ||
| 979 | ;CALC_FILE_SIZE, CMP_FILE_FFD0h, CLOSE_A_FILE. | ||
| 980 | |||
| 981 | TEST FILE_FLAG, BIG_FILE_FLAG ;AN000;called from BIG_FILE? | ||
| 982 | JNZ SMF_CONT ;AN000;then need not open a file again | ||
| 983 | CALL OPEN_A_FILE ;AN000;open a file using FILE_DTA | ||
| 984 | JC SMF_ERROR ;AN000;open error? | ||
| 985 | SMF_CONT: ;AN000; | ||
| 986 | CALL CMP_FILE_FFD0h ;AN000;filesize > 0FFD0h ? | ||
| 987 | TEST FILE_FLAG, FILE_BIGGER_FLAG;AN000; | ||
| 988 | JZ SMF_EOF ;AN000;filesize <= 0FFD0h | ||
| 989 | OR FILE_FLAG, CONT_FLAG ;AN000;filesize > 0FFD0h. set cont_flag | ||
| 990 | MOV CX, 0FFD0h ;AN000;# of bytes to read | ||
| 991 | CALL READ_A_FILE;AN000; | ||
| 992 | JC SMF_ERROR ;AN000;unsuccessful read? | ||
| 993 | CALL MAKE_HEADER ;AN000;else make header and ready for next | ||
| 994 | CALL CALC_FILE_SIZE ;AN000;filesize = filesize - bytes read | ||
| 995 | JMP SMF_CONT ;AN000;loop. compare again with the rest | ||
| 996 | |||
| 997 | SMF_EOF: ;AN000; | ||
| 998 | MOV CX, LOW_FILE_SIZE ;AN000;rest of the bytes to read | ||
| 999 | OR FILE_FLAG, EOF_FLAG ;AN000;set EOF | ||
| 1000 | CALL READ_A_FILE ;AN000; | ||
| 1001 | JC SMF_ERROR ;AN000; | ||
| 1002 | CALL MAKE_HEADER ;AN000; | ||
| 1003 | MOV BX, S_HANDLE ;AN000; | ||
| 1004 | CALL CLOSE_A_FILE ;AN000; | ||
| 1005 | JMP SMF_EXIT ;AN000; | ||
| 1006 | SMF_ERROR: ;AN000; | ||
| 1007 | ; | ||
| 1008 | SMF_EXIT: ;AN000; | ||
| 1009 | RET ;AN000; | ||
| 1010 | SMALL_FILE ENDP ;AN000; | ||
| 1011 | ; | ||
| 1012 | |||
| 1013 | BIG_FILE PROC NEAR ;AN000; | ||
| 1014 | ;handles a file which is bigger than max_buffer_size | ||
| 1015 | ;Needs 2 file handles open concurrently for read and write | ||
| 1016 | |||
| 1017 | OR FILE_FLAG, BIG_FILE_FLAG;AN000; | ||
| 1018 | OR FILE_FLAG, CONT_FLAG;AN000; | ||
| 1019 | CALL OPEN_A_FILE ;AN000; | ||
| 1020 | JC BIF_ERROR ;AN000;error in open? | ||
| 1021 | CMP MAX_BUFFER_SIZE, 0FFFh ;AN000;max buffer size > 0FFFh in para ? | ||
| 1022 | JA BIF_BIG ;AN000;yes. large buffer system | ||
| 1023 | ;else small buffer | ||
| 1024 | MOV CX, MAX_CX ;AN000;CX = max_buffer_size * 16 - 32 | ||
| 1025 | BIF_SM: ;AN000; | ||
| 1026 | CALL READ_A_FILE;AN000; | ||
| 1027 | JC BIF_ERROR ;AN000;read error? | ||
| 1028 | CALL MAKE_HEADER;AN000; | ||
| 1029 | CALL WRITE_FROM_BUFFER;AN000; | ||
| 1030 | JC BIF_ERROR ;AN000;write error? | ||
| 1031 | TEST FILE_FLAG, EOF_FLAG ;AN000;end of file set by READ_A_FILE? | ||
| 1032 | JZ BIF_SM ;AN000;if not, read again | ||
| 1033 | MOV BX, S_HANDLE;AN000; | ||
| 1034 | CALL CLOSE_A_FILE;AN000; | ||
| 1035 | JMP BIF_EXIT ;AN000;finished. | ||
| 1036 | BIF_BIG: ;AN000; | ||
| 1037 | MOV CX, 0FFD0h ;AN000;max # of data bytes this program supports | ||
| 1038 | BIF_BIG1: ;AN000; | ||
| 1039 | CALL READ_A_FILE;AN000; | ||
| 1040 | JC BIF_ERROR ;AN000; | ||
| 1041 | CALL MAKE_HEADER;AN000; | ||
| 1042 | CALL CALC_FILE_SIZE ;AN000;modify file size | ||
| 1043 | BIF_BIG2: ;AN000; | ||
| 1044 | CALL CMP_FILESIZE_TO_BUFFER_LEFT ;AN000;filesize > buffer_left? | ||
| 1045 | TEST FILE_FLAG, FILE_BIGGER_FLAG ;AN000;yes. | ||
| 1046 | JZ BIF_END ;AN000;if it is not, call small_file | ||
| 1047 | CMP BUFFER_LEFT, 0FFFh ;AN000;BUFFER_LEFT >= 0FFF0h in bytes? | ||
| 1048 | JAE BIF_BIG ;AN000;then loop again. | ||
| 1049 | CMP BUFFER_LEFT, 140H ;AN000;else BUFFER_LEFT >= 5 K in bytes? ;minimum buffer size this program supports. | ||
| 1050 | JL BIF_BIG3 ;AN000;then flush buffer and try again. **IF system buffer left < 5 K then infinit loop can happen. | ||
| 1051 | MOV AX,BUFFER_LEFT;AN000; | ||
| 1052 | SUB AX,PARA_OF_HDR ;AC005;FOR HEADER SIZE para. | ||
| 1053 | MOV CX,BYTS_OF_HDR ;AN005;FOR HEADER SIZE bytes. | ||
| 1054 | JMP BIF_BIG1 ;AN000;read again | ||
| 1055 | BIF_BIG3: ;AN000; | ||
| 1056 | CALL WRITE_FROM_BUFFER;AN000; | ||
| 1057 | JC BIF_ERROR ;AN000; | ||
| 1058 | JMP BIF_BIG2 ;AN000;flush buffer and compare again. | ||
| 1059 | BIF_END: ;AN000; | ||
| 1060 | CALL SMALL_FILE ;AN000;when filesize <= buffer_left then SMALL_FILE will finish it. | ||
| 1061 | JC BIF_ERROR ;AN000;something wrong? | ||
| 1062 | CALL WRITE_FROM_BUFFER ;AN000;else finish copying this file | ||
| 1063 | JNC BIF_EXIT ;AN000; | ||
| 1064 | BIF_ERROR: ;AN000; | ||
| 1065 | ;what happened? | ||
| 1066 | BIF_EXIT: ;AN000; | ||
| 1067 | RET ;AN000; | ||
| 1068 | BIG_FILE ENDP ;AN000; | ||
| 1069 | ; | ||
| 1070 | MAKE_HEADER PROC NEAR ;AN000; | ||
| 1071 | ;When called by READ_A_FILE after the data had been read into the buffer, this | ||
| 1072 | ;routine will put the header which is just below the data area where the | ||
| 1073 | ;current BUFFER_PTR points. The header is 32 (2 para) byte long. And this | ||
| 1074 | ;routine will also call SET_BUFFER_PTR to set the BUFFER_PTR, BUFFER_LEFT | ||
| 1075 | ;for the next process. | ||
| 1076 | ;If called by TREE_COPY for a SUBDIRECTORY handle, this routine should | ||
| 1077 | ;check the BUFFER_LEFT (when called by READ_A_FILE, the caller is assumed | ||
| 1078 | ;to check the size of buffer_left before calling.) In this case, this | ||
| 1079 | ;routine will set the next BUFFER_PTR, BUFFER_LEFT, OLD_BUFFER_PTR | ||
| 1080 | ;instead of SET_BUFFER_PTR routine. | ||
| 1081 | ;Informations are obtained from the DTA area (for file - FILE_DTA.xxx | ||
| 1082 | ;dir - DS:[BP].xxx ) and stored into the header by referencing ES:field;s name. | ||
| 1083 | ;DS - Program Data area | ||
| 1084 | ;ES - will be used for a header segment in the buffer. | ||
| 1085 | ; | ||
| 1086 | PUSH ES ;AN000;save ES | ||
| 1087 | PUSH AX ;AN000; | ||
| 1088 | |||
| 1089 | MH_AGAIN: ;AN000; | ||
| 1090 | MOV AX,BUFFER_PTR ;AN000;buffer_ptr is a segment | ||
| 1091 | MOV ES, AX ;AN000;now, ES is a header seg. | ||
| 1092 | ; | ||
| 1093 | MOV AX, PARA_OF_HDR ;AN005;GET THE HEADER SIZE (para.) | ||
| 1094 | CMP BUFFER_LEFT,AX ;AC005;buffer_left=less than NEEDED? | ||
| 1095 | JAE MH_START ;AN000; | ||
| 1096 | CALL WRITE_FROM_BUFFER ;AN000;if so, flush buffer | ||
| 1097 | JC MH_ERROR_BRIDGE ;AN000;write error? | ||
| 1098 | JMP SHORT MH_AGAIN ;AN000;reinitialize ES to new buffer ptr | ||
| 1099 | MH_START: ;AN000; | ||
| 1100 | TEST MY_FLAG, FINDFILE_FLAG ;AN000;identify caller. | ||
| 1101 | JNZ MH_FILE ;AN000;if a file, jmp to MH_FILE | ||
| 1102 | ;else deals with directory. | ||
| 1103 | MOV ES:CONTINUE_INFO, 0 ;AN000;not a continuation. | ||
| 1104 | MOV AX,OLD_BUFFER_PTR ;AN000; | ||
| 1105 | MOV ES:BEFORE_PTR, AX ;AN000;set before_ptr in header | ||
| 1106 | MOV AX,BUFFER_PTR ;AN000; | ||
| 1107 | MOV OLD_BUFFER_PTR, AX ;AN000;set variable OLD_BUFFER_PTR | ||
| 1108 | ADD AX,PARA_OF_HDR ;AC005;AX = BUFFER_PTR+HEADER(para) | ||
| 1109 | MOV BUFFER_PTR, AX ;AN000;set new BUFFER_PTR | ||
| 1110 | MOV ES:NEXT_PTR, AX ;AN000;set NEXT_PTR in the header | ||
| 1111 | MOV AX, PARA_OF_HDR ;AN005;GET THE HEADER SIZE (para.) | ||
| 1112 | SUB BUFFER_LEFT,AX ;AC005;adjust BUFFER_LEFT | ||
| 1113 | CMP BUFFER_LEFT,AX ;AC005;less than HEADER SIZE (para) ? | ||
| 1114 | ; $IF B | ||
| 1115 | JNB $$IF6 ;AN000; | ||
| 1116 | MOV BUFFER_LEFT, 0 ;AN000;indicate buffer_full | ||
| 1117 | ; $ENDIF | ||
| 1118 | $$IF6: ;AN000; | ||
| 1119 | MOV AL, S_DEPTH ;AN000; | ||
| 1120 | MOV ES:DIR_DEPTH, AL ;AN000;now save other info's | ||
| 1121 | MOV AL, DS:[BP].DTA_ATTRIBUTE;AN000; | ||
| 1122 | MOV ES:ATTR_FOUND, AL ;AN000;in this case, DIR | ||
| 1123 | MOV AL, BYTE PTR T_DRV;AN000; | ||
| 1124 | MOV ES:TARGET_DRV_LET, AL ;AN000;mov target drive letter | ||
| 1125 | MOV ES:TARGET_DRV_LET+1, DRV_delim ;AN000; ':' | ||
| 1126 | MOV CX, 13 ;AN000; | ||
| 1127 | LEA SI, [BP].DTA_FILENAME ;AN000;DS:SI | ||
| 1128 | MOV DI, OFFSET ES:FILENAME_FOUND ;AN000;ES:DI | ||
| 1129 | REP MOVSB ;AN000;mov sting until cx = 0 | ||
| 1130 | JMP MH_EXIT ;AN000; | ||
| 1131 | MH_ERROR_BRIDGE: JMP MH_ERROR;AN000; | ||
| 1132 | MH_FILE: ;AN000;handles a file header hereafter. | ||
| 1133 | TEST FILE_FLAG, CONT_FLAG ;AN000;continuation? | ||
| 1134 | JZ MH_WHOLE_FILE ;AN000;no, just a whole file | ||
| 1135 | TEST FILE_FLAG, EOF_FLAG ;AN000;Eof flag set? | ||
| 1136 | JNZ MH_CONT_END ;AN000;yes, must be end of continuation | ||
| 1137 | TEST FILE_FLAG, BIG_FILE_FLAG ;AN000;Is this a big file? | ||
| 1138 | JNZ MH_BIG ;AN000;yes | ||
| 1139 | MOV ES:CONTINUE_INFO, 1 ;AN000;else small file continuation. | ||
| 1140 | JMP MH_A_FILE ;AN000; | ||
| 1141 | MH_WHOLE_FILE: ;AN000; | ||
| 1142 | MOV ES:CONTINUE_INFO, 0 ;AN000; | ||
| 1143 | JMP MH_A_FILE ;AN000; | ||
| 1144 | MH_CONT_END: ;AN000; | ||
| 1145 | MOV ES:CONTINUE_INFO, 3 ;AN000; | ||
| 1146 | JMP MH_A_FILE ;AN000; | ||
| 1147 | MH_BIG: ;AN000; | ||
| 1148 | MOV ES:CONTINUE_INFO, 2 ;AN000; | ||
| 1149 | MH_A_FILE: ;AN000; | ||
| 1150 | MOV AX,FILE_DTA.DTA_FILE_TIME;AN000; | ||
| 1151 | MOV ES:FILE_TIME_FOUND, AX;AN000; | ||
| 1152 | MOV AX, FILE_DTA.DTA_FILE_DATE;AN000; | ||
| 1153 | MOV ES:FILE_DATE_FOUND, AX;AN000; | ||
| 1154 | MOV AX, FILE_DTA.DTA_FILE_SIZE_LOW;AN000; | ||
| 1155 | MOV ES:LOW_SIZE_FOUND, AX;AN000; | ||
| 1156 | MOV AX, FILE_DTA.DTA_FILE_SIZE_HIGH;AN000; | ||
| 1157 | MOV ES:HIGH_SIZE_FOUND, AX;AN000; | ||
| 1158 | MOV AL, BYTE PTR T_DRV ;AN000; | ||
| 1159 | MOV ES:TARGET_DRV_LET, AL;AN000; | ||
| 1160 | MOV ES:TARGET_DRV_LET+1, DRV_DELIM;AN000; | ||
| 1161 | MOV CX, 13 ;AN000; | ||
| 1162 | MOV SI, OFFSET FILE_DTA.DTA_FILENAME;AN000; | ||
| 1163 | MOV DI, OFFSET ES:FILENAME_FOUND;AN000; | ||
| 1164 | REP MOVSB ;AN000; | ||
| 1165 | |||
| 1166 | ; Get Extended Attribute list of the opened file and save in attribute buff. | ||
| 1167 | |||
| 1168 | ; old method | ||
| 1169 | ; MOV AX,INT_ORDINAL ;AN000; SET THE ORDINAL TO 0 | ||
| 1170 | ; MOV ES:QUERY_LIST,AX ;AN000; PUT IT IN THE BUFFER | ||
| 1171 | ; MOV AX,SIZ_OF_BUFF ;AN000; SET THE SIZE TO 510 BYTES | ||
| 1172 | ; MOV ES:BUFR_SIZ,AX ;AN000; PUT IT IN THE BUFFER | ||
| 1173 | ; | ||
| 1174 | ; MOV BX,S_HANDLE ;AN000; BX = handle | ||
| 1175 | ; MOV AX, QUY_ATTRIB ;AN000; extended attribute code 5703H | ||
| 1176 | ; MOV DI, OFFSET QUERY_LIST ;AN000; ES:DI-->QUERY list | ||
| 1177 | ; INT 21H ;AN000; get extended attribute list | ||
| 1178 | ; | ||
| 1179 | MOV BX,S_HANDLE ;AN005; BX = handle | ||
| 1180 | MOV SI,ALL_ATTR ;AN005; SELECT ALL ATTRIBUTES SIZE | ||
| 1181 | MOV CL, PARAGRAPH ;AN005; PARAGRAPH = 4 FOR DIV BY 16 | ||
| 1182 | MOV AX,SIZ_OF_BUFF ;AN005; GET THE SIZE EXPRESSED IN para. | ||
| 1183 | SHL AX, CL ;AN005; GET # OF BYTES FROM para. | ||
| 1184 | MOV CX, AX ;AN005; NEEDS TO BE IN CX | ||
| 1185 | MOV DI, OFFSET ES:ATTRIB_LIST ;AN005; ES:DI = E A LIST IN BUFFER | ||
| 1186 | MOV AX, GET_ATTRIB ;AN005; extended attribute code 5702H | ||
| 1187 | INT 21H ;AN005; get extended attribute list | ||
| 1188 | |||
| 1189 | ; JC MH_ERROR ;AN000; jump if error | ||
| 1190 | |||
| 1191 | MOV AX, OLD_BUFFER_PTR;AN000; | ||
| 1192 | MOV ES:BEFORE_PTR, AX;AN000; | ||
| 1193 | MOV AX, ACT_BYTES;AN000; | ||
| 1194 | MOV ES:CX_BYTES, AX;AN000; | ||
| 1195 | CALL SET_BUFFER_PTR ;AN000;set buffer_ptr for next. AX is already set. | ||
| 1196 | MOV AX, BUFFER_PTR ;AN000; | ||
| 1197 | MOV ES:NEXT_PTR, AX ;AN000;next buffer_ptr is next_ptr | ||
| 1198 | MOV AL, S_DEPTH ;AN000; | ||
| 1199 | MOV ES:DIR_DEPTH, AL ;AN000;same as source depth | ||
| 1200 | MOV AL, FILE_DTA.DTA_ATTRIBUTE;AN000; | ||
| 1201 | MOV ES:ATTR_FOUND, AL ;AN000;attribute found | ||
| 1202 | JMP MH_EXIT ;AN000; | ||
| 1203 | MH_ERROR: ;AN000; | ||
| 1204 | OR COPY_STATUS, OPEN_ERROR_FLAG ;AN000; | ||
| 1205 | CALL EXTENDED_ERROR_HANDLER ;AN000; | ||
| 1206 | MH_EXIT: ;AN000; | ||
| 1207 | POP AX ;AN000; | ||
| 1208 | POP ES ;AN000; | ||
| 1209 | RET ;AN000; | ||
| 1210 | MAKE_HEADER ENDP ;AN000; | ||
| 1211 | ; | ||
| 1212 | |||
| 1213 | OPEN_A_FILE PROC NEAR ;AN000; | ||
| 1214 | |||
| 1215 | ;------------------------------------------------------------------------- | ||
| 1216 | ; Use extended open DOS call to open source file, | ||
| 1217 | ; if successfully open, then save filehand to S_HANDLE. | ||
| 1218 | ;------------------------------------------------------------------------- | ||
| 1219 | ; Set drive letter and file name pointer in parameter list | ||
| 1220 | LEA SI,FILE_DTA.DTA_FILENAME ;AN005; DS:SI-->NAME TO OPEN | ||
| 1221 | MOV DX,OPN_FLAG ;AN000; flag = 0101H | ||
| 1222 | MOV CX,OPN_ATTR ;AN000; attribute = 0 | ||
| 1223 | MOV BX,OPN_MODE ;AN000; open mode = 0002H | ||
| 1224 | MOV DI, NUL_LIST ;AN005; ES:DI = -1 | ||
| 1225 | MOV AX, Ext_Open ;AN000; = 6Ch | ||
| 1226 | INT 21H ;AN000; OPEN SOURCE FILE | ||
| 1227 | |||
| 1228 | JC OF_ERROR;AN000; | ||
| 1229 | MOV S_HANDLE, AX ;AN000;save filehandle | ||
| 1230 | INC OPEN_FILE_COUNT ;AN005;UPDATE THE OPEN FILE COUNTER | ||
| 1231 | |||
| 1232 | |||
| 1233 | JMP OF_EXIT ;AN000; exit | ||
| 1234 | |||
| 1235 | OF_ERROR: ;AN000; | ||
| 1236 | OR COPY_STATUS, OPEN_ERROR_FLAG;AN000; | ||
| 1237 | CALL EXTENDED_ERROR_HANDLER;AN000; | ||
| 1238 | OF_EXIT: ;AN000; | ||
| 1239 | RET ;AN000; | ||
| 1240 | OPEN_A_FILE ENDP;AN000; | ||
| 1241 | ; | ||
| 1242 | |||
| 1243 | |||
| 1244 | CMP_FILE_FFD0h PROC NEAR;AN000; | ||
| 1245 | ;check whether the filesize in HIGH_FILE_SIZE, LOW_FILE_SIZE is bigger than | ||
| 1246 | ;0FFD0h. If it is, then set FILE_BIGGER_FLAG, else reset it. | ||
| 1247 | CMP HIGH_FILE_SIZE, 0;AN000; | ||
| 1248 | ; $IF E,AND | ||
| 1249 | JNE $$IF8 ;AN000; | ||
| 1250 | CMP LOW_FILE_SIZE, 0FFD0h;AN000; | ||
| 1251 | ; $IF BE | ||
| 1252 | JNBE $$IF8 ;AN000; | ||
| 1253 | AND FILE_FLAG, RESET_FILE_BIGGER ;AN000;filesize <= 0FFD0h | ||
| 1254 | ; $ELSE | ||
| 1255 | JMP SHORT $$EN8 ;AN000; | ||
| 1256 | $$IF8: ;AN000; | ||
| 1257 | OR FILE_FLAG, FILE_BIGGER_FLAG ;AN000; | ||
| 1258 | ; $ENDIF | ||
| 1259 | $$EN8: ;AN000; | ||
| 1260 | RET ;AN000; | ||
| 1261 | CMP_FILE_FFD0h ENDP ;AN000; | ||
| 1262 | ; | ||
| 1263 | |||
| 1264 | CALC_FILE_SIZE PROC NEAR ;AN000; | ||
| 1265 | ;subtract the bytes read (ACT_BYTES) from the filesize in HIGH_FILE_SIZE, | ||
| 1266 | ;LOW_FILE_SIZE. | ||
| 1267 | MOV AX, ACT_BYTES ;AN000; | ||
| 1268 | SUB LOW_FILE_SIZE, AX ;AN000; | ||
| 1269 | SBB HIGH_FILE_SIZE, 0 ;AN000; | ||
| 1270 | RET ;AN000; | ||
| 1271 | CALC_FILE_SIZE ENDP ;AN000; | ||
| 1272 | ; | ||
| 1273 | |||
| 1274 | READ_A_FILE PROC NEAR ;AN000; | ||
| 1275 | ;read a file. | ||
| 1276 | ;if after reading, AX < CX or AX = 0 the set EOF_FLAG. | ||
| 1277 | ;INPUT:CX - # of bytes to read | ||
| 1278 | ; BUFFER_PTR | ||
| 1279 | ; S_HANDLE | ||
| 1280 | ;OUTPUT: ACT_BYTES | ||
| 1281 | |||
| 1282 | ; .IF < SOURCE_IN EQ NO > AND | ||
| 1283 | ; .IF < DEST EQ 3 > | ||
| 1284 | ; CALL GET_SOURCE | ||
| 1285 | ; .ENDIF | ||
| 1286 | |||
| 1287 | PUSH DS ;AN000;save program data seg | ||
| 1288 | MOV AH, Read;AN000; | ||
| 1289 | MOV BX, S_HANDLE;AN000; | ||
| 1290 | MOV DX, BUFFER_PTR ;AN000;current buffer header seg | ||
| 1291 | ADD DX, PARA_OF_HDR ;AC005;skip the header part | ||
| 1292 | MOV DS, DX ;AN000;now DS = buffer_ptr + 2, data area | ||
| 1293 | XOR DX, DX ;AN000;offset DX = 0 | ||
| 1294 | INT 21H ;AN000; | ||
| 1295 | POP DS ;AN000;restore program data area | ||
| 1296 | JC RF_ERROR ;AN000;read error? | ||
| 1297 | CMP AX, CX ;AN000; | ||
| 1298 | JE RF_OK ;AN000; | ||
| 1299 | OR FILE_FLAG, EOF_FLAG ;AN000;EOF reached. AX = 0 or AX < CX | ||
| 1300 | RF_OK: ;AN000; | ||
| 1301 | CLC ;AN000;clear carry caused from CMP | ||
| 1302 | MOV ACT_BYTES, AX ;AN000;save actual bytes read | ||
| 1303 | JMP RF_EXIT ;AN000; | ||
| 1304 | RF_ERROR: ;AN000; | ||
| 1305 | OR COPY_STATUS, READ_ERROR_FLAG;AN000; | ||
| 1306 | CALL EXTENDED_ERROR_HANDLER;AN000; | ||
| 1307 | RF_EXIT: ;AN000; | ||
| 1308 | RET ;AN000; | ||
| 1309 | READ_A_FILE ENDP ;AN000; | ||
| 1310 | ; | ||
| 1311 | |||
| 1312 | FIND_IT PROC NEAR ;AN000; | ||
| 1313 | ;set first or next depending on FIND_FIRST_FLAG. | ||
| 1314 | ;once called, reset FIND_FIRST_FLAG. | ||
| 1315 | TEST MY_FLAG, FIND_FIRST_FLAG;AN000; | ||
| 1316 | ; $IF NZ ;yes | ||
| 1317 | JZ $$IF11 ;AN000; | ||
| 1318 | MOV AH, Find_First;AN000; | ||
| 1319 | ; $ELSE | ||
| 1320 | JMP SHORT $$EN11 ;AN000; | ||
| 1321 | $$IF11: ;AN000; | ||
| 1322 | MOV AH, Find_Next;AN000; | ||
| 1323 | ; $ENDIF | ||
| 1324 | $$EN11: ;AN000; | ||
| 1325 | AND MY_FLAG, RESET_FIND_FIRST ;AN000;reset FIND_FIRST_FLAG | ||
| 1326 | INT 21H ;AN000; | ||
| 1327 | RET ;AN000; | ||
| 1328 | FIND_IT ENDP ;AN000; | ||
| 1329 | ; | ||
| 1330 | FIND_FILE PROC NEAR ;AN000; | ||
| 1331 | ;find a file | ||
| 1332 | ;set NO_MORE_FILE if carry. | ||
| 1333 | ; $SEARCH | ||
| 1334 | |||
| 1335 | ; PUSH DS | ||
| 1336 | ; MOV DX,DATA | ||
| 1337 | ; MOV DS,DX | ||
| 1338 | ; .IF < SOURCE_IN EQ NO > AND | ||
| 1339 | ; .IF < DEST EQ 3 > | ||
| 1340 | ; CALL GET_SOURCE | ||
| 1341 | ; .ENDIF | ||
| 1342 | ; POP DS | ||
| 1343 | |||
| 1344 | $$DO14: ;AN000; | ||
| 1345 | TEST MY_FLAG, FIND_FIRST_FLAG ;AN000;find first ? | ||
| 1346 | ; $IF NZ | ||
| 1347 | JZ $$IF15 ;AN000; | ||
| 1348 | MOV DX, OFFSET S_FILE ;AN000; | ||
| 1349 | MOV CX, File_Search_Attr ;AN000;normal = 0 | ||
| 1350 | ; $ELSE | ||
| 1351 | JMP SHORT $$EN15 ;AN000; | ||
| 1352 | $$IF15: ;AN000; | ||
| 1353 | MOV DX, OFFSET FILE_DTA ;AN000; | ||
| 1354 | ; $ENDIF | ||
| 1355 | $$EN15: ;AN000; | ||
| 1356 | CALL FIND_IT ;AN000; | ||
| 1357 | ; $EXITIF C | ||
| 1358 | JNC $$IF14 ;AN000; | ||
| 1359 | OR MY_FLAG, NO_MORE_FILE ;AN000;no more file in this directory | ||
| 1360 | ; $ORELSE | ||
| 1361 | JMP SHORT $$SR14 ;AN000; | ||
| 1362 | $$IF14: ;AN000; | ||
| 1363 | MOV FOUND_FILE_FLAG, 1 ;AN000;set the flag for "File not found" msg. | ||
| 1364 | OR MY_FLAG, FOUND_FLAG ;AN000; SAR | ||
| 1365 | ;;;;;;; CALL FILTER_FILES ;found. filter it with options | ||
| 1366 | TEST MY_FLAG, FOUND_FLAG ;AN000; | ||
| 1367 | ; $ENDLOOP NZ ;if found, leave this loop else start again | ||
| 1368 | JZ $$DO14 ;AN000; | ||
| 1369 | AND MY_FLAG, RESET_NO_MORE;AN000; | ||
| 1370 | ; $ENDSRCH | ||
| 1371 | $$SR14: ;AN000; | ||
| 1372 | RET ;AN000; | ||
| 1373 | FIND_FILE ENDP ;AN000; | ||
| 1374 | ; | ||
| 1375 | SET_MY_DTA PROC NEAR ;AN000; | ||
| 1376 | ;set DS:DX for find_first(next). If MY_FLAG is set to FINDFILE_FLAG then | ||
| 1377 | ;set it to the offset FILE_DTA, otherwise to BP. | ||
| 1378 | ;DS should be set to the area whre FILE_DTA, DTAS are. | ||
| 1379 | PUSH DX ;AN000;save current DX | ||
| 1380 | TEST MY_FLAG, FINDFILE_FLAG ;AN000;handling file? | ||
| 1381 | ; $IF NZ | ||
| 1382 | JZ $$IF22 ;AN000; | ||
| 1383 | MOV DX, OFFSET FILE_DTA;AN000; | ||
| 1384 | ; $ELSE | ||
| 1385 | JMP SHORT $$EN22 ;AN000; | ||
| 1386 | $$IF22: ;AN000; | ||
| 1387 | MOV DX, BP ;AN000; | ||
| 1388 | ; $ENDIF | ||
| 1389 | $$EN22: ;AN000; | ||
| 1390 | MOV AH, Set_DTA ;AN000; | ||
| 1391 | INT 21H ;AN000; | ||
| 1392 | POP DX ;AN000; | ||
| 1393 | RET ;AN000; | ||
| 1394 | SET_MY_DTA ENDP ;AN000; | ||
| 1395 | ; | ||
| 1396 | ; | ||
| 1397 | SAVE_DTA PROC NEAR ;AN000; | ||
| 1398 | ; Save old DTA address | ||
| 1399 | PUSH ES ;AN000; | ||
| 1400 | PUSH BX ;AN000; | ||
| 1401 | MOV AH, Get_DTA ;AN000; | ||
| 1402 | INT 21H ;AN000; | ||
| 1403 | MOV OLD_DTA_SEG,ES ;AN000; | ||
| 1404 | MOV OLD_DTA_OFF,BX ;AN000; | ||
| 1405 | POP BX ;AN000; | ||
| 1406 | POP ES ;AN000; | ||
| 1407 | RET ;AN000; | ||
| 1408 | SAVE_DTA ENDP ;AN000; | ||
| 1409 | ; | ||
| 1410 | ; | ||
| 1411 | SWITCH_DTAS PROC NEAR ;AN000; | ||
| 1412 | ; SWITCH DTA ADDRESSES | ||
| 1413 | PUSH DS ;AN000; | ||
| 1414 | PUSH DX ;AN000; | ||
| 1415 | PUSH OLD_DTA_SEG ;AN000; | ||
| 1416 | PUSH OLD_DTA_OFF ;AN000; | ||
| 1417 | CALL SAVE_DTA ;AN000; | ||
| 1418 | POP DX ;AN000; | ||
| 1419 | POP DS ;AN000; | ||
| 1420 | MOV AH, Set_DTA ;AN000; | ||
| 1421 | INT 21H ;AN000; | ||
| 1422 | POP DX ;AN000; | ||
| 1423 | POP DS ;AN000; | ||
| 1424 | SWITCH_DTAS ENDP ;AN000; | ||
| 1425 | ; | ||
| 1426 | ; | ||
| 1427 | CHANGE_T_DIR PROC NEAR ;AN000; | ||
| 1428 | ;change target dir according to t_drv_path. | ||
| 1429 | ;Since this routine is called by WRITE_FROM_BUFFER and DS now points | ||
| 1430 | ;to buffer area while ES points to the program data area, we set DS | ||
| 1431 | ;to data seg again here for the function call Chdir. | ||
| 1432 | PUSH DS ;AN000;save current buffer seg | ||
| 1433 | PUSH ES ;AN000;currentpy es is a data seg | ||
| 1434 | POP DS ;AN000;restore DS value as program data seg | ||
| 1435 | |||
| 1436 | CMP T_DRV[2], 0 ;AN000;LAST_DIR_OUT took '\' out? | ||
| 1437 | ; $IF E | ||
| 1438 | JNE $$IF25 ;AN000; | ||
| 1439 | MOV T_DRV[2], '\' ;AN000;then put it back for root dir | ||
| 1440 | MOV T_DRV[3], 0 ;AN000; | ||
| 1441 | ; $ENDIF | ||
| 1442 | $$IF25: ;AN000; | ||
| 1443 | |||
| 1444 | MOV DX, OFFSET T_DRV_PATH ;AN000; | ||
| 1445 | MOV AH, CHDIR ;AN000; | ||
| 1446 | INT 21H ;AN000; | ||
| 1447 | |||
| 1448 | POP DS ;AN000;restore caller's DS value | ||
| 1449 | RET ;AN000; | ||
| 1450 | CHANGE_T_DIR ENDP;AN000; | ||
| 1451 | ; | ||
| 1452 | |||
| 1453 | CMP_FILESIZE_TO_BUFFER_LEFT PROC NEAR;AN000; | ||
| 1454 | ;Compare buffer_left (paragraph) with filesize (high_file_size, low_file_size.) | ||
| 1455 | ;if filesize is bigger than buffer_left, then set FILE_BIGGER_FLAG | ||
| 1456 | ;indicating filesize > buffer_left. | ||
| 1457 | PUSH DX ;AN000; | ||
| 1458 | PUSH AX ;AN000; | ||
| 1459 | |||
| 1460 | CMP OPEN_FILE_COUNT,NUL ;AN005;ARE THERE ANY OPEN FILES | ||
| 1461 | ; $IF Z ;AN005;NO, THEN GO AHEAD AND OPEN | ||
| 1462 | JNZ $$IF28A ;AN000; | ||
| 1463 | CALL OPEN_A_FILE ;AN005;OPEN A FILE USING FILE_DTA | ||
| 1464 | |||
| 1465 | ; Get extended Attribute list size. | ||
| 1466 | |||
| 1467 | MOV BX,S_HANDLE ;AN005; BX = handle | ||
| 1468 | MOV AX, GET_ATTRIB ;AN005; extended attribute code 5702H | ||
| 1469 | MOV SI,ALL_ATTR ;AN005; SELECT ALL ATTRIBUTES SIZE | ||
| 1470 | XOR CX,CX ;AN005; JUST QUERY SIZE NEEDED | ||
| 1471 | MOV DI, OFFSET NUL_LIST ;AN005; DI = LIST FOR NO DATA RETURNED | ||
| 1472 | INT 21H ;AN005; get extended attribute SIZE | ||
| 1473 | ADD CX,PARA_BOUND ;AN005; TO FIGURE THE NEXT PARAGRAPH | ||
| 1474 | MOV AX,CX ;AN005; | ||
| 1475 | MOV CL,PARAGRAPH ;AN005; GET PARAGRAPHS (DIV BY 16) | ||
| 1476 | SHR AX,CL ;AN005; | ||
| 1477 | MOV SIZ_OF_BUFF,AX ;AN005;SAVE BUFF SIZE FOR THE HEADER | ||
| 1478 | ADD AX,FIXD_HD_SIZ ;AN005;GET THE TOTAL HEADER SIZE | ||
| 1479 | MOV PARA_OF_HDR,AX ;AN005;SAVE FOR LATER | ||
| 1480 | SHL AX, CL ;AN005;CONVERT BACK TO TOTAL BYTES | ||
| 1481 | MOV BYTS_OF_HDR,AX ;AN005;SAVE FOR LATER | ||
| 1482 | MOV BX,S_HANDLE ;AN005; | ||
| 1483 | CALL CLOSE_A_FILE ;AN005;CLOSE THE FILE OPENED | ||
| 1484 | ; $ENDIF | ||
| 1485 | $$IF28A: ;AN000; | ||
| 1486 | |||
| 1487 | AND FILE_FLAG, RESET_FILE_BIGGER;AN000; | ||
| 1488 | MOV AX,PARA_OF_HDR ;AN005;GET THE HEADER SIZE (para.) | ||
| 1489 | CMP BUFFER_LEFT,AX ;AC005;buffer_left >= HEADER SIZE | ||
| 1490 | ; $IF AE | ||
| 1491 | JNAE $$IF27 ;AN000; | ||
| 1492 | MOV AX, BUFFER_LEFT ;AN000;buffer_left in para | ||
| 1493 | SUB AX,PARA_OF_HDR ;AC005;consider header size in advance | ||
| 1494 | MOV CX, 16 ;AN000; | ||
| 1495 | MUL CX ;AN000;* 16. result in DX;AX | ||
| 1496 | CMP HIGH_FILE_SIZE, DX;AN000; | ||
| 1497 | ; $IF A ;if high_filesize > dx | ||
| 1498 | JNA $$IF28 ;AN000; | ||
| 1499 | OR FILE_FLAG, FILE_BIGGER_FLAG;AN000; | ||
| 1500 | ; $ELSE | ||
| 1501 | JMP SHORT $$EN28;AN000; | ||
| 1502 | $$IF28: ;AN000; | ||
| 1503 | ; $IF E | ||
| 1504 | JNE $$IF30 ;AN000; | ||
| 1505 | CMP LOW_FILE_SIZE, AX;AN000; | ||
| 1506 | ; $IF A | ||
| 1507 | JNA $$IF31 ;AN000; | ||
| 1508 | OR FILE_FLAG, FILE_BIGGER_FLAG;AN000; | ||
| 1509 | ; $ENDIF | ||
| 1510 | $$IF31: ;AN000; | ||
| 1511 | ; $ENDIF | ||
| 1512 | $$IF30: ;AN000; | ||
| 1513 | ; $ENDIF | ||
| 1514 | $$EN28: ;AN000; | ||
| 1515 | ; $ELSE | ||
| 1516 | JMP SHORT $$EN27 ;AN000; | ||
| 1517 | $$IF27: ;AN000; | ||
| 1518 | OR FILE_FLAG, FILE_BIGGER_FLAG ;AN000;buffer_left < 2 | ||
| 1519 | ; $ENDIF | ||
| 1520 | $$EN27: ;AN000; | ||
| 1521 | POP AX ;AN000; | ||
| 1522 | POP DX ;AN000; | ||
| 1523 | RET ;AN000; | ||
| 1524 | CMP_FILESIZE_TO_BUFFER_LEFT ENDP ;AN000; | ||
| 1525 | ; | ||
| 1526 | |||
| 1527 | SET_BUFFER_PTR PROC NEAR ;AN000; | ||
| 1528 | ;set BUFFER_PTR, BUFFER_LEFT, OLD_BUFFER_PTR in paragraph boundary | ||
| 1529 | ;to be used when reading a file into buffer. | ||
| 1530 | ;this routine uses current BUFFER_PTR to figure out the next BUFFER_PTR. | ||
| 1531 | ;So, at initialization time set BUFFER_PTR to CS, and set AX to the offset | ||
| 1532 | ;of INIT, then thr resultant BUFFER_PTR indicates the BUFFER_BASE and | ||
| 1533 | ;OLD_BUFFER_PTR indicates CS.(This means if old_buffer_ptr = cs, then | ||
| 1534 | ;it is the start of buffer) | ||
| 1535 | ;To get the next BUFFER_PTR during multi-copy, just set the AX to the | ||
| 1536 | ;number of bytes read. This routine will add 32 bytes for header size and | ||
| 1537 | ;will set the next BUFFER_PTR. | ||
| 1538 | ;input: AX - offset of buffer | ||
| 1539 | ; Top_of_memory in segment | ||
| 1540 | ; current BUFFER_PTR | ||
| 1541 | ; current OLD_BUFFER_PTR | ||
| 1542 | ; current BUFFER_LEFT | ||
| 1543 | ;output: BUFFER_PTR for next reading | ||
| 1544 | ; OLD_BUFFER_PTR | ||
| 1545 | ; BUFFER_LEFT (Top_of_memory - Buffer_Ptr. If it is 0, then indicates | ||
| 1546 | ; the BUFFER is FULL. In this case, the BUFFER_PTR is | ||
| 1547 | ; invalid, but OLD_BUFFER_PTR keep the former buffer_ptr | ||
| 1548 | ; value which says that it is the last header in the buffer) | ||
| 1549 | ;** Currently this program support maxium top of memory in seg 0FFFF - resident | ||
| 1550 | ; area. This routine will check the overflow case to gaurd the next buffer_ptr | ||
| 1551 | ; not to exceed FFFF. | ||
| 1552 | |||
| 1553 | PUSH CX ;AN000; | ||
| 1554 | MOV CX, BUFFER_PTR ;AN000; | ||
| 1555 | MOV OLD_BUFFER_PTR, CX ;AN000;set old_buffer_ptr | ||
| 1556 | MOV CL, 4 ;AN000; | ||
| 1557 | SHR AX, CL ;AN000;get paragraphs | ||
| 1558 | INC AX ;AN000;get next paragraph | ||
| 1559 | ADD AX,PARA_OF_HDR ;AC005;consider header size | ||
| 1560 | ADD BUFFER_PTR, AX ;AN000;add this to the current buffer_ptr | ||
| 1561 | |||
| 1562 | ; $IF NC,AND ;not exceed 16 bit. | ||
| 1563 | JC $$IF37 ;AN000; | ||
| 1564 | MOV AX, Top_of_memory;AN000; | ||
| 1565 | SUB AX, BUFFER_PTR ;AN000;AX = Top_of_memory - Buffer_ptr | ||
| 1566 | ; $IF A ;if buffer_left > 0 | ||
| 1567 | JNA $$IF37 ;AN000; | ||
| 1568 | MOV BUFFER_LEFT, AX;AN000; | ||
| 1569 | ; $ELSE | ||
| 1570 | JMP SHORT $$EN37 ;AN000; | ||
| 1571 | $$IF37: ;AN000; | ||
| 1572 | MOV BUFFER_LEFT, 0 ;AN000;indication of buffer full | ||
| 1573 | ; $ENDIF | ||
| 1574 | $$EN37: ;AN000; | ||
| 1575 | POP CX ;AN000; | ||
| 1576 | RET ;AN000; | ||
| 1577 | SET_BUFFER_PTR ENDP ;AN000; | ||
| 1578 | ; | ||
| 1579 | |||
| 1580 | WRITE_FROM_BUFFER PROC NEAR ;AN000; | ||
| 1581 | ;Write from the first header starting at buffer_base until finishes | ||
| 1582 | ;the last header which, actually, happens to be the old_buffer_ptr | ||
| 1583 | ;at the time of the call. After the writing, reset the buffer_ptr | ||
| 1584 | ;to buffer_base again for the next read_into_buffer. | ||
| 1585 | ;If continue_info is 1 or 2 (Continue of small, bigfile) then after | ||
| 1586 | ;the creation of a target file, it will set the CREATED_FLAG. | ||
| 1587 | ;This flag will be reset when it found the continue_info to be 3 | ||
| 1588 | ;(End of contine). | ||
| 1589 | ;For convenience of use of function call, ES will be used for | ||
| 1590 | ;the program data seg while DS will be used for the BUFFER seg. | ||
| 1591 | ; | ||
| 1592 | PUSH DS ;AN000; | ||
| 1593 | PUSH ES ;AN000;save ds, es | ||
| 1594 | |||
| 1595 | PUSH DS ;AN000; | ||
| 1596 | POP ES ;AN000;set ES to program data seg | ||
| 1597 | |||
| 1598 | OR ACTION_FLAG, READING_FLAG ;AN000;show reading message next time | ||
| 1599 | ; AND ES:MY_FLAG, RESET_IS_SOURCE ;now, deals with target | ||
| 1600 | ;set this for change_dir | ||
| 1601 | MOV AX, ES:BUFFER_BASE ;AN000; | ||
| 1602 | MOV DS, AX ;AN000; | ||
| 1603 | PUSH CS ;AN000; | ||
| 1604 | POP AX ;AN000; | ||
| 1605 | CMP ES:OLD_BUFFER_PTR, AX ;AN000;if old_buffer_ptr = CS then | ||
| 1606 | ;buffer is empty. Just exit | ||
| 1607 | JE WFB_EXIT_BRIDGE ;AN000; | ||
| 1608 | |||
| 1609 | PUSH DS ;AN000; | ||
| 1610 | MOV DX,DATA ;AN000; | ||
| 1611 | MOV DS,DX ;AN000; | ||
| 1612 | .IF < DEST eq 3 > ;AN000; | ||
| 1613 | CALL GET_DEST ;AN000; | ||
| 1614 | .ENDIF ;AN000; | ||
| 1615 | POP DS ;AN000; | ||
| 1616 | |||
| 1617 | WFB_CD: ;AN000; | ||
| 1618 | CALL CHANGE_T_DIR ;AN000; | ||
| 1619 | JC WFB_ERROR_BRIDGE ;AN000;error? | ||
| 1620 | WFB_CHATT: ;AN000; | ||
| 1621 | CMP DS:ATTR_FOUND, Is_subdirectory ;AN000;a subdirectory? = 10H | ||
| 1622 | JNE WFB_FILE ;AN000;no. a file | ||
| 1623 | |||
| 1624 | WFB_CMP_DEPTH: ;AN000; | ||
| 1625 | ; SAR | ||
| 1626 | ;;;;;;; | ||
| 1627 | ; MOV AH, ES:T_DEPTH ;yes. a subdir. | ||
| 1628 | ; CMP DS:DIR_DEPTH, AH ;DIR_DEPTH > T_DEPTH ? | ||
| 1629 | ; JBE WFB_DEC_DEPTH ;if not, go to parent node | ||
| 1630 | ; LEA DI, ES:T_DRV_PATH ;else goto child node | ||
| 1631 | ; LEA SI, DS:FILENAME_FOUND | ||
| 1632 | ; CMP ES:T_PATH, 0 ;root directory? | ||
| 1633 | ; $IF E | ||
| 1634 | ; MOV AL, 0FFh ;then don't need to put delim since it is already there | ||
| 1635 | ; $ELSE | ||
| 1636 | ; MOV AL, Path_delim ;path_delim '\' | ||
| 1637 | ; $ENDIF | ||
| 1638 | ; CALL CONCAT_ASCIIZ | ||
| 1639 | ; call concat_display_path ;modify the path for display | ||
| 1640 | ; INC ES:T_DEPTH | ||
| 1641 | ; CALL MAKE_DIR ;try to make a new sub directory | ||
| 1642 | ; JC WFB_EXIT_A_BRIDGE ;there exists a file with same name. | ||
| 1643 | ; MOV AX, DS ;current buffer seg = old_buffer_ptr? | ||
| 1644 | ; CMP ES:OLD_BUFFER_PTR, AX | ||
| 1645 | ; JNE WFB_NEXT ;not finished yet. jmp to next | ||
| 1646 | ; OR ES:MY_FLAG, MISSING_LINK_FLAG ;Finished. Missing link condition occurred regarding empty sub dir | ||
| 1647 | ; JMP WFB_EXIT_A ;check archieve options. | ||
| 1648 | WFB_NEXT: ;AN000; | ||
| 1649 | ; MOV DS, DS:NEXT_PTR ;let's handles next header. | ||
| 1650 | ; JMP WFB_CD ;change directory first. | ||
| 1651 | WFB_EXIT_BRIDGE: JMP WFB_EXIT;AN000; | ||
| 1652 | WFB_ERROR_BRIDGE: JMP WFB_ERROR;AN000; | ||
| 1653 | WFB_EXIT_A_BRIDGE: JMP WFB_EXIT_A;AN000; | ||
| 1654 | WFB_DEC_DEPTH: ;AN000; | ||
| 1655 | ; LEA DI, ES:T_DRV_PATH | ||
| 1656 | ; CALL RM_EMPTY_DIR ;check flags and remove empty dir | ||
| 1657 | ; CALL LAST_DIR_OUT ;take off the last dir from path | ||
| 1658 | ; call cut_display_path ;modify path for display purpose | ||
| 1659 | ;;;;;; DEC ES:T_DEPTH ;and decrease depth | ||
| 1660 | JMP WFB_CD ;AN000;CHANGE DIR AND compare the depth again. | ||
| 1661 | |||
| 1662 | |||
| 1663 | WFB_FILE: ;AN000;Handling a file | ||
| 1664 | AND ES:MY_FLAG, RESET_MISSING_LINK ;AN000;if found a file, then current dir is not empty. | ||
| 1665 | TEST ES:FILE_FLAG, CREATED_FLAG ;AN000; A file handle is created ? | ||
| 1666 | JNZ WFB_WRITE ;AN000;yes, skip create again. | ||
| 1667 | CALL CREATE_A_FILE ;AN000;create a file in the cur dir | ||
| 1668 | JC WFB_ERROR ;AN000;file creation error? | ||
| 1669 | WFB_WRITE: ;AN000; | ||
| 1670 | CALL WRITE_A_FILE;AN000; | ||
| 1671 | JC WFB_EXIT_A ;AN000;target file has been already deleted. | ||
| 1672 | CMP DS:CONTINUE_INFO, 0;AN000; | ||
| 1673 | ; $IF E,OR ;if continue_info = 0 or 3 | ||
| 1674 | JE $$LL40 ;AN000; | ||
| 1675 | CMP DS:CONTINUE_INFO, 3;AN000; | ||
| 1676 | ; $IF E | ||
| 1677 | JNE $$IF40 ;AN000; | ||
| 1678 | $$LL40: ;AN000; | ||
| 1679 | MOV BX, ES:T_HANDLE;AN000; | ||
| 1680 | CALL SET_FILE_DATE_TIME ;AN000;then set file's date, time | ||
| 1681 | PUSH DS ;AN005;SAVE THE BUFFER PTR | ||
| 1682 | PUSH ES ;AN005;WE NEED THE DATA PTR | ||
| 1683 | POP DS ;AN005;DS = THE DATA PTR | ||
| 1684 | CALL CLOSE_A_FILE ;AN000;and close the handle | ||
| 1685 | POP DS ;AN005;DS = THE BUFFER PTR AGAIN | ||
| 1686 | ;;;;;;; CALL RESTORE_FILENAME_FOUND ; SAR if filename_found has been changed, restore it for reset_s_archieve. | ||
| 1687 | AND ES:FILE_FLAG, RESET_CREATED ;AN000;and reset created_flag | ||
| 1688 | CALL INC_FILE_COUNT ;AN000;increase file count | ||
| 1689 | ; $ENDIF | ||
| 1690 | $$IF40: ;AN000; | ||
| 1691 | MOV AX, DS ;AN000; | ||
| 1692 | CMP ES:OLD_BUFFER_PTR, AX ;AN000;current header is the last one? | ||
| 1693 | JE WFB_EXIT_A ;AN000;then exit | ||
| 1694 | MOV DS, DS:NEXT_PTR ;AN000;else set ds to the next ptr | ||
| 1695 | JMP WFB_CHATT ;AN000;handle the next header | ||
| 1696 | WFB_ERROR: ;AN000; | ||
| 1697 | jmp main_exit ;AN000;meaningful when MKDIR failed because | ||
| 1698 | ;of there already exist same named file, | ||
| 1699 | ;or disk_full case. | ||
| 1700 | WFB_EXIT_A: ;AN000; | ||
| 1701 | test ES:option_flag, slash_m ;AN000;hard archieve ? - turn off source archieve bit. | ||
| 1702 | jz wfb_exit_B ;AN000;no, chk error flag and exit | ||
| 1703 | ;;;; call reset_s_archieve ; SAR reset source file(s) archieve bit using header info(s). | ||
| 1704 | WFB_EXIT_B: ;AN000; | ||
| 1705 | test ES:copy_status, mkdir_error_flag ;AN000;mkdir error happened? | ||
| 1706 | JNZ WFB_ERROR ;AN000;yes, exit | ||
| 1707 | test ES:copy_status, disk_full_flag ;AN000;disk full happened? | ||
| 1708 | JNZ WFB_ERROR ;AN000;yes, exit | ||
| 1709 | WFB_EXIT: ;AN000; | ||
| 1710 | MOV ES:OLD_BUFFER_PTR, CS ;AN000;set old_buffer_ptr to CS | ||
| 1711 | MOV AX, ES:BUFFER_BASE ;AN000; | ||
| 1712 | MOV ES:BUFFER_PTR, AX ;AN000;set buffer_ptr to base | ||
| 1713 | MOV AX, ES:MAX_BUFFER_SIZE;AN000; | ||
| 1714 | MOV ES:BUFFER_LEFT, AX ;AN000;set buffer_left | ||
| 1715 | POP ES ;AN000; | ||
| 1716 | POP DS ;AN000; | ||
| 1717 | ;;;; TEST SYS_FLAG, ONE_DISK_COPY_FLAG ; SAR one drive letter copy? | ||
| 1718 | ; ; $IF NZ ; SAR yes | ||
| 1719 | ; ; CALL CHANGE_S_DIR ; SAR then change current dir to s dir | ||
| 1720 | ;;;; $ENDIF | ||
| 1721 | RET ;AN000; | ||
| 1722 | WRITE_FROM_BUFFER ENDP ;AN000; | ||
| 1723 | ; | ||
| 1724 | INC_FILE_COUNT PROC NEAR;AN000; | ||
| 1725 | ;increase the file count by one. | ||
| 1726 | ;increase file_cnt_low, file_cnt_high. | ||
| 1727 | ;input: DS - buffer | ||
| 1728 | ; ES - data seg | ||
| 1729 | INC ES:FILE_CNT_LOW ;AN000; | ||
| 1730 | JNZ IFC_EXIT ;AN000; | ||
| 1731 | INC ES:FILE_CNT_HIGH ;AN000;if carry over, then inc file_cnt_high | ||
| 1732 | IFC_EXIT: ;AN000; | ||
| 1733 | RET ;AN000; | ||
| 1734 | INC_FILE_COUNT ENDP ;AN000; | ||
| 1735 | ; | ||
| 1736 | CREATE_A_FILE PROC NEAR;AN000; | ||
| 1737 | ;create a file in the header and return the file handle in T_HANDLE. | ||
| 1738 | ;Set CREATED_FLAG. This will be reset by WRITE_FROM_BUFFER when it | ||
| 1739 | ;close the handle. | ||
| 1740 | ;this routine will check the T_FILENAME and T_TEMPLATE if any target | ||
| 1741 | ;filename has been entered. If T_FILENAME is there, then DX will | ||
| 1742 | ;points to this (This is the case when the user has specified non_global | ||
| 1743 | ;chr filename and any source filename be changed to this name.) | ||
| 1744 | ;If T_TEMPLATE is present, then modify the filename found in the | ||
| 1745 | ;header part. | ||
| 1746 | ;Also, this routine show copy messages just before a file creation using | ||
| 1747 | ;FILENAME_FOUND. | ||
| 1748 | ;ES - data seg | ||
| 1749 | ;DS - buffer seg | ||
| 1750 | |||
| 1751 | PUSH DS ;AN000; | ||
| 1752 | PUSH ES ;AN000; | ||
| 1753 | |||
| 1754 | ; SAR ;save the original filename from the header | ||
| 1755 | ;;;;; MOV CX, 13 ;max 13 chr | ||
| 1756 | ; LEA SI, DS:FILENAME_FOUND ;original source file name | ||
| 1757 | ; LEA DI, ES:DISP_S_FILE ;filename to be displayed | ||
| 1758 | ; REP MOVSB ;filename_found => disp_s_file | ||
| 1759 | ;;;;; test es:option_flag, slash_p ; SAR | ||
| 1760 | ;;;;; $IF Z ; SAR | ||
| 1761 | ;;;;; CALL SHOW_COPY_MESSAGE ; SAR he source path, file | ||
| 1762 | ;;;;; $ENDIF ; SAR | ||
| 1763 | ; | ||
| 1764 | ; CMP ES:T_FILENAME, 0 | ||
| 1765 | ; $IF NE ;non_global target filename entered. | ||
| 1766 | ; TEST ES:COPY_STATUS, MAYBE_ITSELF_FLAG | ||
| 1767 | ; $IF NZ | ||
| 1768 | ; LEA SI, DS:FILENAME_FOUND | ||
| 1769 | ; LEA DI, ES:T_FILENAME | ||
| 1770 | ; CALL COMP_FILENAME ;compare it. if same then show | ||
| 1771 | ; ;file cannot be copied onto itself and | ||
| 1772 | ; ;abort | ||
| 1773 | ; $ENDIF | ||
| 1774 | ; | ||
| 1775 | ; CALL SWITCH_DS_ES ;now ds - data, es - buffer | ||
| 1776 | ; MOV CX, 13 | ||
| 1777 | ; LEA SI, DS:T_FILENAME | ||
| 1778 | ; LEA DI, ES:FILENAME_FOUND | ||
| 1779 | ; REP MOVSB ; t_filename => filename_found | ||
| 1780 | ; CALL SWITCH_DS_ES ;now ds - buffer, es - data seg | ||
| 1781 | ; | ||
| 1782 | ; $ELSE | ||
| 1783 | ; CMP ES:T_TEMPLATE, 0 ;global chr target filename entered? | ||
| 1784 | ; $IF NE ;yes, entered. modify the filename found | ||
| 1785 | ;;;;; CALL MODIFY_FILENAME ; SAR | ||
| 1786 | ; TEST ES:COPY_STATUS, MAYBE_ITSELF_FLAG | ||
| 1787 | ; $IF NZ | ||
| 1788 | ; LEA SI, DS:FILENAME_FOUND ;compare the Revised filename | ||
| 1789 | ; LEA DI, ES:DISP_S_FILE ;with original name | ||
| 1790 | ; CALL COMP_FILENAME ;if same, then issue error message and exit | ||
| 1791 | ; $ENDIF | ||
| 1792 | ; $ELSE | ||
| 1793 | ; TEST ES:COPY_STATUS, MAYBE_ITSELF_FLAG ;*.* CASE | ||
| 1794 | ; $IF NZ | ||
| 1795 | ; PUSH ES | ||
| 1796 | ; POP DS ;ds - data seg | ||
| 1797 | ; | ||
| 1798 | ; ; Set message parameters | ||
| 1799 | ;;;;; MOV AX,MSG_COPY_ITSELF ; SAR | ||
| 1800 | ; MOV MSG_NUM,AX ; SAR ;AN000; set message number | ||
| 1801 | ; MOV SUBST_COUNT,0 ; SAR AN000; no message subst. | ||
| 1802 | ; MOV MSG_CLASS,-1 ; SAR AN000; message class | ||
| 1803 | ; MOV INPUT_FLAG,0 ; SAR AN000; no user input | ||
| 1804 | ; CALL PRINT_STDERR ; SAR AN000; display error | ||
| 1805 | ; JMP MAIN_EXIT | ||
| 1806 | ; $ENDIF | ||
| 1807 | ; $ENDIF | ||
| 1808 | ;;;;;; $ENDIF | ||
| 1809 | |||
| 1810 | ;------------------------------------------------------------------------- | ||
| 1811 | ; Use extended open DOS call to create the target file, use attribute list | ||
| 1812 | ; obtained from the previous Get Extended attribute DOS call | ||
| 1813 | ;------------------------------------------------------------------------- | ||
| 1814 | |||
| 1815 | ; SET ATTRIBUTE LIST POINTER IN PARAMETER LIST | ||
| 1816 | MOV DX, OFFSET DS:ATTRIB_LIST ;AN005;E A BUFFER IN HEADER | ||
| 1817 | MOV WORD PTR ES:E_A_LST,DX ;AN005; set offset | ||
| 1818 | MOV WORD PTR ES:E_A_LST+WORD,DS ;AN005; set segment | ||
| 1819 | |||
| 1820 | MOV AX, Ext_Open ;AN000; = 6Ch | ||
| 1821 | MOV DX,CREATE_FLAG ;AN000; flag = 0111H | ||
| 1822 | MOV BX,CREATE_MODE ;AN000;CREATE MODE = 0011H | ||
| 1823 | MOV CX,CREATE_ATTR ;AN000; attribute = 0 | ||
| 1824 | MOV SI,OFFSET TARGET_DRV_LET ;AN005; DS:SI-->NAME TO CREATE | ||
| 1825 | LEA DI,ES:PARAM_LIST ;AN005;PARAMETER LIST (ES:DI) | ||
| 1826 | INT 21H ;AN000; create file | ||
| 1827 | |||
| 1828 | JC CAF_ERROR ;AN000; | ||
| 1829 | MOV ES:T_HANDLE, AX ;AN000;save handle | ||
| 1830 | |||
| 1831 | ;;;;; CALL CHK_T_RES_DEVICE ; SAR check target handle is a reserved dev | ||
| 1832 | |||
| 1833 | OR ES:FILE_FLAG, CREATED_FLAG ;AN000;set created_flag | ||
| 1834 | JMP CAF_EXIT ;AN000; | ||
| 1835 | CAF_ERROR: ;AN000; | ||
| 1836 | PUSH DS ;AN000; | ||
| 1837 | PUSH ES ;AN000; | ||
| 1838 | POP DS ;AN000; | ||
| 1839 | OR COPY_STATUS, CREATE_ERROR_FLAG;AN000; | ||
| 1840 | CALL EXTENDED_ERROR_HANDLER ;AN000; | ||
| 1841 | POP DS ;AN000; | ||
| 1842 | CAF_EXIT: ;AN000; | ||
| 1843 | POP ES ;AN000; | ||
| 1844 | POP DS ;AN000; | ||
| 1845 | RET ;AN000; | ||
| 1846 | CREATE_A_FILE ENDP ;AN000; | ||
| 1847 | ; | ||
| 1848 | ;COMP_FILENAME PROC NEAR | ||
| 1849 | ;;this routine is called when MAYBE_COPY_ITSELF flag in on. | ||
| 1850 | ;;SI, DI asciiz string will be compared and if they are identical | ||
| 1851 | ;;the show "Cannot copy onto itself" msg and jmp to main_exit. | ||
| 1852 | ;;INPUT: DS - buffer | ||
| 1853 | ;; ES - data seg | ||
| 1854 | ; | ||
| 1855 | ; CLD | ||
| 1856 | ; MOV AL, 0 | ||
| 1857 | ; PUSH DI ;save DI | ||
| 1858 | ; CALL STRING_LENGTH ;CX get the length of string | ||
| 1859 | ; MOV BX, CX ;now, BX got the length of the target filename entered. | ||
| 1860 | ; PUSH BX ;save BX | ||
| 1861 | ; PUSH ES ;save ES | ||
| 1862 | ; | ||
| 1863 | ; PUSH DS | ||
| 1864 | ; POP ES ;now ES set to DS | ||
| 1865 | ; PUSH SI | ||
| 1866 | ; POP DI ;now DI points to the source filename found. | ||
| 1867 | ; | ||
| 1868 | ; MOV AL, 0 | ||
| 1869 | ; CALL STRING_LENGTH ;CX got the length of the string | ||
| 1870 | ; | ||
| 1871 | ; POP ES ;restore ES | ||
| 1872 | ; POP BX ;restore BX | ||
| 1873 | ; POP DI ;restore DI | ||
| 1874 | ; ;; | ||
| 1875 | ; CMP BX, CX ;COMPARE LENGTH | ||
| 1876 | ; JNE CF_EXIT ;IF THEY ARE DIFFERENT, EXIT | ||
| 1877 | ; | ||
| 1878 | ; REPE CMPSB ;compare SI, DI until not equal, | ||
| 1879 | ; CMP CX, 0 ;finish at cx = 0? | ||
| 1880 | ; JE CF_SAME | ||
| 1881 | ; JMP SHORT CF_EXIT | ||
| 1882 | ;CF_SAME: | ||
| 1883 | ; PUSH ES | ||
| 1884 | ; POP DS ;ds = data seg | ||
| 1885 | ; | ||
| 1886 | ;; Set message parameters | ||
| 1887 | ;;;;;; MOV AX,MSG_COPY_ITSELF ; SAR ;AN000; message number | ||
| 1888 | ;; MOV MSG_NUM,AX ; SAR AN000; set message number | ||
| 1889 | ;; MOV SUBST_COUNT,0 ; SAR AN000; no message substitution | ||
| 1890 | ;; MOV MSG_CLASS,-1 ; SAR AN000; message class | ||
| 1891 | ;;; MOV INPUT_FLAG,0 ; SAR AN000; no input | ||
| 1892 | ;; CALL PRINT_STDERR ; SAR AN000; display error message | ||
| 1893 | ; JMP MAIN_EXIT | ||
| 1894 | ;CF_EXIT: | ||
| 1895 | ; RET | ||
| 1896 | ;COMP_FILENAME ENDP | ||
| 1897 | ;; | ||
| 1898 | WRITE_A_FILE PROC NEAR ;AN000; | ||
| 1899 | ;write a file from the data area in the buffer. | ||
| 1900 | ;Remember the caller is WRITE_FROM_BUFFER which use ES for | ||
| 1901 | ;the program data area and DS for the header in the buffer. | ||
| 1902 | MOV AH, Write ;AN000; = 40h | ||
| 1903 | MOV BX, ES:T_HANDLE ;AN000;handle saved in the program data area | ||
| 1904 | MOV DX, ES:BYTS_OF_HDR ;AC005;skip header | ||
| 1905 | MOV CX, DS:CX_BYTES ;AN000;get the # from the header | ||
| 1906 | INT 21h ;AN000; | ||
| 1907 | JC WAF_ERROR ;AN000;write error | ||
| 1908 | CMP AX, DS:CX_BYTES;AN000; | ||
| 1909 | JNE WAF_DISKFULL;AN000; | ||
| 1910 | JMP WAF_EXIT ;AN000; | ||
| 1911 | WAF_ERROR: ;AN000; | ||
| 1912 | CALL CLOSE_DELETE_FILE ;AN000;close delete troubled file | ||
| 1913 | OR COPY_STATUS, WRITE_ERROR_FLAG;AN000; | ||
| 1914 | CALL SWITCH_DS_ES ;AN000;DS = DATA SEG, ES = BUFFER | ||
| 1915 | CALL EXTENDED_ERROR_HANDLER;AN000; | ||
| 1916 | CALL SWITCH_DS_ES ;AN000;ES = DATA SEG, DS = BUFFER | ||
| 1917 | WAF_DISKFULL: ;AN000; | ||
| 1918 | ; MOV ERRORLEVEL, 4 ; SAR ;set errorlevel | ||
| 1919 | |||
| 1920 | ; Set message parameters | ||
| 1921 | ; Target disk full, critical error | ||
| 1922 | |||
| 1923 | PUSH DS ;AN000;DS = BUFFER | ||
| 1924 | PUSH ES ;AN000;ES = DATA SEG | ||
| 1925 | POP DS ;AN000;ES => DS = DATA SEG | ||
| 1926 | ;;;;; MOV AX,MSG_DISK_FULL ; SAR ;AN000; message number | ||
| 1927 | ; MOV MSG_NUM,AX ; SAR AN000; set message number | ||
| 1928 | ; MOV SUBST_COUNT,0 ; SAR AN000; no message substitution | ||
| 1929 | ; MOV MSG_CLASS,UTILITY_MSG_CLASS ; SAR AN000; message class | ||
| 1930 | ; MOV INPUT_FLAG,0 ; SAR AN000; no input | ||
| 1931 | ; CALL PRINT_STDERR ; SAR AN000; display error message | ||
| 1932 | OR COPY_STATUS, DISK_FULL_FLAG ;AN000;set disk_full_flag | ||
| 1933 | POP DS ;AN000;RESTORE DS = BUFFER | ||
| 1934 | CALL CLOSE_DELETE_FILE;AN000; | ||
| 1935 | STC ;AN000;set carry and return to caller | ||
| 1936 | WAF_EXIT:;AN000; | ||
| 1937 | RET ;AN000; | ||
| 1938 | WRITE_A_FILE ENDP;AN000; | ||
| 1939 | ; | ||
| 1940 | SET_FILE_DATE_TIME PROC NEAR;AN000; | ||
| 1941 | ;input: BX - target file handle | ||
| 1942 | ; | ||
| 1943 | MOV AH, File_date_time ;AN000; = 57h | ||
| 1944 | MOV AL, Set_file_time ;AN000; = 1 | ||
| 1945 | MOV CX, DS:FILE_TIME_FOUND;AN000; | ||
| 1946 | MOV DX, DS:FILE_DATE_FOUND;AN000; | ||
| 1947 | INT 21h ;AN000; | ||
| 1948 | RET ;AN000; | ||
| 1949 | SET_FILE_DATE_TIME ENDP;AN000; | ||
| 1950 | ; | ||
| 1951 | CLOSE_A_FILE PROC NEAR ;AN000; | ||
| 1952 | ;INPUT: BX - file handle to be closed | ||
| 1953 | CMP OPEN_FILE_COUNT,NUL ;AN005;ARE THERE ANY OPEN FILES? | ||
| 1954 | ; $IF A ;AN005; | ||
| 1955 | JNA $$IF42A ;AN000; | ||
| 1956 | DEC OPEN_FILE_COUNT ;AN005;IF SO, REDUCE THE COUNT BY 1. | ||
| 1957 | ; $ENDIF ;AN005; | ||
| 1958 | $$IF42A: ;AN000; | ||
| 1959 | MOV AH, Close ;AN000; = 3Eh | ||
| 1960 | INT 21H ;AN000; | ||
| 1961 | RET ;AN000; | ||
| 1962 | CLOSE_A_FILE ENDP ;AN000; | ||
| 1963 | ; | ||
| 1964 | DELETE_A_FILE PROC NEAR;AN000; | ||
| 1965 | ;input: DS:DX - points to ASCIIZ string | ||
| 1966 | |||
| 1967 | MOV AH, 41h ;AN000; = 41h | ||
| 1968 | INT 21H ;AN000; | ||
| 1969 | RET ;AN000; | ||
| 1970 | DELETE_A_FILE ENDP;AN000; | ||
| 1971 | ; | ||
| 1972 | ; | ||
| 1973 | ;CHK_DISK_FULL PROC NEAR | ||
| 1974 | ;check target disk space, and if no more clusters then set carry, disk_full_flag. | ||
| 1975 | ;this routine is called by MAKE_DIR routine. | ||
| 1976 | ;INPUT: DS - buffer | ||
| 1977 | ; ES - data seg | ||
| 1978 | ; PUSH AX | ||
| 1979 | ; PUSH BX | ||
| 1980 | ; PUSH CX | ||
| 1981 | ; PUSH DX | ||
| 1982 | ; MOV AH, 36h ;GET DISK FREE SPACE | ||
| 1983 | ; MOV DL, ES:T_DRV_NUMBER ;OF TARGET | ||
| 1984 | ; INT 21h | ||
| 1985 | ; CMP BX, 0 ;NO MORE CLUSTER? | ||
| 1986 | ; JE CDF_FULL | ||
| 1987 | ; CLC | ||
| 1988 | ; JMP SHORT CDF_EXIT | ||
| 1989 | ;CDF_FULL: | ||
| 1990 | ; OR ES:COPY_STATUS, DISK_FULL_FLAG ;SET DISK FULL FLAG | ||
| 1991 | ; STC ;SET CARRY | ||
| 1992 | ;CDF_EXIT: | ||
| 1993 | ; POP DX | ||
| 1994 | ; POP CX | ||
| 1995 | ; POP BX | ||
| 1996 | ; POP AX | ||
| 1997 | ; RET | ||
| 1998 | ; | ||
| 1999 | ;CHK_DISK_FULL ENDP | ||
| 2000 | ;; | ||
| 2001 | ;;subttl string_length | ||
| 2002 | ;page | ||
| 2003 | ;****************************************************************************** | ||
| 2004 | ;PURPOSE: Get the length of a string pointed by ES:DI until it encounters | ||
| 2005 | ; the same character given by the user in AL. | ||
| 2006 | ; The length will be an output in CX. The number includes the | ||
| 2007 | ; charater found. | ||
| 2008 | ; For example, if you want to determine the length of an ASCIIZ string, | ||
| 2009 | ; set ES:DI to that string and set AL to 0. The output CX is the | ||
| 2010 | ; total length of the ASCIIZ string including 0. | ||
| 2011 | ; So, if the first character pointed by DI is the same as that of AL, | ||
| 2012 | ; then the length will be 1. | ||
| 2013 | ; !!! It is the user's responsibility to make it sure that the string | ||
| 2014 | ; contains the character given in AL. If not, unpredictable | ||
| 2015 | ; results will occur.!!! | ||
| 2016 | ; | ||
| 2017 | ; DATA INPUT | ||
| 2018 | ; REGISTERS: AL - ASCII CHARACTER | ||
| 2019 | ; ES:DI - POINTER TO THE STRING. | ||
| 2020 | ; DATA OUTPUT | ||
| 2021 | ; REGISTERS: AX,DX,SI etc - PRESERVED. | ||
| 2022 | ; BX - DISTROYED | ||
| 2023 | ; CX - STRING LENGTH UNTIL FOUND THE GIVEN CHARACTER. | ||
| 2024 | ; DI - POINTS TO THE NEXT CHARACTER AFTER THE STRING. | ||
| 2025 | ; DIRECTION FLAG - CLEARED | ||
| 2026 | ; ZERO FLAG - RESET | ||
| 2027 | ;****************************************************************************** | ||
| 2028 | ; | ||
| 2029 | ;STRING_LENGTH PROC NEAR | ||
| 2030 | ;PUBLIC STRING_LENGTH | ||
| 2031 | ; CLD ;CLEAR DIRECTION | ||
| 2032 | ; MOV BX,DI ;SAVE ORIGINAL DI VALUE | ||
| 2033 | ; MOV CX,80H ;TRY MAX 128 BYTES | ||
| 2034 | ; REPNE SCASB ;SCAN THE STRING UNTIL FOUND | ||
| 2035 | ; PUSH DI ;SAVE CURRENT DI VALUE WHICH POINTS TO NEXT CHR AFTER STRING | ||
| 2036 | ; SUB DI,BX ;GET THE LENGTH | ||
| 2037 | ; MOV CX,DI ;MOV THE LENGTH TO CX | ||
| 2038 | ; POP DI | ||
| 2039 | ; RET | ||
| 2040 | ;STRING_LENGTH ENDP | ||
| 2041 | ; | ||
| 2042 | ;subttl concat_asciiz | ||
| 2043 | ;page | ||
| 2044 | ;****************************************************************************** | ||
| 2045 | ;PURPOSE: Concatenate two ASCIIZ string into one ASCIIZ string. | ||
| 2046 | ; The ASCIIZ string pointed by DS:SI will be concatenated to | ||
| 2047 | ; the one pointed by ES:DI. The result string will be pointed by | ||
| 2048 | ; ES:DI. | ||
| 2049 | ; AL is used to put the delimeter character in between the strings. | ||
| 2050 | ; If you *DON'T* like to put the delimeter ***make AL to 0FFh***. | ||
| 2051 | ; For example, assume sting1 "ABCDE",0 pointed by DI and string2 | ||
| 2052 | ; "FGHI",0 pointed by SI. | ||
| 2053 | ; If you want a delimeter "\" between two string, set AL to "\" | ||
| 2054 | ; before calling. The result will "ABCDE\FGHI",0 pointed by DI. | ||
| 2055 | ; If you set AL to "0FFh", then it becomes "ABCDEFGHI",0. | ||
| 2056 | ; This feature is useful for handling PATH if you set AL to "\" | ||
| 2057 | ; and, for any general string processes if you set AL to "0FFh". | ||
| 2058 | ; This routine will call subroutine STRING_LENGTH. | ||
| 2059 | ;DATA INPUT | ||
| 2060 | ; REGISTERS: AL - DELIMETER OR 0FFh | ||
| 2061 | ; ES:DI - POINTER TO THE DESTINATION STRING. | ||
| 2062 | ; DS:SI - POINTER TO THE SOURCE TO BE CONCATENATED. | ||
| 2063 | ;DATA OUTPUT | ||
| 2064 | ; REGISTERS: AL, DX - preserved | ||
| 2065 | ; DI - preserved. POINTER TO THE RESULT STRING | ||
| 2066 | ; SI - DISTROYED | ||
| 2067 | ; CX - RESULT ASCIIZ STRING LENGTH INCLUDE 0 | ||
| 2068 | ; DIRECTION FLAG - CLEARED | ||
| 2069 | ;****************************************************************************** | ||
| 2070 | ;CONCAT_ASCIIZ PROC NEAR | ||
| 2071 | ; | ||
| 2072 | ;PUBLIC CONCAT_ASCIIZ | ||
| 2073 | ; PUSH DI ;SAVE POINTER VALUE WHICH WILL BE RETRUNED TO CALLER. | ||
| 2074 | ; PUSH AX ;SAVE VALUE IN AL. | ||
| 2075 | ; MOV AL, 0 ;DEALING WITH ASCIIZ STRING | ||
| 2076 | ; CALL STRING_LENGTH ;LET DI POINTS TO THE NEXT CHR AFTER THIS STRING | ||
| 2077 | ; ;DIRECTION WILL BE CLEARED. | ||
| 2078 | ; DEC DI ;MAKE DI POINT TO THE LAST CHARACTER 0 | ||
| 2079 | ; POP AX ;RESTORE AL. | ||
| 2080 | ; CMP AL, 0FFh | ||
| 2081 | ;; $IF NE ;IF THE USER WANTS TO PUT DIMIMETER, | ||
| 2082 | ; JE $$IF42 | ||
| 2083 | ; STOSB ; REPLACE 0 WITH IT. | ||
| 2084 | ;; $ELSE | ||
| 2085 | ; JMP SHORT $$EN42 | ||
| 2086 | ;$$IF42: | ||
| 2087 | ; DEC CX ;ELSE DECREASE LENGTH BY 1 | ||
| 2088 | ;; $ENDIF | ||
| 2089 | ;$$EN42: | ||
| 2090 | ;; $DO | ||
| 2091 | ;$$DO45: | ||
| 2092 | ; LODSB ;MOV [SI] TO AL | ||
| 2093 | ; STOSB ;STORE AL TO [DI] | ||
| 2094 | ; INC CX ;INCREASE LENGTH | ||
| 2095 | ; CMP AL, 0 ;WAS IT A LAST CHARACTER? | ||
| 2096 | ;; $ENDDO E ;THEN EXIT THIS LOOP | ||
| 2097 | ; JNE $$DO45 | ||
| 2098 | ; POP DI | ||
| 2099 | ; RET | ||
| 2100 | ;CONCAT_ASCIIZ ENDP | ||
| 2101 | ;; | ||
| 2102 | ; | ||
| 2103 | ;subttl last_dir_out | ||
| 2104 | ;page | ||
| 2105 | ;****************************************************************************** | ||
| 2106 | ;PURPOSE: Take off the last directory name from the path pointed by DI. | ||
| 2107 | ; This routine assumes the pattern of a path to be an ASCIIZ string | ||
| 2108 | ; in the form of "[d:][\]dir1\dir2". Notice that this path does not | ||
| 2109 | ; have entailing "\". This routine will simply travel the string | ||
| 2110 | ; until it found last "\" which will, then, be replaced with 0. | ||
| 2111 | ; If no "\" found, then carry will be set. | ||
| 2112 | ; *** This should be not be used for the path in the form of | ||
| 2113 | ; *** "d:\", 0 for the root directory, since in this case the returned | ||
| 2114 | ; *** string will be "d:",0 and AX value returned be meaningless (Just | ||
| 2115 | ; *** points to 0.) | ||
| 2116 | ;DATA INPUT | ||
| 2117 | ; REGISTERS: DI - points to an ASCIIZ path string. | ||
| 2118 | ; ES - assumed default segment for DI | ||
| 2119 | ;DATA OUTPUT | ||
| 2120 | ; REGISTERS: DI - points to the resultant path string. | ||
| 2121 | ; AX - offset value of the last subdirectory name taken out, in case | ||
| 2122 | ; of the user's need. | ||
| 2123 | ; Other register will be unchanged. | ||
| 2124 | ; CARRY FLAG WILL SET IF NOT FOUND. | ||
| 2125 | ;****************************************************************************** | ||
| 2126 | ; | ||
| 2127 | ;LAST_DIR_OUT PROC NEAR | ||
| 2128 | ;PUBLIC LAST_DIR_OUT | ||
| 2129 | ; | ||
| 2130 | ; PUSH DI | ||
| 2131 | ; PUSH SI ;save current DI, SI | ||
| 2132 | ; CLD ;clear direction | ||
| 2133 | ; MOV SI, 0FFFFh ;used as a not_found flag if unchanged. | ||
| 2134 | ;; $DO | ||
| 2135 | ;$$DO47: | ||
| 2136 | ; MOV AL, 0 | ||
| 2137 | ; SCASB | ||
| 2138 | ;; $LEAVE Z ;if [DI] = 0, then end of string. Ends this loop. | ||
| 2139 | ; JZ $$EN47 | ||
| 2140 | ; DEC DI ;if [DI] <> 0, then go back and scan char again | ||
| 2141 | ; MOV AL, "\" ;to see it was a back slash. | ||
| 2142 | ; SCASB | ||
| 2143 | ;; $IF Z ;if it was, then save the addr to SI. | ||
| 2144 | ; JNZ $$IF49 | ||
| 2145 | ; PUSH DI | ||
| 2146 | ; POP SI | ||
| 2147 | ; | ||
| 2148 | ; DEC SI | ||
| 2149 | ;; $ENDIF ;else do loop again. | ||
| 2150 | ;$$IF49: | ||
| 2151 | ;; $ENDDO | ||
| 2152 | ; JMP SHORT $$DO47 | ||
| 2153 | ;$$EN47: | ||
| 2154 | ; CLC ;clear carry flag. | ||
| 2155 | ; CMP SI, 0FFFFh ;Had SI been changed? | ||
| 2156 | ;; $IF E | ||
| 2157 | ; JNE $$IF52 | ||
| 2158 | ; STC ;No, set the carry. Not found. | ||
| 2159 | ;; $ELSE | ||
| 2160 | ; JMP SHORT $$EN52 | ||
| 2161 | ;$$IF52: | ||
| 2162 | ; MOV BYTE PTR ES:[SI], 0 ;Yes, replace "\" with 0. Seg override to get default DI seg. | ||
| 2163 | ; MOV AX, SI | ||
| 2164 | ; INC AX ;let AX have the last dir offset value. | ||
| 2165 | ; CLC ;clear carry | ||
| 2166 | ;; $ENDIF | ||
| 2167 | ;$$EN52: | ||
| 2168 | ; POP SI ;restore original value | ||
| 2169 | ; POP DI ;original string offset | ||
| 2170 | ; RET | ||
| 2171 | ;LAST_DIR_OUT ENDP | ||
| 2172 | ;; | ||
| 2173 | ; | ||
| 2174 | SET_DEFAULT_DRV PROC NEAR;AN000; | ||
| 2175 | ;change source drv as a default drv for conveniece of find, read operation | ||
| 2176 | ;of source. (handling target should be more specific as for as drive letter | ||
| 2177 | ;goes.) | ||
| 2178 | ;input: DL - drive # (0 = A, 1 = B ...) | ||
| 2179 | |||
| 2180 | MOV AH, Select_Disk ;AN000; = 0Eh | ||
| 2181 | INT 21H ;AN000; | ||
| 2182 | OR SYS_FLAG, DEFAULT_DRV_SET_FLAG ;AN000;indicates default drv has been changed | ||
| 2183 | ;Used for exit the program to restore default drv | ||
| 2184 | RET ;AN000; | ||
| 2185 | SET_DEFAULT_DRV ENDP ;AN000; | ||
| 2186 | ; | ||
| 2187 | ORG_S_DEF PROC NEAR ;AN000; | ||
| 2188 | ;restore the original source directory. | ||
| 2189 | PUSH ES ;AN000; | ||
| 2190 | PUSH DS ;AN000; | ||
| 2191 | |||
| 2192 | PUSH DS ;AN000; | ||
| 2193 | POP ES ;AN000;DS=ES=data seg | ||
| 2194 | |||
| 2195 | TEST SYS_FLAG, DEFAULT_S_DIR_FLAG ;AN000;source default direcotry saved? | ||
| 2196 | ; $IF NZ | ||
| 2197 | JZ $$IF55 ;AN000; | ||
| 2198 | MOV DX, OFFSET SAV_S_DRV ;AN000;saved source drive letter & directory | ||
| 2199 | MOV AH, 3Bh ;AN000; | ||
| 2200 | INT 21h ;AN000;restore source | ||
| 2201 | AND SYS_FLAG, RESET_DEFAULT_S_DIR ;AN000;reset the flag | ||
| 2202 | ; $ENDIF | ||
| 2203 | $$IF55: ;AN000; | ||
| 2204 | |||
| 2205 | POP DS ;AN000; | ||
| 2206 | POP ES ;AN000; | ||
| 2207 | |||
| 2208 | RET ;AN000; | ||
| 2209 | ORG_S_DEF ENDP ;AN000; | ||
| 2210 | ; | ||
| 2211 | ORG_S_T_DEF PROC NEAR ;AN000; | ||
| 2212 | ;retore original target, source and default drv and directory | ||
| 2213 | ;check default_s(t)_dir_flag, default_drv_set_flag to restore source, | ||
| 2214 | ;or target directory and default drive. | ||
| 2215 | |||
| 2216 | TEST SYS_FLAG, TURN_VERIFY_OFF_FLAG ;AN000;turn off verify? | ||
| 2217 | ; $IF NZ ;yes | ||
| 2218 | JZ $$IF57 ;AN000; | ||
| 2219 | MOV AX, 2E00h ;AN000;turn it off | ||
| 2220 | INT 21H ;AN000; | ||
| 2221 | ; $ENDIF | ||
| 2222 | $$IF57: ;AN000; | ||
| 2223 | |||
| 2224 | TEST SYS_FLAG, DEFAULT_DRV_SET_FLAG ;AN000;default drive has been changed? | ||
| 2225 | ; $IF NZ ;yes | ||
| 2226 | JZ $$IF59 ;AN000; | ||
| 2227 | MOV DL, SAV_DEFAULT_DRV ;AN000; | ||
| 2228 | DEC DL ;AN000; | ||
| 2229 | CALL SET_DEFAULT_DRV ;AN000;restore default drv. | ||
| 2230 | |||
| 2231 | ; Following is a fix for PTR 0000012 . The fix is to skip changing default | ||
| 2232 | ; drive directory if source drive is not the default drive. | ||
| 2233 | |||
| 2234 | MOV AL, S_DRV_NUMBER ;AN002; get source drive number | ||
| 2235 | CMP AL, SAV_DEFAULT_DRV ;AN002; src drive is the default drv ? | ||
| 2236 | JNE SKIP_CH_DIR ;AN002; no, dont change directory | ||
| 2237 | |||
| 2238 | MOV DX, OFFSET SAV_DEF_DIR_ROOT;AN000; | ||
| 2239 | MOV AH, Chdir ;AN000; | ||
| 2240 | INT 21H ;AN000;restore current dir of default dir | ||
| 2241 | SKIP_CH_DIR: ;AN000; | ||
| 2242 | ; $ENDIF | ||
| 2243 | $$IF59: ;AN000; | ||
| 2244 | |||
| 2245 | TEST SYS_FLAG, DEFAULT_S_DIR_FLAG ;AN000;source default direcotry saved? | ||
| 2246 | ; $IF NZ | ||
| 2247 | JZ $$IF61 ;AN000; | ||
| 2248 | MOV DX, OFFSET SAV_S_DRV ;AN000;saved source drive letter & directory | ||
| 2249 | MOV AH, 3Bh ;AN000; | ||
| 2250 | INT 21h ;AN000;restore source. This is for the case of ERROR exit. | ||
| 2251 | ; $ENDIF | ||
| 2252 | $$IF61: ;AN000; | ||
| 2253 | |||
| 2254 | TEST SYS_FLAG, DEFAULT_T_DIR_FLAG ;AN000;target default directory saved? | ||
| 2255 | ; $IF NZ ;then assume both source, target default saved | ||
| 2256 | JZ $$IF63 ;AN000; | ||
| 2257 | MOV DX, OFFSET SAV_T_DRV ;AN000;saved target drive letter & directory | ||
| 2258 | MOV AH, 3Bh ;AN000; | ||
| 2259 | INT 21h ;AN000;restore target | ||
| 2260 | ; $ENDIF | ||
| 2261 | $$IF63: ;AN000; | ||
| 2262 | |||
| 2263 | RET ;AN000; | ||
| 2264 | ORG_S_T_DEF ENDP ;AN000; | ||
| 2265 | ; | ||
| 2266 | EXTENDED_ERROR_HANDLER PROC NEAR;AN000; | ||
| 2267 | ;This routine calls fun 59(Get extended error) and | ||
| 2268 | ;check the actions returned. If it is Immediate exit, then jmp to JUST_EXIT | ||
| 2269 | ;If it is abort, then jmp to MAIN_EXIT. | ||
| 2270 | ;Or else, it check the COPY_STATUS flag. If is not open, read, create or | ||
| 2271 | ;write, then it is considered as a critical error and jmp to MAIN_EXIT. | ||
| 2272 | ;If access denied | ||
| 2273 | ; too many open files | ||
| 2274 | ; sharing violation | ||
| 2275 | ; lock violation | ||
| 2276 | ; general failure | ||
| 2277 | ;then show the message and jmp to the MAIN_EXIT. | ||
| 2278 | ; *** Currently, this routine directly jump to the main_exit instead of | ||
| 2279 | ; *** returing to the caller. The reason is we regard the above error conditions | ||
| 2280 | ; *** as being not suitable to continue copying and, hence, to simplify | ||
| 2281 | ; *** the error process. | ||
| 2282 | ;INPUT: | ||
| 2283 | ; DS - DATA SEG | ||
| 2284 | ;OUTPUT: | ||
| 2285 | ; ALL THE REG PRESERVED | ||
| 2286 | |||
| 2287 | GOTO_MAIN_EXIT: ;AN000; | ||
| 2288 | JMP MAIN_EXIT ;AN000;restore conditions | ||
| 2289 | ;and exit | ||
| 2290 | QUICK_EXIT: ;AN000; | ||
| 2291 | JMP JUST_EXIT ;AN000;immediate exit | ||
| 2292 | |||
| 2293 | RET ;AN000; | ||
| 2294 | |||
| 2295 | EXTENDED_ERROR_HANDLER ENDP;AN000; | ||
| 2296 | ; | ||
| 2297 | CLOSE_DELETE_FILE PROC NEAR;AN000; | ||
| 2298 | ;when writing error occurs, then this routine is called to | ||
| 2299 | ;clean up the troubled target file. | ||
| 2300 | ;INPUT: DS - buffer seg | ||
| 2301 | ; ES - data seg | ||
| 2302 | |||
| 2303 | MOV BX, ES:T_HANDLE ;AN000;close target file | ||
| 2304 | PUSH DS ;AN005;SAVE THE BUFFER PTR | ||
| 2305 | PUSH ES ;AN005;WE NEED THE DATA PTR | ||
| 2306 | POP DS ;AN005;DS = THE DATA PTR | ||
| 2307 | CALL CLOSE_A_FILE;AN000; | ||
| 2308 | POP DS ;AN005;DS = THE BUFFER PTR AGAIN | ||
| 2309 | LEA DX, DS:target_drv_let ;AN000;target drv, filename | ||
| 2310 | CALL DELETE_A_FILE ;AN000;delete it | ||
| 2311 | RET ;AN000; | ||
| 2312 | CLOSE_DELETE_FILE ENDP;AN000; | ||
| 2313 | ; | ||
| 2314 | ; | ||
| 2315 | |||
| 2316 | SWITCH_DS_ES PROC NEAR;AN000; | ||
| 2317 | ; switch DS, ES | ||
| 2318 | PUSH DS ;AN000; | ||
| 2319 | PUSH ES ;AN000; | ||
| 2320 | POP DS ;AN000; | ||
| 2321 | POP ES ;AN000; | ||
| 2322 | RET ;AN000; | ||
| 2323 | SWITCH_DS_ES ENDP ;AN000; | ||
| 2324 | ; | ||
| 2325 | ; | ||
| 2326 | INIT PROC NEAR ;AN000; | ||
| 2327 | |||
| 2328 | CALL GET_CUR_DRV ;AN000;save current default drv | ||
| 2329 | MOV DL, SAV_DEFAULT_DRV;AN000; | ||
| 2330 | LEA SI, SAV_DEFAULT_DIR;AN000; | ||
| 2331 | |||
| 2332 | CALL GET_CUR_DIR ;AN000;save current default dir | ||
| 2333 | CALL GET_DRIVES ;AN000; SAR | ||
| 2334 | CALL TOP_OF_MEM ;AN000;set top_of_memory | ||
| 2335 | CALL INIT_BUFFER ;AN000;init buffer information | ||
| 2336 | |||
| 2337 | MOV DL, T_DRV_NUMBER ;AN000; SAR | ||
| 2338 | .IF < DL AE 3 > ;AN000; SAR | ||
| 2339 | LEA SI, SAV_T_CURDIR ;AN000; SAR | ||
| 2340 | CALL GET_CUR_DIR ;AN000; SAR | ||
| 2341 | OR SYS_FLAG, DEFAULT_T_DIR_FLAG ;AN000; SAR | ||
| 2342 | .ELSE ;AN000; SAR | ||
| 2343 | AND SYS_FLAG, NOT DEFAULT_T_DIR_FLAG ;AN000; SAR | ||
| 2344 | .ENDIF ;AN000; SAR | ||
| 2345 | |||
| 2346 | |||
| 2347 | MOV DL, S_DRV_NUMBER;AN000; | ||
| 2348 | DEC DL ;AN000; | ||
| 2349 | CALL SET_DEFAULT_DRV ;AN000;set source as a default drv | ||
| 2350 | CLC ;AN000; | ||
| 2351 | RET ;AN000; | ||
| 2352 | INIT ENDP ;AN000; | ||
| 2353 | ; | ||
| 2354 | GET_DRIVES PROC NEAR ;AN000; | ||
| 2355 | ;get source and target phisical drive letter from parser area. | ||
| 2356 | ;set ONE_DISK_COPY_FLAG, if the user XCOPY using the same drive letter. | ||
| 2357 | |||
| 2358 | ;;;;; MOV AL, SO_DRIVE ;AN000;source drive letter | ||
| 2359 | ; CMP AL,SPACE ;AN000;IS DRIVE LETTER BLANK? | ||
| 2360 | ; $IF E ;AN000;YES, GET THE DEFAULT | ||
| 2361 | ; MOV AL, SAV_DEFAULT_DRV ;(1=A, 2=B,...) | ||
| 2362 | ; $ELSE ;AN000;NO, CHANGE FROM CHAR TO # | ||
| 2363 | ; SUB AL,BASE_OF_ALPHA_DRV ;AN000;NEED THE DRV # HERE | ||
| 2364 | ; $ENDIF | ||
| 2365 | |||
| 2366 | MOV AL, 1 ;AN000; SAR A is the source drive | ||
| 2367 | MOV S_DRV_NUMBER, AL ;AN000;SAVE DRV # | ||
| 2368 | ADD AL, BASE_OF_ALPHA_DRV;AN000; | ||
| 2369 | |||
| 2370 | MOV S_DRV, AL ;AN000;save source drive letter | ||
| 2371 | MOV S_DRV_1, AL;AN000; | ||
| 2372 | ;; MOV S_ARC_DRV, AL ; SAR | ||
| 2373 | MOV SAV_S_DRV, AL;AN000; | ||
| 2374 | |||
| 2375 | .IF < DEST eq 3 > ;AN111;JW | ||
| 2376 | MOV AL,0 ;AN111;JW | ||
| 2377 | .ELSE ;AN111;JW | ||
| 2378 | MOV AL, DEST ;AN000; SAR target drive letter | ||
| 2379 | .ENDIF ;AN111;JW | ||
| 2380 | INC AL ;AN000; SAR | ||
| 2381 | ;;;;; CMP AL,SPACE ;AN000;IS DRIVE LETTER BLANK? | ||
| 2382 | ; ; $IF E ;AN000;YES, GET THE DEFAULT | ||
| 2383 | ; ; MOV AL, SAV_DEFAULT_DRV ;(1=A, 2=B,...) | ||
| 2384 | ; ; $ELSE ;AN000;NO, CHANGE FROM CHAR TO # | ||
| 2385 | ; ; SUB AL,BASE_OF_ALPHA_DRV ;AN000;NEED THE DRV # HERE | ||
| 2386 | ;;;;; $ENDIF | ||
| 2387 | MOV T_DRV_NUMBER, AL ;AN000;save target drv # | ||
| 2388 | |||
| 2389 | ;;;;; CMP S_DRV_NUMBER, AL ;s_drv_number = t_drv_number? | ||
| 2390 | ; ; $IF E | ||
| 2391 | ; ; OR SYS_FLAG, ONE_DISK_COPY_FLAG ;same logical drv copy | ||
| 2392 | ;;;;; $ENDIF | ||
| 2393 | |||
| 2394 | ADD AL, BASE_OF_ALPHA_DRV ;AN000;make target drv # to drive letter | ||
| 2395 | MOV T_DRV, AL ;AN000;target drive letter | ||
| 2396 | ;; MOV T_DRV_1, AL ; SAR | ||
| 2397 | ;; MOV T_DRV_2, AL ; SAR | ||
| 2398 | MOV SAV_T_DRV, AL;AN000; | ||
| 2399 | RET ;AN000; | ||
| 2400 | GET_DRIVES ENDP ;AN000; | ||
| 2401 | ; | ||
| 2402 | GET_CUR_DRV PROC NEAR;AN000; | ||
| 2403 | ;get the current default drive number (0 = A, 1 = B ..), | ||
| 2404 | ;change it to BIOS drive number and save it. | ||
| 2405 | MOV AH, Current_Disk ;AN000; = 19h | ||
| 2406 | INT 21h ;AN000; | ||
| 2407 | INC AL ;AN000;(1 = A, 2 = B ..) | ||
| 2408 | MOV SAV_DEFAULT_DRV, AL ;AN000;save it | ||
| 2409 | RET ;AN000; | ||
| 2410 | GET_CUR_DRV ENDP ;AN000; | ||
| 2411 | ; | ||
| 2412 | GET_CUR_DIR PROC NEAR ;AN000; | ||
| 2413 | ;get current directory and save it | ||
| 2414 | ;input: DL - drive # (0 = default, 1 = A etc) | ||
| 2415 | ; DS:SI - pointer to 64 byte user memory | ||
| 2416 | |||
| 2417 | MOV AH, Get_Current_Directory;AN000; | ||
| 2418 | INT 21H ;AN000; | ||
| 2419 | RET ;AN000; | ||
| 2420 | GET_CUR_DIR ENDP ;AN000; | ||
| 2421 | ; | ||
| 2422 | TOP_OF_MEM PROC NEAR ;AN000; | ||
| 2423 | ;set Top_of_memory | ||
| 2424 | PUSH ES ;AN000; | ||
| 2425 | MOV BX, PSP_SEG ;AN000; | ||
| 2426 | MOV ES, BX ;AN000; | ||
| 2427 | MOV AX, ES:2 ;AN000;PSP top of memory location | ||
| 2428 | SUB AX, 100H ;AN000;subtract dos transient area (4k) | ||
| 2429 | MOV TOP_OF_MEMORY, AX ;AN000;save it for buffer top | ||
| 2430 | POP ES ;AN000; | ||
| 2431 | RET ;AN000; | ||
| 2432 | TOP_OF_MEM ENDP ;AN000; | ||
| 2433 | |||
| 2434 | INIT_BUFFER PROC NEAR ;AN000; | ||
| 2435 | ;initialize buffer information | ||
| 2436 | ;set buffer_base, max_buffer_size | ||
| 2437 | ; call set_block ;SET BLOCK FOR BUFFR (for new 3.2 linker) | ||
| 2438 | MOV AX, 0 ;AN000; SAR | ||
| 2439 | ;;;; PUSH CS ; SAR cs segment is the highest segment in this program | ||
| 2440 | ;;;; POP DX ; SAR | ||
| 2441 | MOV DX, ALLOCATE_START ;AN000; SAR | ||
| 2442 | MOV BUFFER_PTR, DX ;AN000; | ||
| 2443 | CALL SET_BUFFER_PTR ;AN000; | ||
| 2444 | MOV AX, BUFFER_PTR ;AN000; | ||
| 2445 | MOV BUFFER_BASE, AX ;AN000;set buffer_base | ||
| 2446 | MOV AX, BUFFER_LEFT ;AN000; | ||
| 2447 | CMP AX, 140h ;AN000;BUFFER_LEFT < 5K which is the minimum size this program supports? | ||
| 2448 | JAE IB_CONT ;AN000; | ||
| 2449 | ;;;;;; PUSH AX ; SAR ;AN000; | ||
| 2450 | ; MOV AX, MSG_INSUF_MEMORY ; SAR ;AC000;GET THE MESSAGE ID | ||
| 2451 | ; MOV MSG_NUM,AX ; SAR ;AN000;NEED MESSAGE ID FOR PRINT | ||
| 2452 | ; MOV SUBST_COUNT,NUL ; SAR ;AN000;NO SUBSTITUTION TEXT | ||
| 2453 | ; MOV INPUT_FLAG,NUL ; SAR ;AN000;NO INPUT = 0 | ||
| 2454 | ; MOV MSG_CLASS,UTILITY_MSG_CLASS ; SAR ;AN000;MESSAGE CLASS = -1 | ||
| 2455 | ; CALL PRINT_STDERR ; SAR ;print error. AX points to message ID | ||
| 2456 | ; POP AX ; SAR ;AN000; | ||
| 2457 | ; MOV ERRORLEVEL, 4 ; SAR ;abnormal termination | ||
| 2458 | JMP MAIN_EXIT_A ;AN000;terminate this program | ||
| 2459 | IB_CONT: ;AN000; | ||
| 2460 | MOV MAX_BUFFER_SIZE, AX ;AN000;set max buffer size in para | ||
| 2461 | CMP AX, 0FFFh ;AN000;max_buffer_size > 64 K in para ? | ||
| 2462 | ; $IF B | ||
| 2463 | JNB $$IF65 ;AN000; | ||
| 2464 | MOV CX, 16;AN000; | ||
| 2465 | MUL CX ;AN000;AX = AX * 16 (DX part will be 0) | ||
| 2466 | SUB AX, 544 ;AN000;AN000;subtrack header size | ||
| 2467 | MOV MAX_CX, AX ;AN000;this will be max_cx | ||
| 2468 | ; $ELSE | ||
| 2469 | JMP SHORT $$EN65 ;AN000; | ||
| 2470 | $$IF65: ;AN000; | ||
| 2471 | MOV MAX_CX, 0FFD0h ;AN000;else max_cx = fff0 - 32 bytes | ||
| 2472 | ;which is the max # this program can support. | ||
| 2473 | ; $ENDIF ;(min # this program support for buffer is 5 k | ||
| 2474 | $$EN65: ;AN000; | ||
| 2475 | ; which has been decided by BIG_FILE ) | ||
| 2476 | RET ;AN000; | ||
| 2477 | INIT_BUFFER ENDP ;AN000; | ||
| 2478 | |||
| 2479 | |||
| 2480 | |||
| 2481 | SELECT ENDS ;AN000; | ||
| 2482 | |||
| 2483 | END ;AN000; | ||
| 2484 | |||
diff --git a/v4.0/src/SELECT/MPARSE.ASM b/v4.0/src/SELECT/MPARSE.ASM new file mode 100644 index 0000000..141df62 --- /dev/null +++ b/v4.0/src/SELECT/MPARSE.ASM | |||
| @@ -0,0 +1,39 @@ | |||
| 1 | .ALPHA ;AN000; | ||
| 2 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3 | ; | ||
| 4 | ; DUMMY DATA SEGMENT | ||
| 5 | ; | ||
| 6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 7 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 8 | DATA ENDS ;AN000;DATA | ||
| 9 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 10 | ; | ||
| 11 | ; PARSER INFORMATION | ||
| 12 | ; | ||
| 13 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 14 | .XLIST ;AN000; | ||
| 15 | FARSW EQU 1 ;AN000; | ||
| 16 | DATESW EQU 0 ;AN000; | ||
| 17 | TIMESW EQU 0 ;AN000; | ||
| 18 | FILESW EQU 0 ;AN000; | ||
| 19 | CAPSW EQU 0 ;AN000; | ||
| 20 | CMPXSW EQU 0 ;AN000; | ||
| 21 | DRVSW EQU 0 ;AN000; | ||
| 22 | QUSSW EQU 0 ;AN000; | ||
| 23 | KEYSW EQU 1 ;AN000; | ||
| 24 | SWSW EQU 0 ;AN000; | ||
| 25 | VAL1SW EQU 1 ;AN000; | ||
| 26 | VAL2SW EQU 1 ;AN000; | ||
| 27 | VAL3SW EQU 1 ;AN000; | ||
| 28 | .LIST ;AN000; | ||
| 29 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 30 | PARSER SEGMENT PARA PUBLIC 'PARSER' ;AN000; | ||
| 31 | ASSUME CS:PARSER,DS:DATA,ES:DATA;AN000; | ||
| 32 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 33 | PUBLIC SYSPARSE ;AN000; | ||
| 34 | PAGE ;AN000; | ||
| 35 | INCLUDE PARSE.ASM ;AN000; | ||
| 36 | |||
| 37 | PARSER ENDS ;AN000; | ||
| 38 | END ;AN000; | ||
| 39 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/PAN-LIST.INC b/v4.0/src/SELECT/PAN-LIST.INC new file mode 100644 index 0000000..e6bbf4c --- /dev/null +++ b/v4.0/src/SELECT/PAN-LIST.INC | |||
| @@ -0,0 +1,191 @@ | |||
| 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2 | ; | ||
| 3 | ; PAN-LIST.INC | ||
| 4 | ; | ||
| 5 | ; | ||
| 6 | ; | ||
| 7 | ; OASIS PANEL ASSOCATION TABLE | ||
| 8 | ; | ||
| 9 | ; | ||
| 10 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 11 | PAN_WELCOME EQU 1 ;AN000; Welcome screen | ||
| 12 | PAN_INTRO EQU 2 ;AN000; Introduction screen | ||
| 13 | PAN_CONFIRM EQU 3 ;AN000; Confirmation screen | ||
| 14 | PAN_WORKSPACE EQU 4 ;AN000; User memory needs screen | ||
| 15 | PAN_CTY_KYB EQU 5 ;AN000; Country/Keyboard support screen | ||
| 16 | PAN_COUNTRY EQU 6 ;AN000; Country Code Choice screen | ||
| 17 | PAN_KEYBOARD EQU 7 ;AN000; Keyboard Code Choice screen | ||
| 18 | PAN_KYBD_ALT EQU 8 ;AN000; Alternate keyboard screen | ||
| 19 | PAN_DEST_DRIVE EQU 9 ;AN000; Destination Drive screen | ||
| 20 | PAN_DOS_LOC EQU 10 ;AN000; DOS Location screen | ||
| 21 | PAN_PRINTER EQU 11 ;AN000; Printer Selection Screen | ||
| 22 | PAN_PRT_TYPE EQU 12 ;AN000; Printer type screen | ||
| 23 | PAN_PARALLEL EQU 13 ;AN000; Parallel printer port selection screen | ||
| 24 | PAN_SERIAL EQU 14 ;AN000; Serial printer port selection screen | ||
| 25 | PAN_REVIEW EQU 15 ;AN000; Review Selections Screen | ||
| 26 | PAN_FUNC_DISK EQU 16 ;AN000; Review selections made by SELECT - drive C: | ||
| 27 | PAN_FUNC_DISKET EQU 16 ;AN000; Review selections made by SELECT - drive B: | ||
| 28 | ERR_PRT_NO_HDWR EQU 17 ;AN000; | ||
| 29 | PAN_DOS_PARAM EQU 18 ;AN000; PC/DOS parameters screen | ||
| 30 | PAN_SHELL EQU 19 ;AN000; SHELL parameters screen | ||
| 31 | ERR_EXIT EQU 20 ;AN000; Unrecoverable error - exit | ||
| 32 | PAN_FASTOPEN EQU 21 ;AN000; FASTOPEN support screen | ||
| 33 | PAN_SHARE EQU 22 ;AN000; SHARE support screen | ||
| 34 | PAN_GRAPHICS EQU 23 ;AN000; GRAPHICS support screen | ||
| 35 | PAN_EXP_MEMORY EQU 24 ;AN000; Expanded Memory support screen | ||
| 36 | PAN_VDISK EQU 25 ;AN000; Virtual Disk support screen | ||
| 37 | PAN_CONFIG_PARS EQU 26 ;AN000; CONFIG.SYS parameter screen | ||
| 38 | PAN_FIXED_FIRST EQU 27 ;AN000; Partitions support for first disk only | ||
| 39 | PAN_FIXED_BOTH EQU 28 ;AN000; Partitions support for both disks | ||
| 40 | PAN_REBOOT EQU 29 ;AN000; Reboot screen | ||
| 41 | PAN_DATE_TIME EQU 30 ;AN000; Install Date/Time support screen | ||
| 42 | PAN_FORMAT EQU 31 ;AN000; Format Fixed Disk partition screen | ||
| 43 | PAN_INST_PROMPT EQU 32 ;AN000; Installing PC DOS prompt screen | ||
| 44 | PAN_INSTALL_DOS EQU 32 ;AN000; Installing PC DOS screen | ||
| 45 | ERR_KEYB EQU 33 ;AN000; Error in running the KEYB command | ||
| 46 | PAN_COMPLETE1 EQU 34 ;AN000; Installing complete screen - disk | ||
| 47 | PAN_COMPLETE2 EQU 34 ;AN000; Installing complete screen - diskette 720KB | ||
| 48 | PAN_COMPLETE3 EQU 34 ;AN000; Installing complete screen - diskette 360KB | ||
| 49 | SUB_COMP_KYS_1C EQU 35 ;AN000; message for reboot; diskette COMBINED (1.44MB) | ||
| 50 | PAN_HPAN EQU 36 ;AN000; contextual help panel | ||
| 51 | PAN_HBAR EQU 37 ;AN000; HORIZONTAL BAR | ||
| 52 | SUB_CONT_OPTION EQU 38 ;AN000; Enter to continue or Esc to cancel | ||
| 53 | SUB_PRINTER_1 EQU 39 ;AN000; printer no 1 | ||
| 54 | |||
| 55 | CHILD_F3EXIT EQU 40 ;AN000; f3 exit child panel | ||
| 56 | SUB_FIXED_1 EQU 41 ;AN000; fixed disk 1 | ||
| 57 | SUB_LOG_DRIVE EQU 42 ;AN000; logical drive JW | ||
| 58 | SUB_REBOOT_KEYS EQU 43 ;AN000; ctrl+alt+del to reboot line | ||
| 59 | SUB_INSTALL_1 EQU 44 ;AN000; copying from diskette 1 | ||
| 60 | SUB_INSTALL_2 EQU 45 ;AN000; copying from diskette 2 | ||
| 61 | SUB_COMP_VER EQU 46 ;AN000; install of DOS 4.00 complete | ||
| 62 | SUB_COMP_KYS_1 EQU 47 ;AN000; message before reboot - disk | ||
| 63 | SUB_COMP_KYS_2 EQU 48 ;AN000; message before reboot - diskette | ||
| 64 | ; | ||
| 65 | CHILD_F1HELP EQU 49 ;AN000; help child panel | ||
| 66 | CHILD_F9KEYS EQU 50 ;AN000; keys child panel | ||
| 67 | CHILD_QUIT EQU 51 ;AN000; escape child panel | ||
| 68 | CHILD_ENTER EQU 52 ;AN000; enter child panel | ||
| 69 | SUB_COMP_REP EQU 53 ;AN000; Replacement of DOS 4.00 complete | ||
| 70 | ; | ||
| 71 | PAN_WRITE_PROT EQU 54 ;AN000; | ||
| 72 | PAN_DRIVE_ERROR EQU 55 ;AN000; | ||
| 73 | PAN_BAD_DISKET EQU 56 ;AN000; | ||
| 74 | ERR_COPY_DISK EQU 57 ;AN000; | ||
| 75 | ; | ||
| 76 | SUB_INS_START_B EQU 58 ;AN000; | ||
| 77 | SUB_REM_SEL_A EQU 59 ;AN000; | ||
| 78 | SUB_REM_START_B EQU 60 ;AN000; | ||
| 79 | SUB_REM_DOS_A EQU 61 ;AN000; | ||
| 80 | ; | ||
| 81 | ERR_BAD_PATH EQU 62 ;AN000; | ||
| 82 | ERR_BAD_PFILE EQU 63 ;AN000; | ||
| 83 | ERR_BAD_PPRO EQU 64 ;AN000; | ||
| 84 | FORMAT_DISK EQU 65 ;AN000; | ||
| 85 | FORMAT_DISKET EQU 66 ;AN000; | ||
| 86 | ERR_BORDER EQU 67 ;AN000; | ||
| 87 | ERR_DOS_DISK EQU 68 ;AN000; | ||
| 88 | ERR_GENERAL EQU 69 ;AN000; | ||
| 89 | PAN_DISKCOPY EQU 70 ;AN000; | ||
| 90 | PAN_DSKCPY_SRC EQU 71 ;AN000; | ||
| 91 | PAN_DSKCPY_TAR EQU 72 ;AN000; | ||
| 92 | PAN_DSKCPY_CPY EQU 73 ;AN000; | ||
| 93 | PAN_PARTIAL EQU 74 ;AC010; | ||
| 94 | |||
| 95 | FORMAT_SHELL EQU 75 ;AN000;DT One drive format of SHELL diskette | ||
| 96 | FORMAT_STARTUP EQU 76 ;AN000;DT One drive format of STARTUP diskette | ||
| 97 | SUB_REM_SHELL_360 EQU 77 ;AN001;GHG D65 360KB | ||
| 98 | SUB_REM_SELECT_360 EQU 78 ;AN001;GHG D65 360KB | ||
| 99 | SUB_REM_UTIL1_360 EQU 79 ;AN001;GHG D65 360KB | ||
| 100 | SUB_COPYING EQU 80 ;AN001;GHG D65 360KB | ||
| 101 | |||
| 102 | SUB_INS_WORK1_360 EQU 81 ;AN000;DT 2 drive 360 installation | ||
| 103 | SUB_INS_WORK2_360 EQU 82 ;AN000;DT " | ||
| 104 | SUB_INS_WORK3_360 EQU 83 ;AN000;DT " | ||
| 105 | SUB_INS_START_360 EQU 84 ;AN000;DT " | ||
| 106 | SUB_INS_INSTALL_360 EQU 85 ;AN000;DT " | ||
| 107 | ; | ||
| 108 | SUB_INS_WORK1_S360 EQU 86 ;AN000;DT 1 drive 360 installation | ||
| 109 | SUB_INS_WORK2_S360 EQU 87 ;AN000;DT " | ||
| 110 | SUB_INS_SHELL_S360 EQU 88 ;AN000;DT " | ||
| 111 | SUB_INS_STARTT_S360 EQU 89 ;AN000;DT " | ||
| 112 | |||
| 113 | PAN_START360 EQU 90 ;AN000;DT " | ||
| 114 | SUB_COMP_KYS_3 EQU 91 ;AN000;DT message before reboot - diskette | ||
| 115 | |||
| 116 | SUB_INSTALL_COPY EQU 92 ;AN000;DT insert INSTALL copy | ||
| 117 | SUB_INS_OPER2 EQU 93 ;AN000;DT | ||
| 118 | PAN_EXP_MEMORY2 EQU 94 ;AN000;JW Expanded Memory support screen | ||
| 119 | PAN_START720 EQU 95 ;AN000;DT Diskette introduction 720KB | ||
| 120 | PAN_START1440 EQU 96 ;AN000;DT Diskette introduction 1440KB | ||
| 121 | ERR_INS_INSTALL EQU 97 ;AN060;JW Insert the install diskette | ||
| 122 | PAN_CHOOSE_SHELL EQU 98 ; MS-DOS Shell option | ||
| 123 | SUB_INS_WORKING_A EQU 99 ; Insert the WORKING disk in drive A | ||
| 124 | SUB_INS_MSSHELL_A EQU 100 ; Insert the MS-SHELL disk in drive A | ||
| 125 | SUB_INS_SHELL_DISKS EQU 101 ; Ins. MS-SHELL in A; SHELL in B | ||
| 126 | SUB_INS_OP_WORK EQU 102 ; Ins. OPERATING in A; WORKING in B | ||
| 127 | SUB_INS_WORK3_A EQU 103 ; Ins. WORKING3 in drive A | ||
| 128 | |||
| 129 | SCR_DOS_SUPPORT EQU 1 ;AN000; memory workspace list | ||
| 130 | SCR_CTY_KYB EQU 2 ;AN000; type of country/keyboard list | ||
| 131 | SCR_CTY_1 EQU 3 ;AN000; list of countries - code 001 to 046 | ||
| 132 | SCR_CTY_2 EQU 4 ;AN000; list of countries - code 047 to 972 | ||
| 133 | SCR_KYB_1 EQU 5 ;AN000; list of keyboards - code BE to NO | ||
| 134 | SCR_KYB_2 EQU 6 ;AN000; list of keyboards - code PO to none | ||
| 135 | SCR_FR_KYB EQU 7 ;AN000; list of alternate French keyboards | ||
| 136 | SCR_IT_KYB EQU 8 ;AN000; list of alternate Italian keyboards | ||
| 137 | SCR_UK_KYB EQU 9 ;AN000; list of alternate UK keyboards | ||
| 138 | SCR_DEST_B_C EQU 10 ;AN111; install drive list JW | ||
| 139 | SCR_PRT_TYPE EQU 11 ;AN000; list of printers supported | ||
| 140 | SCR_PARALLEL EQU 12 ;AN000; list of parallel printer ports | ||
| 141 | SCR_SERIAL EQU 13 ;AN000; list of serial printer ports | ||
| 142 | SCR_PRT_REDIR EQU 14 ;AN000; list of redirected parallel printer ports | ||
| 143 | SCR_REVIEW EQU 15 ;AN000; accept/view SELECT generated options | ||
| 144 | SCR_FUNC_DISK EQU 16 ;AN000; list of functions supported - disk | ||
| 145 | SCR_FUNC_DISKET EQU 17 ;AN000; list of functions supported - diskette | ||
| 146 | SCR_FIXED_FIRST EQU 18 ;AN000; first fixed disk unused - partition support list | ||
| 147 | SCR_FIXED_BOTH EQU 19 ;AN000; first fixed disk used - partition support list | ||
| 148 | SCR_FORMAT EQU 20 ;AN000; fixed disk partition format | ||
| 149 | SCR_CONTEXT_HLP EQU 21 ;AN000; | ||
| 150 | SCR_INDEX_HLP EQU 21 ;AN000; | ||
| 151 | SCR_TITLE_HLP EQU 22 ;AN000; | ||
| 152 | SCR_ACC_CTY EQU 23 ;AN000; | ||
| 153 | SCR_ACC_KYB EQU 24 ;AN000; | ||
| 154 | SCR_ACC_PRT EQU 25 ;AN000; | ||
| 155 | SCR_COPY_DEST EQU 26 ;AN000;JW DOS location choices | ||
| 156 | SCR_DEST_A_C EQU 27 ;AN111; install drive list JW | ||
| 157 | SCR_CHOOSE_SHELL EQU 28 ; MS-DOS Shell option | ||
| 158 | ; | ||
| 159 | STR_DOS_LOC EQU 1 ;AN000; DOS location field | ||
| 160 | STR_EXT_PARMS EQU 2 ;AN000; external diskette parameters | ||
| 161 | STR_DOS_PATH EQU 3 ;AN000; DOS path | ||
| 162 | STR_DOS_APPEND EQU 4 ;AN000; APPEND path | ||
| 163 | STR_DOS_PROMPT EQU 5 ;AN000; PROMPT path | ||
| 164 | STR_SHELL EQU 6 ;AN000; SHELL parameters | ||
| 165 | STR_KSAM EQU 7 ;AN000; KSAM parameters | ||
| 166 | STR_FASTOPEN EQU 8 ;AN000; FASTOPEN parameters | ||
| 167 | STR_SHARE EQU 9 ;AN000; SHARE parameters | ||
| 168 | STR_GRAPHICS EQU 10 ;AN000; GRAPHICS parameters | ||
| 169 | STR_XMAEM EQU 11 ;AN000; XMAEM expanded memory parameter | ||
| 170 | STR_XMA2EMS EQU 12 ;AN000; XMA2EMS expanded memory parameter | ||
| 171 | STR_VDISK EQU 13 ;AN000; VDISK parameter | ||
| 172 | STR_BREAK EQU 14 ;AN000; BREAK parameter | ||
| 173 | STR_BUFFERS EQU 15 ;AN000; BUFFERS parameter | ||
| 174 | STR_DOS_APPEND_P EQU 16 ;AN000; APPEND parameter JW | ||
| 175 | STR_FCBS EQU 17 ;AN000; FCBS parameter | ||
| 176 | STR_FILES EQU 18 ;AN000; FILES parameter | ||
| 177 | STR_LASTDRIVE EQU 19 ;AN000; LASTDRIVE parameter | ||
| 178 | STR_STACKS EQU 20 ;AN000; STACKS parameter | ||
| 179 | STR_VERIFY EQU 21 ;AN000; VERIFY parameter | ||
| 180 | |||
| 181 | NUM_PRINTER EQU 22 ;AN000; no of printers | ||
| 182 | NUM_EXT_DISK EQU 23 ;AN000; no of external diskettes | ||
| 183 | NUM_YEAR EQU 24 ;AN000; YEAR | ||
| 184 | NUM_MONTH EQU 25 ;AN000; MONTH | ||
| 185 | NUM_DAY EQU 26 ;AN000; DAY | ||
| 186 | NUM_HOUR EQU 27 ;AN000; HOUR | ||
| 187 | NUM_MINUTE EQU 28 ;AN000; MINUTE | ||
| 188 | NUM_SECOND EQU 29 ;AN000; SECOND | ||
| 189 | STR_DEF_CP EQU 30 ;AN000; Default CodePage for the SELECT.DAT file | ||
| 190 | STR_SWISS_KEYB EQU 31 ;AN000; Default SWISS Keyboard | ||
| 191 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
diff --git a/v4.0/src/SELECT/PANEL.MAC b/v4.0/src/SELECT/PANEL.MAC new file mode 100644 index 0000000..dc37545 --- /dev/null +++ b/v4.0/src/SELECT/PANEL.MAC | |||
| @@ -0,0 +1,440 @@ | |||
| 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2 | ; | ||
| 3 | ; PANEL.MAC | ||
| 4 | ; | ||
| 5 | ; This file contains the MACROS defined for the | ||
| 6 | ; screen management and a number of other macros | ||
| 7 | ; identified with CAS services. | ||
| 8 | ; | ||
| 9 | ; This file is included with the control flow files | ||
| 10 | ; for the creation of SELECT.EXE! | ||
| 11 | ; | ||
| 12 | ; DATE: July 3, 1987 | ||
| 13 | ; | ||
| 14 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 15 | ; | ||
| 16 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 17 | ; | ||
| 18 | ; MACRO: PREPARE_CHILDREN | ||
| 19 | ; | ||
| 20 | ; This routine takes the Child panels associated with the | ||
| 21 | ; QM_ACTIVEPAN and adds them to the display queue - pushed | ||
| 22 | ; on as Children. | ||
| 23 | ; | ||
| 24 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 25 | PREPARE_CHILDREN MACRO ;;AN000; | ||
| 26 | CALL HANDLE_CHILDREN ;;AN000; | ||
| 27 | ENDM ;;AN000; | ||
| 28 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 29 | ; | ||
| 30 | ; MACRO: INIT_PQUEUE | ||
| 31 | ; | ||
| 32 | ; This flushes both the Parent/Child queues, clears the | ||
| 33 | ; refresh field table, initializes the refresh field to | ||
| 34 | ; the new Parent panel (with 0 entries), and sets the break | ||
| 35 | ; ON for the parent panel. Also it pushes the parent onto | ||
| 36 | ; the display queue. | ||
| 37 | ; | ||
| 38 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 39 | INIT_PQUEUE MACRO panel ;;AN000; | ||
| 40 | MOV AX,panel ;;AN000; | ||
| 41 | CALL INIT_PQUEUE_CALL ;;AN000; | ||
| 42 | ENDM ;;AN000; | ||
| 43 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 44 | ; | ||
| 45 | ; MACRO: PREPARE_PANEL | ||
| 46 | ; | ||
| 47 | ; This will put the specified panel into the Parent queue | ||
| 48 | ; for display. The QM_OPT2 is already set to break OFF. | ||
| 49 | ; | ||
| 50 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 51 | PREPARE_PANEL MACRO panel ;;AN000; | ||
| 52 | MOV AX,panel ;;AN000; | ||
| 53 | CALL PREPARE_PANEL_CALL ;;AN000; | ||
| 54 | ENDM ;;AN000; | ||
| 55 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 56 | ; | ||
| 57 | ; MACRO: DISPLAY_PANEL | ||
| 58 | ; | ||
| 59 | ; Display panel causes the Parent/Children on the display | ||
| 60 | ; queues to be displayed on the screen. If there are any | ||
| 61 | ; entries in the entry field table, then the break ON is set | ||
| 62 | ; to automatically display these panels. | ||
| 63 | ; | ||
| 64 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 65 | DISPLAY_PANEL MACRO ;;AN000; | ||
| 66 | CALL DISPLAY_PANEL_CALL ;;AN000; | ||
| 67 | ENDM ;;AN000; | ||
| 68 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 69 | ; | ||
| 70 | ; MACRO: DEALLOCATE_MEMORY | ||
| 71 | ; | ||
| 72 | ; | ||
| 73 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 74 | DEALLOCATE_MEMORY MACRO ;;AN000; | ||
| 75 | CALL DEALLOCATE_MEMORY_CALL ;;AN000; | ||
| 76 | ENDM ;;AN000; | ||
| 77 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 78 | ; | ||
| 79 | ; MACRO: ALLOCATE_MEMORY | ||
| 80 | ; | ||
| 81 | ; | ||
| 82 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 83 | ALLOCATE_MEMORY MACRO ;;AN000; | ||
| 84 | CALL ALLOCATE_MEMORY_CALL ;;AN000;allocate segment | ||
| 85 | ENDM ;;AN000; | ||
| 86 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 87 | ; | ||
| 88 | ; MACRO: GET_SCROLL | ||
| 89 | ; | ||
| 90 | ; The scroll field becomes the active field assuming a default | ||
| 91 | ; colour index, and the cursor keys become active. The only | ||
| 92 | ; keys valid for return are specified in the 'fkeys' list. | ||
| 93 | ; | ||
| 94 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 95 | GET_SCROLL MACRO input,index,f_keys ;;AN000; | ||
| 96 | MOV AX,input ;;AN000; | ||
| 97 | MOV BX,index ;;AN000; | ||
| 98 | MOV CX,f_keys&_LEN ;;AN000; | ||
| 99 | LEA DX,f_keys ;;AN000; | ||
| 100 | CALL EXEC_SCROLL_CALL ;;AN000; | ||
| 101 | ENDM ;;AN000; | ||
| 102 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 103 | ; | ||
| 104 | ; MACRO: INIT_SCROLL | ||
| 105 | ; | ||
| 106 | ; Sets up the scroll field with the specified index onto the | ||
| 107 | ; refresh field table. The colour index table is set to a | ||
| 108 | ; different colour to indicate that it is not the active field. | ||
| 109 | ; | ||
| 110 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 111 | INIT_SCROLL MACRO input,index ;;AN000; | ||
| 112 | MOV AX,input ;;AN000; | ||
| 113 | MOV BX,index ;;AN000; | ||
| 114 | CALL INIT_SCROLL_CALL ;;AN000; | ||
| 115 | ENDM ;;AN000; | ||
| 116 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 117 | ; | ||
| 118 | ; MACRO: INIT_SCROLL_W_LIST | ||
| 119 | ; | ||
| 120 | ; Sets up the scroll field with the specified index onto the | ||
| 121 | ; refresh field table. The colour index table is set to a | ||
| 122 | ; different colour to indicate that it is not the active field. | ||
| 123 | ; | ||
| 124 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 125 | INIT_SCROLL_W_LIST MACRO input,list_seg,list_off,num_ele,max_width,max_title,index ;;AN000; | ||
| 126 | MOV AX,input ;;AN000; | ||
| 127 | MOV BX,max_title ;;AN000; | ||
| 128 | MOV CX,num_ele ;;AN000; | ||
| 129 | MOV DX,max_width ;;AN000; | ||
| 130 | MOV SI,list_seg ;;AN000; | ||
| 131 | MOV DI,list_off ;;AN000; | ||
| 132 | CALL INIT_SCROLL_W_LIST_CALL ;;AN000; | ||
| 133 | MOV AX,input ;;AN000; | ||
| 134 | MOV BX,index ;;AN000; | ||
| 135 | CALL INIT_SCROLL_CALL ;;AN000; | ||
| 136 | ENDM ;;AN000; | ||
| 137 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 138 | ; | ||
| 139 | ; MACRO: INIT_SCROLL_W_NUM | ||
| 140 | ; | ||
| 141 | ; Sets up the scroll field with the specified index onto the | ||
| 142 | ; refresh field table. The colour index table is set to a | ||
| 143 | ; different colour to indicate that it is not the active field. | ||
| 144 | ; | ||
| 145 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 146 | INIT_SCROLL_W_NUM MACRO input,num_ele,index ;;AN000; | ||
| 147 | MOV AX,input ;;AN000; | ||
| 148 | MOV CX,num_ele ;;AN000; | ||
| 149 | CALL INIT_SCROLL_W_NUM_CALL ;;AN000; | ||
| 150 | MOV AX,input ;;AN000; | ||
| 151 | MOV BX,index ;;AN000; | ||
| 152 | CALL INIT_SCROLL_CALL ;;AN000; | ||
| 153 | ENDM ;;AN000; | ||
| 154 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 155 | ; | ||
| 156 | ; MACRO: INIT_SCROLL_COLOUR | ||
| 157 | ; | ||
| 158 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 159 | INIT_SCROLL_COLOUR MACRO input,colour ;;AN000; | ||
| 160 | MOV BX,input ;;AN000;get PCSLCTP field | ||
| 161 | MOV AX,colour ;;AN000; | ||
| 162 | CALL SET_SCROLL_COLOUR ;;AN000; | ||
| 163 | ENDM ;;AN000; | ||
| 164 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 165 | ; | ||
| 166 | ; MACRO: SET_SCROLL | ||
| 167 | ; | ||
| 168 | ; The SET_SCROLL will set a scroll field specified to the required | ||
| 169 | ; index in a different colour index to indicate it is NOT the | ||
| 170 | ; active field. | ||
| 171 | ; | ||
| 172 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 173 | SET_SCROLL MACRO input,index ;;AN000; | ||
| 174 | MOV AX,input ;;AN000; | ||
| 175 | MOV BX,index ;;AN000; | ||
| 176 | CALL SET_SCROLL_CALL ;;AN000; | ||
| 177 | ENDM ;;AN000; | ||
| 178 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 179 | ; | ||
| 180 | ; MACRO: GET_FUNCTION | ||
| 181 | ; | ||
| 182 | ; This routine is used to process screens with NO scroll fields | ||
| 183 | ; or input fields. The valid keys are specified in the 'fkeys' | ||
| 184 | ; list. | ||
| 185 | ; | ||
| 186 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 187 | GET_FUNCTION MACRO fkeys ;;AN000; | ||
| 188 | MOV CX,fkeys&_LEN ;;AN000; | ||
| 189 | LEA DX,fkeys ;;AN000; | ||
| 190 | CALL GET_FUNCTION_CALL ;;AN000; | ||
| 191 | ENDM ;;AN000; | ||
| 192 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 193 | ; | ||
| 194 | ; MACRO: INIT_STRING | ||
| 195 | ; | ||
| 196 | ; INIT_STRING is used to add the input entry field onto the | ||
| 197 | ; refresh field table. Unlike the scroll fields, the colour | ||
| 198 | ; index is maintained for the input field. | ||
| 199 | ; | ||
| 200 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 201 | INIT_STRING MACRO input,string,max_string ;;AN000; | ||
| 202 | MOV AX,input ;;AN000; | ||
| 203 | LEA BX,string ;;AN000; | ||
| 204 | MOV SI,max_string ;;AN000; | ||
| 205 | CALL INIT_STRING_CALL ;;AN000; | ||
| 206 | ENDM ;;AN000; | ||
| 207 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 208 | ; | ||
| 209 | ; MACRO: SET_STRING | ||
| 210 | ; | ||
| 211 | ; This set an input field (already contained in the refresh | ||
| 212 | ; field table) on the logical buffer to the defined string. | ||
| 213 | ; | ||
| 214 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 215 | SET_STRING MACRO input,string,max_string ;;AN000; | ||
| 216 | MOV AX,input ;;AN000; | ||
| 217 | LEA BX,string ;;AN000; | ||
| 218 | MOV SI,max_string ;;AN000; | ||
| 219 | CALL SET_STRING_CALL ;;AN000; | ||
| 220 | ENDM ;;AN000; | ||
| 221 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 222 | ; | ||
| 223 | ; MACRO: GET_STRING | ||
| 224 | ; | ||
| 225 | ; Causes the input field specified to become the active input | ||
| 226 | ; field. The keys that will exit this input field are defined | ||
| 227 | ; in the 'fkeys' list. The other characters valid for this | ||
| 228 | ; input field are contained in the ICB. | ||
| 229 | ; | ||
| 230 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 231 | GET_STRING MACRO input,string,max_string,fkeys ;;AN000; | ||
| 232 | MOV AX,input ;;AN000; | ||
| 233 | LEA BX,string ;;AN000; | ||
| 234 | MOV CX,fkeys&_LEN ;;AN000; | ||
| 235 | LEA DX,fkeys ;;AN000; | ||
| 236 | MOV SI,max_string ;;AN000; | ||
| 237 | CALL GET_STRING_CALL ;;AN000; | ||
| 238 | ENDM ;;AN000; | ||
| 239 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 240 | ; | ||
| 241 | ; MACRO: GET_NUMERIC | ||
| 242 | ; | ||
| 243 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 244 | GET_NUMERIC MACRO input,value,minimum,maximum,fkeys,string ;;AN000; | ||
| 245 | LOCAL GN_0 ;;AN000; | ||
| 246 | LOCAL GN_1 ;;AN000; | ||
| 247 | MOV AX,maximum ;;AN000; | ||
| 248 | LEA BX,P_USER_STRING ;;AN000; | ||
| 249 | CALL CONVERT_ASCII ;;AN000; | ||
| 250 | MOV SI,AX ;;AN000; | ||
| 251 | ;; | ||
| 252 | MOV AX,value ;;AN000; | ||
| 253 | GN_0: LEA BX,string+2 ;;AN000; | ||
| 254 | CALL CONVERT_ASCII ;;AN000; | ||
| 255 | MOV string,AX ;;AN000; | ||
| 256 | ;; | ||
| 257 | LEA BX,string ;;AN000; | ||
| 258 | MOV AX,input ;;AN000; | ||
| 259 | MOV CX,fkeys&_LEN ;;AN000; | ||
| 260 | LEA DX,fkeys ;;AN000; | ||
| 261 | CALL GET_STRING_CALL ;;AN000; | ||
| 262 | ;; | ||
| 263 | LEA BX,P_USER_STRING ;;AN000; | ||
| 264 | MOV CX,S_USER_STRING ;;AN000; | ||
| 265 | CALL CONVERT_NUMERIC ;;AN000; | ||
| 266 | ;; | ||
| 267 | CMP N_USER_FUNC,ESCAPE ;;AN000; | ||
| 268 | JE GN_1 ;;AN000; | ||
| 269 | ;; | ||
| 270 | MOV BX,minimum ;;AN000; | ||
| 271 | MOV CX,maximum ;;AN000; | ||
| 272 | CALL CHECK_MIN_MAX ;;AN000; | ||
| 273 | JC GN_0 ;;AN000; | ||
| 274 | ;; | ||
| 275 | GN_1: MOV N_USER_NUMERIC,AX ;;AN000; | ||
| 276 | ENDM ;;AN000; | ||
| 277 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 278 | ; | ||
| 279 | ; MACRO: INIT_NUMERIC | ||
| 280 | ; | ||
| 281 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 282 | INIT_NUMERIC MACRO input,value,maximum,string ;;AN000; | ||
| 283 | MOV AX,maximum ;;AN000; | ||
| 284 | LEA BX,P_USER_STRING ;;AN000; | ||
| 285 | CALL CONVERT_ASCII ;;AN000; | ||
| 286 | MOV SI,AX ;;AN000; | ||
| 287 | ;; | ||
| 288 | MOV AX,value ;;AN000; | ||
| 289 | LEA BX,string+2 ;;AN000; | ||
| 290 | CALL CONVERT_ASCII ;;AN000; | ||
| 291 | MOV string,AX ;;AN000; | ||
| 292 | ;; | ||
| 293 | LEA BX,string ;;AN000; | ||
| 294 | MOV AX,input ;;AN000; | ||
| 295 | CALL INIT_STRING_CALL ;;AN000; | ||
| 296 | ENDM ;;AN000; | ||
| 297 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 298 | ; | ||
| 299 | ; MACRO: SET_NUMERIC | ||
| 300 | ; | ||
| 301 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 302 | SET_NUMERIC MACRO input,value,maximum,string ;;AN000; | ||
| 303 | MOV AX,maximum ;;AN000; | ||
| 304 | LEA BX,P_USER_STRING ;;AN000; | ||
| 305 | CALL CONVERT_ASCII ;;AN000; | ||
| 306 | MOV SI,AX ;;AN000; | ||
| 307 | ;; | ||
| 308 | MOV AX,value ;;AN000; | ||
| 309 | LEA BX,string ;;AN000; | ||
| 310 | CALL CONVERT_ASCII ;;AN000; | ||
| 311 | MOV string,AX ;;AN000; | ||
| 312 | ;; | ||
| 313 | LEA BX,string ;;AN000; | ||
| 314 | MOV AX,input ;;AN000; | ||
| 315 | CALL SET_STRING_CALL ;;AN000; | ||
| 316 | ENDM ;;AN000; | ||
| 317 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 318 | ; | ||
| 319 | ; MACRO: GET_SUPPORT | ||
| 320 | ; | ||
| 321 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 322 | INIT_SCROLL_STATUS MACRO input,status_id ;;AN000; | ||
| 323 | MOV AX,input ;;AN000; | ||
| 324 | LEA SI,status_id ;;AN000; | ||
| 325 | CALL INIT_SCROLL_STATUS_CALL ;;AN000; | ||
| 326 | ENDM ;;AN000; | ||
| 327 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 328 | ; | ||
| 329 | ; MACRO: INIT_SUPPORT | ||
| 330 | ; | ||
| 331 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 332 | INIT_SUPPORT MACRO table,index,status ;;AN000; | ||
| 333 | PUSH SI ;;AN000; | ||
| 334 | LEA SI,table ;;AN000; | ||
| 335 | MOV BX,index ;;AN000; | ||
| 336 | DEC BX ;;AN000; | ||
| 337 | SHL BX,1 ;;AN000; | ||
| 338 | MOV AX,status ;;AN000; | ||
| 339 | MOV [SI+BX],AX ;;AN000; | ||
| 340 | POP SI ;;AN000; | ||
| 341 | ENDM ;;AN000; | ||
| 342 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 343 | ; | ||
| 344 | ; MACRO: RET_SUPPORT | ||
| 345 | ; | ||
| 346 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 347 | RET_SUPPORT MACRO table,index,status ;;AN000; | ||
| 348 | PUSH SI ;;AN000; | ||
| 349 | LEA SI,table ;;AN000; | ||
| 350 | MOV BX,index ;;AN000; | ||
| 351 | DEC BX ;;AN000; | ||
| 352 | SHL BX,1 ;;AN000; | ||
| 353 | MOV AX,[SI+BX] ;;AN000; | ||
| 354 | MOV status,AX ;;AN000; | ||
| 355 | POP SI ;;AN000; | ||
| 356 | ENDM ;;AN000; | ||
| 357 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 358 | ; | ||
| 359 | ; MACRO: TOGGLE_SUPPORT | ||
| 360 | ; | ||
| 361 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 362 | TOGGLE_SUPPORT MACRO table,index ;;AN000; | ||
| 363 | MOV BX,index ;;AN000; | ||
| 364 | LEA DX,table ;;AN000; | ||
| 365 | CALL TOGGLE_SUPPORT_CALL ;;AN000; | ||
| 366 | ENDM ;;AN000; | ||
| 367 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 368 | ; | ||
| 369 | ; MACROS: INITIALIZE_BCHAR | ||
| 370 | ; | ||
| 371 | ; One needs to initialize the background panel colour index | ||
| 372 | ; to match the colour attributes of the Parent panels. The | ||
| 373 | ; index is based on panel #1 (which is assumed to be a good | ||
| 374 | ; sample of the remaining panel colours. | ||
| 375 | ; | ||
| 376 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 377 | INITIALIZE_BCHAR MACRO character ;;AN000; | ||
| 378 | MOV AL,character ;;AN000;Background character | ||
| 379 | MOV PM_BASECHAR,AL ;;AN000; | ||
| 380 | PUSH DI ;;AN000; | ||
| 381 | PUSH DX ;;AN000; | ||
| 382 | PUSH ES ;;AN000; | ||
| 383 | MOV BX,1 ;;AN000;get ES:DI pointer to panel #1 | ||
| 384 | CALL GET_PCB ;;AN000; | ||
| 385 | PUSH ES:[DI]+PCB_CCBID ;;AN000;get panel's color index | ||
| 386 | POP AX ;;AN000; | ||
| 387 | DEC AX ;;AN000;normalize index | ||
| 388 | POP ES ;;AN000; | ||
| 389 | PUSH ES ;;AN000; | ||
| 390 | MOV DI,CRD_CCBVECOFF ;;AN000; | ||
| 391 | PUSH CRD_CCBVECSEG ;;AN000; | ||
| 392 | POP ES ;;AN000; | ||
| 393 | MOV DX,12 ;;AN000;12 entries per colour index | ||
| 394 | MUL DX ;;AN000; | ||
| 395 | ADD DI,AX ;;AN000; | ||
| 396 | MOV AL,ES:[DI] ;;AN000; | ||
| 397 | POP ES ;;AN000; | ||
| 398 | POP DX ;;AN000; | ||
| 399 | POP DI ;;AN000; | ||
| 400 | MOV PM_BASEATTR,AL ;;AN000;set color attribute of background characters | ||
| 401 | ENDM ;;AN000; | ||
| 402 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 403 | ; | ||
| 404 | ; MACRO: RETURN_STRING | ||
| 405 | ; | ||
| 406 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 407 | RETURN_STRING MACRO input,string,maximum ;;AN000; | ||
| 408 | MOV AX,input ;;AN000; | ||
| 409 | MOV DX,maximum ;;AN000; | ||
| 410 | LEA SI,string ;;AN000; | ||
| 411 | CALL RETURN_STRING_CALL ;;AN000; | ||
| 412 | ENDM ;;AN000; | ||
| 413 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 414 | ; | ||
| 415 | ; MACRO: HANDLE_ERROR | ||
| 416 | ; | ||
| 417 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 418 | HANDLE_ERROR MACRO input,action ;;AN000; | ||
| 419 | LOCAL CONTINUE ;;AN000; | ||
| 420 | MOV BX,input ;;AN000; | ||
| 421 | MOV CX,action ;;AN000; | ||
| 422 | CALL HANDLE_ERROR_CALL ;;AN000; | ||
| 423 | JNC CONTINUE ;;AN000; | ||
| 424 | CLEAR_SCREEN2 ;;AC027;SEH ;AN000; | ||
| 425 | JMP EXIT_SELECT ;;AN000; | ||
| 426 | CONTINUE: ;;AN000; | ||
| 427 | ENDM ;;AN000; | ||
| 428 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 429 | ; | ||
| 430 | ; MACRO: INIT_CHAR ;;AN000;JW | ||
| 431 | ; | ||
| 432 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 433 | INIT_CHAR MACRO character,row,column,panid ;;AN000;JW | ||
| 434 | MOV AX,row ;;AN000;JW | ||
| 435 | MOV CX,column ;;AN000;JW | ||
| 436 | MOV DL,character ;;AN000;JW | ||
| 437 | MOV BX,panid ;;AN000;JW | ||
| 438 | CALL INIT_CHAR_CALL ;;AN000;JW | ||
| 439 | ENDM ;;AN000;JW | ||
| 440 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
diff --git a/v4.0/src/SELECT/PANELS.ASM b/v4.0/src/SELECT/PANELS.ASM new file mode 100644 index 0000000..4dc5578 --- /dev/null +++ b/v4.0/src/SELECT/PANELS.ASM | |||
| @@ -0,0 +1,4374 @@ | |||
| 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2 | ; | ||
| 3 | ; | ||
| 4 | ; | ||
| 5 | ; PANELS.ASM | ||
| 6 | ; | ||
| 7 | ; | ||
| 8 | ; | ||
| 9 | ; | ||
| 10 | ; | ||
| 11 | ; | ||
| 12 | ; CODE Segment | ||
| 13 | ; | ||
| 14 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 15 | |||
| 16 | .alpha ; arrange segments alphabetically | ||
| 17 | |||
| 18 | INCLUDE SEL-PAN.INC ;AN024; | ||
| 19 | INCLUDE PAN-LIST.INC ;AN024; | ||
| 20 | ; | ||
| 21 | PUBLIC PCB_VECTOR ;AN024; | ||
| 22 | PUBLIC NUM_PCB ;AN024; | ||
| 23 | ; | ||
| 24 | PANEL EQU 1 ;AN024; | ||
| 25 | SCROLL EQU 0 ;AN024; | ||
| 26 | ; | ||
| 27 | CODE SEGMENT PARA PUBLIC 'CODE' ;AN024; | ||
| 28 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 29 | ; | ||
| 30 | ; Panel Control Block Vector | ||
| 31 | ; | ||
| 32 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 33 | PCB_VECTOR LABEL WORD ;AC024; | ||
| 34 | DW 0,OFFSET PCB1 ;AC024;PCB1 segment, offset | ||
| 35 | DW 0,OFFSET PCB2 ;AC024;PCB2 segment, offset | ||
| 36 | DW 0,OFFSET PCB3 ;AC024;PCB3 segment, offset | ||
| 37 | DW 0,OFFSET PCB4 ;AC024;PCB4 segment, offset | ||
| 38 | DW 0,OFFSET PCB5 ;AC024;PCB5 segment, offset | ||
| 39 | DW 0,OFFSET PCB6 ;AC024;PCB6 segment, offset | ||
| 40 | DW 0,OFFSET PCB7 ;AC024;PCB7 segment, offset | ||
| 41 | DW 0,OFFSET PCB8 ;AC024;PCB8 segment, offset | ||
| 42 | DW 0,OFFSET PCB9 ;AC024;PCB9 segment, offset | ||
| 43 | DW 0,OFFSET PCB10 ;AC024;PCB10 segment, offset | ||
| 44 | DW 0,OFFSET PCB11 ;AC024;PCB11 segment, offset | ||
| 45 | DW 0,OFFSET PCB12 ;AC024;PCB12 segment, offset | ||
| 46 | DW 0,OFFSET PCB13 ;AC024;PCB13 segment, offset | ||
| 47 | DW 0,OFFSET PCB14 ;AC024;PCB14 segment, offset | ||
| 48 | DW 0,OFFSET PCB15 ;AC024;PCB15 segment, offset | ||
| 49 | DW 0,OFFSET PCB16 ;AC024;PCB16 segment, offset | ||
| 50 | DW 0,OFFSET PCB17 ;AC024;PCB17 segment, offset | ||
| 51 | DW 0,OFFSET PCB18 ;AC024;PCB18 segment, offset | ||
| 52 | DW 0,OFFSET PCB19 ;AC024;PCB19 segment, offset | ||
| 53 | DW 0,OFFSET PCB20 ;AC024;PCB20 segment, offset | ||
| 54 | DW 0,OFFSET PCB21 ;AC024;PCB21 segment, offset | ||
| 55 | DW 0,OFFSET PCB22 ;AC024;PCB22 segment, offset | ||
| 56 | DW 0,OFFSET PCB23 ;AC024;PCB23 segment, offset | ||
| 57 | DW 0,OFFSET PCB24 ;AC024;PCB24 segment, offset | ||
| 58 | DW 0,OFFSET PCB25 ;AC024;PCB25 segment, offset | ||
| 59 | DW 0,OFFSET PCB26 ;AC024;PCB26 segment, offset | ||
| 60 | DW 0,OFFSET PCB27 ;AC024;PCB27 segment, offset | ||
| 61 | DW 0,OFFSET PCB28 ;AC024;PCB28 segment, offset | ||
| 62 | DW 0,OFFSET PCB29 ;AC024;PCB29 segment, offset | ||
| 63 | DW 0,OFFSET PCB30 ;AC024;PCB30 segment, offset | ||
| 64 | DW 0,OFFSET PCB31 ;AC024;PCB31 segment, offset | ||
| 65 | DW 0,OFFSET PCB32 ;AC024;PCB32 segment, offset | ||
| 66 | DW 0,OFFSET PCB33 ;AC024;PCB33 segment, offset | ||
| 67 | DW 0,OFFSET PCB34 ;AC024;PCB34 segment, offset | ||
| 68 | DW 0,OFFSET PCB35 ;AC024;PCB35 segment, offset | ||
| 69 | DW 0,OFFSET PCB36 ;AC024;PCB36 segment, offset | ||
| 70 | DW 0,OFFSET PCB37 ;AC024;PCB37 segment, offset | ||
| 71 | DW 0,OFFSET PCB38 ;AC024;PCB38 segment, offset | ||
| 72 | DW 0,OFFSET PCB39 ;AC024;PCB39 segment, offset | ||
| 73 | DW 0,OFFSET PCB40 ;AC024;PCB40 segment, offset | ||
| 74 | DW 0,OFFSET PCB41 ;AC024;PCB41 segment, offset | ||
| 75 | DW 0,OFFSET PCB42 ;AC024;PCB42 segment, offset | ||
| 76 | DW 0,OFFSET PCB43 ;AC024;PCB43 segment, offset | ||
| 77 | DW 0,OFFSET PCB44 ;AC024;PCB44 segment, offset | ||
| 78 | DW 0,OFFSET PCB45 ;AC024;PCB45 segment, offset | ||
| 79 | DW 0,OFFSET PCB46 ;AC024;PCB46 segment, offset | ||
| 80 | DW 0,OFFSET PCB47 ;AC024;PCB47 segment, offset | ||
| 81 | DW 0,OFFSET PCB48 ;AC024;PCB48 segment, offset | ||
| 82 | DW 0,OFFSET PCB49 ;AC024;PCB49 segment, offset | ||
| 83 | DW 0,OFFSET PCB50 ;AC024;PCB50 segment, offset | ||
| 84 | DW 0,OFFSET PCB51 ;AC024;PCB51 segment, offset | ||
| 85 | DW 0,OFFSET PCB52 ;AC024;PCB52 segment, offset | ||
| 86 | DW 0,OFFSET PCB53 ;AC024;PCB53 segment, offset | ||
| 87 | DW 0,OFFSET PCB54 ;AC024;PCB54 segment, offset | ||
| 88 | DW 0,OFFSET PCB55 ;AC024;PCB55 segment, offset | ||
| 89 | DW 0,OFFSET PCB56 ;AC024;PCB56 segment, offset | ||
| 90 | DW 0,OFFSET PCB57 ;AC024;PCB57 segment, offset | ||
| 91 | DW 0,OFFSET PCB58 ;AC024;PCB58 segment, offset | ||
| 92 | DW 0,OFFSET PCB59 ;AC024;PCB59 segment, offset | ||
| 93 | DW 0,OFFSET PCB60 ;AC024;PCB60 segment, offset | ||
| 94 | DW 0,OFFSET PCB61 ;AC024;PCB61 segment, offset | ||
| 95 | DW 0,OFFSET PCB62 ;AC024;PCB62 segment, offset | ||
| 96 | DW 0,OFFSET PCB63 ;AC024;PCB63 segment, offset | ||
| 97 | DW 0,OFFSET PCB64 ;AC024;PCB64 segment, offset | ||
| 98 | DW 0,OFFSET PCB65 ;AC024;PCB65 segment, offset | ||
| 99 | DW 0,OFFSET PCB66 ;AC024;PCB66 segment, offset | ||
| 100 | DW 0,OFFSET PCB67 ;AC024;PCB67 segment, offset | ||
| 101 | DW 0,OFFSET PCB68 ;AC024;PCB68 segment, offset | ||
| 102 | DW 0,OFFSET PCB69 ;AC024;PCB69 segment, offset | ||
| 103 | DW 0,OFFSET PCB70 ;AC024;PCB70 segment, offset | ||
| 104 | DW 0,OFFSET PCB71 ;AC024;PCB71 segment, offset | ||
| 105 | DW 0,OFFSET PCB72 ;AC024;PCB72 segment, offset | ||
| 106 | DW 0,OFFSET PCB73 ;AC024;PCB73 segment, offset | ||
| 107 | DW 0,OFFSET PCB74 ;AC024;PCB74 segment, offset | ||
| 108 | DW 0,OFFSET PCB75 ;AC024;PCB75 segment, offset | ||
| 109 | DW 0,OFFSET PCB76 ;AC024;PCB76 segment, offset | ||
| 110 | DW 0,OFFSET PCB77 ;AC024;PCB77 segment, offset | ||
| 111 | DW 0,OFFSET PCB78 ;AC024;PCB78 segment, offset | ||
| 112 | DW 0,OFFSET PCB79 ;AC024;PCB79 segment, offset | ||
| 113 | DW 0,OFFSET PCB80 ;AC024;PCB80 segment, offset | ||
| 114 | DW 0,OFFSET PCB81 ;AC024;PCB81 segment, offset | ||
| 115 | DW 0,OFFSET PCB82 ;AC024;PCB82 segment, offset | ||
| 116 | DW 0,OFFSET PCB83 ;AC024;PCB82 segment, offset | ||
| 117 | DW 0,OFFSET PCB84 ;AC024;PCB84 segment, offset | ||
| 118 | DW 0,OFFSET PCB85 ;AC024;PCB85 segment, offset | ||
| 119 | DW 0,OFFSET PCB86 ;AC024;PCB86 segment, offset | ||
| 120 | DW 0,OFFSET PCB87 ;AC024;PCB87 segment, offset | ||
| 121 | DW 0,OFFSET PCB88 ;AC024;PCB88 segment, offset | ||
| 122 | DW 0,OFFSET PCB89 ;AC024;PCB89 segment, offset | ||
| 123 | DW 0,OFFSET PCB90 ;AC024;PCB90 segment, offset | ||
| 124 | DW 0,OFFSET PCB91 ;AC024;PCB91 segment, offset | ||
| 125 | DW 0,OFFSET PCB92 ;AC024;PCB92 segment, offset | ||
| 126 | DW 0,OFFSET PCB93 ;AC024;PCB93 segment, offset | ||
| 127 | DW 0,OFFSET PCB94 ;AC024;PCB94 segment, offset | ||
| 128 | DW 0,OFFSET PCB95 ;AC024;PCB95 segment, offset | ||
| 129 | DW 0,OFFSET PCB96 ;AC024;PCB96 segment, offset | ||
| 130 | DW 0,OFFSET PCB97 ;AC024;PCB97 segment, offset | ||
| 131 | DW 0,OFFSET PCB98 ;AC024;PCB98 segment, offset | ||
| 132 | DW 0,OFFSET PCB99 ;AC024;PCB99 segment, offset | ||
| 133 | DW 0,OFFSET PCB100 ;AC024;PCB100 segment, offset | ||
| 134 | DW 0,OFFSET PCB101 ;AC024;PCB101 segment, offset | ||
| 135 | DW 0,OFFSET PCB102 ;AC024;PCB102 segment, offset | ||
| 136 | DW 0,OFFSET PCB103 ;AC024;PCB102 segment, offset | ||
| 137 | NUM_PCB EQU ($-PCB_VECTOR)/4;AN024; | ||
| 138 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 139 | ; | ||
| 140 | ; PAN_WELCOME EQU 1 ; Welcome Screen | ||
| 141 | ; | ||
| 142 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 143 | PCB1 LABEL WORD ;AN000; | ||
| 144 | DW PCB_EXP ;AN000;option word | ||
| 145 | DB 0 ;AN000;GHG new adds | ||
| 146 | DB 0 ;AN000;GHG new adds | ||
| 147 | DB 0 ;AN000;GHG new adds | ||
| 148 | DW 1 ;AN000;row location of panel | ||
| 149 | DW (80-PANEL1_W)/2 ;AN000;column location of panel | ||
| 150 | DW PANEL1_W ;AN000;text char width of panel | ||
| 151 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 152 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 153 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 154 | DW 0 ;AN000;Length compress panel in mem | ||
| 155 | DW 0 ;AN000;Off addr compressed panel | ||
| 156 | DW 0 ;AN000;Seg addr compressed panel | ||
| 157 | DW PANEL1_W*PANEL1_L;AN000;Length expanded panel in mem | ||
| 158 | DW OFFSET PANEL1 ;AN000;Off addr of expanded panel in | ||
| 159 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 160 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 161 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 162 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 163 | DW 0 ;AN000;Len of the panel label | ||
| 164 | DW 0 ;AN000;Off addr of the panel label | ||
| 165 | DW 0 ;AN000;Seg addr of the panel label | ||
| 166 | DW 0 ;AN000;Beg relative row of panel label | ||
| 167 | DW 0 ;AN000;Beg relative col of panel label | ||
| 168 | DW 0 ;AN000;Len of the panel stored in file | ||
| 169 | DW 0 ;AN000;Off address of full filespec | ||
| 170 | DW 0 ;AN000;Seg address of full filespec | ||
| 171 | DW 0 ;AN000;Lower off word of the beg off | ||
| 172 | DW 0 ;AN000;High off word of the beg off | ||
| 173 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 174 | DW 2 ;AN000;Number of child panel entries | ||
| 175 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 176 | DW 0 ;AN000;Seg address of child panel table | ||
| 177 | DW 10 DUP(0) ;AN000; | ||
| 178 | |||
| 179 | CHILD2 LABEL WORD ;AN000; | ||
| 180 | DW CHILD_ENTER ;AN000;child PCB element number | ||
| 181 | DW 25 ;AN000;row override | ||
| 182 | DW 1 ;AN000;column override | ||
| 183 | DW BLACK_WHITE ;AN000;color index pointer override | ||
| 184 | DW 9 ;AN000;function key attribute | ||
| 185 | DB 0,0; ENTER,0 ;AN000;keystroke associated with child | ||
| 186 | DW CHD_ABS ;AN000;option word | ||
| 187 | |||
| 188 | DW CHILD_QUIT ;AN000;child PCB element number | ||
| 189 | DW 25 ;AN000;row override | ||
| 190 | DW PANEL52_W+3 ;AN000;column override | ||
| 191 | DW BLACK_WHITE ;AN000;color index pointer override | ||
| 192 | DW 9 ;AN000;function key attribute | ||
| 193 | DB 0,0; ESCAPE,0 ;AN000;keystroke associated with child | ||
| 194 | DW CHD_ABS ;AN000;option word | ||
| 195 | |||
| 196 | DW CHILD_F1HELP ;AN000;child PCB element number | ||
| 197 | DW 25 ;AN000;row override | ||
| 198 | DW PANEL52_W+3+PANEL51_W+2 ;AC028;column override | ||
| 199 | DW BLACK_WHITE ;AN000;color index pointer override | ||
| 200 | DW 9 ;AN000;function key attribute | ||
| 201 | DB 0,0; 0,F1 ;AN000;keystroke associated with child | ||
| 202 | DW CHD_ABS ;AN000;option word | ||
| 203 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 204 | ; | ||
| 205 | ; PAN_INTRO EQU 2 ; Introduction Screen | ||
| 206 | ; | ||
| 207 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 208 | PCB2 LABEL WORD ;AN000; | ||
| 209 | DW PCB_EXP ;AN000;option word | ||
| 210 | DB 0 ;AN000;GHG new adds | ||
| 211 | DB 0 ;AN000;GHG new adds | ||
| 212 | DB 0 ;AN000;GHG new adds | ||
| 213 | DW 1 ;AN000;row location of panel | ||
| 214 | DW LEFT_COL ;AN000;column location of panel | ||
| 215 | DW PANEL2_W ;AN000;text char width of panel | ||
| 216 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 217 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 218 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 219 | DW 0 ;AN000;Length compress panel in mem | ||
| 220 | DW 0 ;AN000;Off addr compressed panel | ||
| 221 | DW 0 ;AN000;Seg addr compressed panel | ||
| 222 | DW PANEL2_W*PANEL2_L;AN000;Length expanded panel in mem | ||
| 223 | DW OFFSET PANEL2 ;AN000;Off addr of expanded panel in | ||
| 224 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 225 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 226 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 227 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 228 | DW 0 ;AN000;Len of the panel label | ||
| 229 | DW 0 ;AN000;Off addr of the panel label | ||
| 230 | DW 0 ;AN000;Seg addr of the panel label | ||
| 231 | DW 0 ;AN000;Beg relative row of panel label | ||
| 232 | DW 0 ;AN000;Beg relative col of panel label | ||
| 233 | DW 0 ;AN000;Len of the panel stored in file | ||
| 234 | DW 0 ;AN000;Off address of full filespec | ||
| 235 | DW 0 ;AN000;Seg address of full filespec | ||
| 236 | DW 0 ;AN000;Lower off word of the beg off | ||
| 237 | DW 0 ;AN000;High off word of the beg off | ||
| 238 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 239 | DW 2 ;AN000;Number of child panel entries | ||
| 240 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 241 | DW 0 ;AN000;Seg address of child panel table | ||
| 242 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 243 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 244 | ; | ||
| 245 | ; PAN_CONFIRM EQU 3 ; Confirmation Screen | ||
| 246 | ; | ||
| 247 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 248 | PCB3 LABEL WORD ;AN000; | ||
| 249 | DW PCB_EXP ;AN000;option word | ||
| 250 | DB 0 ;AN000;GHG new adds | ||
| 251 | DB 0 ;AN000;GHG new adds | ||
| 252 | DB 0 ;AN000;GHG new adds | ||
| 253 | DW 1 ;AN000;row location of panel | ||
| 254 | DW (80-PANEL3_W)/2 ;AN000;column location of panel | ||
| 255 | DW PANEL3_W ;AN000;text char width of panel | ||
| 256 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 257 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 258 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 259 | DW 0 ;AN000;Length compress panel in mem | ||
| 260 | DW 0 ;AN000;Off addr compressed panel | ||
| 261 | DW 0 ;AN000;Seg addr compressed panel | ||
| 262 | DW PANEL3_W*PANEL3_L;AN000;Length expanded panel in mem | ||
| 263 | DW OFFSET PANEL3 ;AN000;Off addr of expanded panel in | ||
| 264 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 265 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 266 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 267 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 268 | DW 0 ;AN000;Len of the panel label | ||
| 269 | DW 0 ;AN000;Off addr of the panel label | ||
| 270 | DW 0 ;AN000;Seg addr of the panel label | ||
| 271 | DW 0 ;AN000;Beg relative row of panel label | ||
| 272 | DW 0 ;AN000;Beg relative col of panel label | ||
| 273 | DW 0 ;AN000;Len of the panel stored in file | ||
| 274 | DW 0 ;AN000;Off address of full filespec | ||
| 275 | DW 0 ;AN000;Seg address of full filespec | ||
| 276 | DW 0 ;AN000;Lower off word of the beg off | ||
| 277 | DW 0 ;AN000;High off word of the beg off | ||
| 278 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 279 | DW 2 ;AN000;Number of child panel entries | ||
| 280 | DW OFFSET CHILD4 ;AN000;Off address of child panel table | ||
| 281 | DW 0 ;AN000;Seg address of child panel table | ||
| 282 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 283 | |||
| 284 | CHILD4 LABEL WORD ;AN000; | ||
| 285 | DW CHILD_F3EXIT ;AN000;child PCB element number | ||
| 286 | DW 25 ;AN000;row override | ||
| 287 | DW 1 ;AN000;column override | ||
| 288 | DW WHITE_RED ;AN000;color index pointer override | ||
| 289 | DW 9 ;AN000;function key attribute | ||
| 290 | DB 0,0; 0,F3 ;AN000;keystroke associated with child | ||
| 291 | DW CHD_ABS ;AN000;option word | ||
| 292 | |||
| 293 | DW CHILD_ENTER ;AN000;child PCB element number | ||
| 294 | DW 25 ;AN000;row override | ||
| 295 | DW PANEL40_W+3 ;AN000;column override | ||
| 296 | DW WHITE_RED ;AN000;color index pointer override | ||
| 297 | DW 9 ;AN000;function key attribute | ||
| 298 | DB 0,0; 13,0 ;AN000;keystroke associated with child | ||
| 299 | DW CHD_ABS ;AN000;option word | ||
| 300 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 301 | ; | ||
| 302 | ; PAN_WORKSPACE EQU 4 ; User memory needs screen | ||
| 303 | ; | ||
| 304 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 305 | PCB4 LABEL WORD ;AN000; | ||
| 306 | DW PCB_EXP ;AN000;option word | ||
| 307 | DB 0 ;AN000;GHG new adds | ||
| 308 | DB 0 ;AN000;GHG new adds | ||
| 309 | DB 0 ;AN000;GHG new adds | ||
| 310 | DW 1 ;AN000;row location of panel | ||
| 311 | DW LEFT_COL ;AN000;column location of panel | ||
| 312 | DW PANEL4_W ;AN000;text char width of panel | ||
| 313 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 314 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 315 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 316 | DW 0 ;AN000;Length compress panel in mem | ||
| 317 | DW 0 ;AN000;Off addr compressed panel | ||
| 318 | DW 0 ;AN000;Seg addr compressed panel | ||
| 319 | DW PANEL4_W*PANEL4_L;AN000;Length expanded panel in mem | ||
| 320 | DW OFFSET PANEL4 ;AN000;Off addr of expanded panel in | ||
| 321 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 322 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 323 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 324 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 325 | DW 0 ;AN000;Len of the panel label | ||
| 326 | DW 0 ;AN000;Off addr of the panel label | ||
| 327 | DW 0 ;AN000;Seg addr of the panel label | ||
| 328 | DW 0 ;AN000;Beg relative row of panel label | ||
| 329 | DW 0 ;AN000;Beg relative col of panel label | ||
| 330 | DW 0 ;AN000;Len of the panel stored in file | ||
| 331 | DW 0 ;AN000;Off address of full filespec | ||
| 332 | DW 0 ;AN000;Seg address of full filespec | ||
| 333 | DW 0 ;AN000;Lower off word of the beg off | ||
| 334 | DW 0 ;AN000;High off word of the beg off | ||
| 335 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 336 | DW 3 ;AN000;Number of child panel entries | ||
| 337 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 338 | DW 0 ;AN000;Seg address of child panel table | ||
| 339 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 340 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 341 | ; | ||
| 342 | ; PAN_CTY_KYB EQU 5 ; | ||
| 343 | ; | ||
| 344 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 345 | PCB5 LABEL WORD ;AN000; | ||
| 346 | DW PCB_EXP ;AN000;option word | ||
| 347 | DB 0 ;AN000;GHG new adds | ||
| 348 | DB 0 ;AN000;GHG new adds | ||
| 349 | DB 0 ;AN000;GHG new adds | ||
| 350 | DW 1 ;AN000;row location of panel | ||
| 351 | DW LEFT_COL ;AN000;column location of panel | ||
| 352 | DW PANEL5_W ;AN000;text char width of panel | ||
| 353 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 354 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 355 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 356 | DW 0 ;AN000;Length compress panel in mem | ||
| 357 | DW 0 ;AN000;Off addr compressed panel | ||
| 358 | DW 0 ;AN000;Seg addr compressed panel | ||
| 359 | DW PANEL5_W*PANEL5_L;AN000;Length expanded panel in mem | ||
| 360 | DW OFFSET PANEL5 ;AN000;Off addr of expanded panel in | ||
| 361 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 362 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 363 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 364 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 365 | DW 0 ;AN000;Len of the panel label | ||
| 366 | DW 0 ;AN000;Off addr of the panel label | ||
| 367 | DW 0 ;AN000;Seg addr of the panel label | ||
| 368 | DW 0 ;AN000;Beg relative row of panel label | ||
| 369 | DW 0 ;AN000;Beg relative col of panel label | ||
| 370 | DW 0 ;AN000;Len of the panel stored in file | ||
| 371 | DW 0 ;AN000;Off address of full filespec | ||
| 372 | DW 0 ;AN000;Seg address of full filespec | ||
| 373 | DW 0 ;AN000;Lower off word of the beg off | ||
| 374 | DW 0 ;AN000;High off word of the beg off | ||
| 375 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 376 | DW 3 ;AN000;Number of child panel entries | ||
| 377 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 378 | DW 0 ;AN000;Seg address of child panel table | ||
| 379 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 380 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 381 | ; | ||
| 382 | ; PAN_COUNTRY EQU 6 ; | ||
| 383 | ; | ||
| 384 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 385 | PCB6 LABEL WORD ;AN000; | ||
| 386 | DW PCB_EXP ;AN000;option word | ||
| 387 | DB 0 ;AN000;GHG new adds | ||
| 388 | DB 0 ;AN000;GHG new adds | ||
| 389 | DB 0 ;AN000;GHG new adds | ||
| 390 | DW 1 ;AN000;row location of panel | ||
| 391 | DW LEFT_COL ;AN000;column location of panel | ||
| 392 | DW PANEL6_W ;AN000;text char width of panel | ||
| 393 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 394 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 395 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 396 | DW 0 ;AN000;Length compress panel in mem | ||
| 397 | DW 0 ;AN000;Off addr compressed panel | ||
| 398 | DW 0 ;AN000;Seg addr compressed panel | ||
| 399 | DW PANEL6_W*PANEL6_L;AN000;Length expanded panel in mem | ||
| 400 | DW OFFSET PANEL6 ;AN000;Off addr of expanded panel in | ||
| 401 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 402 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 403 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 404 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 405 | DW 0 ;AN000;Len of the panel label | ||
| 406 | DW 0 ;AN000;Off addr of the panel label | ||
| 407 | DW 0 ;AN000;Seg addr of the panel label | ||
| 408 | DW 0 ;AN000;Beg relative row of panel label | ||
| 409 | DW 0 ;AN000;Beg relative col of panel label | ||
| 410 | DW 0 ;AN000;Len of the panel stored in file | ||
| 411 | DW 0 ;AN000;Off address of full filespec | ||
| 412 | DW 0 ;AN000;Seg address of full filespec | ||
| 413 | DW 0 ;AN000;Lower off word of the beg off | ||
| 414 | DW 0 ;AN000;High off word of the beg off | ||
| 415 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 416 | DW 3 ;AN000;Number of child panel entries | ||
| 417 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 418 | DW 0 ;AN000;Seg address of child panel table | ||
| 419 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 420 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 421 | ; | ||
| 422 | ; PAN_KEYBOARD EQU 7 ; | ||
| 423 | ; | ||
| 424 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 425 | PCB7 LABEL WORD ;AN000; | ||
| 426 | DW PCB_EXP ;AN000;option word | ||
| 427 | DB 0 ;AN000;GHG new adds | ||
| 428 | DB 0 ;AN000;GHG new adds | ||
| 429 | DB 0 ;AN000;GHG new adds | ||
| 430 | DW 1 ;AN000;row location of panel | ||
| 431 | DW LEFT_COL ;AN000;column location of panel | ||
| 432 | DW PANEL7_W ;AN000;text char width of panel | ||
| 433 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 434 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 435 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 436 | DW 0 ;AN000;Length compress panel in mem | ||
| 437 | DW 0 ;AN000;Off addr compressed panel | ||
| 438 | DW 0 ;AN000;Seg addr compressed panel | ||
| 439 | DW PANEL7_W*PANEL7_L;AN000;Length expanded panel in mem | ||
| 440 | DW OFFSET PANEL7 ;AN000;Off addr of expanded panel in | ||
| 441 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 442 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 443 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 444 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 445 | DW 0 ;AN000;Len of the panel label | ||
| 446 | DW 0 ;AN000;Off addr of the panel label | ||
| 447 | DW 0 ;AN000;Seg addr of the panel label | ||
| 448 | DW 0 ;AN000;Beg relative row of panel label | ||
| 449 | DW 0 ;AN000;Beg relative col of panel label | ||
| 450 | DW 0 ;AN000;Len of the panel stored in file | ||
| 451 | DW 0 ;AN000;Off address of full filespec | ||
| 452 | DW 0 ;AN000;Seg address of full filespec | ||
| 453 | DW 0 ;AN000;Lower off word of the beg off | ||
| 454 | DW 0 ;AN000;High off word of the beg off | ||
| 455 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 456 | DW 3 ;AN000;Number of child panel entries | ||
| 457 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 458 | DW 0 ;AN000;Seg address of child panel table | ||
| 459 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 460 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 461 | ; | ||
| 462 | ; PAN_KYBD_ALT EQU 8 ; | ||
| 463 | ; | ||
| 464 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 465 | PCB8 LABEL WORD ;AN000; | ||
| 466 | DW PCB_EXP ;AN000;option word | ||
| 467 | DB 0 ;AN000;GHG new adds | ||
| 468 | DB 0 ;AN000;GHG new adds | ||
| 469 | DB 0 ;AN000;GHG new adds | ||
| 470 | DW 1 ;AN000;row location of panel | ||
| 471 | DW LEFT_COL ;AN000;column location of panel | ||
| 472 | DW PANEL8_W ;AN000;text char width of panel | ||
| 473 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 474 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 475 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 476 | DW 0 ;AN000;Length compress panel in mem | ||
| 477 | DW 0 ;AN000;Off addr compressed panel | ||
| 478 | DW 0 ;AN000;Seg addr compressed panel | ||
| 479 | DW PANEL8_W*PANEL8_L;AN000;Length expanded panel in mem | ||
| 480 | DW OFFSET PANEL8 ;AN000;Off addr of expanded panel in | ||
| 481 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 482 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 483 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 484 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 485 | DW 0 ;AN000;Len of the panel label | ||
| 486 | DW 0 ;AN000;Off addr of the panel label | ||
| 487 | DW 0 ;AN000;Seg addr of the panel label | ||
| 488 | DW 0 ;AN000;Beg relative row of panel label | ||
| 489 | DW 0 ;AN000;Beg relative col of panel label | ||
| 490 | DW 0 ;AN000;Len of the panel stored in file | ||
| 491 | DW 0 ;AN000;Off address of full filespec | ||
| 492 | DW 0 ;AN000;Seg address of full filespec | ||
| 493 | DW 0 ;AN000;Lower off word of the beg off | ||
| 494 | DW 0 ;AN000;High off word of the beg off | ||
| 495 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 496 | DW 3 ;AN000;Number of child panel entries | ||
| 497 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 498 | DW 0 ;AN000;Seg address of child panel table | ||
| 499 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 500 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 501 | ; | ||
| 502 | ; PAN_DEST_DRIVE EQU 9 ; | ||
| 503 | ; | ||
| 504 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 505 | PCB9 LABEL WORD ;AN000; | ||
| 506 | DW PCB_EXP ;AN000;option word | ||
| 507 | DB 0 ;AN000;GHG new adds | ||
| 508 | DB 0 ;AN000;GHG new adds | ||
| 509 | DB 0 ;AN000;GHG new adds | ||
| 510 | DW 1 ;AN000;row location of panel | ||
| 511 | DW LEFT_COL ;AN000;column location of panel | ||
| 512 | DW PANEL9_W ;AN000;text char width of panel | ||
| 513 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 514 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 515 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 516 | DW 0 ;AN000;Length compress panel in mem | ||
| 517 | DW 0 ;AN000;Off addr compressed panel | ||
| 518 | DW 0 ;AN000;Seg addr compressed panel | ||
| 519 | DW PANEL9_W*PANEL9_L ;AN000;Length expanded panel in mem | ||
| 520 | DW OFFSET PANEL9 ;AN000;Off addr of expanded panel in | ||
| 521 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 522 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 523 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 524 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 525 | DW 0 ;AN000;Len of the panel label | ||
| 526 | DW 0 ;AN000;Off addr of the panel label | ||
| 527 | DW 0 ;AN000;Seg addr of the panel label | ||
| 528 | DW 0 ;AN000;Beg relative row of panel label | ||
| 529 | DW 0 ;AN000;Beg relative col of panel label | ||
| 530 | DW 0 ;AN000;Len of the panel stored in file | ||
| 531 | DW 0 ;AN000;Off address of full filespec | ||
| 532 | DW 0 ;AN000;Seg address of full filespec | ||
| 533 | DW 0 ;AN000;Lower off word of the beg off | ||
| 534 | DW 0 ;AN000;High off word of the beg off | ||
| 535 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 536 | DW 3 ;AN000;Number of child panel entries | ||
| 537 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 538 | DW 0 ;AN000;Seg address of child panel table | ||
| 539 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 540 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 541 | ; | ||
| 542 | ; PAN_DOS_LOC EQU 10 ; | ||
| 543 | ; | ||
| 544 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 545 | PCB10 LABEL WORD ;AN000; | ||
| 546 | DW PCB_EXP ;AN000;option word | ||
| 547 | DB 0 ;AN000;GHG new adds | ||
| 548 | DB 0 ;AN000;GHG new adds | ||
| 549 | DB 0 ;AN000;GHG new adds | ||
| 550 | DW 1 ;AN000;row location of panel | ||
| 551 | DW LEFT_COL ;AN000;column location of panel | ||
| 552 | DW PANEL10_W ;AN000;text char width of panel | ||
| 553 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 554 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 555 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 556 | DW 0 ;AN000;Length compress panel in mem | ||
| 557 | DW 0 ;AN000;Off addr compressed panel | ||
| 558 | DW 0 ;AN000;Seg addr compressed panel | ||
| 559 | DW PANEL10_W*PANEL10_L;AN000;Length expanded panel in mem | ||
| 560 | DW OFFSET PANEL10 ;AN000;Off addr of expanded panel in | ||
| 561 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 562 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 563 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 564 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 565 | DW 0 ;AN000;Len of the panel label | ||
| 566 | DW 0 ;AN000;Off addr of the panel label | ||
| 567 | DW 0 ;AN000;Seg addr of the panel label | ||
| 568 | DW 0 ;AN000;Beg relative row of panel label | ||
| 569 | DW 0 ;AN000;Beg relative col of panel label | ||
| 570 | DW 0 ;AN000;Len of the panel stored in file | ||
| 571 | DW 0 ;AN000;Off address of full filespec | ||
| 572 | DW 0 ;AN000;Seg address of full filespec | ||
| 573 | DW 0 ;AN000;Lower off word of the beg off | ||
| 574 | DW 0 ;AN000;High off word of the beg off | ||
| 575 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 576 | DW 3 ;AN000;Number of child panel entries | ||
| 577 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 578 | DW 0 ;AN000;Seg address of child panel table | ||
| 579 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 580 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 581 | ; | ||
| 582 | ; PAN_PRINTER EQU 11 ; | ||
| 583 | ; | ||
| 584 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 585 | PCB11 LABEL WORD ;AN000; | ||
| 586 | DW PCB_EXP ;AN000;option word | ||
| 587 | DB 0 ;AN000;GHG new adds | ||
| 588 | DB 0 ;AN000;GHG new adds | ||
| 589 | DB 0 ;AN000;GHG new adds | ||
| 590 | DW 1 ;AN000;row location of panel | ||
| 591 | DW LEFT_COL ;AN000;column location of panel | ||
| 592 | DW PANEL11_W ;AN000;text char width of panel | ||
| 593 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 594 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 595 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 596 | DW 0 ;AN000;Length compress panel in mem | ||
| 597 | DW 0 ;AN000;Off addr compressed panel | ||
| 598 | DW 0 ;AN000;Seg addr compressed panel | ||
| 599 | DW PANEL11_W*PANEL11_L;AN000;Length expanded panel in mem | ||
| 600 | DW OFFSET PANEL11 ;AN000;Off addr of expanded panel in | ||
| 601 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 602 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 603 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 604 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 605 | DW 0 ;AN000;Len of the panel label | ||
| 606 | DW 0 ;AN000;Off addr of the panel label | ||
| 607 | DW 0 ;AN000;Seg addr of the panel label | ||
| 608 | DW 0 ;AN000;Beg relative row of panel label | ||
| 609 | DW 0 ;AN000;Beg relative col of panel label | ||
| 610 | DW 0 ;AN000;Len of the panel stored in file | ||
| 611 | DW 0 ;AN000;Off address of full filespec | ||
| 612 | DW 0 ;AN000;Seg address of full filespec | ||
| 613 | DW 0 ;AN000;Lower off word of the beg off | ||
| 614 | DW 0 ;AN000;High off word of the beg off | ||
| 615 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 616 | DW 3 ;AN000;Number of child panel entries | ||
| 617 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 618 | DW 0 ;AN000;Seg address of child panel table | ||
| 619 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 620 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 621 | ; | ||
| 622 | ; PAN_PRT_TYPE EQU 12 ; | ||
| 623 | ; | ||
| 624 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 625 | PCB12 LABEL WORD ;AN000; | ||
| 626 | DW PCB_EXP ;AN000;option word | ||
| 627 | DB 0 ;AN000;GHG new adds | ||
| 628 | DB 0 ;AN000;GHG new adds | ||
| 629 | DB 0 ;AN000;GHG new adds | ||
| 630 | DW 1 ;AN000;row location of panel | ||
| 631 | DW LEFT_COL ;AN000;column location of panel | ||
| 632 | DW PANEL12_W ;AN000;text char width of panel | ||
| 633 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 634 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 635 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 636 | DW 0 ;AN000;Length compress panel in mem | ||
| 637 | DW 0 ;AN000;Off addr compressed panel | ||
| 638 | DW 0 ;AN000;Seg addr compressed panel | ||
| 639 | DW PANEL12_W*PANEL12_L;AN000;Length expanded panel in mem | ||
| 640 | DW OFFSET PANEL12 ;AN000;Off addr of expanded panel in | ||
| 641 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 642 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 643 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 644 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 645 | DW 0 ;AN000;Len of the panel label | ||
| 646 | DW 0 ;AN000;Off addr of the panel label | ||
| 647 | DW 0 ;AN000;Seg addr of the panel label | ||
| 648 | DW 0 ;AN000;Beg relative row of panel label | ||
| 649 | DW 0 ;AN000;Beg relative col of panel label | ||
| 650 | DW 0 ;AN000;Len of the panel stored in file | ||
| 651 | DW 0 ;AN000;Off address of full filespec | ||
| 652 | DW 0 ;AN000;Seg address of full filespec | ||
| 653 | DW 0 ;AN000;Lower off word of the beg off | ||
| 654 | DW 0 ;AN000;High off word of the beg off | ||
| 655 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 656 | DW 3 ;AN000;Number of child panel entries | ||
| 657 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 658 | DW 0 ;AN000;Seg address of child panel table | ||
| 659 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 660 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 661 | ; | ||
| 662 | ; PAN_PARALLEL EQU 13 ; | ||
| 663 | ; | ||
| 664 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 665 | PCB13 LABEL WORD ;AN000; | ||
| 666 | DW PCB_EXP ;AN000;option word | ||
| 667 | DB 0 ;AN000;GHG new adds | ||
| 668 | DB 0 ;AN000;GHG new adds | ||
| 669 | DB 0 ;AN000;GHG new adds | ||
| 670 | DW 1 ;AN000;row location of panel | ||
| 671 | DW LEFT_COL ;AN000;column location of panel | ||
| 672 | DW PANEL13_W ;AN000;text char width of panel | ||
| 673 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 674 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 675 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 676 | DW 0 ;AN000;Length compress panel in mem | ||
| 677 | DW 0 ;AN000;Off addr compressed panel | ||
| 678 | DW 0 ;AN000;Seg addr compressed panel | ||
| 679 | DW PANEL13_W*PANEL13_L;AN000;Length expanded panel in mem | ||
| 680 | DW OFFSET PANEL13 ;AN000;Off addr of expanded panel in | ||
| 681 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 682 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 683 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 684 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 685 | DW 0 ;AN000;Len of the panel label | ||
| 686 | DW 0 ;AN000;Off addr of the panel label | ||
| 687 | DW 0 ;AN000;Seg addr of the panel label | ||
| 688 | DW 0 ;AN000;Beg relative row of panel label | ||
| 689 | DW 0 ;AN000;Beg relative col of panel label | ||
| 690 | DW 0 ;AN000;Len of the panel stored in file | ||
| 691 | DW 0 ;AN000;Off address of full filespec | ||
| 692 | DW 0 ;AN000;Seg address of full filespec | ||
| 693 | DW 0 ;AN000;Lower off word of the beg off | ||
| 694 | DW 0 ;AN000;High off word of the beg off | ||
| 695 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 696 | DW 3 ;AN000;Number of child panel entries | ||
| 697 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 698 | DW 0 ;AN000;Seg address of child panel table | ||
| 699 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 700 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 701 | ; | ||
| 702 | ; PAN_SERIAL EQU 14 ; | ||
| 703 | ; | ||
| 704 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 705 | PCB14 LABEL WORD ;AN000; | ||
| 706 | DW PCB_EXP ;AN000;option word | ||
| 707 | DB 0 ;AN000;GHG new adds | ||
| 708 | DB 0 ;AN000;GHG new adds | ||
| 709 | DB 0 ;AN000;GHG new adds | ||
| 710 | DW 1 ;AN000;row location of panel | ||
| 711 | DW LEFT_COL ;AN000;column location of panel | ||
| 712 | DW PANEL14_W ;AN000;text char width of panel | ||
| 713 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 714 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 715 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 716 | DW 0 ;AN000;Length compress panel in mem | ||
| 717 | DW 0 ;AN000;Off addr compressed panel | ||
| 718 | DW 0 ;AN000;Seg addr compressed panel | ||
| 719 | DW PANEL14_W*PANEL14_L;AN000;Length expanded panel in mem | ||
| 720 | DW OFFSET PANEL14 ;AN000;Off addr of expanded panel in | ||
| 721 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 722 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 723 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 724 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 725 | DW 0 ;AN000;Len of the panel label | ||
| 726 | DW 0 ;AN000;Off addr of the panel label | ||
| 727 | DW 0 ;AN000;Seg addr of the panel label | ||
| 728 | DW 0 ;AN000;Beg relative row of panel label | ||
| 729 | DW 0 ;AN000;Beg relative col of panel label | ||
| 730 | DW 0 ;AN000;Len of the panel stored in file | ||
| 731 | DW 0 ;AN000;Off address of full filespec | ||
| 732 | DW 0 ;AN000;Seg address of full filespec | ||
| 733 | DW 0 ;AN000;Lower off word of the beg off | ||
| 734 | DW 0 ;AN000;High off word of the beg off | ||
| 735 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 736 | DW 3 ;AN000;Number of child panel entries | ||
| 737 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 738 | DW 0 ;AN000;Seg address of child panel table | ||
| 739 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 740 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 741 | ; | ||
| 742 | ; PAN_REVIEW EQU 15 ; | ||
| 743 | ; | ||
| 744 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 745 | PCB15 LABEL WORD ;AN000; | ||
| 746 | DW PCB_EXP ;AN000;option word | ||
| 747 | DB 0 ;AN000;GHG new adds | ||
| 748 | DB 0 ;AN000;GHG new adds | ||
| 749 | DB 0 ;AN000;GHG new adds | ||
| 750 | DW 1 ;AN000;row location of panel | ||
| 751 | DW LEFT_COL ;AN000;column location of panel | ||
| 752 | DW PANEL15_W ;AN000;text char width of panel | ||
| 753 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 754 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 755 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 756 | DW 0 ;AN000;Length compress panel in mem | ||
| 757 | DW 0 ;AN000;Off addr compressed panel | ||
| 758 | DW 0 ;AN000;Seg addr compressed panel | ||
| 759 | DW PANEL15_W*PANEL15_L;AN000;Length expanded panel in mem | ||
| 760 | DW OFFSET PANEL15 ;AN000;Off addr of expanded panel in | ||
| 761 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 762 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 763 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 764 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 765 | DW 0 ;AN000;Len of the panel label | ||
| 766 | DW 0 ;AN000;Off addr of the panel label | ||
| 767 | DW 0 ;AN000;Seg addr of the panel label | ||
| 768 | DW 0 ;AN000;Beg relative row of panel label | ||
| 769 | DW 0 ;AN000;Beg relative col of panel label | ||
| 770 | DW 0 ;AN000;Len of the panel stored in file | ||
| 771 | DW 0 ;AN000;Off address of full filespec | ||
| 772 | DW 0 ;AN000;Seg address of full filespec | ||
| 773 | DW 0 ;AN000;Lower off word of the beg off | ||
| 774 | DW 0 ;AN000;High off word of the beg off | ||
| 775 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 776 | DW 3 ;AN000;Number of child panel entries | ||
| 777 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 778 | DW 0 ;AN000;Seg address of child panel table | ||
| 779 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 780 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 781 | ; | ||
| 782 | ; PAN_FUNC_DISK EQU 16 ; | ||
| 783 | ; | ||
| 784 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 785 | PCB16 LABEL WORD ;AN000; | ||
| 786 | DW PCB_EXP ;AN000;option word | ||
| 787 | DB 0 ;AN000;GHG new adds | ||
| 788 | DB 0 ;AN000;GHG new adds | ||
| 789 | DB 0 ;AN000;GHG new adds | ||
| 790 | DW 1 ;AN000;row location of panel | ||
| 791 | DW LEFT_COL ;AN000;column location of panel | ||
| 792 | DW PANEL16_W ;AN000;text char width of panel | ||
| 793 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 794 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 795 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 796 | DW 0 ;AN000;Length compress panel in mem | ||
| 797 | DW 0 ;AN000;Off addr compressed panel | ||
| 798 | DW 0 ;AN000;Seg addr compressed panel | ||
| 799 | DW PANEL16_W*PANEL16_L;AN000;Length expanded panel in mem | ||
| 800 | DW OFFSET PANEL16 ;AN000;Off addr of expanded panel in | ||
| 801 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 802 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 803 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 804 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 805 | DW 0 ;AN000;Len of the panel label | ||
| 806 | DW 0 ;AN000;Off addr of the panel label | ||
| 807 | DW 0 ;AN000;Seg addr of the panel label | ||
| 808 | DW 0 ;AN000;Beg relative row of panel label | ||
| 809 | DW 0 ;AN000;Beg relative col of panel label | ||
| 810 | DW 0 ;AN000;Len of the panel stored in file | ||
| 811 | DW 0 ;AN000;Off address of full filespec | ||
| 812 | DW 0 ;AN000;Seg address of full filespec | ||
| 813 | DW 0 ;AN000;Lower off word of the beg off | ||
| 814 | DW 0 ;AN000;High off word of the beg off | ||
| 815 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 816 | DW 3 ;AN000;Number of child panel entries | ||
| 817 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 818 | DW 0 ;AN000;Seg address of child panel table | ||
| 819 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 820 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 821 | ; | ||
| 822 | ; err_prt_no_hdwr EQU 17 ; | ||
| 823 | ; | ||
| 824 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 825 | PCB17 LABEL WORD ;AN000; | ||
| 826 | DW PCB_EXP ;AN000;option word | ||
| 827 | DB 0 ;AN000;GHG new adds | ||
| 828 | DB 0 ;AN000;GHG new adds | ||
| 829 | DB 0 ;AN000;GHG new adds | ||
| 830 | DW 11 ;AN000;row location of panel | ||
| 831 | DW LEFT_COL+1 ;AN000;column location of panel | ||
| 832 | DW PANEL17_W ;AN000;text char width of panel | ||
| 833 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 834 | DW WHITE_RED ;AN000;Index number of log color | ||
| 835 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 836 | DW 0 ;AN000;Length compress panel in mem | ||
| 837 | DW 0 ;AN000;Off addr compressed panel | ||
| 838 | DW 0 ;AN000;Seg addr compressed panel | ||
| 839 | DW PANEL17_W*PANEL17_L;AN000;Length expanded panel in mem | ||
| 840 | DW OFFSET PANEL17 ;AN000;Off addr of expanded panel in | ||
| 841 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 842 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 843 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 844 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 845 | DW 0 ;AN000;Len of the panel label | ||
| 846 | DW 0 ;AN000;Off addr of the panel label | ||
| 847 | DW 0 ;AN000;Seg addr of the panel label | ||
| 848 | DW 0 ;AN000;Beg relative row of panel label | ||
| 849 | DW 0 ;AN000;Beg relative col of panel label | ||
| 850 | DW 0 ;AN000;Len of the panel stored in file | ||
| 851 | DW 0 ;AN000;Off address of full filespec | ||
| 852 | DW 0 ;AN000;Seg address of full filespec | ||
| 853 | DW 0 ;AN000;Lower off word of the beg off | ||
| 854 | DW 0 ;AN000;High off word of the beg off | ||
| 855 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 856 | DW 0 ;AN000;Number of child panel entries | ||
| 857 | DW 0 ;AN000;Off address of child panel table | ||
| 858 | DW 0 ;AN000;Seg address of child panel table | ||
| 859 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 860 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 861 | ; | ||
| 862 | ; PAN_DOS_PARAM EQU 18 ; | ||
| 863 | ; | ||
| 864 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 865 | PCB18 LABEL WORD ;AN000; | ||
| 866 | DW PCB_EXP ;AN000;option word | ||
| 867 | DB 0 ;AN000;GHG new adds | ||
| 868 | DB 0 ;AN000;GHG new adds | ||
| 869 | DB 0 ;AN000;GHG new adds | ||
| 870 | DW 1 ;AN000;row location of panel | ||
| 871 | DW LEFT_COL ;AN000;column location of panel | ||
| 872 | DW PANEL18_W ;AN000;text char width of panel | ||
| 873 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 874 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 875 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 876 | DW 0 ;AN000;Length compress panel in mem | ||
| 877 | DW 0 ;AN000;Off addr compressed panel | ||
| 878 | DW 0 ;AN000;Seg addr compressed panel | ||
| 879 | DW PANEL18_W*PANEL18_L;AN000;Length expanded panel in mem | ||
| 880 | DW OFFSET PANEL18 ;AN000;Off addr of expanded panel in | ||
| 881 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 882 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 883 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 884 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 885 | DW 0 ;AN000;Len of the panel label | ||
| 886 | DW 0 ;AN000;Off addr of the panel label | ||
| 887 | DW 0 ;AN000;Seg addr of the panel label | ||
| 888 | DW 0 ;AN000;Beg relative row of panel label | ||
| 889 | DW 0 ;AN000;Beg relative col of panel label | ||
| 890 | DW 0 ;AN000;Len of the panel stored in file | ||
| 891 | DW 0 ;AN000;Off address of full filespec | ||
| 892 | DW 0 ;AN000;Seg address of full filespec | ||
| 893 | DW 0 ;AN000;Lower off word of the beg off | ||
| 894 | DW 0 ;AN000;High off word of the beg off | ||
| 895 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 896 | DW 3 ;AN000;Number of child panel entries | ||
| 897 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 898 | DW 0 ;AN000;Seg address of child panel table | ||
| 899 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 900 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 901 | ; | ||
| 902 | ; PAN_SHELL EQU 19 ; | ||
| 903 | ; | ||
| 904 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 905 | PCB19 LABEL WORD ;AN000; | ||
| 906 | DW PCB_EXP ;AN000;option word | ||
| 907 | DB 0 ;AN000;GHG new adds | ||
| 908 | DB 0 ;AN000;GHG new adds | ||
| 909 | DB 0 ;AN000;GHG new adds | ||
| 910 | DW 1 ;AN000;row location of panel | ||
| 911 | DW LEFT_COL ;AN000;column location of panel | ||
| 912 | DW PANEL19_W ;AN000;text char width of panel | ||
| 913 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 914 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 915 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 916 | DW 0 ;AN000;Length compress panel in mem | ||
| 917 | DW 0 ;AN000;Off addr compressed panel | ||
| 918 | DW 0 ;AN000;Seg addr compressed panel | ||
| 919 | DW PANEL19_W*PANEL19_L;AN000;Length expanded panel in mem | ||
| 920 | DW OFFSET PANEL19 ;AN000;Off addr of expanded panel in | ||
| 921 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 922 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 923 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 924 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 925 | DW 0 ;AN000;Len of the panel label | ||
| 926 | DW 0 ;AN000;Off addr of the panel label | ||
| 927 | DW 0 ;AN000;Seg addr of the panel label | ||
| 928 | DW 0 ;AN000;Beg relative row of panel label | ||
| 929 | DW 0 ;AN000;Beg relative col of panel label | ||
| 930 | DW 0 ;AN000;Len of the panel stored in file | ||
| 931 | DW 0 ;AN000;Off address of full filespec | ||
| 932 | DW 0 ;AN000;Seg address of full filespec | ||
| 933 | DW 0 ;AN000;Lower off word of the beg off | ||
| 934 | DW 0 ;AN000;High off word of the beg off | ||
| 935 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 936 | DW 3 ;AN000;Number of child panel entries | ||
| 937 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 938 | DW 0 ;AN000;Seg address of child panel table | ||
| 939 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 940 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 941 | ; | ||
| 942 | ; ERR_EXIT | ||
| 943 | ; | ||
| 944 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 945 | PCB20 LABEL WORD ;AN000; | ||
| 946 | DW PCB_EXP ;AN000;option word | ||
| 947 | DB 0 ;AN000;GHG new adds | ||
| 948 | DB 0 ;AN000;GHG new adds | ||
| 949 | DB 0 ;AN000;GHG new adds | ||
| 950 | DW 11 ;AN000;row location of panel | ||
| 951 | DW LEFT_COL+1 ;AN000;column location of panel | ||
| 952 | DW PANEL20_W ;AN000;text char width of panel | ||
| 953 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 954 | DW WHITE_RED ;AN000;Index number of log color | ||
| 955 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 956 | DW 0 ;AN000;Length compress panel in mem | ||
| 957 | DW 0 ;AN000;Off addr compressed panel | ||
| 958 | DW 0 ;AN000;Seg addr compressed panel | ||
| 959 | DW PANEL20_W*PANEL20_L;AN000;Length expanded panel in mem | ||
| 960 | DW OFFSET PANEL20 ;AN000;Off addr of expanded panel in | ||
| 961 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 962 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 963 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 964 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 965 | DW 0 ;AN000;Len of the panel label | ||
| 966 | DW 0 ;AN000;Off addr of the panel label | ||
| 967 | DW 0 ;AN000;Seg addr of the panel label | ||
| 968 | DW 0 ;AN000;Beg relative row of panel label | ||
| 969 | DW 0 ;AN000;Beg relative col of panel label | ||
| 970 | DW 0 ;AN000;Len of the panel stored in file | ||
| 971 | DW 0 ;AN000;Off address of full filespec | ||
| 972 | DW 0 ;AN000;Seg address of full filespec | ||
| 973 | DW 0 ;AN000;Lower off word of the beg off | ||
| 974 | DW 0 ;AN000;High off word of the beg off | ||
| 975 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 976 | DW 0 ;AN000;Number of child panel entries | ||
| 977 | DW 0 ;AN000;Off address of child panel table | ||
| 978 | DW 0 ;AN000;Seg address of child panel table | ||
| 979 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 980 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 981 | ; | ||
| 982 | ; PAN_FASTOPEN EQU 21 ; | ||
| 983 | ; | ||
| 984 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 985 | PCB21 LABEL WORD ;AN000; | ||
| 986 | DW PCB_EXP ;AN000;option word | ||
| 987 | DB 0 ;AN000;GHG new adds | ||
| 988 | DB 0 ;AN000;GHG new adds | ||
| 989 | DB 0 ;AN000;GHG new adds | ||
| 990 | DW 1 ;AN000;row location of panel | ||
| 991 | DW LEFT_COL ;AN000;column location of panel | ||
| 992 | DW PANEL21_W ;AN000;text char width of panel | ||
| 993 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 994 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 995 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 996 | DW 0 ;AN000;Length compress panel in mem | ||
| 997 | DW 0 ;AN000;Off addr compressed panel | ||
| 998 | DW 0 ;AN000;Seg addr compressed panel | ||
| 999 | DW PANEL21_W*PANEL21_L;AN000;Length expanded panel in mem | ||
| 1000 | DW OFFSET PANEL21 ;AN000;Off addr of expanded panel in | ||
| 1001 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1002 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1003 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1004 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1005 | DW 0 ;AN000;Len of the panel label | ||
| 1006 | DW 0 ;AN000;Off addr of the panel label | ||
| 1007 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1008 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1009 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1010 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1011 | DW 0 ;AN000;Off address of full filespec | ||
| 1012 | DW 0 ;AN000;Seg address of full filespec | ||
| 1013 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1014 | DW 0 ;AN000;High off word of the beg off | ||
| 1015 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1016 | DW 3 ;AN000;Number of child panel entries | ||
| 1017 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 1018 | DW 0 ;AN000;Seg address of child panel table | ||
| 1019 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1020 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1021 | ; | ||
| 1022 | ; PAN_SHARE EQU 22 ; | ||
| 1023 | ; | ||
| 1024 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1025 | PCB22 LABEL WORD ;AN000; | ||
| 1026 | DW PCB_EXP ;AN000;option word | ||
| 1027 | DB 0 ;AN000;GHG new adds | ||
| 1028 | DB 0 ;AN000;GHG new adds | ||
| 1029 | DB 0 ;AN000;GHG new adds | ||
| 1030 | DW 1 ;AN000;row location of panel | ||
| 1031 | DW LEFT_COL ;AN000;column location of panel | ||
| 1032 | DW PANEL22_W ;AN000;text char width of panel | ||
| 1033 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1034 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1035 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1036 | DW 0 ;AN000;Length compress panel in mem | ||
| 1037 | DW 0 ;AN000;Off addr compressed panel | ||
| 1038 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1039 | DW PANEL22_W*PANEL22_L;AN000;Length expanded panel in mem | ||
| 1040 | DW OFFSET PANEL22 ;AN000;Off addr of expanded panel in | ||
| 1041 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1042 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1043 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1044 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1045 | DW 0 ;AN000;Len of the panel label | ||
| 1046 | DW 0 ;AN000;Off addr of the panel label | ||
| 1047 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1048 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1049 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1050 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1051 | DW 0 ;AN000;Off address of full filespec | ||
| 1052 | DW 0 ;AN000;Seg address of full filespec | ||
| 1053 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1054 | DW 0 ;AN000;High off word of the beg off | ||
| 1055 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1056 | DW 3 ;AN000;Number of child panel entries | ||
| 1057 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 1058 | DW 0 ;AN000;Seg address of child panel table | ||
| 1059 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1060 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1061 | ; | ||
| 1062 | ; PAN_GRAPHICS EQU 23 ; | ||
| 1063 | ; | ||
| 1064 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1065 | PCB23 LABEL WORD ;AN000; | ||
| 1066 | DW PCB_EXP ;AN000;option word | ||
| 1067 | DB 0 ;AN000;GHG new adds | ||
| 1068 | DB 0 ;AN000;GHG new adds | ||
| 1069 | DB 0 ;AN000;GHG new adds | ||
| 1070 | DW 1 ;AN000;row location of panel | ||
| 1071 | DW LEFT_COL ;AN000;column location of panel | ||
| 1072 | DW PANEL23_W ;AN000;text char width of panel | ||
| 1073 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1074 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1075 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1076 | DW 0 ;AN000;Length compress panel in mem | ||
| 1077 | DW 0 ;AN000;Off addr compressed panel | ||
| 1078 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1079 | DW PANEL23_W*PANEL23_L;AN000;Length expanded panel in mem | ||
| 1080 | DW OFFSET PANEL23 ;AN000;Off addr of expanded panel in | ||
| 1081 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1082 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1083 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1084 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1085 | DW 0 ;AN000;Len of the panel label | ||
| 1086 | DW 0 ;AN000;Off addr of the panel label | ||
| 1087 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1088 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1089 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1090 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1091 | DW 0 ;AN000;Off address of full filespec | ||
| 1092 | DW 0 ;AN000;Seg address of full filespec | ||
| 1093 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1094 | DW 0 ;AN000;High off word of the beg off | ||
| 1095 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1096 | DW 3 ;AN000;Number of child panel entries | ||
| 1097 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 1098 | DW 0 ;AN000;Seg address of child panel table | ||
| 1099 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1100 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1101 | ; | ||
| 1102 | ; PAN_EXP_MEMORY EQU 24 ; | ||
| 1103 | ; | ||
| 1104 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1105 | PCB24 LABEL WORD ;AN000; | ||
| 1106 | DW PCB_EXP ;AN000;option word | ||
| 1107 | DB 0 ;AN000;GHG new adds | ||
| 1108 | DB 0 ;AN000;GHG new adds | ||
| 1109 | DB 0 ;AN000;GHG new adds | ||
| 1110 | DW 1 ;AN000;row location of panel | ||
| 1111 | DW LEFT_COL ;AN000;column location of panel | ||
| 1112 | DW PANEL24_W ;AN000;text char width of panel | ||
| 1113 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1114 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1115 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1116 | DW 0 ;AN000;Length compress panel in mem | ||
| 1117 | DW 0 ;AN000;Off addr compressed panel | ||
| 1118 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1119 | DW PANEL24_W*PANEL24_L;AN000;Length expanded panel in mem | ||
| 1120 | DW OFFSET PANEL24 ;AN000;Off addr of expanded panel in | ||
| 1121 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1122 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1123 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1124 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1125 | DW 0 ;AN000;Len of the panel label | ||
| 1126 | DW 0 ;AN000;Off addr of the panel label | ||
| 1127 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1128 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1129 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1130 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1131 | DW 0 ;AN000;Off address of full filespec | ||
| 1132 | DW 0 ;AN000;Seg address of full filespec | ||
| 1133 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1134 | DW 0 ;AN000;High off word of the beg off | ||
| 1135 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1136 | DW 3 ;AN000;Number of child panel entries | ||
| 1137 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 1138 | DW 0 ;AN000;Seg address of child panel table | ||
| 1139 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1140 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1141 | ; | ||
| 1142 | ; PAN_VDISK EQU 25 ; | ||
| 1143 | ; | ||
| 1144 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1145 | PCB25 LABEL WORD ;AN000; | ||
| 1146 | DW PCB_EXP ;AN000;option word | ||
| 1147 | DB 0 ;AN000;GHG new adds | ||
| 1148 | DB 0 ;AN000;GHG new adds | ||
| 1149 | DB 0 ;AN000;GHG new adds | ||
| 1150 | DW 1 ;AN000;row location of panel | ||
| 1151 | DW LEFT_COL ;AN000;column location of panel | ||
| 1152 | DW PANEL25_W ;AN000;text char width of panel | ||
| 1153 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1154 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1155 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1156 | DW 0 ;AN000;Length compress panel in mem | ||
| 1157 | DW 0 ;AN000;Off addr compressed panel | ||
| 1158 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1159 | DW PANEL25_W*PANEL25_L;AN000;Length expanded panel in mem | ||
| 1160 | DW OFFSET PANEL25 ;AN000;Off addr of expanded panel in | ||
| 1161 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1162 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1163 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1164 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1165 | DW 0 ;AN000;Len of the panel label | ||
| 1166 | DW 0 ;AN000;Off addr of the panel label | ||
| 1167 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1168 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1169 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1170 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1171 | DW 0 ;AN000;Off address of full filespec | ||
| 1172 | DW 0 ;AN000;Seg address of full filespec | ||
| 1173 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1174 | DW 0 ;AN000;High off word of the beg off | ||
| 1175 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1176 | DW 3 ;AN000;Number of child panel entries | ||
| 1177 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 1178 | DW 0 ;AN000;Seg address of child panel table | ||
| 1179 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1180 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1181 | ; | ||
| 1182 | ; PAN_CONFIG_PARS EQU 26 ; | ||
| 1183 | ; | ||
| 1184 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1185 | PCB26 LABEL WORD ;AN000; | ||
| 1186 | DW PCB_EXP ;AN000;option word | ||
| 1187 | DB 0 ;AN000;GHG new adds | ||
| 1188 | DB 0 ;AN000;GHG new adds | ||
| 1189 | DB 0 ;AN000;GHG new adds | ||
| 1190 | DW 1 ;AN000;row location of panel | ||
| 1191 | DW LEFT_COL ;AN000;column location of panel | ||
| 1192 | DW PANEL26_W ;AN000;text char width of panel | ||
| 1193 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1194 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1195 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1196 | DW 0 ;AN000;Length compress panel in mem | ||
| 1197 | DW 0 ;AN000;Off addr compressed panel | ||
| 1198 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1199 | DW PANEL26_W*PANEL26_L;AN000;Length expanded panel in mem | ||
| 1200 | DW OFFSET PANEL26 ;AN000;Off addr of expanded panel in | ||
| 1201 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1202 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1203 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1204 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1205 | DW 0 ;AN000;Len of the panel label | ||
| 1206 | DW 0 ;AN000;Off addr of the panel label | ||
| 1207 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1208 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1209 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1210 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1211 | DW 0 ;AN000;Off address of full filespec | ||
| 1212 | DW 0 ;AN000;Seg address of full filespec | ||
| 1213 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1214 | DW 0 ;AN000;High off word of the beg off | ||
| 1215 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1216 | DW 3 ;AN000;Number of child panel entries | ||
| 1217 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 1218 | DW 0 ;AN000;Seg address of child panel table | ||
| 1219 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1220 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1221 | ; | ||
| 1222 | ; PAN_FIXED_FIRST EQU 27 ; | ||
| 1223 | ; | ||
| 1224 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1225 | PCB27 LABEL WORD ;AN000; | ||
| 1226 | DW PCB_EXP ;AN000;option word | ||
| 1227 | DB 0 ;AN000;GHG new adds | ||
| 1228 | DB 0 ;AN000;GHG new adds | ||
| 1229 | DB 0 ;AN000;GHG new adds | ||
| 1230 | DW 1 ;AN000;row location of panel | ||
| 1231 | DW LEFT_COL ;AN000;column location of panel | ||
| 1232 | DW PANEL27_W ;AN000;text char width of panel | ||
| 1233 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1234 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1235 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1236 | DW 0 ;AN000;Length compress panel in mem | ||
| 1237 | DW 0 ;AN000;Off addr compressed panel | ||
| 1238 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1239 | DW PANEL27_W*PANEL27_L;AN000;Length expanded panel in mem | ||
| 1240 | DW OFFSET PANEL27 ;AN000;Off addr of expanded panel in | ||
| 1241 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1242 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1243 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1244 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1245 | DW 0 ;AN000;Len of the panel label | ||
| 1246 | DW 0 ;AN000;Off addr of the panel label | ||
| 1247 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1248 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1249 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1250 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1251 | DW 0 ;AN000;Off address of full filespec | ||
| 1252 | DW 0 ;AN000;Seg address of full filespec | ||
| 1253 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1254 | DW 0 ;AN000;High off word of the beg off | ||
| 1255 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1256 | DW 3 ;AN000;Number of child panel entries | ||
| 1257 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 1258 | DW 0 ;AN000;Seg address of child panel table | ||
| 1259 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1260 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1261 | ; | ||
| 1262 | ; PAN_FIXED_BOTH EQU 28 ; | ||
| 1263 | ; | ||
| 1264 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1265 | PCB28 LABEL WORD ;AN000; | ||
| 1266 | DW PCB_EXP ;AN000;option word | ||
| 1267 | DB 0 ;AN000;GHG new adds | ||
| 1268 | DB 0 ;AN000;GHG new adds | ||
| 1269 | DB 0 ;AN000;GHG new adds | ||
| 1270 | DW 1 ;AN000;row location of panel | ||
| 1271 | DW LEFT_COL ;AN000;column location of panel | ||
| 1272 | DW PANEL28_W ;AN000;text char width of panel | ||
| 1273 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1274 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1275 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1276 | DW 0 ;AN000;Length compress panel in mem | ||
| 1277 | DW 0 ;AN000;Off addr compressed panel | ||
| 1278 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1279 | DW PANEL28_W*PANEL28_L;AN000;Length expanded panel in mem | ||
| 1280 | DW OFFSET PANEL28 ;AN000;Off addr of expanded panel in | ||
| 1281 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1282 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1283 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1284 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1285 | DW 0 ;AN000;Len of the panel label | ||
| 1286 | DW 0 ;AN000;Off addr of the panel label | ||
| 1287 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1288 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1289 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1290 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1291 | DW 0 ;AN000;Off address of full filespec | ||
| 1292 | DW 0 ;AN000;Seg address of full filespec | ||
| 1293 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1294 | DW 0 ;AN000;High off word of the beg off | ||
| 1295 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1296 | DW 3 ;AN000;Number of child panel entries | ||
| 1297 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 1298 | DW 0 ;AN000;Seg address of child panel table | ||
| 1299 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1300 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1301 | ; | ||
| 1302 | ; PAN_REBOOT EQU 29 ; | ||
| 1303 | ; | ||
| 1304 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1305 | PCB29 LABEL WORD ;AN000; | ||
| 1306 | DW PCB_EXP ;AN000;option word | ||
| 1307 | DB 0 ;AN000;GHG new adds | ||
| 1308 | DB 0 ;AN000;GHG new adds | ||
| 1309 | DB 0 ;AN000;GHG new adds | ||
| 1310 | DW 4 ;AN000;row location of panel | ||
| 1311 | DW LEFT_COL ;AN000;column location of panel | ||
| 1312 | DW PANEL29_W ;AN000;text char width of panel | ||
| 1313 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1314 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1315 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1316 | DW 0 ;AN000;Length compress panel in mem | ||
| 1317 | DW 0 ;AN000;Off addr compressed panel | ||
| 1318 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1319 | DW PANEL29_W*PANEL29_L;AN000;Length expanded panel in mem | ||
| 1320 | DW OFFSET PANEL29 ;AN000;Off addr of expanded panel in | ||
| 1321 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1322 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1323 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1324 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1325 | DW 0 ;AN000;Len of the panel label | ||
| 1326 | DW 0 ;AN000;Off addr of the panel label | ||
| 1327 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1328 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1329 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1330 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1331 | DW 0 ;AN000;Off address of full filespec | ||
| 1332 | DW 0 ;AN000;Seg address of full filespec | ||
| 1333 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1334 | DW 0 ;AN000;High off word of the beg off | ||
| 1335 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1336 | DW 3 ;AN000;Number of child panel entries | ||
| 1337 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 1338 | DW 0 ;AN000;Seg address of child panel table | ||
| 1339 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1340 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1341 | ; | ||
| 1342 | ; PAN_date_time EQU 30 ; | ||
| 1343 | ; | ||
| 1344 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1345 | PCB30 LABEL WORD ;AN000; | ||
| 1346 | DW PCB_EXP ;AN000;option word | ||
| 1347 | DB 0 ;AN000;GHG new adds | ||
| 1348 | DB 0 ;AN000;GHG new adds | ||
| 1349 | DB 0 ;AN000;GHG new adds | ||
| 1350 | DW 1 ;AN000;row location of panel | ||
| 1351 | DW LEFT_COL ;AN000;column location of panel | ||
| 1352 | DW PANEL30_W ;AN000;text char width of panel | ||
| 1353 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1354 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1355 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1356 | DW 0 ;AN000;Length compress panel in mem | ||
| 1357 | DW 0 ;AN000;Off addr compressed panel | ||
| 1358 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1359 | DW PANEL30_W*PANEL30_L;AN000;Length expanded panel in mem | ||
| 1360 | DW OFFSET PANEL30 ;AN000;Off addr of expanded panel in | ||
| 1361 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1362 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1363 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1364 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1365 | DW 0 ;AN000;Len of the panel label | ||
| 1366 | DW 0 ;AN000;Off addr of the panel label | ||
| 1367 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1368 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1369 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1370 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1371 | DW 0 ;AN000;Off address of full filespec | ||
| 1372 | DW 0 ;AN000;Seg address of full filespec | ||
| 1373 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1374 | DW 0 ;AN000;High off word of the beg off | ||
| 1375 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1376 | DW 2 ;AN000;Number of child panel entries | ||
| 1377 | DW OFFSET CHILD31 ;AN000;Off address of child panel table | ||
| 1378 | DW 0 ;AN000;Seg address of child panel table | ||
| 1379 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1380 | |||
| 1381 | CHILD31 LABEL WORD ;AN000; | ||
| 1382 | DW CHILD_ENTER ;AN000;child PCB element number | ||
| 1383 | DW 25 ;AN000;row override | ||
| 1384 | DW 1 ;AN000;column override | ||
| 1385 | DW BLACK_WHITE ;AN000;color index pointer override | ||
| 1386 | DW 9 ;AN000;function key attribute | ||
| 1387 | DB 0,0; ENTER,0 ;AN000;keystroke associated with child | ||
| 1388 | DW CHD_ABS ;AN000;option word | ||
| 1389 | |||
| 1390 | DW CHILD_F1HELP ;AN000;child PCB element number | ||
| 1391 | DW 25 ;AN000;row override | ||
| 1392 | DW 17 ;AC087;SEH increased for translation space ;AN000;column override | ||
| 1393 | DW BLACK_WHITE ;AN000;color index pointer override | ||
| 1394 | DW 9 ;AN000;function key attribute | ||
| 1395 | DB 0,0; 0,F1 ;AN000;keystroke associated with child | ||
| 1396 | DW CHD_ABS ;AN000;option word | ||
| 1397 | |||
| 1398 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1399 | ; | ||
| 1400 | ; PAN_FORMAT EQU 31 ; | ||
| 1401 | ; | ||
| 1402 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1403 | PCB31 LABEL WORD ;AN000; | ||
| 1404 | DW PCB_EXP ;AN000;option word | ||
| 1405 | DB 0 ;AN000;GHG new adds | ||
| 1406 | DB 0 ;AN000;GHG new adds | ||
| 1407 | DB 0 ;AN000;GHG new adds | ||
| 1408 | DW 1 ;AN000;row location of panel | ||
| 1409 | DW LEFT_COL ;AN000;column location of panel | ||
| 1410 | DW PANEL31_W ;AN000;text char width of panel | ||
| 1411 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1412 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1413 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1414 | DW 0 ;AN000;Length compress panel in mem | ||
| 1415 | DW 0 ;AN000;Off addr compressed panel | ||
| 1416 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1417 | DW PANEL31_W*PANEL31_L;AN000;Length expanded panel in mem | ||
| 1418 | DW OFFSET PANEL31 ;AN000;Off addr of expanded panel in | ||
| 1419 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1420 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1421 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1422 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1423 | DW 0 ;AN000;Len of the panel label | ||
| 1424 | DW 0 ;AN000;Off addr of the panel label | ||
| 1425 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1426 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1427 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1428 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1429 | DW 0 ;AN000;Off address of full filespec | ||
| 1430 | DW 0 ;AN000;Seg address of full filespec | ||
| 1431 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1432 | DW 0 ;AN000;High off word of the beg off | ||
| 1433 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1434 | DW 2 ;AN000;Number of child panel entries | ||
| 1435 | DW OFFSET CHILD31 ;AN000;Off address of child panel table | ||
| 1436 | DW 0 ;AN000;Seg address of child panel table | ||
| 1437 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1438 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1439 | ; | ||
| 1440 | ; PAN_INST_PROMPT EQU 32 ; | ||
| 1441 | ; | ||
| 1442 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1443 | PCB32 LABEL WORD ;AN000; | ||
| 1444 | DW PCB_EXP ;AN000;option word | ||
| 1445 | DB 0 ;AN000;GHG new adds | ||
| 1446 | DB 0 ;AN000;GHG new adds | ||
| 1447 | DB 0 ;AN000;GHG new adds | ||
| 1448 | DW 1 ;AN000;row location of panel | ||
| 1449 | DW LEFT_COL+12 ;AN000;column location of panel | ||
| 1450 | DW PANEL32_W ;AN000;text char width of panel | ||
| 1451 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1452 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1453 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1454 | DW 0 ;AN000;Length compress panel in mem | ||
| 1455 | DW 0 ;AN000;Off addr compressed panel | ||
| 1456 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1457 | DW PANEL32_W*PANEL32_L;AN000;Length expanded panel in mem | ||
| 1458 | DW OFFSET PANEL32 ;AN000;Off addr of expanded panel in | ||
| 1459 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1460 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1461 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1462 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1463 | DW 0 ;AN000;Len of the panel label | ||
| 1464 | DW 0 ;AN000;Off addr of the panel label | ||
| 1465 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1466 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1467 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1468 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1469 | DW 0 ;AN000;Off address of full filespec | ||
| 1470 | DW 0 ;AN000;Seg address of full filespec | ||
| 1471 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1472 | DW 0 ;AN000;High off word of the beg off | ||
| 1473 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1474 | DW 1 ;AN000;Number of child panel entries | ||
| 1475 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 1476 | DW 0 ;AN000;Seg address of child panel table | ||
| 1477 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1478 | ; | ||
| 1479 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1480 | ; | ||
| 1481 | ; err_keyb EQU 33 ; | ||
| 1482 | ; | ||
| 1483 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1484 | PCB33 LABEL WORD ;AN000; | ||
| 1485 | DW PCB_EXP ;AN000;option word | ||
| 1486 | DB 0 ;AN000;GHG new adds | ||
| 1487 | DB 0 ;AN000;GHG new adds | ||
| 1488 | DB 0 ;AN000;GHG new adds | ||
| 1489 | DW 11 ;AN000;row location of panel | ||
| 1490 | DW LEFT_COL+3 ;AN000;column location of panel | ||
| 1491 | DW PANEL33_W ;AN000;text char width of panel | ||
| 1492 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1493 | DW WHITE_RED ;AN000;Index number of log color | ||
| 1494 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1495 | DW 0 ;AN000;Length compress panel in mem | ||
| 1496 | DW 0 ;AN000;Off addr compressed panel | ||
| 1497 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1498 | DW PANEL33_W*PANEL33_L;AN000;Length expanded panel in mem | ||
| 1499 | DW OFFSET PANEL33 ;AN000;Off addr of expanded panel in | ||
| 1500 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1501 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1502 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1503 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1504 | DW 0 ;AN000;Len of the panel label | ||
| 1505 | DW 0 ;AN000;Off addr of the panel label | ||
| 1506 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1507 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1508 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1509 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1510 | DW 0 ;AN000;Off address of full filespec | ||
| 1511 | DW 0 ;AN000;Seg address of full filespec | ||
| 1512 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1513 | DW 0 ;AN000;High off word of the beg off | ||
| 1514 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1515 | DW 0 ;AN000;Number of child panel entries | ||
| 1516 | DW 0 ;AN000;Off address of child panel table | ||
| 1517 | DW 0 ;AN000;Seg address of child panel table | ||
| 1518 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1519 | ; | ||
| 1520 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1521 | ; | ||
| 1522 | ; PAN_COMPLETE_1 EQU 34 ; | ||
| 1523 | ; | ||
| 1524 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1525 | PCB34 LABEL WORD ;AN000; | ||
| 1526 | DW PCB_EXP ;AN000;option word | ||
| 1527 | DB 0 ;AN000;GHG new adds | ||
| 1528 | DB 0 ;AN000;GHG new adds | ||
| 1529 | DB 0 ;AN000;GHG new adds | ||
| 1530 | DW 1 ;AN000;row location of panel | ||
| 1531 | DW LEFT_COL+12 ;AC028;column location of panel | ||
| 1532 | DW PANEL34_W ;AN000;text char width of panel | ||
| 1533 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1534 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1535 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1536 | DW 0 ;AN000;Length compress panel in mem | ||
| 1537 | DW 0 ;AN000;Off addr compressed panel | ||
| 1538 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1539 | DW PANEL34_W*PANEL34_L;AN000;Length expanded panel in mem | ||
| 1540 | DW OFFSET PANEL34 ;AN000;Off addr of expanded panel in | ||
| 1541 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1542 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1543 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1544 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1545 | DW 0 ;AN000;Len of the panel label | ||
| 1546 | DW 0 ;AN000;Off addr of the panel label | ||
| 1547 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1548 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1549 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1550 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1551 | DW 0 ;AN000;Off address of full filespec | ||
| 1552 | DW 0 ;AN000;Seg address of full filespec | ||
| 1553 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1554 | DW 0 ;AN000;High off word of the beg off | ||
| 1555 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1556 | DW 1 ;AN000;Number of child panel entries | ||
| 1557 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 1558 | DW 0 ;AN000;Seg address of child panel table | ||
| 1559 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1560 | ; | ||
| 1561 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1562 | ; | ||
| 1563 | ; SUB_COMP_KYS_1C EQU 35 ; | ||
| 1564 | ; | ||
| 1565 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1566 | PCB35 LABEL WORD ;AN000; | ||
| 1567 | DW PCB_EXP ;AN000;option word | ||
| 1568 | DB 0 ;AN000;GHG new adds | ||
| 1569 | DB 0 ;AN000;GHG new adds | ||
| 1570 | DB 0 ;AN000;GHG new adds | ||
| 1571 | DW 8 ;AN000;row location of panel | ||
| 1572 | DW left_col+7 ;AC028;column location of panel | ||
| 1573 | DW PANEL35_W ;AN000;text char width of panel | ||
| 1574 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1575 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1576 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1577 | DW 0 ;AN000;Length compress panel in mem | ||
| 1578 | DW 0 ;AN000;Off addr compressed panel | ||
| 1579 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1580 | DW PANEL35_W*PANEL35_L;AN000;Length expanded panel in mem | ||
| 1581 | DW OFFSET PANEL35 ;AN000;Off addr of expanded panel in | ||
| 1582 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1583 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1584 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1585 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1586 | DW 0 ;AN000;Len of the panel label | ||
| 1587 | DW 0 ;AN000;Off addr of the panel label | ||
| 1588 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1589 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1590 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1591 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1592 | DW 0 ;AN000;Off address of full filespec | ||
| 1593 | DW 0 ;AN000;Seg address of full filespec | ||
| 1594 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1595 | DW 0 ;AN000;High off word of the beg off | ||
| 1596 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1597 | DW 0 ;AN000;Number of child panel entries | ||
| 1598 | DW 0 ;AN000;Off address of child panel table | ||
| 1599 | DW 0 ;AN000;Seg address of child panel table | ||
| 1600 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1601 | ; | ||
| 1602 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1603 | ; | ||
| 1604 | ; contextual help | ||
| 1605 | ; | ||
| 1606 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1607 | PCB36 LABEL WORD ;AN000; | ||
| 1608 | DW PCB_EXP ;AN000;option word | ||
| 1609 | DB 0 ;AN000;GHG new adds | ||
| 1610 | DB 0 ;AN000;GHG new adds | ||
| 1611 | DB 0 ;AN000;GHG new adds | ||
| 1612 | DW 1 ;AN000;row location of panel | ||
| 1613 | DW LEFT_COL ;AN000;column location of panel | ||
| 1614 | DW PANEL36_W ;AN000;text char width of panel | ||
| 1615 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1616 | DW BLACK_WHITE ;AN000;Index number of log color | ||
| 1617 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1618 | DW 0 ;AN000;Length compress panel in mem | ||
| 1619 | DW 0 ;AN000;Off addr compressed panel | ||
| 1620 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1621 | DW PANEL36_W*PANEL36_L;AN000;Length expanded panel in mem | ||
| 1622 | DW OFFSET PANEL36 ;AN000;Off addr of expanded panel in | ||
| 1623 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1624 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1625 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1626 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1627 | DW 0 ;AN000;Len of the panel label | ||
| 1628 | DW 0 ;AN000;Off addr of the panel label | ||
| 1629 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1630 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1631 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1632 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1633 | DW 0 ;AN000;Off address of full filespec | ||
| 1634 | DW 0 ;AN000;Seg address of full filespec | ||
| 1635 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1636 | DW 0 ;AN000;High off word of the beg off | ||
| 1637 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1638 | DW 3 ;AN000;Number of child panel entries | ||
| 1639 | DW OFFSET CHILD37 ;AN000;Off address of child panel table | ||
| 1640 | DW 0 ;AN000;Seg address of child panel table | ||
| 1641 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1642 | ; | ||
| 1643 | |||
| 1644 | CHILD37 LABEL WORD ;AN000; | ||
| 1645 | DW CHILD_QUIT ;AN000;child PCB element number | ||
| 1646 | DW PANEL36_L-1 ;AN000;row override | ||
| 1647 | DW 2 ;AN000;column override | ||
| 1648 | DW BLACK_WHITE ;AN000;color index pointer override | ||
| 1649 | DW 9 ;AN000;function key attribute | ||
| 1650 | DB 27,0 ;AN000;keystroke associated with child | ||
| 1651 | DW 0 ;CHD_ABS ;AN000;option word | ||
| 1652 | |||
| 1653 | DW CHILD_F1HELP ;AN000;child PCB element number | ||
| 1654 | DW PANEL36_L-1 ;AN000;row override | ||
| 1655 | DW 16 ;AC081;SEH ;AN000;column override | ||
| 1656 | DW BLACK_WHITE ;AN000;color index pointer override | ||
| 1657 | DW 9 ;AN000;function key attribute | ||
| 1658 | DB 0,F1 ;AN000;keystroke associated with child | ||
| 1659 | DW 0 ;CHD_ABS ;AN000;option word | ||
| 1660 | |||
| 1661 | DW CHILD_F9KEYS ;AN000;child PCB element number | ||
| 1662 | DW PANEL36_L-1 ;AN000;row override | ||
| 1663 | DW 30 ;AC081;SEH ;AN000;column override | ||
| 1664 | DW BLACK_WHITE ;AN000;color index pointer override | ||
| 1665 | DW 9 ;AN000;function key attribute | ||
| 1666 | DB 0,F9 ;AN000;keystroke associated with child | ||
| 1667 | DW 0 ;CHD_ABS ;AN000;option word | ||
| 1668 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1669 | ; | ||
| 1670 | ; HORIZONTAL BAR | ||
| 1671 | ; | ||
| 1672 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1673 | PCB37 LABEL WORD ;AN000; | ||
| 1674 | DW PCB_EXP ;AN000;option word | ||
| 1675 | DB 0 ;AN000;GHG new adds | ||
| 1676 | DB 0 ;AN000;GHG new adds | ||
| 1677 | DB 0 ;AN000;GHG new adds | ||
| 1678 | DW 24 ;AN000;row location of panel | ||
| 1679 | DW 1 ;AN000;column location of panel | ||
| 1680 | DW PANEL37_W ;AN000;text char width of panel | ||
| 1681 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1682 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1683 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1684 | DW 0 ;AN000;Length compress panel in mem | ||
| 1685 | DW 0 ;AN000;Off addr compressed panel | ||
| 1686 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1687 | DW PANEL37_W*PANEL37_L;AN000;Length expanded panel in mem | ||
| 1688 | DW OFFSET PANEL37 ;AN000;Off addr of expanded panel in | ||
| 1689 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1690 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1691 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1692 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1693 | DW 0 ;AN000;Len of the panel label | ||
| 1694 | DW 0 ;AN000;Off addr of the panel label | ||
| 1695 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1696 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1697 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1698 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1699 | DW 0 ;AN000;Off address of full filespec | ||
| 1700 | DW 0 ;AN000;Seg address of full filespec | ||
| 1701 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1702 | DW 0 ;AN000;High off word of the beg off | ||
| 1703 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1704 | DW 0 ;AN000;Number of child panel entries | ||
| 1705 | DW 0 ;AN000;Off address of child panel table | ||
| 1706 | DW 0 ;AN000;Seg address of child panel table | ||
| 1707 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1708 | ; | ||
| 1709 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1710 | ; | ||
| 1711 | ; SUB_CONT_OPTION EQU 38 | ||
| 1712 | ; | ||
| 1713 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1714 | PCB38 LABEL WORD ;AN000; | ||
| 1715 | DW PCB_EXP ;AN000;option word | ||
| 1716 | DB 0 ;AN000;GHG new adds | ||
| 1717 | DB 0 ;AN000;GHG new adds | ||
| 1718 | DB 0 ;AN000;GHG new adds | ||
| 1719 | DW 22 ;AN000;row location of panel | ||
| 1720 | DW (80-PANEL38_W)/2 ;AN000;column location of panel | ||
| 1721 | DW PANEL38_W ;AN000;text char width of panel | ||
| 1722 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1723 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1724 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1725 | DW 0 ;AN000;Length compress panel in mem | ||
| 1726 | DW 0 ;AN000;Off addr compressed panel | ||
| 1727 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1728 | DW PANEL38_W*PANEL38_L;AN000;Length expanded panel in mem | ||
| 1729 | DW OFFSET PANEL38 ;AN000;Off addr of expanded panel in | ||
| 1730 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1731 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1732 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1733 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1734 | DW 0 ;AN000;Len of the panel label | ||
| 1735 | DW 0 ;AN000;Off addr of the panel label | ||
| 1736 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1737 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1738 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1739 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1740 | DW 0 ;AN000;Off address of full filespec | ||
| 1741 | DW 0 ;AN000;Seg address of full filespec | ||
| 1742 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1743 | DW 0 ;AN000;High off word of the beg off | ||
| 1744 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1745 | DW 0 ;AN000;Number of child panel entries | ||
| 1746 | DW 0 ;AN000;Off address of child panel table | ||
| 1747 | DW 0 ;AN000;Seg address of child panel table | ||
| 1748 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1749 | ; | ||
| 1750 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1751 | ; | ||
| 1752 | ; SUB_PRINTER_1 | ||
| 1753 | ; | ||
| 1754 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1755 | PCB39 LABEL WORD ;AN000; | ||
| 1756 | DW PCB_EXP ;AN000;option word | ||
| 1757 | DB 0 ;AN000;GHG new adds | ||
| 1758 | DB 0 ;AN000;GHG new adds | ||
| 1759 | DB 0 ;AN000;GHG new adds | ||
| 1760 | DW 4 ;AN000;row location of panel | ||
| 1761 | DW left_col ;AN000;column location of panel | ||
| 1762 | DW PANEL39_W ;AN000;text char width of panel | ||
| 1763 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1764 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1765 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1766 | DW 0 ;AN000;Length compress panel in mem | ||
| 1767 | DW 0 ;AN000;Off addr compressed panel | ||
| 1768 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1769 | DW PANEL39_W*PANEL39_L;AN000;Length expanded panel in mem | ||
| 1770 | DW OFFSET PANEL39 ;AN000;Off addr of expanded panel in | ||
| 1771 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1772 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1773 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1774 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1775 | DW 0 ;AN000;Len of the panel label | ||
| 1776 | DW 0 ;AN000;Off addr of the panel label | ||
| 1777 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1778 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1779 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1780 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1781 | DW 0 ;AN000;Off address of full filespec | ||
| 1782 | DW 0 ;AN000;Seg address of full filespec | ||
| 1783 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1784 | DW 0 ;AN000;High off word of the beg off | ||
| 1785 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1786 | DW 0 ;AN000;Number of child panel entries | ||
| 1787 | DW 0 ;AN000;Off address of child panel table | ||
| 1788 | DW 0 ;AN000;Seg address of child panel table | ||
| 1789 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1790 | ; | ||
| 1791 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1792 | ; | ||
| 1793 | ; CHILD F3=Exit | ||
| 1794 | ; | ||
| 1795 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1796 | PCB40 LABEL WORD ;AN000; | ||
| 1797 | DW PCB_EXP ;AN000;option word | ||
| 1798 | DB 0 ;AN000;GHG new adds | ||
| 1799 | DB 0 ;AN000;GHG new adds | ||
| 1800 | DB 0 ;AN000;GHG new adds | ||
| 1801 | DW 1 ;AN000;row location of panel | ||
| 1802 | DW LEFT_COL ;AN000;column location of panel | ||
| 1803 | DW PANEL40_W ;AN000;text char width of panel | ||
| 1804 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1805 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1806 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1807 | DW 0 ;AN000;Length compress panel in mem | ||
| 1808 | DW 0 ;AN000;Off addr compressed panel | ||
| 1809 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1810 | DW PANEL40_W*PANEL40_L;AN000;Length expanded panel in mem | ||
| 1811 | DW OFFSET PANEL40 ;AN000;Off addr of expanded panel in | ||
| 1812 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1813 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1814 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1815 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1816 | DW 0 ;AN000;Len of the panel label | ||
| 1817 | DW 0 ;AN000;Off addr of the panel label | ||
| 1818 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1819 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1820 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1821 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1822 | DW 0 ;AN000;Off address of full filespec | ||
| 1823 | DW 0 ;AN000;Seg address of full filespec | ||
| 1824 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1825 | DW 0 ;AN000;High off word of the beg off | ||
| 1826 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1827 | DW 0 ;AN000;Number of child panel entries | ||
| 1828 | DW 0 ;AN000;Off address of child panel table | ||
| 1829 | DW 0 ;AN000;Seg address of child panel table | ||
| 1830 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1831 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1832 | ; | ||
| 1833 | ; SUB_FIXED_1 | ||
| 1834 | ; | ||
| 1835 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1836 | PCB41 LABEL WORD ;AN000; | ||
| 1837 | DW PCB_EXP ;AN000;option word | ||
| 1838 | DB 0 ;AN000;GHG new adds | ||
| 1839 | DB 0 ;AN000;GHG new adds | ||
| 1840 | DB 0 ;AN000;GHG new adds | ||
| 1841 | DW 4 ;AN000;row location of panel | ||
| 1842 | DW left_col ;AN000;column location of panel | ||
| 1843 | DW PANEL41_W ;AN000;text char width of panel | ||
| 1844 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1845 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1846 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1847 | DW 0 ;AN000;Length compress panel in mem | ||
| 1848 | DW 0 ;AN000;Off addr compressed panel | ||
| 1849 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1850 | DW PANEL41_W*PANEL41_L;AN000;Length expanded panel in mem | ||
| 1851 | DW OFFSET PANEL41 ;AN000;Off addr of expanded panel in | ||
| 1852 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1853 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1854 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1855 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1856 | DW 0 ;AN000;Len of the panel label | ||
| 1857 | DW 0 ;AN000;Off addr of the panel label | ||
| 1858 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1859 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1860 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1861 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1862 | DW 0 ;AN000;Off address of full filespec | ||
| 1863 | DW 0 ;AN000;Seg address of full filespec | ||
| 1864 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1865 | DW 0 ;AN000;High off word of the beg off | ||
| 1866 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1867 | DW 0 ;AN000;Number of child panel entries | ||
| 1868 | DW 0 ;AN000;Off address of child panel table | ||
| 1869 | DW 0 ;AN000;Seg address of child panel table | ||
| 1870 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1871 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1872 | ; | ||
| 1873 | ; SUB_LOG_DRIVE EQU 42 ;AN000;JW | ||
| 1874 | ; | ||
| 1875 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1876 | PCB42 LABEL WORD ;AN000; | ||
| 1877 | DW PCB_EXP ;AN000;option word | ||
| 1878 | DB 0 ;AN000;GHG new adds | ||
| 1879 | DB 0 ;AN000;GHG new adds | ||
| 1880 | DB 0 ;AN000;GHG new adds | ||
| 1881 | DW 5 ;AC000;row location of panel JW | ||
| 1882 | DW left_col ;AN000;column location of panel | ||
| 1883 | DW PANEL42_W ;AN000;text char width of panel | ||
| 1884 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1885 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1886 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1887 | DW 0 ;AN000;Length compress panel in mem | ||
| 1888 | DW 0 ;AN000;Off addr compressed panel | ||
| 1889 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1890 | DW PANEL42_W*PANEL42_L;AN000;Length expanded panel in mem | ||
| 1891 | DW OFFSET PANEL42 ;AN000;Off addr of expanded panel in | ||
| 1892 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1893 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1894 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1895 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1896 | DW 0 ;AN000;Len of the panel label | ||
| 1897 | DW 0 ;AN000;Off addr of the panel label | ||
| 1898 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1899 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1900 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1901 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1902 | DW 0 ;AN000;Off address of full filespec | ||
| 1903 | DW 0 ;AN000;Seg address of full filespec | ||
| 1904 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1905 | DW 0 ;AN000;High off word of the beg off | ||
| 1906 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1907 | DW 0 ;AN000;Number of child panel entries | ||
| 1908 | DW 0 ;AN000;Off address of child panel table | ||
| 1909 | DW 0 ;AN000;Seg address of child panel table | ||
| 1910 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1911 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1912 | ; | ||
| 1913 | ; SUB_REBOOT_KEYS | ||
| 1914 | ; | ||
| 1915 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1916 | PCB43 LABEL WORD ;AN000; | ||
| 1917 | DW PCB_EXP ;AN000;option word | ||
| 1918 | DB 0 ;AN000;GHG new adds | ||
| 1919 | DB 0 ;AN000;GHG new adds | ||
| 1920 | DB 0 ;AN000;GHG new adds | ||
| 1921 | DW 21 ;AN000;row location of panel | ||
| 1922 | DW left_col ;AN000;column location of panel | ||
| 1923 | DW PANEL43_W ;AN000;text char width of panel | ||
| 1924 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1925 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1926 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1927 | DW 0 ;AN000;Length compress panel in mem | ||
| 1928 | DW 0 ;AN000;Off addr compressed panel | ||
| 1929 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1930 | DW PANEL43_W*PANEL43_L;AN000;Length expanded panel in mem | ||
| 1931 | DW OFFSET PANEL43 ;AN000;Off addr of expanded panel in | ||
| 1932 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1933 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1934 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1935 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1936 | DW 0 ;AN000;Len of the panel label | ||
| 1937 | DW 0 ;AN000;Off addr of the panel label | ||
| 1938 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1939 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1940 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1941 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1942 | DW 0 ;AN000;Off address of full filespec | ||
| 1943 | DW 0 ;AN000;Seg address of full filespec | ||
| 1944 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1945 | DW 0 ;AN000;High off word of the beg off | ||
| 1946 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1947 | DW 0 ;AN000;Number of child panel entries | ||
| 1948 | DW 0 ;AN000;Off address of child panel table | ||
| 1949 | DW 0 ;AN000;Seg address of child panel table | ||
| 1950 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1951 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1952 | ; | ||
| 1953 | ; SUB_INSTALL_1 | ||
| 1954 | ; | ||
| 1955 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1956 | PCB44 LABEL WORD ;AN000; | ||
| 1957 | DW PCB_EXP ;AN000;option word | ||
| 1958 | DB 0 ;AN000;GHG new adds | ||
| 1959 | DB 0 ;AN000;GHG new adds | ||
| 1960 | DB 0 ;AN000;GHG new adds | ||
| 1961 | DW 8 ;AN000;row location of panel | ||
| 1962 | DW left_col ;AN000;column location of panel | ||
| 1963 | DW PANEL44_W ;AN000;text char width of panel | ||
| 1964 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 1965 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 1966 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 1967 | DW 0 ;AN000;Length compress panel in mem | ||
| 1968 | DW 0 ;AN000;Off addr compressed panel | ||
| 1969 | DW 0 ;AN000;Seg addr compressed panel | ||
| 1970 | DW PANEL44_W*PANEL44_L;AN000;Length expanded panel in mem | ||
| 1971 | DW OFFSET PANEL44 ;AN000;Off addr of expanded panel in | ||
| 1972 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 1973 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 1974 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 1975 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 1976 | DW 0 ;AN000;Len of the panel label | ||
| 1977 | DW 0 ;AN000;Off addr of the panel label | ||
| 1978 | DW 0 ;AN000;Seg addr of the panel label | ||
| 1979 | DW 0 ;AN000;Beg relative row of panel label | ||
| 1980 | DW 0 ;AN000;Beg relative col of panel label | ||
| 1981 | DW 0 ;AN000;Len of the panel stored in file | ||
| 1982 | DW 0 ;AN000;Off address of full filespec | ||
| 1983 | DW 0 ;AN000;Seg address of full filespec | ||
| 1984 | DW 0 ;AN000;Lower off word of the beg off | ||
| 1985 | DW 0 ;AN000;High off word of the beg off | ||
| 1986 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 1987 | DW 0 ;AN000;Number of child panel entries | ||
| 1988 | DW 0 ;AN000;Off address of child panel table | ||
| 1989 | DW 0 ;AN000;Seg address of child panel table | ||
| 1990 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 1991 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1992 | ; | ||
| 1993 | ; SUB_INSTALL_2 | ||
| 1994 | ; | ||
| 1995 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1996 | PCB45 LABEL WORD ;AN000; | ||
| 1997 | DW PCB_EXP ;AN000;option word | ||
| 1998 | DB 0 ;AN000;GHG new adds | ||
| 1999 | DB 0 ;AN000;GHG new adds | ||
| 2000 | DB 0 ;AN000;GHG new adds | ||
| 2001 | DW 8 ;AN000;row location of panel | ||
| 2002 | DW left_col ;AN000;column location of panel | ||
| 2003 | DW PANEL45_W ;AN000;text char width of panel | ||
| 2004 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2005 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 2006 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2007 | DW 0 ;AN000;Length compress panel in mem | ||
| 2008 | DW 0 ;AN000;Off addr compressed panel | ||
| 2009 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2010 | DW PANEL45_W*PANEL45_L;AN000;Length expanded panel in mem | ||
| 2011 | DW OFFSET PANEL45 ;AN000;Off addr of expanded panel in | ||
| 2012 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2013 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2014 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2015 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2016 | DW 0 ;AN000;Len of the panel label | ||
| 2017 | DW 0 ;AN000;Off addr of the panel label | ||
| 2018 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2019 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2020 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2021 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2022 | DW 0 ;AN000;Off address of full filespec | ||
| 2023 | DW 0 ;AN000;Seg address of full filespec | ||
| 2024 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2025 | DW 0 ;AN000;High off word of the beg off | ||
| 2026 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2027 | DW 0 ;AN000;Number of child panel entries | ||
| 2028 | DW 0 ;AN000;Off address of child panel table | ||
| 2029 | DW 0 ;AN000;Seg address of child panel table | ||
| 2030 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2031 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2032 | ; | ||
| 2033 | ; SUB_COMP_VER | ||
| 2034 | ; | ||
| 2035 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2036 | PCB46 LABEL WORD ;AN000; | ||
| 2037 | DW PCB_EXP ;AN000;option word | ||
| 2038 | DB 0 ;AN000;GHG new adds | ||
| 2039 | DB 0 ;AN000;GHG new adds | ||
| 2040 | DB 0 ;AN000;GHG new adds | ||
| 2041 | DW 8 ;AN000;row location of panel | ||
| 2042 | DW left_col+7 ;AC028;column location of panel | ||
| 2043 | DW PANEL46_W ;AN000;text char width of panel | ||
| 2044 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2045 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 2046 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2047 | DW 0 ;AN000;Length compress panel in mem | ||
| 2048 | DW 0 ;AN000;Off addr compressed panel | ||
| 2049 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2050 | DW PANEL46_W*PANEL46_L;AN000;Length expanded panel in mem | ||
| 2051 | DW OFFSET PANEL46 ;AN000;Off addr of expanded panel in | ||
| 2052 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2053 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2054 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2055 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2056 | DW 0 ;AN000;Len of the panel label | ||
| 2057 | DW 0 ;AN000;Off addr of the panel label | ||
| 2058 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2059 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2060 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2061 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2062 | DW 0 ;AN000;Off address of full filespec | ||
| 2063 | DW 0 ;AN000;Seg address of full filespec | ||
| 2064 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2065 | DW 0 ;AN000;High off word of the beg off | ||
| 2066 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2067 | DW 0 ;AN000;Number of child panel entries | ||
| 2068 | DW 0 ;AN000;Off address of child panel table | ||
| 2069 | DW 0 ;AN000;Seg address of child panel table | ||
| 2070 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2071 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2072 | ; | ||
| 2073 | ; SUB_KEYS_1 | ||
| 2074 | ; | ||
| 2075 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2076 | PCB47 LABEL WORD ;AN000; | ||
| 2077 | DW PCB_EXP ;AN000;option word | ||
| 2078 | DB 0 ;AN000;GHG new adds | ||
| 2079 | DB 0 ;AN000;GHG new adds | ||
| 2080 | DB 0 ;AN000;GHG new adds | ||
| 2081 | DW 21 ;AN000;row location of panel | ||
| 2082 | DW left_col+5 ;AN028;column location of panel | ||
| 2083 | DW PANEL47_W ;AN000;text char width of panel | ||
| 2084 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2085 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 2086 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2087 | DW 0 ;AN000;Length compress panel in mem | ||
| 2088 | DW 0 ;AN000;Off addr compressed panel | ||
| 2089 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2090 | DW PANEL47_W*PANEL47_L;AN000;Length expanded panel in mem | ||
| 2091 | DW OFFSET PANEL47 ;AN000;Off addr of expanded panel in | ||
| 2092 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2093 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2094 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2095 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2096 | DW 0 ;AN000;Len of the panel label | ||
| 2097 | DW 0 ;AN000;Off addr of the panel label | ||
| 2098 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2099 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2100 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2101 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2102 | DW 0 ;AN000;Off address of full filespec | ||
| 2103 | DW 0 ;AN000;Seg address of full filespec | ||
| 2104 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2105 | DW 0 ;AN000;High off word of the beg off | ||
| 2106 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2107 | DW 0 ;AN000;Number of child panel entries | ||
| 2108 | DW 0 ;AN000;Off address of child panel table | ||
| 2109 | DW 0 ;AN000;Seg address of child panel table | ||
| 2110 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2111 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2112 | ; | ||
| 2113 | ; SUB_KEYS_2 | ||
| 2114 | ; | ||
| 2115 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2116 | PCB48 LABEL WORD ;AN000; | ||
| 2117 | DW PCB_EXP ;AN000;option word | ||
| 2118 | DB 0 ;AN000;GHG new adds | ||
| 2119 | DB 0 ;AN000;GHG new adds | ||
| 2120 | DB 0 ;AN000;GHG new adds | ||
| 2121 | DW 8 ;AN000;row location of panel | ||
| 2122 | DW left_col+7 ;AC028;column location of panel | ||
| 2123 | DW PANEL48_W ;AN000;text char width of panel | ||
| 2124 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2125 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 2126 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2127 | DW 0 ;AN000;Length compress panel in mem | ||
| 2128 | DW 0 ;AN000;Off addr compressed panel | ||
| 2129 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2130 | DW PANEL48_W*PANEL48_L;AN000;Length expanded panel in mem | ||
| 2131 | DW OFFSET PANEL48 ;AN000;Off addr of expanded panel in | ||
| 2132 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2133 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2134 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2135 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2136 | DW 0 ;AN000;Len of the panel label | ||
| 2137 | DW 0 ;AN000;Off addr of the panel label | ||
| 2138 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2139 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2140 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2141 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2142 | DW 0 ;AN000;Off address of full filespec | ||
| 2143 | DW 0 ;AN000;Seg address of full filespec | ||
| 2144 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2145 | DW 0 ;AN000;High off word of the beg off | ||
| 2146 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2147 | DW 0 ;AN000;Number of child panel entries | ||
| 2148 | DW 0 ;AN000;Off address of child panel table | ||
| 2149 | DW 0 ;AN000;Seg address of child panel table | ||
| 2150 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2151 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2152 | ; | ||
| 2153 | ; CHILD F1=HELP | ||
| 2154 | ; | ||
| 2155 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2156 | PCB49 LABEL WORD ;AN000; | ||
| 2157 | DW PCB_EXP ;AN000;option word | ||
| 2158 | DB 0 ;AN000;GHG new adds | ||
| 2159 | DB 0 ;AN000;GHG new adds | ||
| 2160 | DB 0 ;AN000;GHG new adds | ||
| 2161 | DW 1 ;AN000;row location of panel | ||
| 2162 | DW LEFT_COL ;AN000;column location of panel | ||
| 2163 | DW PANEL49_W ;AN000;text char width of panel | ||
| 2164 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2165 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 2166 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2167 | DW 0 ;AN000;Length compress panel in mem | ||
| 2168 | DW 0 ;AN000;Off addr compressed panel | ||
| 2169 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2170 | DW PANEL49_W*PANEL49_L;AN000;Length expanded panel in mem | ||
| 2171 | DW OFFSET PANEL49 ;AN000;Off addr of expanded panel in | ||
| 2172 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2173 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2174 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2175 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2176 | DW 0 ;AN000;Len of the panel label | ||
| 2177 | DW 0 ;AN000;Off addr of the panel label | ||
| 2178 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2179 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2180 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2181 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2182 | DW 0 ;AN000;Off address of full filespec | ||
| 2183 | DW 0 ;AN000;Seg address of full filespec | ||
| 2184 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2185 | DW 0 ;AN000;High off word of the beg off | ||
| 2186 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2187 | DW 0 ;AN000;Number of child panel entries | ||
| 2188 | DW 0 ;AN000;Off address of child panel table | ||
| 2189 | DW 0 ;AN000;Seg address of child panel table | ||
| 2190 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2191 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2192 | ; | ||
| 2193 | ; CHILD F9=keys | ||
| 2194 | ; | ||
| 2195 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2196 | PCB50 LABEL WORD ;AN000; | ||
| 2197 | DW PCB_EXP ;AN000;option word | ||
| 2198 | DB 0 ;AN000;GHG new adds | ||
| 2199 | DB 0 ;AN000;GHG new adds | ||
| 2200 | DB 0 ;AN000;GHG new adds | ||
| 2201 | DW 1 ;AN000;row location of panel | ||
| 2202 | DW LEFT_COL ;AN000;column location of panel | ||
| 2203 | DW PANEL50_W ;AN000;text char width of panel | ||
| 2204 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2205 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 2206 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2207 | DW 0 ;AN000;Length compress panel in mem | ||
| 2208 | DW 0 ;AN000;Off addr compressed panel | ||
| 2209 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2210 | DW PANEL50_W*PANEL50_L;AN000;Length expanded panel in mem | ||
| 2211 | DW OFFSET PANEL50 ;AN000;Off addr of expanded panel in | ||
| 2212 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2213 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2214 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2215 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2216 | DW 0 ;AN000;Len of the panel label | ||
| 2217 | DW 0 ;AN000;Off addr of the panel label | ||
| 2218 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2219 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2220 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2221 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2222 | DW 0 ;AN000;Off address of full filespec | ||
| 2223 | DW 0 ;AN000;Seg address of full filespec | ||
| 2224 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2225 | DW 0 ;AN000;High off word of the beg off | ||
| 2226 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2227 | DW 0 ;AN000;Number of child panel entries | ||
| 2228 | DW 0 ;AN000;Off address of child panel table | ||
| 2229 | DW 0 ;AN000;Seg address of child panel table | ||
| 2230 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2231 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2232 | ; | ||
| 2233 | ; CHILD esc | ||
| 2234 | ; | ||
| 2235 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2236 | PCB51 LABEL WORD ;AN000; | ||
| 2237 | DW PCB_EXP ;AN000;option word | ||
| 2238 | DB 0 ;AN000;GHG new adds | ||
| 2239 | DB 0 ;AN000;GHG new adds | ||
| 2240 | DB 0 ;AN000;GHG new adds | ||
| 2241 | DW 1 ;AN000;row location of panel | ||
| 2242 | DW LEFT_COL ;AN000;column location of panel | ||
| 2243 | DW PANEL51_W ;AN000;text char width of panel | ||
| 2244 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2245 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 2246 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2247 | DW 0 ;AN000;Length compress panel in mem | ||
| 2248 | DW 0 ;AN000;Off addr compressed panel | ||
| 2249 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2250 | DW PANEL51_W*PANEL51_L;AN000;Length expanded panel in mem | ||
| 2251 | DW OFFSET PANEL51 ;AN000;Off addr of expanded panel in | ||
| 2252 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2253 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2254 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2255 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2256 | DW 0 ;AN000;Len of the panel label | ||
| 2257 | DW 0 ;AN000;Off addr of the panel label | ||
| 2258 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2259 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2260 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2261 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2262 | DW 0 ;AN000;Off address of full filespec | ||
| 2263 | DW 0 ;AN000;Seg address of full filespec | ||
| 2264 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2265 | DW 0 ;AN000;High off word of the beg off | ||
| 2266 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2267 | DW 0 ;AN000;Number of child panel entries | ||
| 2268 | DW 0 ;AN000;Off address of child panel table | ||
| 2269 | DW 0 ;AN000;Seg address of child panel table | ||
| 2270 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2271 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2272 | ; | ||
| 2273 | ; CHILD ENTER | ||
| 2274 | ; | ||
| 2275 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2276 | PCB52 LABEL WORD ;AN000; | ||
| 2277 | DW PCB_EXP ;AN000;option word | ||
| 2278 | DB 0 ;AN000;GHG new adds | ||
| 2279 | DB 0 ;AN000;GHG new adds | ||
| 2280 | DB 0 ;AN000;GHG new adds | ||
| 2281 | DW 1 ;AN000;row location of panel | ||
| 2282 | DW LEFT_COL ;AN000;column location of panel | ||
| 2283 | DW PANEL52_W ;AN000;text char width of panel | ||
| 2284 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2285 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 2286 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2287 | DW 0 ;AN000;Length compress panel in mem | ||
| 2288 | DW 0 ;AN000;Off addr compressed panel | ||
| 2289 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2290 | DW PANEL52_W*PANEL52_L;AN000;Length expanded panel in mem | ||
| 2291 | DW OFFSET PANEL52 ;AN000;Off addr of expanded panel in | ||
| 2292 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2293 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2294 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2295 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2296 | DW 0 ;AN000;Len of the panel label | ||
| 2297 | DW 0 ;AN000;Off addr of the panel label | ||
| 2298 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2299 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2300 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2301 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2302 | DW 0 ;AN000;Off address of full filespec | ||
| 2303 | DW 0 ;AN000;Seg address of full filespec | ||
| 2304 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2305 | DW 0 ;AN000;High off word of the beg off | ||
| 2306 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2307 | DW 0 ;AN000;Number of child panel entries | ||
| 2308 | DW 0 ;AN000;Off address of child panel table | ||
| 2309 | DW 0 ;AN000;Seg address of child panel table | ||
| 2310 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2311 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2312 | ; | ||
| 2313 | ; SUB_COMP_REP | ||
| 2314 | ; | ||
| 2315 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2316 | PCB53 LABEL WORD ;AN000; | ||
| 2317 | DW PCB_EXP ;AN000;option word | ||
| 2318 | DB 0 ;AN000;GHG new adds | ||
| 2319 | DB 0 ;AN000;GHG new adds | ||
| 2320 | DB 0 ;AN000;GHG new adds | ||
| 2321 | DW 8 ;AN000;row location of panel | ||
| 2322 | DW left_col+7 ;AC028;column location of panel | ||
| 2323 | DW PANEL53_W ;AN000;text char width of panel | ||
| 2324 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2325 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 2326 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2327 | DW 0 ;AN000;Length compress panel in mem | ||
| 2328 | DW 0 ;AN000;Off addr compressed panel | ||
| 2329 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2330 | DW PANEL53_W*PANEL53_L;AN000;Length expanded panel in mem | ||
| 2331 | DW OFFSET PANEL53 ;AN000;Off addr of expanded panel in | ||
| 2332 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2333 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2334 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2335 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2336 | DW 0 ;AN000;Len of the panel label | ||
| 2337 | DW 0 ;AN000;Off addr of the panel label | ||
| 2338 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2339 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2340 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2341 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2342 | DW 0 ;AN000;Off address of full filespec | ||
| 2343 | DW 0 ;AN000;Seg address of full filespec | ||
| 2344 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2345 | DW 0 ;AN000;High off word of the beg off | ||
| 2346 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2347 | DW 0 ;AN000;Number of child panel entries | ||
| 2348 | DW 0 ;AN000;Off address of child panel table | ||
| 2349 | DW 0 ;AN000;Seg address of child panel table | ||
| 2350 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2351 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2352 | ; | ||
| 2353 | ; ERROR PANEL 1 | ||
| 2354 | ; | ||
| 2355 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2356 | PCB54 LABEL WORD ;AN000; | ||
| 2357 | DW PCB_EXP ;AN000;option word | ||
| 2358 | DB 0 ;AN000;GHG new adds | ||
| 2359 | DB 0 ;AN000;GHG new adds | ||
| 2360 | DB 0 ;AN000;GHG new adds | ||
| 2361 | DW 11 ;AN000;row location of panel | ||
| 2362 | DW LEFT_COL+3 ;AN000;column location of panel | ||
| 2363 | DW PANEL54_W ;AN000;text char width of panel | ||
| 2364 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2365 | DW WHITE_RED ;AN000;Index number of log color | ||
| 2366 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2367 | DW 0 ;AN000;Length compress panel in mem | ||
| 2368 | DW 0 ;AN000;Off addr compressed panel | ||
| 2369 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2370 | DW PANEL54_W*PANEL54_L;AN000;Length expanded panel in mem | ||
| 2371 | DW OFFSET PANEL54 ;AN000;Off addr of expanded panel in | ||
| 2372 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2373 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2374 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2375 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2376 | DW 0 ;AN000;Len of the panel label | ||
| 2377 | DW 0 ;AN000;Off addr of the panel label | ||
| 2378 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2379 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2380 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2381 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2382 | DW 0 ;AN000;Off address of full filespec | ||
| 2383 | DW 0 ;AN000;Seg address of full filespec | ||
| 2384 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2385 | DW 0 ;AN000;High off word of the beg off | ||
| 2386 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2387 | DW 0 ;AN000;Number of child panel entries | ||
| 2388 | DW 0 ;AN000;Off address of child panel table | ||
| 2389 | DW 0 ;AN000;Seg address of child panel table | ||
| 2390 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2391 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2392 | ; | ||
| 2393 | ; ERROR PANEL 2 | ||
| 2394 | ; | ||
| 2395 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2396 | PCB55 LABEL WORD ;AN000; | ||
| 2397 | DW PCB_EXP ;AN000;option word | ||
| 2398 | DB 0 ;AN000;GHG new adds | ||
| 2399 | DB 0 ;AN000;GHG new adds | ||
| 2400 | DB 0 ;AN000;GHG new adds | ||
| 2401 | DW 11 ;AN000;row location of panel | ||
| 2402 | DW LEFT_COL+3 ;AN000;column location of panel | ||
| 2403 | DW PANEL55_W ;AN000;text char width of panel | ||
| 2404 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2405 | DW WHITE_RED ;AN000;Index number of log color | ||
| 2406 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2407 | DW 0 ;AN000;Length compress panel in mem | ||
| 2408 | DW 0 ;AN000;Off addr compressed panel | ||
| 2409 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2410 | DW PANEL55_W*PANEL55_L;AN000;Length expanded panel in mem | ||
| 2411 | DW OFFSET PANEL55 ;AN000;Off addr of expanded panel in | ||
| 2412 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2413 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2414 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2415 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2416 | DW 0 ;AN000;Len of the panel label | ||
| 2417 | DW 0 ;AN000;Off addr of the panel label | ||
| 2418 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2419 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2420 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2421 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2422 | DW 0 ;AN000;Off address of full filespec | ||
| 2423 | DW 0 ;AN000;Seg address of full filespec | ||
| 2424 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2425 | DW 0 ;AN000;High off word of the beg off | ||
| 2426 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2427 | DW 0 ;AN000;Number of child panel entries | ||
| 2428 | DW 0 ;AN000;Off address of child panel table | ||
| 2429 | DW 0 ;AN000;Seg address of child panel table | ||
| 2430 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2431 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2432 | ; | ||
| 2433 | ; ERROR PANEL 3 | ||
| 2434 | ; | ||
| 2435 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2436 | PCB56 LABEL WORD ;AN000; | ||
| 2437 | DW PCB_EXP ;AN000;option word | ||
| 2438 | DB 0 ;AN000;GHG new adds | ||
| 2439 | DB 0 ;AN000;GHG new adds | ||
| 2440 | DB 0 ;AN000;GHG new adds | ||
| 2441 | DW 11 ;AN000;row location of panel | ||
| 2442 | DW LEFT_COL+3 ;AN000;column location of panel | ||
| 2443 | DW PANEL56_W ;AN000;text char width of panel | ||
| 2444 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2445 | DW WHITE_RED ;AN000;Index number of log color | ||
| 2446 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2447 | DW 0 ;AN000;Length compress panel in mem | ||
| 2448 | DW 0 ;AN000;Off addr compressed panel | ||
| 2449 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2450 | DW PANEL56_W*PANEL56_L;AN000;Length expanded panel in mem | ||
| 2451 | DW OFFSET PANEL56 ;AN000;Off addr of expanded panel in | ||
| 2452 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2453 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2454 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2455 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2456 | DW 0 ;AN000;Len of the panel label | ||
| 2457 | DW 0 ;AN000;Off addr of the panel label | ||
| 2458 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2459 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2460 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2461 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2462 | DW 0 ;AN000;Off address of full filespec | ||
| 2463 | DW 0 ;AN000;Seg address of full filespec | ||
| 2464 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2465 | DW 0 ;AN000;High off word of the beg off | ||
| 2466 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2467 | DW 0 ;AN000;Number of child panel entries | ||
| 2468 | DW 0 ;AN000;Off address of child panel table | ||
| 2469 | DW 0 ;AN000;Seg address of child panel table | ||
| 2470 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2471 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2472 | ; | ||
| 2473 | ; ERROR PANEL 4 | ||
| 2474 | ; | ||
| 2475 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2476 | PCB57 LABEL WORD ;AN000; | ||
| 2477 | DW PCB_EXP ;AN000;option word | ||
| 2478 | DB 0 ;AN000;GHG new adds | ||
| 2479 | DB 0 ;AN000;GHG new adds | ||
| 2480 | DB 0 ;AN000;GHG new adds | ||
| 2481 | DW 11 ;AN000;row location of panel | ||
| 2482 | DW LEFT_COL+3 ;AN000;column location of panel | ||
| 2483 | DW PANEL57_W ;AN000;text char width of panel | ||
| 2484 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2485 | DW WHITE_RED ;AN000;Index number of log color | ||
| 2486 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2487 | DW 0 ;AN000;Length compress panel in mem | ||
| 2488 | DW 0 ;AN000;Off addr compressed panel | ||
| 2489 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2490 | DW PANEL57_W*PANEL57_L;AN000;Length expanded panel in mem | ||
| 2491 | DW OFFSET PANEL57 ;AN000;Off addr of expanded panel in | ||
| 2492 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2493 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2494 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2495 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2496 | DW 0 ;AN000;Len of the panel label | ||
| 2497 | DW 0 ;AN000;Off addr of the panel label | ||
| 2498 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2499 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2500 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2501 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2502 | DW 0 ;AN000;Off address of full filespec | ||
| 2503 | DW 0 ;AN000;Seg address of full filespec | ||
| 2504 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2505 | DW 0 ;AN000;High off word of the beg off | ||
| 2506 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2507 | DW 0 ;AN000;Number of child panel entries | ||
| 2508 | DW 0 ;AN000;Off address of child panel table | ||
| 2509 | DW 0 ;AN000;Seg address of child panel table | ||
| 2510 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2511 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2512 | ; | ||
| 2513 | ; SUB_INS_START_B | ||
| 2514 | ; | ||
| 2515 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2516 | PCB58 LABEL WORD ;AN000; | ||
| 2517 | DW PCB_EXP ;AN000;option word | ||
| 2518 | DB 0 ;AN000;GHG new adds | ||
| 2519 | DB 0 ;AN000;GHG new adds | ||
| 2520 | DB 0 ;AN000;GHG new adds | ||
| 2521 | DW 8 ;AN000;row location of panel | ||
| 2522 | DW LEFT_COL ;AN000;column location of panel | ||
| 2523 | DW PANEL58_W ;AN000;text char width of panel | ||
| 2524 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2525 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 2526 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2527 | DW 0 ;AN000;Length compress panel in mem | ||
| 2528 | DW 0 ;AN000;Off addr compressed panel | ||
| 2529 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2530 | DW PANEL58_W*PANEL58_L;AN000;Length expanded panel in mem | ||
| 2531 | DW OFFSET PANEL58 ;AN000;Off addr of expanded panel in | ||
| 2532 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2533 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2534 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2535 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2536 | DW 0 ;AN000;Len of the panel label | ||
| 2537 | DW 0 ;AN000;Off addr of the panel label | ||
| 2538 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2539 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2540 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2541 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2542 | DW 0 ;AN000;Off address of full filespec | ||
| 2543 | DW 0 ;AN000;Seg address of full filespec | ||
| 2544 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2545 | DW 0 ;AN000;High off word of the beg off | ||
| 2546 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2547 | DW 0 ;AN000;Number of child panel entries | ||
| 2548 | DW 0 ;AN000;Off address of child panel table | ||
| 2549 | DW 0 ;AN000;Seg address of child panel table | ||
| 2550 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2551 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2552 | ; | ||
| 2553 | ; SUB_REM_SEL_A | ||
| 2554 | ; | ||
| 2555 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2556 | PCB59 LABEL WORD ;AN000; | ||
| 2557 | DW PCB_EXP ;AN000;option word | ||
| 2558 | DB 0 ;AN000;GHG new adds | ||
| 2559 | DB 0 ;AN000;GHG new adds | ||
| 2560 | DB 0 ;AN000;GHG new adds | ||
| 2561 | DW 8 ;AN000;row location of panel | ||
| 2562 | DW LEFT_COL ;AN000;column location of panel | ||
| 2563 | DW PANEL59_W ;AN000;text char width of panel | ||
| 2564 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2565 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 2566 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2567 | DW 0 ;AN000;Length compress panel in mem | ||
| 2568 | DW 0 ;AN000;Off addr compressed panel | ||
| 2569 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2570 | DW PANEL59_W*PANEL59_L;AN000;Length expanded panel in mem | ||
| 2571 | DW OFFSET PANEL59 ;AN000;Off addr of expanded panel in | ||
| 2572 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2573 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2574 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2575 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2576 | DW 0 ;AN000;Len of the panel label | ||
| 2577 | DW 0 ;AN000;Off addr of the panel label | ||
| 2578 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2579 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2580 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2581 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2582 | DW 0 ;AN000;Off address of full filespec | ||
| 2583 | DW 0 ;AN000;Seg address of full filespec | ||
| 2584 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2585 | DW 0 ;AN000;High off word of the beg off | ||
| 2586 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2587 | DW 0 ;AN000;Number of child panel entries | ||
| 2588 | DW 0 ;AN000;Off address of child panel table | ||
| 2589 | DW 0 ;AN000;Seg address of child panel table | ||
| 2590 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2591 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2592 | ; | ||
| 2593 | ; SUB_REM_START_B | ||
| 2594 | ; | ||
| 2595 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2596 | PCB60 LABEL WORD ;AN000; | ||
| 2597 | DW PCB_EXP ;AN000;option word | ||
| 2598 | DB 0 ;AN000;GHG new adds | ||
| 2599 | DB 0 ;AN000;GHG new adds | ||
| 2600 | DB 0 ;AN000;GHG new adds | ||
| 2601 | DW 8 ;AN000;row location of panel | ||
| 2602 | DW LEFT_COL ;AN000;column location of panel | ||
| 2603 | DW PANEL60_W ;AN000;text char width of panel | ||
| 2604 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2605 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 2606 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2607 | DW 0 ;AN000;Length compress panel in mem | ||
| 2608 | DW 0 ;AN000;Off addr compressed panel | ||
| 2609 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2610 | DW PANEL60_W*PANEL60_L;AN000;Length expanded panel in mem | ||
| 2611 | DW OFFSET PANEL60 ;AN000;Off addr of expanded panel in | ||
| 2612 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2613 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2614 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2615 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2616 | DW 0 ;AN000;Len of the panel label | ||
| 2617 | DW 0 ;AN000;Off addr of the panel label | ||
| 2618 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2619 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2620 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2621 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2622 | DW 0 ;AN000;Off address of full filespec | ||
| 2623 | DW 0 ;AN000;Seg address of full filespec | ||
| 2624 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2625 | DW 0 ;AN000;High off word of the beg off | ||
| 2626 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2627 | DW 0 ;AN000;Number of child panel entries | ||
| 2628 | DW 0 ;AN000;Off address of child panel table | ||
| 2629 | DW 0 ;AN000;Seg address of child panel table | ||
| 2630 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2631 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2632 | ; | ||
| 2633 | ; SUB_REM_DOS_A | ||
| 2634 | ; | ||
| 2635 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2636 | PCB61 LABEL WORD ;AN000; | ||
| 2637 | DW PCB_EXP ;AN000;option word | ||
| 2638 | DB 0 ;AN000;GHG new adds | ||
| 2639 | DB 0 ;AN000;GHG new adds | ||
| 2640 | DB 0 ;AN000;GHG new adds | ||
| 2641 | DW 8 ;AN000;row location of panel | ||
| 2642 | DW LEFT_COL ;AN000;column location of panel | ||
| 2643 | DW PANEL61_W ;AN000;text char width of panel | ||
| 2644 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2645 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 2646 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2647 | DW 0 ;AN000;Length compress panel in mem | ||
| 2648 | DW 0 ;AN000;Off addr compressed panel | ||
| 2649 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2650 | DW PANEL61_W*PANEL61_L;AN000;Length expanded panel in mem | ||
| 2651 | DW OFFSET PANEL61 ;AN000;Off addr of expanded panel in | ||
| 2652 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2653 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2654 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2655 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2656 | DW 0 ;AN000;Len of the panel label | ||
| 2657 | DW 0 ;AN000;Off addr of the panel label | ||
| 2658 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2659 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2660 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2661 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2662 | DW 0 ;AN000;Off address of full filespec | ||
| 2663 | DW 0 ;AN000;Seg address of full filespec | ||
| 2664 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2665 | DW 0 ;AN000;High off word of the beg off | ||
| 2666 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2667 | DW 0 ;AN000;Number of child panel entries | ||
| 2668 | DW 0 ;AN000;Off address of child panel table | ||
| 2669 | DW 0 ;AN000;Seg address of child panel table | ||
| 2670 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2671 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2672 | ; | ||
| 2673 | ; ERR_BAD_PATH | ||
| 2674 | ; | ||
| 2675 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2676 | PCB62 LABEL WORD ;AN000; | ||
| 2677 | DW PCB_EXP ;AN000;option word | ||
| 2678 | DB 0 ;AN000;GHG new adds | ||
| 2679 | DB 0 ;AN000;GHG new adds | ||
| 2680 | DB 0 ;AN000;GHG new adds | ||
| 2681 | DW 11 ;AN000;row location of panel | ||
| 2682 | DW LEFT_COL+1 ;AN000;column location of panel | ||
| 2683 | DW PANEL62_W ;AN000;text char width of panel | ||
| 2684 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2685 | DW WHITE_RED ;AN000;Index number of log color | ||
| 2686 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2687 | DW 0 ;AN000;Length compress panel in mem | ||
| 2688 | DW 0 ;AN000;Off addr compressed panel | ||
| 2689 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2690 | DW PANEL62_W*PANEL62_L;AN000;Length expanded panel in mem | ||
| 2691 | DW OFFSET PANEL62 ;AN000;Off addr of expanded panel in | ||
| 2692 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2693 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2694 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2695 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2696 | DW 0 ;AN000;Len of the panel label | ||
| 2697 | DW 0 ;AN000;Off addr of the panel label | ||
| 2698 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2699 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2700 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2701 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2702 | DW 0 ;AN000;Off address of full filespec | ||
| 2703 | DW 0 ;AN000;Seg address of full filespec | ||
| 2704 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2705 | DW 0 ;AN000;High off word of the beg off | ||
| 2706 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2707 | DW 0 ;AN000;Number of child panel entries | ||
| 2708 | DW 0 ;AN000;Off address of child panel table | ||
| 2709 | DW 0 ;AN000;Seg address of child panel table | ||
| 2710 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2711 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2712 | ; | ||
| 2713 | ; ERR_BAD_PRT_FILE | ||
| 2714 | ; | ||
| 2715 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2716 | PCB63 LABEL WORD ;AN000; | ||
| 2717 | DW PCB_EXP ;AN000;option word | ||
| 2718 | DB 0 ;AN000;GHG new adds | ||
| 2719 | DB 0 ;AN000;GHG new adds | ||
| 2720 | DB 0 ;AN000;GHG new adds | ||
| 2721 | DW 11 ;AN000;row location of panel | ||
| 2722 | DW LEFT_COL+1 ;AN000;column location of panel | ||
| 2723 | DW PANEL63_W ;AN000;text char width of panel | ||
| 2724 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2725 | DW WHITE_RED ;AN000;Index number of log color | ||
| 2726 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2727 | DW 0 ;AN000;Length compress panel in mem | ||
| 2728 | DW 0 ;AN000;Off addr compressed panel | ||
| 2729 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2730 | DW PANEL63_W*PANEL63_L;AN000;Length expanded panel in mem | ||
| 2731 | DW OFFSET PANEL63 ;AN000;Off addr of expanded panel in | ||
| 2732 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2733 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2734 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2735 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2736 | DW 0 ;AN000;Len of the panel label | ||
| 2737 | DW 0 ;AN000;Off addr of the panel label | ||
| 2738 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2739 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2740 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2741 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2742 | DW 0 ;AN000;Off address of full filespec | ||
| 2743 | DW 0 ;AN000;Seg address of full filespec | ||
| 2744 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2745 | DW 0 ;AN000;High off word of the beg off | ||
| 2746 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2747 | DW 0 ;AN000;Number of child panel entries | ||
| 2748 | DW 0 ;AN000;Off address of child panel table | ||
| 2749 | DW 0 ;AN000;Seg address of child panel table | ||
| 2750 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2751 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2752 | ; | ||
| 2753 | ; ERR_BAD_PRT_PROFILE | ||
| 2754 | ; | ||
| 2755 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2756 | PCB64 LABEL WORD ;AN000; | ||
| 2757 | DW PCB_EXP ;AN000;option word | ||
| 2758 | DB 0 ;AN000;GHG new adds | ||
| 2759 | DB 0 ;AN000;GHG new adds | ||
| 2760 | DB 0 ;AN000;GHG new adds | ||
| 2761 | DW 11 ;AN000;row location of panel | ||
| 2762 | DW LEFT_COL+1 ;AN000;column location of panel | ||
| 2763 | DW PANEL64_W ;AN000;text char width of panel | ||
| 2764 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2765 | DW WHITE_RED ;AN000;Index number of log color | ||
| 2766 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2767 | DW 0 ;AN000;Length compress panel in mem | ||
| 2768 | DW 0 ;AN000;Off addr compressed panel | ||
| 2769 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2770 | DW PANEL64_W*PANEL64_L;AN000;Length expanded panel in mem | ||
| 2771 | DW OFFSET PANEL64 ;AN000;Off addr of expanded panel in | ||
| 2772 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2773 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2774 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2775 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2776 | DW 0 ;AN000;Len of the panel label | ||
| 2777 | DW 0 ;AN000;Off addr of the panel label | ||
| 2778 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2779 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2780 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2781 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2782 | DW 0 ;AN000;Off address of full filespec | ||
| 2783 | DW 0 ;AN000;Seg address of full filespec | ||
| 2784 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2785 | DW 0 ;AN000;High off word of the beg off | ||
| 2786 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2787 | DW 0 ;AN000;Number of child panel entries | ||
| 2788 | DW 0 ;AN000;Off address of child panel table | ||
| 2789 | DW 0 ;AN000;Seg address of child panel table | ||
| 2790 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2791 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2792 | ; | ||
| 2793 | ; FORMAT_DISK | ||
| 2794 | ; | ||
| 2795 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2796 | PCB65 LABEL WORD ;AN000; | ||
| 2797 | DW PCB_EXP ;AN000;option word | ||
| 2798 | DB 0 ;AN000;GHG new adds | ||
| 2799 | DB 0 ;AN000;GHG new adds | ||
| 2800 | DB 0 ;AN000;GHG new adds | ||
| 2801 | DW 8 ;AN000;row location of panel | ||
| 2802 | DW LEFT_COL ;AN000;column location of panel | ||
| 2803 | DW PANEL65_W ;AN000;text char width of panel | ||
| 2804 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2805 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 2806 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2807 | DW 0 ;AN000;Length compress panel in mem | ||
| 2808 | DW 0 ;AN000;Off addr compressed panel | ||
| 2809 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2810 | DW PANEL65_W*PANEL65_L;AN000;Length expanded panel in mem | ||
| 2811 | DW OFFSET PANEL65 ;AN000;Off addr of expanded panel in | ||
| 2812 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2813 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2814 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2815 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2816 | DW 0 ;AN000;Len of the panel label | ||
| 2817 | DW 0 ;AN000;Off addr of the panel label | ||
| 2818 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2819 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2820 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2821 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2822 | DW 0 ;AN000;Off address of full filespec | ||
| 2823 | DW 0 ;AN000;Seg address of full filespec | ||
| 2824 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2825 | DW 0 ;AN000;High off word of the beg off | ||
| 2826 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2827 | DW 0 ;AN000;Number of child panel entries | ||
| 2828 | DW 0 ;AN000;Off address of child panel table | ||
| 2829 | DW 0 ;AN000;Seg address of child panel table | ||
| 2830 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2831 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2832 | ; | ||
| 2833 | ; FORMAT_DISKETTE | ||
| 2834 | ; | ||
| 2835 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2836 | PCB66 LABEL WORD ;AN000; | ||
| 2837 | DW PCB_EXP ;AN000;option word | ||
| 2838 | DB 0 ;AN000;GHG new adds | ||
| 2839 | DB 0 ;AN000;GHG new adds | ||
| 2840 | DB 0 ;AN000;GHG new adds | ||
| 2841 | DW 8 ;AN000;row location of panel | ||
| 2842 | DW LEFT_COL ;AN000;column location of panel | ||
| 2843 | DW PANEL66_W ;AN000;text char width of panel | ||
| 2844 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2845 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 2846 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2847 | DW 0 ;AN000;Length compress panel in mem | ||
| 2848 | DW 0 ;AN000;Off addr compressed panel | ||
| 2849 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2850 | DW PANEL66_W*PANEL66_L;AN000;Length expanded panel in mem | ||
| 2851 | DW OFFSET PANEL66 ;AN000;Off addr of expanded panel in | ||
| 2852 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2853 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2854 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2855 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2856 | DW 0 ;AN000;Len of the panel label | ||
| 2857 | DW 0 ;AN000;Off addr of the panel label | ||
| 2858 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2859 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2860 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2861 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2862 | DW 0 ;AN000;Off address of full filespec | ||
| 2863 | DW 0 ;AN000;Seg address of full filespec | ||
| 2864 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2865 | DW 0 ;AN000;High off word of the beg off | ||
| 2866 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2867 | DW 0 ;AN000;Number of child panel entries | ||
| 2868 | DW 0 ;AN000;Off address of child panel table | ||
| 2869 | DW 0 ;AN000;Seg address of child panel table | ||
| 2870 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2871 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2872 | ; | ||
| 2873 | ; ERR_border | ||
| 2874 | ; | ||
| 2875 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2876 | PCB67 LABEL WORD ;AN000; | ||
| 2877 | DW PCB_EXP ;AN000;option word | ||
| 2878 | DB 0 ;AN000;GHG new adds | ||
| 2879 | DB 0 ;AN000;GHG new adds | ||
| 2880 | DB 0 ;AN000;GHG new adds | ||
| 2881 | DW 10 ;AN000;row location of panel | ||
| 2882 | DW LEFT_COL ;AN000;column location of panel | ||
| 2883 | DW PANEL67_W ;AN000;text char width of panel | ||
| 2884 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2885 | DW WHITE_RED ;AN000;Index number of log color | ||
| 2886 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2887 | DW 0 ;AN000;Length compress panel in mem | ||
| 2888 | DW 0 ;AN000;Off addr compressed panel | ||
| 2889 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2890 | DW PANEL67_W*PANEL67_L;AN000;Length expanded panel in mem | ||
| 2891 | DW OFFSET PANEL67 ;AN000;Off addr of expanded panel in | ||
| 2892 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2893 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2894 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2895 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2896 | DW 0 ;AN000;Len of the panel label | ||
| 2897 | DW 0 ;AN000;Off addr of the panel label | ||
| 2898 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2899 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2900 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2901 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2902 | DW 0 ;AN000;Off address of full filespec | ||
| 2903 | DW 0 ;AN000;Seg address of full filespec | ||
| 2904 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2905 | DW 0 ;AN000;High off word of the beg off | ||
| 2906 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2907 | DW 2 ;AN000;Number of child panel entries | ||
| 2908 | DW OFFSET CHILD68 ;AN000;Off address of child panel table | ||
| 2909 | DW 0 ;AN000;Seg address of child panel table | ||
| 2910 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2911 | |||
| 2912 | CHILD68 LABEL WORD ;AN000; | ||
| 2913 | DW CHILD_F3EXIT ;AN000;child PCB element number | ||
| 2914 | DW PANEL67_L-1 ;AN000;row override | ||
| 2915 | DW 2 ;AN000;column override | ||
| 2916 | DW WHITE_RED ;AN000;color index pointer override | ||
| 2917 | DW 9 ;AN000;function key attribute | ||
| 2918 | DB 0,F3 ;AN000;keystroke associated with child | ||
| 2919 | DW 0 ;CHD_ABS ;AN000;option word | ||
| 2920 | |||
| 2921 | DW CHILD_ENTER ;AN000;child PCB element number | ||
| 2922 | DW PANEL67_L-1 ;AN000;row override | ||
| 2923 | DW 16 ;AN000;column override | ||
| 2924 | DW WHITE_RED ;AN000;color index pointer override | ||
| 2925 | DW 9 ;AN000;function key attribute | ||
| 2926 | DB 13,0 ;AN000;keystroke associated with child | ||
| 2927 | DW 0 ;CHD_ABS ;AN000;option word | ||
| 2928 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2929 | ; | ||
| 2930 | ; ERR_DOS_DISK | ||
| 2931 | ; | ||
| 2932 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2933 | PCB68 LABEL WORD ;AN000; | ||
| 2934 | DW PCB_EXP ;AN000;option word | ||
| 2935 | DB 0 ;AN000;GHG new adds | ||
| 2936 | DB 0 ;AN000;GHG new adds | ||
| 2937 | DB 0 ;AN000;GHG new adds | ||
| 2938 | DW 11 ;AN000;row location of panel | ||
| 2939 | DW LEFT_COL+1 ;AN000;column location of panel | ||
| 2940 | DW PANEL68_W ;AN000;text char width of panel | ||
| 2941 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2942 | DW WHITE_RED ;AN000;Index number of log color | ||
| 2943 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2944 | DW 0 ;AN000;Length compress panel in mem | ||
| 2945 | DW 0 ;AN000;Off addr compressed panel | ||
| 2946 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2947 | DW PANEL68_W*PANEL68_L;AN000;Length expanded panel in mem | ||
| 2948 | DW OFFSET PANEL68 ;AN000;Off addr of expanded panel in | ||
| 2949 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2950 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2951 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2952 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2953 | DW 0 ;AN000;Len of the panel label | ||
| 2954 | DW 0 ;AN000;Off addr of the panel label | ||
| 2955 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2956 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2957 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2958 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2959 | DW 0 ;AN000;Off address of full filespec | ||
| 2960 | DW 0 ;AN000;Seg address of full filespec | ||
| 2961 | DW 0 ;AN000;Lower off word of the beg off | ||
| 2962 | DW 0 ;AN000;High off word of the beg off | ||
| 2963 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 2964 | DW 0 ;AN000;Number of child panel entries | ||
| 2965 | DW 0 ;AN000;Off address of child panel table | ||
| 2966 | DW 0 ;AN000;Seg address of child panel table | ||
| 2967 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 2968 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2969 | ; | ||
| 2970 | ; ERR_INSTALL | ||
| 2971 | ; | ||
| 2972 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2973 | PCB69 LABEL WORD ;AN000; | ||
| 2974 | DW PCB_EXP ;AN000;option word | ||
| 2975 | DB 0 ;AN000;GHG new adds | ||
| 2976 | DB 0 ;AN000;GHG new adds | ||
| 2977 | DB 0 ;AN000;GHG new adds | ||
| 2978 | DW 11 ;AN000;row location of panel | ||
| 2979 | DW LEFT_COL+1 ;AN000;column location of panel | ||
| 2980 | DW PANEL69_W ;AN000;text char width of panel | ||
| 2981 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 2982 | DW WHITE_RED ;AN000;Index number of log color | ||
| 2983 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 2984 | DW 0 ;AN000;Length compress panel in mem | ||
| 2985 | DW 0 ;AN000;Off addr compressed panel | ||
| 2986 | DW 0 ;AN000;Seg addr compressed panel | ||
| 2987 | DW PANEL69_W*PANEL69_L;AN000;Length expanded panel in mem | ||
| 2988 | DW OFFSET PANEL69 ;AN000;Off addr of expanded panel in | ||
| 2989 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 2990 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 2991 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 2992 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 2993 | DW 0 ;AN000;Len of the panel label | ||
| 2994 | DW 0 ;AN000;Off addr of the panel label | ||
| 2995 | DW 0 ;AN000;Seg addr of the panel label | ||
| 2996 | DW 0 ;AN000;Beg relative row of panel label | ||
| 2997 | DW 0 ;AN000;Beg relative col of panel label | ||
| 2998 | DW 0 ;AN000;Len of the panel stored in file | ||
| 2999 | DW 0 ;AN000;Off address of full filespec | ||
| 3000 | DW 0 ;AN000;Seg address of full filespec | ||
| 3001 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3002 | DW 0 ;AN000;High off word of the beg off | ||
| 3003 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3004 | DW 0 ;AN000;Number of child panel entries | ||
| 3005 | DW 0 ;AN000;Off address of child panel table | ||
| 3006 | DW 0 ;AN000;Seg address of child panel table | ||
| 3007 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3008 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3009 | ; | ||
| 3010 | ; PAN_DISKCOPY | ||
| 3011 | ; | ||
| 3012 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3013 | PCB70 LABEL WORD ;AN000; | ||
| 3014 | DW PCB_EXP ;AN000;option word | ||
| 3015 | DB 0 ;AN000;GHG new adds | ||
| 3016 | DB 0 ;AN000;GHG new adds | ||
| 3017 | DB 0 ;AN000;GHG new adds | ||
| 3018 | DW 4 ;AN000;row location of panel | ||
| 3019 | DW LEFT_COL ;AN000;column location of panel | ||
| 3020 | DW PANEL70_W ;AN000;text char width of panel | ||
| 3021 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3022 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3023 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3024 | DW 0 ;AN000;Length compress panel in mem | ||
| 3025 | DW 0 ;AN000;Off addr compressed panel | ||
| 3026 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3027 | DW PANEL70_W*PANEL70_L;AN000;Length expanded panel in mem | ||
| 3028 | DW OFFSET PANEL70 ;AN000;Off addr of expanded panel in | ||
| 3029 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3030 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3031 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3032 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3033 | DW 0 ;AN000;Len of the panel label | ||
| 3034 | DW 0 ;AN000;Off addr of the panel label | ||
| 3035 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3036 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3037 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3038 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3039 | DW 0 ;AN000;Off address of full filespec | ||
| 3040 | DW 0 ;AN000;Seg address of full filespec | ||
| 3041 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3042 | DW 0 ;AN000;High off word of the beg off | ||
| 3043 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3044 | DW 2 ;AN000;Number of child panel entries | ||
| 3045 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 3046 | DW 0 ;AN000;Seg address of child panel table | ||
| 3047 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3048 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3049 | ; | ||
| 3050 | ; PAN_DSKCPY_SRC | ||
| 3051 | ; | ||
| 3052 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3053 | PCB71 LABEL WORD ;AN000; | ||
| 3054 | DW PCB_EXP ;AN000;option word | ||
| 3055 | DB 0 ;AN000;GHG new adds | ||
| 3056 | DB 0 ;AN000;GHG new adds | ||
| 3057 | DB 0 ;AN000;GHG new adds | ||
| 3058 | DW 8 ;AN000;row location of panel | ||
| 3059 | DW LEFT_COL ;AN000;column location of panel | ||
| 3060 | DW PANEL71_W ;AN000;text char width of panel | ||
| 3061 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3062 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3063 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3064 | DW 0 ;AN000;Length compress panel in mem | ||
| 3065 | DW 0 ;AN000;Off addr compressed panel | ||
| 3066 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3067 | DW PANEL71_W*PANEL71_L;AN000;Length expanded panel in mem | ||
| 3068 | DW OFFSET PANEL71 ;AN000;Off addr of expanded panel in | ||
| 3069 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3070 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3071 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3072 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3073 | DW 0 ;AN000;Len of the panel label | ||
| 3074 | DW 0 ;AN000;Off addr of the panel label | ||
| 3075 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3076 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3077 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3078 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3079 | DW 0 ;AN000;Off address of full filespec | ||
| 3080 | DW 0 ;AN000;Seg address of full filespec | ||
| 3081 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3082 | DW 0 ;AN000;High off word of the beg off | ||
| 3083 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3084 | DW 1 ;AN000;Number of child panel entries | ||
| 3085 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 3086 | DW 0 ;AN000;Seg address of child panel table | ||
| 3087 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3088 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3089 | ; | ||
| 3090 | ; PAN_DSKCPY_TAR | ||
| 3091 | ; | ||
| 3092 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3093 | PCB72 LABEL WORD ;AN000; | ||
| 3094 | DW PCB_EXP ;AN000;option word | ||
| 3095 | DB 0 ;AN000;GHG new adds | ||
| 3096 | DB 0 ;AN000;GHG new adds | ||
| 3097 | DB 0 ;AN000;GHG new adds | ||
| 3098 | DW 8 ;AN000;row location of panel | ||
| 3099 | DW LEFT_COL ;AN000;column location of panel | ||
| 3100 | DW PANEL72_W ;AN000;text char width of panel | ||
| 3101 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3102 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3103 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3104 | DW 0 ;AN000;Length compress panel in mem | ||
| 3105 | DW 0 ;AN000;Off addr compressed panel | ||
| 3106 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3107 | DW PANEL72_W*PANEL72_L;AN000;Length expanded panel in mem | ||
| 3108 | DW OFFSET PANEL72 ;AN000;Off addr of expanded panel in | ||
| 3109 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3110 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3111 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3112 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3113 | DW 0 ;AN000;Len of the panel label | ||
| 3114 | DW 0 ;AN000;Off addr of the panel label | ||
| 3115 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3116 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3117 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3118 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3119 | DW 0 ;AN000;Off address of full filespec | ||
| 3120 | DW 0 ;AN000;Seg address of full filespec | ||
| 3121 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3122 | DW 0 ;AN000;High off word of the beg off | ||
| 3123 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3124 | DW 1 ;AN000;Number of child panel entries | ||
| 3125 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 3126 | DW 0 ;AN000;Seg address of child panel table | ||
| 3127 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3128 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3129 | ; | ||
| 3130 | ; PAN_DSKCPY_CPY | ||
| 3131 | ; | ||
| 3132 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3133 | PCB73 LABEL WORD ;AN000; | ||
| 3134 | DW PCB_EXP ;AN000;option word | ||
| 3135 | DB 0 ;AN000;GHG new adds | ||
| 3136 | DB 0 ;AN000;GHG new adds | ||
| 3137 | DB 0 ;AN000;GHG new adds | ||
| 3138 | DW 8 ;AN000;row location of panel | ||
| 3139 | DW LEFT_COL ;AN000;column location of panel | ||
| 3140 | DW PANEL73_W ;AN000;text char width of panel | ||
| 3141 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3142 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3143 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3144 | DW 0 ;AN000;Length compress panel in mem | ||
| 3145 | DW 0 ;AN000;Off addr compressed panel | ||
| 3146 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3147 | DW PANEL73_W*PANEL73_L;AN000;Length expanded panel in mem | ||
| 3148 | DW OFFSET PANEL73 ;AN000;Off addr of expanded panel in | ||
| 3149 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3150 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3151 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3152 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3153 | DW 0 ;AN000;Len of the panel label | ||
| 3154 | DW 0 ;AN000;Off addr of the panel label | ||
| 3155 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3156 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3157 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3158 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3159 | DW 0 ;AN000;Off address of full filespec | ||
| 3160 | DW 0 ;AN000;Seg address of full filespec | ||
| 3161 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3162 | DW 0 ;AN000;High off word of the beg off | ||
| 3163 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3164 | DW 0 ;AN000;Number of child panel entries | ||
| 3165 | DW 0 ;AN000;Off address of child panel table | ||
| 3166 | DW 0 ;AN000;Seg address of child panel table | ||
| 3167 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3168 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3169 | ; | ||
| 3170 | ; PAN_PARTIAL | ||
| 3171 | ; | ||
| 3172 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3173 | PCB74 LABEL WORD ;AN000; | ||
| 3174 | DW PCB_EXP ;AN000;option word | ||
| 3175 | DB 0 ;AN000;GHG new adds | ||
| 3176 | DB 0 ;AN000;GHG new adds | ||
| 3177 | DB 0 ;AN000;GHG new adds | ||
| 3178 | DW 6 ;AN000;row location of panel | ||
| 3179 | DW left_col+7 ;AC028;column location of panel | ||
| 3180 | DW PANEL74_W ;AN000;text char width of panel | ||
| 3181 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3182 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3183 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3184 | DW 0 ;AN000;Length compress panel in mem | ||
| 3185 | DW 0 ;AN000;Off addr compressed panel | ||
| 3186 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3187 | DW PANEL74_W*PANEL74_L;AN000;Length expanded panel in mem | ||
| 3188 | DW OFFSET PANEL74 ;AN000;Off addr of expanded panel in | ||
| 3189 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3190 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3191 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3192 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3193 | DW 0 ;AN000;Len of the panel label | ||
| 3194 | DW 0 ;AN000;Off addr of the panel label | ||
| 3195 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3196 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3197 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3198 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3199 | DW 0 ;AN000;Off address of full filespec | ||
| 3200 | DW 0 ;AN000;Seg address of full filespec | ||
| 3201 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3202 | DW 0 ;AN000;High off word of the beg off | ||
| 3203 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3204 | DW 0 ;AN000;Number of child panel entries | ||
| 3205 | DW 0 ;AN000;Off address of child panel table | ||
| 3206 | DW 0 ;AN000;Seg address of child panel table | ||
| 3207 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3208 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3209 | ; | ||
| 3210 | ; FORMAT_DISKETTE (SINGLE DRIVE - SHELL) | ||
| 3211 | ; | ||
| 3212 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3213 | PCB75 LABEL WORD ;AN000; | ||
| 3214 | DW PCB_EXP ;AN000;option word | ||
| 3215 | DB 0 ;AN000;GHG new adds | ||
| 3216 | DB 0 ;AN000;GHG new adds | ||
| 3217 | DB 0 ;AN000;GHG new adds | ||
| 3218 | DW 8 ;AN000;row location of panel | ||
| 3219 | DW LEFT_COL ;AN000;column location of panel | ||
| 3220 | DW PANEL75_W ;AN000;text char width of panel | ||
| 3221 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3222 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3223 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3224 | DW 0 ;AN000;Length compress panel in mem | ||
| 3225 | DW 0 ;AN000;Off addr compressed panel | ||
| 3226 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3227 | DW PANEL75_W*PANEL75_L;AN000;Length expanded panel in mem | ||
| 3228 | DW OFFSET PANEL75 ;AN000;Off addr of expanded panel in | ||
| 3229 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3230 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3231 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3232 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3233 | DW 0 ;AN000;Len of the panel label | ||
| 3234 | DW 0 ;AN000;Off addr of the panel label | ||
| 3235 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3236 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3237 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3238 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3239 | DW 0 ;AN000;Off address of full filespec | ||
| 3240 | DW 0 ;AN000;Seg address of full filespec | ||
| 3241 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3242 | DW 0 ;AN000;High off word of the beg off | ||
| 3243 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3244 | DW 0 ;AN000;Number of child panel entries | ||
| 3245 | DW 0 ;AN000;Off address of child panel table | ||
| 3246 | DW 0 ;AN000;Seg address of child panel table | ||
| 3247 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3248 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3249 | ; | ||
| 3250 | ; FORMAT_DISKETTE (SINGLE DRIVE - STARTUP) | ||
| 3251 | ; | ||
| 3252 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3253 | PCB76 LABEL WORD ;AN000; | ||
| 3254 | DW PCB_EXP ;AN000;option word | ||
| 3255 | DB 0 ;AN000;GHG new adds | ||
| 3256 | DB 0 ;AN000;GHG new adds | ||
| 3257 | DB 0 ;AN000;GHG new adds | ||
| 3258 | DW 8 ;AN000;row location of panel | ||
| 3259 | DW LEFT_COL ;AN000;column location of panel | ||
| 3260 | DW PANEL76_W ;AN000;text char width of panel | ||
| 3261 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3262 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3263 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3264 | DW 0 ;AN000;Length compress panel in mem | ||
| 3265 | DW 0 ;AN000;Off addr compressed panel | ||
| 3266 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3267 | DW PANEL76_W*PANEL76_L;AN000;Length expanded panel in mem | ||
| 3268 | DW OFFSET PANEL76 ;AN000;Off addr of expanded panel in | ||
| 3269 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3270 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3271 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3272 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3273 | DW 0 ;AN000;Len of the panel label | ||
| 3274 | DW 0 ;AN000;Off addr of the panel label | ||
| 3275 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3276 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3277 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3278 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3279 | DW 0 ;AN000;Off address of full filespec | ||
| 3280 | DW 0 ;AN000;Seg address of full filespec | ||
| 3281 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3282 | DW 0 ;AN000;High off word of the beg off | ||
| 3283 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3284 | DW 0 ;AN000;Number of child panel entries | ||
| 3285 | DW 0 ;AN000;Off address of child panel table | ||
| 3286 | DW 0 ;AN000;Seg address of child panel table | ||
| 3287 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3288 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3289 | ; | ||
| 3290 | ; SUB_REM_SHELL_360 | ||
| 3291 | ; | ||
| 3292 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3293 | PCB77 LABEL WORD ;AN000; | ||
| 3294 | DW PCB_EXP ;AN000;option word | ||
| 3295 | DB 0 ;AN000;GHG new adds | ||
| 3296 | DB 0 ;AN000;GHG new adds | ||
| 3297 | DB 0 ;AN000;GHG new adds | ||
| 3298 | DW 8 ;AN000;row location of panel | ||
| 3299 | DW LEFT_COL ;AN000;column location of panel | ||
| 3300 | DW PANEL77_W ;AN000;text char width of panel | ||
| 3301 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3302 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3303 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3304 | DW 0 ;AN000;Length compress panel in mem | ||
| 3305 | DW 0 ;AN000;Off addr compressed panel | ||
| 3306 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3307 | DW PANEL77_W*PANEL77_L;AN000;Length expanded panel in mem | ||
| 3308 | DW OFFSET PANEL77 ;AN000;Off addr of expanded panel in | ||
| 3309 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3310 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3311 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3312 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3313 | DW 0 ;AN000;Len of the panel label | ||
| 3314 | DW 0 ;AN000;Off addr of the panel label | ||
| 3315 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3316 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3317 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3318 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3319 | DW 0 ;AN000;Off address of full filespec | ||
| 3320 | DW 0 ;AN000;Seg address of full filespec | ||
| 3321 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3322 | DW 0 ;AN000;High off word of the beg off | ||
| 3323 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3324 | DW 0 ;AN000;Number of child panel entries | ||
| 3325 | DW 0 ;AN000;Off address of child panel table | ||
| 3326 | DW 0 ;AN000;Seg address of child panel table | ||
| 3327 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3328 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3329 | ; | ||
| 3330 | ; SUB_REM_SELECT_360 | ||
| 3331 | ; | ||
| 3332 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3333 | PCB78 LABEL WORD ;AN000; | ||
| 3334 | DW PCB_EXP ;AN000;option word | ||
| 3335 | DB 0 ;AN000;GHG new adds | ||
| 3336 | DB 0 ;AN000;GHG new adds | ||
| 3337 | DB 0 ;AN000;GHG new adds | ||
| 3338 | DW 8 ;AN000;row location of panel | ||
| 3339 | DW LEFT_COL ;AN000;column location of panel | ||
| 3340 | DW PANEL78_W ;AN000;text char width of panel | ||
| 3341 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3342 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3343 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3344 | DW 0 ;AN000;Length compress panel in mem | ||
| 3345 | DW 0 ;AN000;Off addr compressed panel | ||
| 3346 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3347 | DW PANEL78_W*PANEL78_L;AN000;Length expanded panel in mem | ||
| 3348 | DW OFFSET PANEL78 ;AN000;Off addr of expanded panel in | ||
| 3349 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3350 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3351 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3352 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3353 | DW 0 ;AN000;Len of the panel label | ||
| 3354 | DW 0 ;AN000;Off addr of the panel label | ||
| 3355 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3356 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3357 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3358 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3359 | DW 0 ;AN000;Off address of full filespec | ||
| 3360 | DW 0 ;AN000;Seg address of full filespec | ||
| 3361 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3362 | DW 0 ;AN000;High off word of the beg off | ||
| 3363 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3364 | DW 0 ;AN000;Number of child panel entries | ||
| 3365 | DW 0 ;AN000;Off address of child panel table | ||
| 3366 | DW 0 ;AN000;Seg address of child panel table | ||
| 3367 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3368 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3369 | ; | ||
| 3370 | ; SUB_REM_UTIL1_360 | ||
| 3371 | ; | ||
| 3372 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3373 | PCB79 LABEL WORD ;AN000; | ||
| 3374 | DW PCB_EXP ;AN000;option word | ||
| 3375 | DB 0 ;AN000;GHG new adds | ||
| 3376 | DB 0 ;AN000;GHG new adds | ||
| 3377 | DB 0 ;AN000;GHG new adds | ||
| 3378 | DW 8 ;AN000;row location of panel | ||
| 3379 | DW LEFT_COL ;AN000;column location of panel | ||
| 3380 | DW PANEL79_W ;AN000;text char width of panel | ||
| 3381 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3382 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3383 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3384 | DW 0 ;AN000;Length compress panel in mem | ||
| 3385 | DW 0 ;AN000;Off addr compressed panel | ||
| 3386 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3387 | DW PANEL79_W*PANEL79_L;AN000;Length expanded panel in mem | ||
| 3388 | DW OFFSET PANEL79 ;AN000;Off addr of expanded panel in | ||
| 3389 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3390 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3391 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3392 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3393 | DW 0 ;AN000;Len of the panel label | ||
| 3394 | DW 0 ;AN000;Off addr of the panel label | ||
| 3395 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3396 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3397 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3398 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3399 | DW 0 ;AN000;Off address of full filespec | ||
| 3400 | DW 0 ;AN000;Seg address of full filespec | ||
| 3401 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3402 | DW 0 ;AN000;High off word of the beg off | ||
| 3403 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3404 | DW 0 ;AN000;Number of child panel entries | ||
| 3405 | DW 0 ;AN000;Off address of child panel table | ||
| 3406 | DW 0 ;AN000;Seg address of child panel table | ||
| 3407 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3408 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3409 | ; | ||
| 3410 | ; SUB_COPYING | ||
| 3411 | ; | ||
| 3412 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3413 | PCB80 LABEL WORD ;AN000; | ||
| 3414 | DW PCB_EXP ;AN000;option word | ||
| 3415 | DB 0 ;AN000;GHG new adds | ||
| 3416 | DB 0 ;AN000;GHG new adds | ||
| 3417 | DB 0 ;AN000;GHG new adds | ||
| 3418 | DW 8 ;AN000;row location of panel | ||
| 3419 | DW LEFT_COL ;AN000;column location of panel | ||
| 3420 | DW PANEL80_W ;AN000;text char width of panel | ||
| 3421 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3422 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3423 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3424 | DW 0 ;AN000;Length compress panel in mem | ||
| 3425 | DW 0 ;AN000;Off addr compressed panel | ||
| 3426 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3427 | DW PANEL80_W*PANEL80_L;AN000;Length expanded panel in mem | ||
| 3428 | DW OFFSET PANEL80 ;AN000;Off addr of expanded panel in | ||
| 3429 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3430 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3431 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3432 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3433 | DW 0 ;AN000;Len of the panel label | ||
| 3434 | DW 0 ;AN000;Off addr of the panel label | ||
| 3435 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3436 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3437 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3438 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3439 | DW 0 ;AN000;Off address of full filespec | ||
| 3440 | DW 0 ;AN000;Seg address of full filespec | ||
| 3441 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3442 | DW 0 ;AN000;High off word of the beg off | ||
| 3443 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3444 | DW 0 ;AN000;Number of child panel entries | ||
| 3445 | DW 0 ;AN000;Off address of child panel table | ||
| 3446 | DW 0 ;AN000;Seg address of child panel table | ||
| 3447 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3448 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3449 | ; | ||
| 3450 | ; SUB_INS_WORK1_360 | ||
| 3451 | ; | ||
| 3452 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3453 | PCB81 LABEL WORD ;AN000; | ||
| 3454 | DW PCB_EXP ;AN000;option word | ||
| 3455 | DB 0 ;AN000;GHG new adds | ||
| 3456 | DB 0 ;AN000;GHG new adds | ||
| 3457 | DB 0 ;AN000;GHG new adds | ||
| 3458 | DW 8 ;AN000;row location of panel | ||
| 3459 | DW LEFT_COL ;AN000;column location of panel | ||
| 3460 | DW PANEL81_W ;AN000;text char width of panel | ||
| 3461 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3462 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3463 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3464 | DW 0 ;AN000;Length compress panel in mem | ||
| 3465 | DW 0 ;AN000;Off addr compressed panel | ||
| 3466 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3467 | DW PANEL81_W*PANEL81_L;AN000;Length expanded panel in mem | ||
| 3468 | DW OFFSET PANEL81 ;AN000;Off addr of expanded panel in | ||
| 3469 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3470 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3471 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3472 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3473 | DW 0 ;AN000;Len of the panel label | ||
| 3474 | DW 0 ;AN000;Off addr of the panel label | ||
| 3475 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3476 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3477 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3478 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3479 | DW 0 ;AN000;Off address of full filespec | ||
| 3480 | DW 0 ;AN000;Seg address of full filespec | ||
| 3481 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3482 | DW 0 ;AN000;High off word of the beg off | ||
| 3483 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3484 | DW 1 ;AN000;Number of child panel entries | ||
| 3485 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 3486 | DW 0 ;AN000;Seg address of child panel table | ||
| 3487 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3488 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3489 | ; | ||
| 3490 | ; SUB_INS_WORK2_360 | ||
| 3491 | ; | ||
| 3492 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3493 | PCB82 LABEL WORD ;AN000; | ||
| 3494 | DW PCB_EXP ;AN000;option word | ||
| 3495 | DB 0 ;AN000;GHG new adds | ||
| 3496 | DB 0 ;AN000;GHG new adds | ||
| 3497 | DB 0 ;AN000;GHG new adds | ||
| 3498 | DW 8 ;AN000;row location of panel | ||
| 3499 | DW LEFT_COL ;AN000;column location of panel | ||
| 3500 | DW PANEL82_W ;AN000;text char width of panel | ||
| 3501 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3502 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3503 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3504 | DW 0 ;AN000;Length compress panel in mem | ||
| 3505 | DW 0 ;AN000;Off addr compressed panel | ||
| 3506 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3507 | DW PANEL82_W*PANEL82_L;AN000;Length expanded panel in mem | ||
| 3508 | DW OFFSET PANEL82 ;AN000;Off addr of expanded panel in | ||
| 3509 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3510 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3511 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3512 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3513 | DW 0 ;AN000;Len of the panel label | ||
| 3514 | DW 0 ;AN000;Off addr of the panel label | ||
| 3515 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3516 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3517 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3518 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3519 | DW 0 ;AN000;Off address of full filespec | ||
| 3520 | DW 0 ;AN000;Seg address of full filespec | ||
| 3521 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3522 | DW 0 ;AN000;High off word of the beg off | ||
| 3523 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3524 | DW 1 ;AN000;Number of child panel entries | ||
| 3525 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 3526 | DW 0 ;AN000;Seg address of child panel table | ||
| 3527 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3528 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3529 | ; | ||
| 3530 | ; SUB_INS_SHELL_360 | ||
| 3531 | ; | ||
| 3532 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3533 | PCB83 LABEL WORD ;AN000; | ||
| 3534 | DW PCB_EXP ;AN000;option word | ||
| 3535 | DB 0 ;AN000;GHG new adds | ||
| 3536 | DB 0 ;AN000;GHG new adds | ||
| 3537 | DB 0 ;AN000;GHG new adds | ||
| 3538 | DW 8 ;AN000;row location of panel | ||
| 3539 | DW LEFT_COL ;AN000;column location of panel | ||
| 3540 | DW PANEL83_W ;AN000;text char width of panel | ||
| 3541 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3542 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3543 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3544 | DW 0 ;AN000;Length compress panel in mem | ||
| 3545 | DW 0 ;AN000;Off addr compressed panel | ||
| 3546 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3547 | DW PANEL83_W*PANEL83_L;AN000;Length expanded panel in mem | ||
| 3548 | DW OFFSET PANEL83 ;AN000;Off addr of expanded panel in | ||
| 3549 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3550 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3551 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3552 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3553 | DW 0 ;AN000;Len of the panel label | ||
| 3554 | DW 0 ;AN000;Off addr of the panel label | ||
| 3555 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3556 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3557 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3558 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3559 | DW 0 ;AN000;Off address of full filespec | ||
| 3560 | DW 0 ;AN000;Seg address of full filespec | ||
| 3561 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3562 | DW 0 ;AN000;High off word of the beg off | ||
| 3563 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3564 | DW 1 ;AN000;Number of child panel entries | ||
| 3565 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 3566 | DW 0 ;AN000;Seg address of child panel table | ||
| 3567 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3568 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3569 | ; | ||
| 3570 | ; SUB_INS_START_360 | ||
| 3571 | ; | ||
| 3572 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3573 | PCB84 LABEL WORD ;AN000; | ||
| 3574 | DW PCB_EXP ;AN000;option word | ||
| 3575 | DB 0 ;AN000;GHG new adds | ||
| 3576 | DB 0 ;AN000;GHG new adds | ||
| 3577 | DB 0 ;AN000;GHG new adds | ||
| 3578 | DW 8 ;AN000;row location of panel | ||
| 3579 | DW LEFT_COL ;AN000;column location of panel | ||
| 3580 | DW PANEL84_W ;AN000;text char width of panel | ||
| 3581 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3582 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3583 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3584 | DW 0 ;AN000;Length compress panel in mem | ||
| 3585 | DW 0 ;AN000;Off addr compressed panel | ||
| 3586 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3587 | DW PANEL84_W*PANEL84_L;AN000;Length expanded panel in mem | ||
| 3588 | DW OFFSET PANEL84 ;AN000;Off addr of expanded panel in | ||
| 3589 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3590 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3591 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3592 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3593 | DW 0 ;AN000;Len of the panel label | ||
| 3594 | DW 0 ;AN000;Off addr of the panel label | ||
| 3595 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3596 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3597 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3598 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3599 | DW 0 ;AN000;Off address of full filespec | ||
| 3600 | DW 0 ;AN000;Seg address of full filespec | ||
| 3601 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3602 | DW 0 ;AN000;High off word of the beg off | ||
| 3603 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3604 | DW 1 ;AN000;Number of child panel entries | ||
| 3605 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 3606 | DW 0 ;AN000;Seg address of child panel table | ||
| 3607 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3608 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3609 | ; | ||
| 3610 | ; SUB_INS_INSTALL_360 | ||
| 3611 | ; | ||
| 3612 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3613 | PCB85 LABEL WORD ;AN000; | ||
| 3614 | DW PCB_EXP ;AN000;option word | ||
| 3615 | DB 0 ;AN000;GHG new adds | ||
| 3616 | DB 0 ;AN000;GHG new adds | ||
| 3617 | DB 0 ;AN000;GHG new adds | ||
| 3618 | DW 8 ;AN000;row location of panel | ||
| 3619 | DW LEFT_COL ;AN000;column location of panel | ||
| 3620 | DW PANEL85_W ;AN000;text char width of panel | ||
| 3621 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3622 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3623 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3624 | DW 0 ;AN000;Length compress panel in mem | ||
| 3625 | DW 0 ;AN000;Off addr compressed panel | ||
| 3626 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3627 | DW PANEL85_W*PANEL85_L;AN000;Length expanded panel in mem | ||
| 3628 | DW OFFSET PANEL85 ;AN000;Off addr of expanded panel in | ||
| 3629 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3630 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3631 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3632 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3633 | DW 0 ;AN000;Len of the panel label | ||
| 3634 | DW 0 ;AN000;Off addr of the panel label | ||
| 3635 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3636 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3637 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3638 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3639 | DW 0 ;AN000;Off address of full filespec | ||
| 3640 | DW 0 ;AN000;Seg address of full filespec | ||
| 3641 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3642 | DW 0 ;AN000;High off word of the beg off | ||
| 3643 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3644 | DW 1 ;AN000;Number of child panel entries | ||
| 3645 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 3646 | DW 0 ;AN000;Seg address of child panel table | ||
| 3647 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3648 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3649 | ; | ||
| 3650 | ; SUB_INS_WORK1_S360 EQU 86 ;AN000;DT 1 drive 360 installation | ||
| 3651 | ; | ||
| 3652 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3653 | PCB86 LABEL WORD ;AN000; | ||
| 3654 | DW PCB_EXP ;AN000;option word | ||
| 3655 | DB 0 ;AN000;GHG new adds | ||
| 3656 | DB 0 ;AN000;GHG new adds | ||
| 3657 | DB 0 ;AN000;GHG new adds | ||
| 3658 | DW 8 ;AN000;row location of panel | ||
| 3659 | DW LEFT_COL ;AN000;column location of panel | ||
| 3660 | DW PANEL86_W ;AN000;text char width of panel | ||
| 3661 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3662 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3663 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3664 | DW 0 ;AN000;Length compress panel in mem | ||
| 3665 | DW 0 ;AN000;Off addr compressed panel | ||
| 3666 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3667 | DW PANEL86_W*PANEL86_L;AN000;Length expanded panel in mem | ||
| 3668 | DW OFFSET PANEL86 ;AN000;Off addr of expanded panel in | ||
| 3669 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3670 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3671 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3672 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3673 | DW 0 ;AN000;Len of the panel label | ||
| 3674 | DW 0 ;AN000;Off addr of the panel label | ||
| 3675 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3676 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3677 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3678 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3679 | DW 0 ;AN000;Off address of full filespec | ||
| 3680 | DW 0 ;AN000;Seg address of full filespec | ||
| 3681 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3682 | DW 0 ;AN000;High off word of the beg off | ||
| 3683 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3684 | DW 1 ;AN000;Number of child panel entries | ||
| 3685 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 3686 | DW 0 ;AN000;Seg address of child panel table | ||
| 3687 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3688 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3689 | ; | ||
| 3690 | ; SUB_INS_WORK2_S360 EQU 87 ;AN000;DT | ||
| 3691 | ; | ||
| 3692 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3693 | PCB87 LABEL WORD ;AN000; | ||
| 3694 | DW PCB_EXP ;AN000;option word | ||
| 3695 | DB 0 ;AN000;GHG new adds | ||
| 3696 | DB 0 ;AN000;GHG new adds | ||
| 3697 | DB 0 ;AN000;GHG new adds | ||
| 3698 | DW 8 ;AN000;row location of panel | ||
| 3699 | DW LEFT_COL ;AN000;column location of panel | ||
| 3700 | DW PANEL87_W ;AN000;text char width of panel | ||
| 3701 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3702 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3703 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3704 | DW 0 ;AN000;Length compress panel in mem | ||
| 3705 | DW 0 ;AN000;Off addr compressed panel | ||
| 3706 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3707 | DW PANEL87_W*PANEL87_L;AN000;Length expanded panel in mem | ||
| 3708 | DW OFFSET PANEL87 ;AN000;Off addr of expanded panel in | ||
| 3709 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3710 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3711 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3712 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3713 | DW 0 ;AN000;Len of the panel label | ||
| 3714 | DW 0 ;AN000;Off addr of the panel label | ||
| 3715 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3716 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3717 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3718 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3719 | DW 0 ;AN000;Off address of full filespec | ||
| 3720 | DW 0 ;AN000;Seg address of full filespec | ||
| 3721 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3722 | DW 0 ;AN000;High off word of the beg off | ||
| 3723 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3724 | DW 1 ;AN000;Number of child panel entries | ||
| 3725 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 3726 | DW 0 ;AN000;Seg address of child panel table | ||
| 3727 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3728 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3729 | ; | ||
| 3730 | ; SUB_INS_SHELL_S360 EQU 88 ;AN000;DT " | ||
| 3731 | ; | ||
| 3732 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3733 | PCB88 LABEL WORD ;AN000; | ||
| 3734 | DW PCB_EXP ;AN000;option word | ||
| 3735 | DB 0 ;AN000;GHG new adds | ||
| 3736 | DB 0 ;AN000;GHG new adds | ||
| 3737 | DB 0 ;AN000;GHG new adds | ||
| 3738 | DW 8 ;AN000;row location of panel | ||
| 3739 | DW LEFT_COL ;AN000;column location of panel | ||
| 3740 | DW PANEL88_W ;AN000;text char width of panel | ||
| 3741 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3742 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3743 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3744 | DW 0 ;AN000;Length compress panel in mem | ||
| 3745 | DW 0 ;AN000;Off addr compressed panel | ||
| 3746 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3747 | DW PANEL88_W*PANEL88_L ;AN000;Length expanded panel in mem | ||
| 3748 | DW OFFSET PANEL88 ;AN000;Off addr of expanded panel in | ||
| 3749 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3750 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3751 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3752 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3753 | DW 0 ;AN000;Len of the panel label | ||
| 3754 | DW 0 ;AN000;Off addr of the panel label | ||
| 3755 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3756 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3757 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3758 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3759 | DW 0 ;AN000;Off address of full filespec | ||
| 3760 | DW 0 ;AN000;Seg address of full filespec | ||
| 3761 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3762 | DW 0 ;AN000;High off word of the beg off | ||
| 3763 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3764 | DW 1 ;AN000;Number of child panel entries | ||
| 3765 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 3766 | DW 0 ;AN000;Seg address of child panel table | ||
| 3767 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3768 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3769 | ; | ||
| 3770 | ; SUB_INS_STARTT_S360 EQU 89 ;AN000;DT " | ||
| 3771 | ; | ||
| 3772 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3773 | PCB89 LABEL WORD ;AN000; | ||
| 3774 | DW PCB_EXP ;AN000;option word | ||
| 3775 | DB 0 ;AN000;GHG new adds | ||
| 3776 | DB 0 ;AN000;GHG new adds | ||
| 3777 | DB 0 ;AN000;GHG new adds | ||
| 3778 | DW 8 ;AN000;row location of panel | ||
| 3779 | DW LEFT_COL ;AN000;column location of panel | ||
| 3780 | DW PANEL89_W ;AN000;text char width of panel | ||
| 3781 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3782 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3783 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3784 | DW 0 ;AN000;Length compress panel in mem | ||
| 3785 | DW 0 ;AN000;Off addr compressed panel | ||
| 3786 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3787 | DW PANEL89_W*PANEL89_L ;AN000;Length expanded panel in mem | ||
| 3788 | DW OFFSET PANEL89 ;AN000;Off addr of expanded panel in | ||
| 3789 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3790 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3791 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3792 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3793 | DW 0 ;AN000;Len of the panel label | ||
| 3794 | DW 0 ;AN000;Off addr of the panel label | ||
| 3795 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3796 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3797 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3798 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3799 | DW 0 ;AN000;Off address of full filespec | ||
| 3800 | DW 0 ;AN000;Seg address of full filespec | ||
| 3801 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3802 | DW 0 ;AN000;High off word of the beg off | ||
| 3803 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3804 | DW 1 ;AN000;Number of child panel entries | ||
| 3805 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 3806 | DW 0 ;AN000;Seg address of child panel table | ||
| 3807 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3808 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3809 | ; | ||
| 3810 | ; PAN_START360 | ||
| 3811 | ; | ||
| 3812 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3813 | PCB90 LABEL WORD ;AN000; | ||
| 3814 | DW PCB_EXP ;AN000;option word | ||
| 3815 | DB 0 ;AN000;GHG new adds | ||
| 3816 | DB 0 ;AN000;GHG new adds | ||
| 3817 | DB 0 ;AN000;GHG new adds | ||
| 3818 | DW 8 ;AN000;row location of panel | ||
| 3819 | DW LEFT_COL ;AN000;column location of panel | ||
| 3820 | DW PANEL90_W ;AN000;text char width of panel | ||
| 3821 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3822 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3823 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3824 | DW 0 ;AN000;Length compress panel in mem | ||
| 3825 | DW 0 ;AN000;Off addr compressed panel | ||
| 3826 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3827 | DW PANEL90_W*PANEL90_L ;AN000;Length expanded panel in mem | ||
| 3828 | DW OFFSET PANEL90 ;AN000;Off addr of expanded panel in | ||
| 3829 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3830 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3831 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3832 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3833 | DW 0 ;AN000;Len of the panel label | ||
| 3834 | DW 0 ;AN000;Off addr of the panel label | ||
| 3835 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3836 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3837 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3838 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3839 | DW 0 ;AN000;Off address of full filespec | ||
| 3840 | DW 0 ;AN000;Seg address of full filespec | ||
| 3841 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3842 | DW 0 ;AN000;High off word of the beg off | ||
| 3843 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3844 | DW 1 ;AN000;Number of child panel entries | ||
| 3845 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 3846 | DW 0 ;AN000;Seg address of child panel table | ||
| 3847 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3848 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3849 | ; | ||
| 3850 | ; PAN_COMPLETE3 | ||
| 3851 | ; | ||
| 3852 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3853 | PCB91 LABEL WORD ;AN000; | ||
| 3854 | DW PCB_EXP ;AN000;option word | ||
| 3855 | DB 0 ;AN000;GHG new adds | ||
| 3856 | DB 0 ;AN000;GHG new adds | ||
| 3857 | DB 0 ;AN000;GHG new adds | ||
| 3858 | DW 8 ;AN000;row location of panel | ||
| 3859 | DW left_col+7 ;AC028;column location of panel | ||
| 3860 | DW PANEL91_W ;AN000;text char width of panel | ||
| 3861 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3862 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3863 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3864 | DW 0 ;AN000;Length compress panel in mem | ||
| 3865 | DW 0 ;AN000;Off addr compressed panel | ||
| 3866 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3867 | DW PANEL91_W*PANEL91_L ;AN000;Length expanded panel in mem | ||
| 3868 | DW OFFSET PANEL91 ;AN000;Off addr of expanded panel in | ||
| 3869 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3870 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3871 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3872 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3873 | DW 0 ;AN000;Len of the panel label | ||
| 3874 | DW 0 ;AN000;Off addr of the panel label | ||
| 3875 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3876 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3877 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3878 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3879 | DW 0 ;AN000;Off address of full filespec | ||
| 3880 | DW 0 ;AN000;Seg address of full filespec | ||
| 3881 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3882 | DW 0 ;AN000;High off word of the beg off | ||
| 3883 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3884 | DW 0 ;AN000;Number of child panel entries | ||
| 3885 | DW 0 ;AN000;Off address of child panel table | ||
| 3886 | DW 0 ;AN000;Seg address of child panel table | ||
| 3887 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3888 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3889 | ; | ||
| 3890 | ; SUB_INSTALL_COPY | ||
| 3891 | ; | ||
| 3892 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3893 | PCB92 LABEL WORD ;AN000; | ||
| 3894 | DW PCB_EXP ;AN000;option word | ||
| 3895 | DB 0 ;AN000;GHG new adds | ||
| 3896 | DB 0 ;AN000;GHG new adds | ||
| 3897 | DB 0 ;AN000;GHG new adds | ||
| 3898 | DW 8 ;AN000;row location of panel | ||
| 3899 | DW LEFT_COL ;AN000;column location of panel | ||
| 3900 | DW PANEL92_W ;AN000;text char width of panel | ||
| 3901 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3902 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3903 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3904 | DW 0 ;AN000;Length compress panel in mem | ||
| 3905 | DW 0 ;AN000;Off addr compressed panel | ||
| 3906 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3907 | DW PANEL92_W*PANEL92_L ;AN000;Length expanded panel in mem | ||
| 3908 | DW OFFSET PANEL92 ;AN000;Off addr of expanded panel in | ||
| 3909 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3910 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3911 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3912 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3913 | DW 0 ;AN000;Len of the panel label | ||
| 3914 | DW 0 ;AN000;Off addr of the panel label | ||
| 3915 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3916 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3917 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3918 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3919 | DW 0 ;AN000;Off address of full filespec | ||
| 3920 | DW 0 ;AN000;Seg address of full filespec | ||
| 3921 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3922 | DW 0 ;AN000;High off word of the beg off | ||
| 3923 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3924 | DW 0 ;AN000;Number of child panel entries | ||
| 3925 | DW 0 ;AN000;Off address of child panel table | ||
| 3926 | DW 0 ;AN000;Seg address of child panel table | ||
| 3927 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3928 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3929 | ; | ||
| 3930 | ; SUB_SHELL_HD | ||
| 3931 | ; | ||
| 3932 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3933 | PCB93 LABEL WORD ;AN000; | ||
| 3934 | DW PCB_EXP ;AN000;option word | ||
| 3935 | DB 0 ;AN000;GHG new adds | ||
| 3936 | DB 0 ;AN000;GHG new adds | ||
| 3937 | DB 0 ;AN000;GHG new adds | ||
| 3938 | DW 8 ;AN000;row location of panel | ||
| 3939 | DW LEFT_COL ;AN000;column location of panel | ||
| 3940 | DW PANEL93_W ;AN000;text char width of panel | ||
| 3941 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3942 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3943 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3944 | DW 0 ;AN000;Length compress panel in mem | ||
| 3945 | DW 0 ;AN000;Off addr compressed panel | ||
| 3946 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3947 | DW PANEL93_W*PANEL93_L;AN000;Length expanded panel in mem | ||
| 3948 | DW OFFSET PANEL93 ;AN000;Off addr of expanded panel in | ||
| 3949 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3950 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3951 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3952 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3953 | DW 0 ;AN000;Len of the panel label | ||
| 3954 | DW 0 ;AN000;Off addr of the panel label | ||
| 3955 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3956 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3957 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3958 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3959 | DW 0 ;AN000;Off address of full filespec | ||
| 3960 | DW 0 ;AN000;Seg address of full filespec | ||
| 3961 | DW 0 ;AN000;Lower off word of the beg off | ||
| 3962 | DW 0 ;AN000;High off word of the beg off | ||
| 3963 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 3964 | DW 0 ;AN000;Number of child panel entries | ||
| 3965 | DW 0 ;AN000;Off address of child panel table | ||
| 3966 | DW 0 ;AN000;Seg address of child panel table | ||
| 3967 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 3968 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3969 | ; | ||
| 3970 | ; PAN_EXP_MEMORY2 EQU 94 ;AN000;JW | ||
| 3971 | ; | ||
| 3972 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3973 | PCB94 LABEL WORD ;AN000; | ||
| 3974 | DW PCB_EXP ;AN000;option word | ||
| 3975 | DB 0 ;AN000;GHG new adds | ||
| 3976 | DB 0 ;AN000;GHG new adds | ||
| 3977 | DB 0 ;AN000;GHG new adds | ||
| 3978 | DW 1 ;AN000;row location of panel | ||
| 3979 | DW LEFT_COL ;AN000;column location of panel | ||
| 3980 | DW PANEL94_W ;AN000;text char width of panel | ||
| 3981 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 3982 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 3983 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 3984 | DW 0 ;AN000;Length compress panel in mem | ||
| 3985 | DW 0 ;AN000;Off addr compressed panel | ||
| 3986 | DW 0 ;AN000;Seg addr compressed panel | ||
| 3987 | DW PANEL94_W*PANEL94_L;AN000;Length expanded panel in mem | ||
| 3988 | DW OFFSET PANEL94 ;AN000;Off addr of expanded panel in | ||
| 3989 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 3990 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 3991 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 3992 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 3993 | DW 0 ;AN000;Len of the panel label | ||
| 3994 | DW 0 ;AN000;Off addr of the panel label | ||
| 3995 | DW 0 ;AN000;Seg addr of the panel label | ||
| 3996 | DW 0 ;AN000;Beg relative row of panel label | ||
| 3997 | DW 0 ;AN000;Beg relative col of panel label | ||
| 3998 | DW 0 ;AN000;Len of the panel stored in file | ||
| 3999 | DW 0 ;AN000;Off address of full filespec | ||
| 4000 | DW 0 ;AN000;Seg address of full filespec | ||
| 4001 | DW 0 ;AN000;Lower off word of the beg off | ||
| 4002 | DW 0 ;AN000;High off word of the beg off | ||
| 4003 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 4004 | DW 3 ;AN000;Number of child panel entries | ||
| 4005 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 4006 | DW 0 ;AN000;Seg address of child panel table | ||
| 4007 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 4008 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4009 | ; | ||
| 4010 | ; PAN_START720 | ||
| 4011 | ; | ||
| 4012 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4013 | PCB95 LABEL WORD ;AN000; | ||
| 4014 | DW PCB_EXP ;AN000;option word | ||
| 4015 | DB 0 ;AN000;GHG new adds | ||
| 4016 | DB 0 ;AN000;GHG new adds | ||
| 4017 | DB 0 ;AN000;GHG new adds | ||
| 4018 | DW 8 ;AN000;row location of panel | ||
| 4019 | DW LEFT_COL ;AN000;column location of panel | ||
| 4020 | DW PANEL95_W ;AN000;text char width of panel | ||
| 4021 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 4022 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 4023 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 4024 | DW 0 ;AN000;Length compress panel in mem | ||
| 4025 | DW 0 ;AN000;Off addr compressed panel | ||
| 4026 | DW 0 ;AN000;Seg addr compressed panel | ||
| 4027 | DW PANEL95_W*PANEL95_L ;AN000;Length expanded panel in mem | ||
| 4028 | DW OFFSET PANEL95 ;AN000;Off addr of expanded panel in | ||
| 4029 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 4030 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 4031 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 4032 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 4033 | DW 0 ;AN000;Len of the panel label | ||
| 4034 | DW 0 ;AN000;Off addr of the panel label | ||
| 4035 | DW 0 ;AN000;Seg addr of the panel label | ||
| 4036 | DW 0 ;AN000;Beg relative row of panel label | ||
| 4037 | DW 0 ;AN000;Beg relative col of panel label | ||
| 4038 | DW 0 ;AN000;Len of the panel stored in file | ||
| 4039 | DW 0 ;AN000;Off address of full filespec | ||
| 4040 | DW 0 ;AN000;Seg address of full filespec | ||
| 4041 | DW 0 ;AN000;Lower off word of the beg off | ||
| 4042 | DW 0 ;AN000;High off word of the beg off | ||
| 4043 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 4044 | DW 1 ;AN000;Number of child panel entries | ||
| 4045 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 4046 | DW 0 ;AN000;Seg address of child panel table | ||
| 4047 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 4048 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4049 | ; | ||
| 4050 | ; PAN_START1440 | ||
| 4051 | ; | ||
| 4052 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4053 | PCB96 LABEL WORD ;AN000; | ||
| 4054 | DW PCB_EXP ;AN000;option word | ||
| 4055 | DB 0 ;AN000;GHG new adds | ||
| 4056 | DB 0 ;AN000;GHG new adds | ||
| 4057 | DB 0 ;AN000;GHG new adds | ||
| 4058 | DW 8 ;AN000;row location of panel | ||
| 4059 | DW LEFT_COL ;AN000;column location of panel | ||
| 4060 | DW PANEL96_W ;AN000;text char width of panel | ||
| 4061 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 4062 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 4063 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 4064 | DW 0 ;AN000;Length compress panel in mem | ||
| 4065 | DW 0 ;AN000;Off addr compressed panel | ||
| 4066 | DW 0 ;AN000;Seg addr compressed panel | ||
| 4067 | DW PANEL96_W*PANEL96_L ;AN000;Length expanded panel in mem | ||
| 4068 | DW OFFSET PANEL96 ;AN000;Off addr of expanded panel in | ||
| 4069 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 4070 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 4071 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 4072 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 4073 | DW 0 ;AN000;Len of the panel label | ||
| 4074 | DW 0 ;AN000;Off addr of the panel label | ||
| 4075 | DW 0 ;AN000;Seg addr of the panel label | ||
| 4076 | DW 0 ;AN000;Beg relative row of panel label | ||
| 4077 | DW 0 ;AN000;Beg relative col of panel label | ||
| 4078 | DW 0 ;AN000;Len of the panel stored in file | ||
| 4079 | DW 0 ;AN000;Off address of full filespec | ||
| 4080 | DW 0 ;AN000;Seg address of full filespec | ||
| 4081 | DW 0 ;AN000;Lower off word of the beg off | ||
| 4082 | DW 0 ;AN000;High off word of the beg off | ||
| 4083 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 4084 | DW 1 ;AN000;Number of child panel entries | ||
| 4085 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 4086 | DW 0 ;AN000;Seg address of child panel table | ||
| 4087 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 4088 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4089 | ; | ||
| 4090 | ; ERR_INS_INSTALL | ||
| 4091 | ; | ||
| 4092 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4093 | PCB97 LABEL WORD ;AN000; | ||
| 4094 | DW PCB_EXP ;AN000;option word | ||
| 4095 | DB 0 ;AN000;GHG new adds | ||
| 4096 | DB 0 ;AN000;GHG new adds | ||
| 4097 | DB 0 ;AN000;GHG new adds | ||
| 4098 | DW 11 ;AN000;row location of panel | ||
| 4099 | DW LEFT_COL+1 ;AN000;column location of panel | ||
| 4100 | DW PANEL97_W ;AN000;text char width of panel | ||
| 4101 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 4102 | DW WHITE_RED ;AN000;Index number of log color | ||
| 4103 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 4104 | DW 0 ;AN000;Length compress panel in mem | ||
| 4105 | DW 0 ;AN000;Off addr compressed panel | ||
| 4106 | DW 0 ;AN000;Seg addr compressed panel | ||
| 4107 | DW PANEL97_W*PANEL97_L;AN000;Length expanded panel in mem | ||
| 4108 | DW OFFSET PANEL97 ;AN000;Off addr of expanded panel in | ||
| 4109 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 4110 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 4111 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 4112 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 4113 | DW 0 ;AN000;Len of the panel label | ||
| 4114 | DW 0 ;AN000;Off addr of the panel label | ||
| 4115 | DW 0 ;AN000;Seg addr of the panel label | ||
| 4116 | DW 0 ;AN000;Beg relative row of panel label | ||
| 4117 | DW 0 ;AN000;Beg relative col of panel label | ||
| 4118 | DW 0 ;AN000;Len of the panel stored in file | ||
| 4119 | DW 0 ;AN000;Off address of full filespec | ||
| 4120 | DW 0 ;AN000;Seg address of full filespec | ||
| 4121 | DW 0 ;AN000;Lower off word of the beg off | ||
| 4122 | DW 0 ;AN000;High off word of the beg off | ||
| 4123 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 4124 | DW 0 ;AN000;Number of child panel entries | ||
| 4125 | DW 0 ;AN000;Off address of child panel table | ||
| 4126 | DW 0 ;AN000;Seg address of child panel table | ||
| 4127 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 4128 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4129 | ; | ||
| 4130 | ; PAN_CHOOSE_SHELL EQU 98 ; | ||
| 4131 | ; | ||
| 4132 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4133 | PCB98 LABEL WORD ;AN000; | ||
| 4134 | DW PCB_EXP ;AN000;option word | ||
| 4135 | DB 0 ;AN000;GHG new adds | ||
| 4136 | DB 0 ;AN000;GHG new adds | ||
| 4137 | DB 0 ;AN000;GHG new adds | ||
| 4138 | DW 1 ;AN000;row location of panel | ||
| 4139 | DW LEFT_COL ;AN000;column location of panel | ||
| 4140 | DW PANEL98_W ;AN000;text char width of panel | ||
| 4141 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 4142 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 4143 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 4144 | DW 0 ;AN000;Length compress panel in mem | ||
| 4145 | DW 0 ;AN000;Off addr compressed panel | ||
| 4146 | DW 0 ;AN000;Seg addr compressed panel | ||
| 4147 | DW PANEL98_W*PANEL98_L;AN000;Length expanded panel in mem | ||
| 4148 | DW OFFSET PANEL98 ;AN000;Off addr of expanded panel in | ||
| 4149 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 4150 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 4151 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 4152 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 4153 | DW 0 ;AN000;Len of the panel label | ||
| 4154 | DW 0 ;AN000;Off addr of the panel label | ||
| 4155 | DW 0 ;AN000;Seg addr of the panel label | ||
| 4156 | DW 0 ;AN000;Beg relative row of panel label | ||
| 4157 | DW 0 ;AN000;Beg relative col of panel label | ||
| 4158 | DW 0 ;AN000;Len of the panel stored in file | ||
| 4159 | DW 0 ;AN000;Off address of full filespec | ||
| 4160 | DW 0 ;AN000;Seg address of full filespec | ||
| 4161 | DW 0 ;AN000;Lower off word of the beg off | ||
| 4162 | DW 0 ;AN000;High off word of the beg off | ||
| 4163 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 4164 | DW 3 ;AN000;Number of child panel entries | ||
| 4165 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 4166 | DW 0 ;AN000;Seg address of child panel table | ||
| 4167 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 4168 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4169 | ; | ||
| 4170 | ; SUB_INS_WORKING_A equ 99 | ||
| 4171 | ; | ||
| 4172 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4173 | PCB99 LABEL WORD ;AN000; | ||
| 4174 | DW PCB_EXP ;AN000;option word | ||
| 4175 | DB 0 ;AN000;GHG new adds | ||
| 4176 | DB 0 ;AN000;GHG new adds | ||
| 4177 | DB 0 ;AN000;GHG new adds | ||
| 4178 | DW 8 ;AN000;row location of panel | ||
| 4179 | DW LEFT_COL ;AN000;column location of panel | ||
| 4180 | DW PANEL99_W ;AN000;text char width of panel | ||
| 4181 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 4182 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 4183 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 4184 | DW 0 ;AN000;Length compress panel in mem | ||
| 4185 | DW 0 ;AN000;Off addr compressed panel | ||
| 4186 | DW 0 ;AN000;Seg addr compressed panel | ||
| 4187 | DW PANEL99_W*PANEL99_L;AN000;Length expanded panel in mem | ||
| 4188 | DW OFFSET PANEL99 ;AN000;Off addr of expanded panel in | ||
| 4189 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 4190 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 4191 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 4192 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 4193 | DW 0 ;AN000;Len of the panel label | ||
| 4194 | DW 0 ;AN000;Off addr of the panel label | ||
| 4195 | DW 0 ;AN000;Seg addr of the panel label | ||
| 4196 | DW 0 ;AN000;Beg relative row of panel label | ||
| 4197 | DW 0 ;AN000;Beg relative col of panel label | ||
| 4198 | DW 0 ;AN000;Len of the panel stored in file | ||
| 4199 | DW 0 ;AN000;Off address of full filespec | ||
| 4200 | DW 0 ;AN000;Seg address of full filespec | ||
| 4201 | DW 0 ;AN000;Lower off word of the beg off | ||
| 4202 | DW 0 ;AN000;High off word of the beg off | ||
| 4203 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 4204 | DW 1 ;AN000;Number of child panel entries | ||
| 4205 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 4206 | DW 0 ;AN000;Seg address of child panel table | ||
| 4207 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 4208 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4209 | ; | ||
| 4210 | ; SUB_INS_MSSHELL_A equ 100 | ||
| 4211 | ; | ||
| 4212 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4213 | PCB100 LABEL WORD ;AN000; | ||
| 4214 | DW PCB_EXP ;AN000;option word | ||
| 4215 | DB 0 ;AN000;GHG new adds | ||
| 4216 | DB 0 ;AN000;GHG new adds | ||
| 4217 | DB 0 ;AN000;GHG new adds | ||
| 4218 | DW 8 ;AN000;row location of panel | ||
| 4219 | DW LEFT_COL ;AN000;column location of panel | ||
| 4220 | DW PANEL100_W ;AN000;text char width of panel | ||
| 4221 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 4222 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 4223 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 4224 | DW 0 ;AN000;Length compress panel in mem | ||
| 4225 | DW 0 ;AN000;Off addr compressed panel | ||
| 4226 | DW 0 ;AN000;Seg addr compressed panel | ||
| 4227 | DW PANEL100_W*PANEL100_L;AN000;Length expanded panel in mem | ||
| 4228 | DW OFFSET PANEL100 ;AN000;Off addr of expanded panel in | ||
| 4229 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 4230 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 4231 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 4232 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 4233 | DW 0 ;AN000;Len of the panel label | ||
| 4234 | DW 0 ;AN000;Off addr of the panel label | ||
| 4235 | DW 0 ;AN000;Seg addr of the panel label | ||
| 4236 | DW 0 ;AN000;Beg relative row of panel label | ||
| 4237 | DW 0 ;AN000;Beg relative col of panel label | ||
| 4238 | DW 0 ;AN000;Len of the panel stored in file | ||
| 4239 | DW 0 ;AN000;Off address of full filespec | ||
| 4240 | DW 0 ;AN000;Seg address of full filespec | ||
| 4241 | DW 0 ;AN000;Lower off word of the beg off | ||
| 4242 | DW 0 ;AN000;High off word of the beg off | ||
| 4243 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 4244 | DW 1 ;AN000;Number of child panel entries | ||
| 4245 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 4246 | DW 0 ;AN000;Seg address of child panel table | ||
| 4247 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 4248 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4249 | ; | ||
| 4250 | ; SUB_INS_SHELL_DISKS equ 101 | ||
| 4251 | ; | ||
| 4252 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4253 | PCB101 LABEL WORD ;AN000; | ||
| 4254 | DW PCB_EXP ;AN000;option word | ||
| 4255 | DB 0 ;AN000;GHG new adds | ||
| 4256 | DB 0 ;AN000;GHG new adds | ||
| 4257 | DB 0 ;AN000;GHG new adds | ||
| 4258 | DW 8 ;AN000;row location of panel | ||
| 4259 | DW LEFT_COL ;AN000;column location of panel | ||
| 4260 | DW PANEL101_W ;AN000;text char width of panel | ||
| 4261 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 4262 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 4263 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 4264 | DW 0 ;AN000;Length compress panel in mem | ||
| 4265 | DW 0 ;AN000;Off addr compressed panel | ||
| 4266 | DW 0 ;AN000;Seg addr compressed panel | ||
| 4267 | DW PANEL101_W*PANEL101_L;AN000;Length expanded panel in mem | ||
| 4268 | DW OFFSET PANEL101 ;AN000;Off addr of expanded panel in | ||
| 4269 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 4270 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 4271 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 4272 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 4273 | DW 0 ;AN000;Len of the panel label | ||
| 4274 | DW 0 ;AN000;Off addr of the panel label | ||
| 4275 | DW 0 ;AN000;Seg addr of the panel label | ||
| 4276 | DW 0 ;AN000;Beg relative row of panel label | ||
| 4277 | DW 0 ;AN000;Beg relative col of panel label | ||
| 4278 | DW 0 ;AN000;Len of the panel stored in file | ||
| 4279 | DW 0 ;AN000;Off address of full filespec | ||
| 4280 | DW 0 ;AN000;Seg address of full filespec | ||
| 4281 | DW 0 ;AN000;Lower off word of the beg off | ||
| 4282 | DW 0 ;AN000;High off word of the beg off | ||
| 4283 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 4284 | DW 1 ;AN000;Number of child panel entries | ||
| 4285 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 4286 | DW 0 ;AN000;Seg address of child panel table | ||
| 4287 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 4288 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4289 | ; | ||
| 4290 | ; SUB_INS_OP_WORK = 102 | ||
| 4291 | ; | ||
| 4292 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4293 | PCB102 LABEL WORD ;AN000; | ||
| 4294 | DW PCB_EXP ;AN000;option word | ||
| 4295 | DB 0 ;AN000;GHG new adds | ||
| 4296 | DB 0 ;AN000;GHG new adds | ||
| 4297 | DB 0 ;AN000;GHG new adds | ||
| 4298 | DW 8 ;AN000;row location of panel | ||
| 4299 | DW LEFT_COL ;AN000;column location of panel | ||
| 4300 | DW PANEL102_W ;AN000;text char width of panel | ||
| 4301 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 4302 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 4303 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 4304 | DW 0 ;AN000;Length compress panel in mem | ||
| 4305 | DW 0 ;AN000;Off addr compressed panel | ||
| 4306 | DW 0 ;AN000;Seg addr compressed panel | ||
| 4307 | DW PANEL102_W*PANEL102_L;AN000;Length expanded panel in mem | ||
| 4308 | DW OFFSET PANEL102 ;AN000;Off addr of expanded panel in | ||
| 4309 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 4310 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 4311 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 4312 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 4313 | DW 0 ;AN000;Len of the panel label | ||
| 4314 | DW 0 ;AN000;Off addr of the panel label | ||
| 4315 | DW 0 ;AN000;Seg addr of the panel label | ||
| 4316 | DW 0 ;AN000;Beg relative row of panel label | ||
| 4317 | DW 0 ;AN000;Beg relative col of panel label | ||
| 4318 | DW 0 ;AN000;Len of the panel stored in file | ||
| 4319 | DW 0 ;AN000;Off address of full filespec | ||
| 4320 | DW 0 ;AN000;Seg address of full filespec | ||
| 4321 | DW 0 ;AN000;Lower off word of the beg off | ||
| 4322 | DW 0 ;AN000;High off word of the beg off | ||
| 4323 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 4324 | DW 1 ;AN000;Number of child panel entries | ||
| 4325 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 4326 | DW 0 ;AN000;Seg address of child panel table | ||
| 4327 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 4328 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4329 | ; | ||
| 4330 | ; SUB_INS_WORK3_A equ 103 | ||
| 4331 | ; | ||
| 4332 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4333 | PCB103 LABEL WORD ;AN000; | ||
| 4334 | DW PCB_EXP ;AN000;option word | ||
| 4335 | DB 0 ;AN000;GHG new adds | ||
| 4336 | DB 0 ;AN000;GHG new adds | ||
| 4337 | DB 0 ;AN000;GHG new adds | ||
| 4338 | DW 8 ;AN000;row location of panel | ||
| 4339 | DW LEFT_COL ;AN000;column location of panel | ||
| 4340 | DW PANEL103_W ;AN000;text char width of panel | ||
| 4341 | DW 0 ;AN000;Max poss panel sizing in text | ||
| 4342 | DW WHITE_BLUE ;AN000;Index number of log color | ||
| 4343 | DB '�Ŀ�����' ;AN000;8 log border characters | ||
| 4344 | DW 0 ;AN000;Length compress panel in mem | ||
| 4345 | DW 0 ;AN000;Off addr compressed panel | ||
| 4346 | DW 0 ;AN000;Seg addr compressed panel | ||
| 4347 | DW PANEL103_W*PANEL103_L;AN000;Length expanded panel in mem | ||
| 4348 | DW OFFSET PANEL103 ;AN000;Off addr of expanded panel in | ||
| 4349 | DW 0 ;AN000;Seg addr of expanded panel in | ||
| 4350 | DW 0 ;AN000;Len of the mixed panel in mem | ||
| 4351 | DW 0 ;AN000;Off addr of mixed panel in mem | ||
| 4352 | DW 0 ;AN000;Seg addr of mixed panel in mem | ||
| 4353 | DW 0 ;AN000;Len of the panel label | ||
| 4354 | DW 0 ;AN000;Off addr of the panel label | ||
| 4355 | DW 0 ;AN000;Seg addr of the panel label | ||
| 4356 | DW 0 ;AN000;Beg relative row of panel label | ||
| 4357 | DW 0 ;AN000;Beg relative col of panel label | ||
| 4358 | DW 0 ;AN000;Len of the panel stored in file | ||
| 4359 | DW 0 ;AN000;Off address of full filespec | ||
| 4360 | DW 0 ;AN000;Seg address of full filespec | ||
| 4361 | DW 0 ;AN000;Lower off word of the beg off | ||
| 4362 | DW 0 ;AN000;High off word of the beg off | ||
| 4363 | DW 9 DUP(0) ;AN000;Reserved for scroll and size | ||
| 4364 | DW 1 ;AN000;Number of child panel entries | ||
| 4365 | DW OFFSET CHILD2 ;AN000;Off address of child panel table | ||
| 4366 | DW 0 ;AN000;Seg address of child panel table | ||
| 4367 | DW 10 DUP(0) ;AN000;GHG new adds | ||
| 4368 | |||
| 4369 | |||
| 4370 | INCLUDE PANEL.INF ;AN000; | ||
| 4371 | |||
| 4372 | CODE ENDS ;AN000; | ||
| 4373 | END ;AN000; | ||
| 4374 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/PCEQUATE.INC b/v4.0/src/SELECT/PCEQUATE.INC new file mode 100644 index 0000000..8faf0d5 --- /dev/null +++ b/v4.0/src/SELECT/PCEQUATE.INC | |||
| @@ -0,0 +1,451 @@ | |||
| 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2 | ; | ||
| 3 | ; PCSCRRD option bit equates (SRD_OPT1) | ||
| 4 | ; | ||
| 5 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 6 | SRD_INITIAL EQU 0000000000000001B ;AN000;initialize SCB and filespec buff | ||
| 7 | SRD_READONE EQU 0000000000000010B ;AN000;read field specified by SRD_ID | ||
| 8 | SRD_APPEND EQU 0000000000000100B ;AN000;match field ID are issued new ID | ||
| 9 | SRD_READALL EQU 0000000000001000B ;AN000;read all FLDS in specified file | ||
| 10 | SRD_ALLOCRES EQU 0000000000010000B ;AN000;allocate reserved PCSLCTP space | ||
| 11 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 12 | ; | ||
| 13 | ; PCSCRRD error bit equates (SRD_ERROR) | ||
| 14 | ; | ||
| 15 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 16 | SRD_BUFSIZE EQU 0000000000000001B ;AN000;buffer size is too small | ||
| 17 | SRD_NOFIELDS EQU 0000000000000010B ;AN000;file does not contain fields | ||
| 18 | SRD_NOTCASFILE EQU 0000000000000100B ;AN000;file object list does not exist | ||
| 19 | SRD_FIELDSFULL EQU 0000000000001000B ;AN000;max num FLDS read into SCB vect | ||
| 20 | SRD_NOINITIAL EQU 0000000000010000B ;AN000;make initialize call first | ||
| 21 | SRD_NOFIELDID EQU 0000000000100000B ;AN000;specified field ID not found | ||
| 22 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 23 | ; | ||
| 24 | ; PCHLPRD option bit equates (HRD_OPT1) | ||
| 25 | ; | ||
| 26 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 27 | HRD_TOPIC EQU 0000000000000001B ;AN000;process help TOPIC(S) index | ||
| 28 | HRD_TEXT EQU 0000000000000010B ;AN000;process HELP or ERROR text | ||
| 29 | HRD_DISPID EQU 0000000000000100B ;AN000;display unique id on topic list | ||
| 30 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 31 | ; | ||
| 32 | ; PCHLPRD error bit equates (HRD_ERROR) | ||
| 33 | ; | ||
| 34 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 35 | HRD_BUFSIZE EQU 0000000000000001B ;AN000;buffer size is too small | ||
| 36 | HRD_NOHLPOBJ EQU 0000000000000010B ;AN000;file does not contain helps | ||
| 37 | HRD_NOOBJLST EQU 0000000000000100B ;AN000;file object list does not exist | ||
| 38 | HRD_NOHELPID EQU 0000000000001000B ;AN000;requested id was not found | ||
| 39 | HRD_NOTCASFILE EQU 0000000000010000B ;AN000;not a valid cas file | ||
| 40 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 41 | ; | ||
| 42 | ; PCSTRST equates | ||
| 43 | ; | ||
| 44 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 45 | SSC_TBSL EQU 0000000000000001B ;AN000;use two byte string length | ||
| 46 | SSC_PTSB EQU 0000000000000010B ;AN000;pointer points to string buffer | ||
| 47 | SSC_VTSAO EQU 0000000000000100B ;AN000;vector table is string addr only | ||
| 48 | SSC_VTASO EQU 0000000000001000B ;AN000;vector table addr is seg:offset | ||
| 49 | SSC_SLSB EQU 0000000000010000B ;AN000;string length is in string buffer | ||
| 50 | SSC_SBTC EQU 0000000000100000B ;AN000;string buffer has term. character | ||
| 51 | SSC_VTE EQU 1 ;AN000;error in vector table | ||
| 52 | SSC_SBE EQU 2 ;AN000;error in string buffer | ||
| 53 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 54 | ; | ||
| 55 | ; PCSLCTP Option word one (SCB_OPT1) | ||
| 56 | ; | ||
| 57 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 58 | SCB_UC EQU 0000000000000001B ;AN000;upper case option | ||
| 59 | SCB_WRAP EQU 0000000000000010B ;AN000;wrap option | ||
| 60 | SCB_FRBF EQU 0000000000000100B ;AN000;force return before first option | ||
| 61 | SCB_FRAL EQU 0000000000001000B ;AN000;force return after last option | ||
| 62 | SCB_LL EQU 0000000000010000B ;AN000;lock line | ||
| 63 | SCB_UKS EQU 0000000000100000B ;AN000;use keystroke | ||
| 64 | SCB_RD EQU 0000000001000000B ;AN000;return after display option | ||
| 65 | SCB_RUK EQU 0000000010000000B ;AN000;return unused keys option | ||
| 66 | SCB_UI EQU 0000000100000000B ;AN000;use index option | ||
| 67 | SCB_TRN EQU 0000001000000000B ;AN000;translate character | ||
| 68 | SCB_MON EQU 0000010000000000B ;AN000;convert to upper case monocasing | ||
| 69 | SCB_DBCS EQU 0000100000000000B ;AN000;check for double byte chars | ||
| 70 | SCB_TBL EQU 0001000000000000B ;AN000;use given DBCS range table | ||
| 71 | SCB_DCHECK EQU 0010000000000000B ;AN000;display check mark characters | ||
| 72 | SCB_DACTIVE EQU 0100000000000000B ;AN000;display active string indicators | ||
| 73 | SCB_DPOINT EQU 1000000000000000B ;AN000;display selection pointer string | ||
| 74 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 75 | ; | ||
| 76 | ; PCSLCTP Option word two (SCB_OPT2) | ||
| 77 | ; | ||
| 78 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 79 | SCB_CS EQU 0000000000000001B ;AN000;clear screen on entry option | ||
| 80 | SCB_ROTN EQU 0000000000000010B ;AN000;reset option to normal on return | ||
| 81 | SCB_UET EQU 0000000000000100B ;AN000;use existing text option | ||
| 82 | SCB_CFO EQU 0000000000001000B ;AN000;cursor follows option | ||
| 83 | SCB_LCOX EQU 0000000000010000B ;AN000;leave cursor on exit | ||
| 84 | SCB_IPAGE EQU 0000000000100000B ;AN000;instant paging | ||
| 85 | SCB_PM1 EQU 0000000001000000B ;AN000;paging is minus one line | ||
| 86 | SCB_UIND EQU 0000000010000000B ;AN000;display up, dn, lf, rg indicators | ||
| 87 | SCB_UNCA EQU 0000000100000000B ;AN000;use normal color array | ||
| 88 | SCB_DYN EQU 0000001000000000B ;AN000;option array is dynamicly created | ||
| 89 | SCB_LANDR EQU 0000010000000000B ;AN000;left and right scrolling active | ||
| 90 | SCB_CPHY EQU 0000100000000000B ;AN000;color array is physical attributs | ||
| 91 | SCB_NUML EQU 0001000000000000B ;AN000;generate num list in opt strings | ||
| 92 | SCB_SKIP EQU 0010000000000000B ;AN000;skip inactive option strings | ||
| 93 | SCB_SHIGH EQU 0100000000000000B ;AN000;highlight the selected opt strgs | ||
| 94 | SCB_AHIGH EQU 1000000000000000B ;AN000;highlight the active option strgs | ||
| 95 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 96 | ; | ||
| 97 | ; PCSLCTP Option word three (SCB_OPT3) | ||
| 98 | ; | ||
| 99 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 100 | SCB_SELACT EQU 0000000000000001B ;AN000;allow selection of inactive elem | ||
| 101 | SCB_SELEXC EQU 0000000000000010B ;AN000;exclusive selection of one elemet | ||
| 102 | SCB_EXCSING EQU 0000000000000100B ;AN000;one element is always selected | ||
| 103 | SCB_NUMUIND EQU 0000000000001000B ;AN000;display line number count | ||
| 104 | SCB_CHIGH EQU 0000000000010000B ;AN000;hilight cursored and selected stg | ||
| 105 | SCB_NUMS EQU 0000000000100000B ;AN000;auto 0-9 number selection | ||
| 106 | SCB_FINDE EQU 0000000001000000B ;AN000;auto character search | ||
| 107 | SCB_RELUIND EQU 0000000010000000B ;AN000;rel row/col used w/dirct indicato | ||
| 108 | SCB_RELSCR EQU 0000000100000000B ;AN000;rel row/col used w/scroll field | ||
| 109 | SCB_LVBOVR EQU 0000001000000000B ;AN000;use video buffer seg:off override | ||
| 110 | SCB_FM EQU 0000010000000000B ;AN000;make call to dynamic format rout | ||
| 111 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 112 | ; | ||
| 113 | ; PCSLCTP Select Array Option (SCB_SELSEG:SCB_SELOFF) | ||
| 114 | ; | ||
| 115 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 116 | SCB_SELECTON EQU 0000000000000001B ;AN000;element selected | ||
| 117 | SCB_ACTIVEON EQU 0000000000000010B ;AN000;element active | ||
| 118 | SCB_SKIPON EQU 0000000000000100B ;AN000;element should be skipped | ||
| 119 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 120 | ; | ||
| 121 | ; PCINCHA option equates (INC_OPT) | ||
| 122 | ; | ||
| 123 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 124 | INC_KWAIT EQU 0000000000000001B ;keystroke | ||
| 125 | INC_UTRAN EQU 0000000000000010B ;translate keys using user table | ||
| 126 | INC_UDBCS EQU 0000000000000100B ;DBCS processed using user table | ||
| 127 | INC_DDBCS EQU 0000000000001000B ;DBCS processed using DOS table | ||
| 128 | INC_UMONO EQU 0000000000010000B ;monocase keys using user table | ||
| 129 | INC_AMONO EQU 0000000000100000B ;monocase keys using USA algorithm | ||
| 130 | INC_RSCAN EQU 0000000001000000B ;return scan codes for norm chars | ||
| 131 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 132 | ; | ||
| 133 | ; PCINCHA option equates (INC_STAT) | ||
| 134 | ; | ||
| 135 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 136 | INC_KFND EQU 0000000000000001B ;AN000;character found in buffer | ||
| 137 | INC_DBCS EQU 0000000000000010B ;AN000;character found is double byte | ||
| 138 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 139 | ; | ||
| 140 | ; PCCLRRD error bit equates (CRD_ERROR) | ||
| 141 | ; | ||
| 142 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 143 | CRD_BUFSIZE EQU 0000000000000001B ;AN000;buffer size is too small | ||
| 144 | CRD_NOCOLORS EQU 0000000000000010B ;AN000;file does not contain colors | ||
| 145 | CRD_NOTCASFILE EQU 0000000000000100B ;AN000;file object list does not exist | ||
| 146 | CRD_IDNOTFOUND EQU 0000000000001000B ;AN000;color index ID not found | ||
| 147 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 148 | ; | ||
| 149 | ; PCPANRD option bit equates (PRD_OPT1) | ||
| 150 | ; | ||
| 151 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 152 | PRD_INITIAL EQU 0000000000000001B ;AN000;initialize PCB and filespec buff | ||
| 153 | PRD_READONE EQU 0000000000000010B ;AN000;read pan specified by PRD_ID | ||
| 154 | PRD_APPEND EQU 0000000000000100B ;AN000;match pans ID are issued new ID | ||
| 155 | PRD_READALL EQU 0000000000001000B ;AN000;read all pans in specified file | ||
| 156 | PRD_SIZEMALL EQU 0000000000010000B ;AN000;reserve space for panel sizing | ||
| 157 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 158 | ; | ||
| 159 | ; PCPANRD error bit equates (PRD_ERROR) | ||
| 160 | ; | ||
| 161 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 162 | PRD_BUFSIZE EQU 0000000000000001B ;AN000;buffer size is too small | ||
| 163 | PRD_NOPANELS EQU 0000000000000010B ;AN000;file does not contain panels | ||
| 164 | PRD_NOTCASFILE EQU 0000000000000100B ;AN000;file object list does not exist | ||
| 165 | PRD_PANELSFULL EQU 0000000000001000B ;AN000;max num pans read into PCB vect | ||
| 166 | PRD_NOINITIAL EQU 0000000000010000B ;AN000;make initialize call first | ||
| 167 | PRD_NOPANELID EQU 0000000000100000B ;AN000;specified panel ID not found | ||
| 168 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 169 | ; | ||
| 170 | ; PCDISPQ option equates (QM_OPT1) | ||
| 171 | ; | ||
| 172 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 173 | QM_INIT EQU 0000000000000001B ;AN000;Initialize working buffer | ||
| 174 | QM_PUSHCHD EQU 0000000000000010B ;AN000;Add child number | ||
| 175 | QM_RVMCHD EQU 0000000000000100B ;AN000;Remove specific child number | ||
| 176 | QM_POPCHD EQU 0000000000001000B ;AN000;Pop (n) number of child cur queue | ||
| 177 | QM_PUSHPAN EQU 0000000000010000B ;AN000;Add panel number | ||
| 178 | QM_RVMPAN EQU 0000000000100000B ;AN000;Remove specific panel number | ||
| 179 | QM_POPPAN EQU 0000000001000000B ;AN000;Pop (n) number of panls cur queue | ||
| 180 | QM_PUSHCQU EQU 0000000010000000B ;AN000;Push current child queue | ||
| 181 | QM_POPCQU EQU 0000000100000000B ;AN000;Pop last child queue | ||
| 182 | QM_PUSHPQU EQU 0000001000000000B ;AN000;Push current panel queue | ||
| 183 | QM_POPPQU EQU 0000010000000000B ;AN000;Pop last panel queue pushed | ||
| 184 | QM_CLSCHD EQU 0000100000000000B ;AN000;Clear current child queue. | ||
| 185 | QM_CLSPAN EQU 0001000000000000B ;AN000;Clear current panel queue. | ||
| 186 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 187 | ; PCDISPQ option equates (QM_OPT2) | ||
| 188 | ; | ||
| 189 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 190 | QM_BREAKON EQU 0000000000000001B ;AN000;break option is on | ||
| 191 | QM_BREAKOFF EQU 0000000000000010B ;AN000;break option is off | ||
| 192 | QM_SRFON EQU 0000000000000100B ;AN000;selected refresh option is on | ||
| 193 | QM_SRFOFF EQU 0000000000001000B ;AN000;selected refresh option is off | ||
| 194 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 195 | ; | ||
| 196 | ; PCDISPQ error equates (QM_ERROR) | ||
| 197 | ; | ||
| 198 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 199 | QM_ERRMP EQU 0000000000000001B ;AN000;max number of panels added | ||
| 200 | QM_ERRMC EQU 0000000000000010B ;AN000;max number of childs added | ||
| 201 | QM_ERRMPQ EQU 0000000000000100B ;AN000;max number of panel queues pushed | ||
| 202 | QM_ERRMCQ EQU 0000000000001000B ;AN000;max number of child queues pushed | ||
| 203 | QM_ERROP EQU 0000000000010000B ;AN000;max number of panel queues popped | ||
| 204 | QM_ERROC EQU 0000000000100000B ;AN000;max number of child queues popped | ||
| 205 | QM_ERRBU EQU 0000000001000000B ;AN000;inadequate buffer size avail | ||
| 206 | QM_ERRPN EQU 0000000010000000B ;AN000;specified panel not found | ||
| 207 | QM_ERRCN EQU 0000000100000000B ;AN000;specified child not found | ||
| 208 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 209 | ; | ||
| 210 | ; PCPANEL option bit equates (PM_OPT1) | ||
| 211 | ; | ||
| 212 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 213 | PM_RF EQU 0000000000000001B ;AN000;do not refresh display | ||
| 214 | PM_SRF EQU 0000000000000010B ;AN000;selective PVB refresh from LVB | ||
| 215 | PM_BK EQU 0000000000000100B ;AN000;panel break function active | ||
| 216 | PM_CL EQU 0000000000001000B ;AN000;initialize LVB to base char/attr | ||
| 217 | PM_DOA EQU 0000000000010000B ;AN000;display childs in active parent | ||
| 218 | PM_DOV EQU 0000000000100000B ;AN000;use child row, col, color overrid | ||
| 219 | PM_DOQ EQU 0000000001000000B ;AN000;disp all child in parent chd tabl | ||
| 220 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 221 | ; | ||
| 222 | ; PCPANEL error equates for (PM_ERROR) | ||
| 223 | ; | ||
| 224 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 225 | PM_PANPDQ EQU 0000000000000001B ;AN000;invalid parent PDQ or start num | ||
| 226 | PM_PCBVEC EQU 0000000000000010B ;AN000;invalid PCB vector entry found | ||
| 227 | PM_UNKNPANS EQU 0000000000000100B ;AN000;unknown panel source found | ||
| 228 | PM_CHDTAB EQU 0000000000001000B ;AN000;set error with child table | ||
| 229 | PM_COLORX EQU 0000000000010000B ;AN000;panel's color index out of range | ||
| 230 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 231 | ; | ||
| 232 | ; PCPANEL Parent and Child Display Queue option bit equates (PT_OPT) | ||
| 233 | ; | ||
| 234 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 235 | PT_BK EQU 0000000000000001B ;AN000;panel break on | ||
| 236 | PT_SRF EQU 0000000000000010B ;AN000;selective refresh of panel to PVB | ||
| 237 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 238 | ; | ||
| 239 | ; PCPANEL Panel Control Block option equates for individual panels (PCB_OPT1) | ||
| 240 | ; | ||
| 241 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 242 | PCB_CRE EQU 0000000000000001B ;AN000;Create panel from scratch | ||
| 243 | PCB_CMP EQU 0000000000000010B ;AN000;Use compress text form in memory | ||
| 244 | PCB_EXP EQU 0000000000000100B ;AN000;Use expanded text form in memory | ||
| 245 | PCB_MXP EQU 0000000000001000B ;AN000;Use mixed text/attr form in memoy | ||
| 246 | PCB_LB EQU 0000000000010000B ;AN000;Use logical border | ||
| 247 | PCB_ASZ EQU 0000000000100000B ;AN000;Allow sizing of panel | ||
| 248 | PCB_ASC EQU 0000000001000000B ;AN000;Allow scrolling of panel | ||
| 249 | PCB_LAB EQU 0000000010000000B ;AN000;Use the defined panel label | ||
| 250 | PCB_DTB EQU 0000000100000000B ;AN000;Draw top border (graphics only) | ||
| 251 | PCB_DBB EQU 0000001000000000B ;AN000;Draw bottom border (graphic only) | ||
| 252 | PCB_DLB EQU 0000010000000000B ;AN000;Draw left border (graphics only) | ||
| 253 | PCB_DRB EQU 0000100000000000B ;AN000;Draw right border (graphics only) | ||
| 254 | PCB_DSHADOW EQU 0001000000000000B ;AN000;Draw shadow (graphics only) | ||
| 255 | PCB_PELCOORD EQU 0010000000000000B ;AN000;row/col in pel coordinates (grap) | ||
| 256 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 257 | ; | ||
| 258 | ; PCINSTR option bit equates (INS_OPT) | ||
| 259 | ; | ||
| 260 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 261 | INS_FKS EQU 0000000000000001B ;AN000;find keystroke | ||
| 262 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 263 | ; | ||
| 264 | ; PCGVIDO Status equates (GV_STAT1) | ||
| 265 | ; | ||
| 266 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 267 | GV_TV EQU 0000000000000001B ;AN000;TopView is present | ||
| 268 | GV_CGA EQU 0000000000000010B ;AN000;CGA is present | ||
| 269 | GV_EGA EQU 0000000000000100B ;AN000;EGA is present | ||
| 270 | GV_PGA EQU 0000000000001000B ;AN000;PGA is present | ||
| 271 | GV_MGA EQU 0000000000010000B ;AN000;MGA is present | ||
| 272 | GV_EGAA EQU 0000000000100000B ;AN000;EGA is active card | ||
| 273 | GV_CGAA EQU 0000000001000000B ;AN000;CGA is active card | ||
| 274 | GV_EGACM EQU 0000000010000000B ;AN000;EGA is set to monochrome | ||
| 275 | GV_PGAEM EQU 0000000100000000B ;AN000;PGA is in color emulation mode | ||
| 276 | GV_HS EQU 0000001000000000B ;AN000;display requires sync check 1=Y | ||
| 277 | GV_64K EQU 0000010000000000B ;AN000; 64K memory on EGA card | ||
| 278 | GV_128K EQU 0000100000000000B ;AN000;128K memory on EGA card | ||
| 279 | GV_192K EQU 0001000000000000B ;AN000;192K memory on EGA card | ||
| 280 | GV_256K EQU 0010000000000000B ;AN000;256K memory on EGA card | ||
| 281 | GV_UM EQU 0100000000000000B ;AN000;error unknown moniter or config | ||
| 282 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 283 | ; | ||
| 284 | ; PCGVIDO Status equates (GV_STAT2) | ||
| 285 | ; | ||
| 286 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 287 | GV_TVW EQU 0000000000000001B ;AN000;App is 'well behaved' under TV | ||
| 288 | GV_P5140 EQU 0000000000000010B ;AN000;P12 with LCD | ||
| 289 | GV_P5153 EQU 0000000000000100B ;AN000;P12 with color | ||
| 290 | GV_P5151 EQU 0000000000001000B ;AN000;P12 with monochrome | ||
| 291 | GV_COLOR EQU 0000000000010000B ;AN000;color mode | ||
| 292 | GV_TEXTGRAPH EQU 0000000000100000B ;AN000;graphics mode | ||
| 293 | GV_MONOP EQU 0000000001000000B ;AN000;monochrome adapter is primary | ||
| 294 | GV_CGAP EQU 0000000010000000B ;AN000;CGA adapter is primary card | ||
| 295 | GV_EGAP EQU 0000000100000000B ;AN000;EGA adapter is primary card | ||
| 296 | GV_TURBOP EQU 0000001000000000B ;AN000;Turbo graphics adapter is primary | ||
| 297 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 298 | ; | ||
| 299 | ; PCINPUT option equates. | ||
| 300 | ; | ||
| 301 | ; | ||
| 302 | ; PCINPUT Option equates (IN_OPT) | ||
| 303 | ; | ||
| 304 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 305 | IN_UTRAN EQU 0000000000000001B ;AN000;translate keys using user table | ||
| 306 | IN_ADBCS EQU 0000000000000010B ;AN000;DBCS option active | ||
| 307 | IN_UDBCS EQU 0000000000000100B ;AN000;DBCS processed using user table | ||
| 308 | IN_DDBCS EQU 0000000000001000B ;AN000;DBCS processed using DOS table | ||
| 309 | IN_UMONO EQU 0000000000010000B ;AN000;monocase keys using user table | ||
| 310 | IN_AMONO EQU 0000000000100000B ;AN000;monocase keys using USA algorithm | ||
| 311 | IN_LICBX EQU 0000000001000000B ;AN000;load ICB off:seg and exit | ||
| 312 | IN_LVBOV EQU 0000000010000000B ;AN000;use video buffer seg:off override | ||
| 313 | ; | ||
| 314 | IN_RANG EQU 0000000000000001B ;AN000;ICB ID out of vector range | ||
| 315 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 316 | ; | ||
| 317 | ; Input Field Control Block Equates | ||
| 318 | ; | ||
| 319 | ; ICB_OPT1 Option word one equates | ||
| 320 | ; | ||
| 321 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 322 | ICB_ECL EQU 0000000000000001B ;AN000;set specified color on entry | ||
| 323 | ICB_XCL EQU 0000000000000010B ;AN000;set specified color on exit | ||
| 324 | ICB_USC EQU 0000000000000100B ;AN000;use color attribute string | ||
| 325 | ICB_BEN EQU 0000000000001000B ;AN000;display entry delimiters | ||
| 326 | ICB_BEX EQU 0000000000010000B ;AN000;display exit delimiters | ||
| 327 | ICB_BOX EQU 0000000000100000B ;AN000;display border delimiters | ||
| 328 | ICB_MUS EQU 0000000001000000B ;AN000;plus and minus display active | ||
| 329 | ICB_SMU EQU 0000000010000000B ;AN000;starting default is negative | ||
| 330 | ICB_OUT EQU 0000000100000000B ;AN000;display default and accept input | ||
| 331 | ICB_CLR EQU 0000001000000000B ;AN000;clear default on first entry | ||
| 332 | ICB_PSW EQU 0000010000000000B ;AN000;password | ||
| 333 | ICB_RJU EQU 0000100000000000B ;AN000;right justification is activated | ||
| 334 | ICB_SWK EQU 0001000000000000B ;AN000;switch entry dir key active | ||
| 335 | ICB_RTA EQU 0010000000000000B ;AN000;right arrow editing | ||
| 336 | ICB_LFA EQU 0100000000000000B ;AN000;left arrow editing | ||
| 337 | ICB_BKS EQU 1000000000000000B ;AN000;backspace editing | ||
| 338 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 339 | ; | ||
| 340 | ; ICB_OPT2 Option word two equates | ||
| 341 | ; | ||
| 342 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 343 | ICB_INS EQU 0000000000000001B ;AN000;insert key editing | ||
| 344 | ICB_DEL EQU 0000000000000010B ;AN000;delete key editing | ||
| 345 | ICB_HOM EQU 0000000000000100B ;AN000;home key editing | ||
| 346 | ICB_CTE EQU 0000000000001000B ;AN000;control + end key editing | ||
| 347 | ICB_END EQU 0000000000010000B ;AN000;end key editing | ||
| 348 | ICB_AXC EQU 0000000000100000B ;AN000;auto enter on cursor | ||
| 349 | ICB_AXD EQU 0000000001000000B ;AN000;auto enter on data | ||
| 350 | ICB_CSW EQU 0000000010000000B ;AN000;wrap the cursor end to end | ||
| 351 | ICB_UPC EQU 0000000100000000B ;AN000;lower case to upper conversion | ||
| 352 | ICB_UFK EQU 0000001000000000B ;AN000;use supplied keystroke as 1 key | ||
| 353 | ICB_UDO EQU 0000010000000000B ;AN000;undo key replaces default | ||
| 354 | ICB_TSD EQU 0000100000000000B ;AN000;thousands separators during inpu | ||
| 355 | ICB_TSA EQU 0001000000000000B ;AN000;thousands separators after entry | ||
| 356 | ICB_TSR EQU 0010000000000000B ;AN000;return thousand separators | ||
| 357 | ICB_PAD EQU 0100000000000000B ;AN000;pad zeros to precision | ||
| 358 | ICB_WRP EQU 1000000000000000B ;AN000;word wrap in windowed field | ||
| 359 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 360 | ; | ||
| 361 | ; ICB_OPT3 Option word three equates | ||
| 362 | ; | ||
| 363 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 364 | ICB_WIN EQU 0000000000000001B ;AN000;windowing wrap of field | ||
| 365 | ICB_WAE EQU 0000000000000010B ;AN000;up and down arrow editing | ||
| 366 | ICB_TBX EQU 0000000000000100B ;AN000;exit if arrows reach top/bottom | ||
| 367 | ICB_HOR EQU 0000000000001000B ;AN000;horizontial windowing | ||
| 368 | ICB_WHM EQU 0000000000010000B ;AN000;full window Home key | ||
| 369 | ICB_WEN EQU 0000000000100000B ;AN000;full window End key | ||
| 370 | ICB_WCE EQU 0000000001000000B ;AN000;full window Ctrl-End key | ||
| 371 | ICB_WDL EQU 0000000010000000B ;AN000;full window Delete key | ||
| 372 | ICB_WAR EQU 0000000100000000B ;AN000;full window arrow keys | ||
| 373 | ICB_WBS EQU 0000001000000000B ;AN000;full window backspace key | ||
| 374 | ICB_FGS EQU 0000010000000000B ;AN000;use the ICB_STATUS status values | ||
| 375 | ICB_SCR EQU 0000100000000000B ;AN000;display of scroll flag active | ||
| 376 | ICB_NUM EQU 0001000000000000B ;AN000;display of numlock flag active | ||
| 377 | ICB_CAP EQU 0010000000000000B ;AN000;display of caps flag active | ||
| 378 | ICB_FIN EQU 0100000000000000B ;AN000;display of insert flag active | ||
| 379 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 380 | ; | ||
| 381 | ; ICB_STATUS status word equates | ||
| 382 | ; | ||
| 383 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 384 | ICB_SDEF EQU 0000000000000001B ;AN000;default value changed | ||
| 385 | ICB_SMUS EQU 0000000000000010B ;AN000;minus sign active | ||
| 386 | ICB_SPUS EQU 0000000000000100B ;AN000;plus sign active | ||
| 387 | ICB_STRU EQU 0000000000001000B ;AN000;default value was truncated | ||
| 388 | ICB_SSCR EQU 0000000000010000B ;AN000;scroll lock flag on at exit/entry | ||
| 389 | ICB_SNUM EQU 0000000000100000B ;AN000;num lock flag on at exit/entry | ||
| 390 | ICB_SCAP EQU 0000000001000000B ;AN000;caps lock flag on at exit/entry | ||
| 391 | ICB_SINS EQU 0000000010000000B ;AN000;insert flag on at exit/entry | ||
| 392 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 393 | ; | ||
| 394 | ; PCWWRAP option bit equates (WWP_OPT1) | ||
| 395 | ; | ||
| 396 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 397 | WWP_LEFTJUST EQU 0000000000000001B ;AN000;process with left straight edge | ||
| 398 | WWP_RIGHTJUST EQU 0000000000000010B ;AN000;process with right straight edge | ||
| 399 | WWP_LEFTNRIGHT EQU 0000000000000100B ;AN000;process with left and right edge | ||
| 400 | WWP_HYPHEN EQU 0000000000001000B ;AN000;hyphenate word(s) | ||
| 401 | WWP_DESTBUFFER EQU 0000000000010000B ;AN000;Use specified destination buffer | ||
| 402 | WWP_SRCBUFFER EQU 0000000000100000B ;AN000;Use the same buf as the text | ||
| 403 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 404 | ; | ||
| 405 | ; PCWWRAP error bit equates (WWP_ERROR) | ||
| 406 | ; | ||
| 407 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 408 | WWP_BUFSIZE EQU 0000000000000001B ;AN000;buffer size is too small | ||
| 409 | WWP_DUPSYMBOL EQU 0000000000000010B ;AN000;WWP_HYSMBOL and WWP_SRCHYSMB | ||
| 410 | ; are set to same character | ||
| 411 | WWP_LONGWORD EQU 0000000000000100B ;AN000;word is longer than WWP_WIDTH | ||
| 412 | WWP_NOBUFFER EQU 0000000000001000B ;AN000;no address to src or dest buf | ||
| 413 | WWP_NOJUSTOPT EQU 0000000000010000B ;AN000;no justification option was set | ||
| 414 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 415 | ; | ||
| 416 | ; Help options (WR_HLPOPT, WR_HLPPAN, WR_HLPDIS) | ||
| 417 | ; | ||
| 418 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 419 | HLP_CONT EQU 0000000000000001B ;AN000;contextual help | ||
| 420 | HLP_KEYS EQU 0000000000000010B ;AN000;keys help | ||
| 421 | HLP_HELP EQU 0000000000000100B ;AN000;help-on-help | ||
| 422 | HLP_INDX EQU 0000000000001000B ;AN000;help index | ||
| 423 | HLP_OVER EQU 0000000000010000B ;AN000;help row and column overrides | ||
| 424 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 425 | ; | ||
| 426 | ; Internal equates | ||
| 427 | ; | ||
| 428 | ; | ||
| 429 | ; Internal keystroke equates | ||
| 430 | ; | ||
| 431 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 432 | UPARROW EQU 72*256 ;AN000;up arrow | ||
| 433 | DNARROW EQU 80*256 ;AN000;down arrow | ||
| 434 | LFARROW EQU 75*256 ;AN000;left arrow | ||
| 435 | RTARROW EQU 77*256 ;AN000;right arrow | ||
| 436 | PGUP EQU 73 ;AN000; | ||
| 437 | PGDN EQU 81 ;AN000; | ||
| 438 | ESCAPE EQU 27 ;AN000; | ||
| 439 | ENTER EQU 13 ;AN000; | ||
| 440 | SPACE EQU 32 ;AN000; | ||
| 441 | TAB EQU 9 ;AN000; | ||
| 442 | F1 EQU 59 ;AN000; | ||
| 443 | F2 EQU 60 ;AN000; | ||
| 444 | F3 EQU 61 ;AN000; | ||
| 445 | F4 EQU 62 ;AN000; | ||
| 446 | F5 EQU 63 ;AN000; | ||
| 447 | F6 EQU 64 ;AN000; | ||
| 448 | F7 EQU 65 ;AN000; | ||
| 449 | F8 EQU 66 ;AN000; | ||
| 450 | F9 EQU 67 ;AN000; | ||
| 451 | F10 EQU 68 ;AN000; | ||
diff --git a/v4.0/src/SELECT/PCGEQU.INC b/v4.0/src/SELECT/PCGEQU.INC new file mode 100644 index 0000000..8f25b10 --- /dev/null +++ b/v4.0/src/SELECT/PCGEQU.INC | |||
| @@ -0,0 +1,170 @@ | |||
| 1 | ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" =B | ||
| 2 | ; VIDEO REGISTER PORT ADDRESS EQUATES =B | ||
| 3 | ; | ||
| 4 | ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" =B | ||
| 5 | seq_addr EQU 0C4H ;AN000;Sequencer Address =B | ||
| 6 | seq_data EQU 0C5H ;AN000;Sequencer Data =B | ||
| 7 | crtc_addr EQU 0D4H ;AN000;CRT Controller Address (Color) =B | ||
| 8 | crtc_addr_b EQU 0B4H ;AN000;CRT Controller Address (Mono) =B | ||
| 9 | crtc_data EQU 0D5H ;AN000;CRT Controller Data =B | ||
| 10 | graph_1_pos EQU 0CCH ;AN000;Graphics 1 Position =B | ||
| 11 | graph_2_pos EQU 0CAH ;AN000;Graphics 2 Position =B | ||
| 12 | graph_addr EQU 0CEH ;AN000;Graphics 1 & 2 Address =B | ||
| 13 | graph_data EQU 0CFH ;AN000;Graphics 1 & 2 Data =B | ||
| 14 | misc_output EQU 0C2H ;AN000;Miscellaneous Output =B | ||
| 15 | misc_read EQU 0CCH ;AN000;Miscellaneous Output Read Port Address =B | ||
| 16 | in_stat_0 EQU 0C2H ;AN000;Input Status Register 0 =B | ||
| 17 | input_status_b EQU 0BAH ;AN000;Feature Control (Mono) =B | ||
| 18 | input_status EQU 0DAH ;AN000;Feature Control (Color) =B | ||
| 19 | attr_read EQU 0C1H ;AN000;Attribute Controller Read Address =B | ||
| 20 | attr_write EQU 0C0H ;AN000;Attribute Controller Write Address =B | ||
| 21 | fctrl_read EQU 0CAH ;AN000;Feature Control Regiester Read Address =B | ||
| 22 | |||
| 23 | ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
| 24 | ; SEQUENCER ADDRESS REGISTER EQUATES | ||
| 25 | ; | ||
| 26 | ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
| 27 | s_reset EQU 00H ;AN000;Reset =B | ||
| 28 | s_clock EQU 01H ;AN000;Clocking Mode =B | ||
| 29 | s_map EQU 02H ;AN000;Map Mask =B | ||
| 30 | s_cgen EQU 03H ;AN000;Character Map Select =B | ||
| 31 | s_mem EQU 04H ;AN000;Memory Mode =B | ||
| 32 | |||
| 33 | |||
| 34 | ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
| 35 | ; GRAPHICS ADDRESS REGISTER EQUATES | ||
| 36 | ; | ||
| 37 | ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""""" | ||
| 38 | g_set_reset EQU 00H ;AN000;set/reset =B | ||
| 39 | g_enbl_set EQU 01H ;AN000;enable set/reset =B | ||
| 40 | g_clr_comp EQU 02H ;AN000;color compare =B | ||
| 41 | g_data_rot EQU 03H ;AN000;data rotate =B | ||
| 42 | g_read_map EQU 04H ;AN000;read map select =B | ||
| 43 | g_mode EQU 05H ;AN000;mode =B | ||
| 44 | g_misc EQU 06H ;AN000;miscellaneous =B | ||
| 45 | g_color EQU 07H ;AN000;color don't care =B | ||
| 46 | g_bit_mask EQU 08H ;AN000;bit mask =B | ||
| 47 | |||
| 48 | ;---------------------------------------------------------------------+ | ||
| 49 | ; | | ||
| 50 | ; Miscellaneous Equates | | ||
| 51 | ; | | ||
| 52 | ;---------------------------------------------------------------------+ | ||
| 53 | |||
| 54 | LINELEN EQU 80 ;AN000; Length of a Graphics Buffer Line | ||
| 55 | COLPELS EQU 8 ;AN000; Number of pels per text column | ||
| 56 | DEFROFFU EQU 0 ;AN000; Default Pointer Icon Row Center Offset | ||
| 57 | DEFROFFD EQU 14 ;AN000; Default Pointer Icon Row Center Offset | ||
| 58 | DEFCOFFR EQU 11 ;AN000; Default Pointer Icon Column Center Offst | ||
| 59 | DEFCOFFL EQU 4 ;AN000; Default Pointer Icon Column Center Offst | ||
| 60 | ICONROWS EQU 16 ;AN000; Number of Rows in Pointer Icon | ||
| 61 | ICONCOLS EQU 16 ;AN000; Number of Columns in Pointer Icon | ||
| 62 | SHFTMSK EQU 07H ;AN000; Column Shift Count Bit Mask (Hi-Res) | ||
| 63 | M_BLACK EQU 0 ;AN000;default background color (icon) | ||
| 64 | M_WHITE EQU 15 ;AN000;default foreground color (icon) | ||
| 65 | M_DAXIS EQU 11 ;AN000;default axis mouse pointer | ||
| 66 | VSICONR EQU 28 ;AN000;# pel rows | ||
| 67 | VSICONC EQU 2*8 ;AN000;# pel columns | ||
| 68 | MVSICONR EQU 16 ;AN000;minimun pel rows in sb icon | ||
| 69 | MHSICONC EQU 3*8 ;AN000;minimum pel cols in sb icon | ||
| 70 | |||
| 71 | ;; | ||
| 72 | ;; Long Conditional Jump Macros | ||
| 73 | ;; | ||
| 74 | lja macro Farlabel ;;AN000; | ||
| 75 | local Nearlabel ;;AN000; | ||
| 76 | jna Nearlabel ;;AN000; | ||
| 77 | jmp Farlabel ;;AN000; | ||
| 78 | Nearlabel: ;;AN000; | ||
| 79 | endm ;;AN000; | ||
| 80 | ljae macro Farlabel ;;AN000; | ||
| 81 | local Nearlabel ;;AN000; | ||
| 82 | jnae Nearlabel ;;AN000; | ||
| 83 | jmp Farlabel ;;AN000; | ||
| 84 | Nearlabel: ;;AN000; | ||
| 85 | endm ;;AN000; | ||
| 86 | ljb macro Farlabel ;;AN000; | ||
| 87 | local Nearlabel ;;AN000; | ||
| 88 | jnb Nearlabel ;;AN000; | ||
| 89 | jmp Farlabel ;;AN000; | ||
| 90 | Nearlabel: ;;AN000; | ||
| 91 | endm ;;AN000; | ||
| 92 | ljc macro Farlabel ;;AN000; | ||
| 93 | local Nearlabel ;;AN000; | ||
| 94 | jnc Nearlabel ;;AN000; | ||
| 95 | jmp Farlabel ;;AN000; | ||
| 96 | Nearlabel: ;;AN000; | ||
| 97 | endm ;;AN000; | ||
| 98 | ljbe macro Farlabel ;;AN000; | ||
| 99 | local Nearlabel ;;AN000; | ||
| 100 | jnbe Nearlabel ;;AN000; | ||
| 101 | jmp Farlabel ;;AN000; | ||
| 102 | Nearlabel: ;;AN000; | ||
| 103 | endm ;;AN000; | ||
| 104 | lje macro Farlabel ;;AN000; | ||
| 105 | local Nearlabel ;;AN000; | ||
| 106 | jne Nearlabel ;;AN000; | ||
| 107 | jmp Farlabel ;;AN000; | ||
| 108 | Nearlabel: ;;AN000; | ||
| 109 | endm ;;AN000; | ||
| 110 | ljz macro Farlabel ;;AN000; | ||
| 111 | local Nearlabel ;;AN000; | ||
| 112 | jnz Nearlabel ;;AN000; | ||
| 113 | jmp Farlabel ;;AN000; | ||
| 114 | Nearlabel: ;;AN000; | ||
| 115 | endm ;;AN000; | ||
| 116 | ljg macro Farlabel ;;AN000; | ||
| 117 | local Nearlabel ;;AN000; | ||
| 118 | jng Nearlabel ;;AN000; | ||
| 119 | jmp Farlabel ;;AN000; | ||
| 120 | Nearlabel: ;;AN000; | ||
| 121 | endm ;;AN000; | ||
| 122 | ljge macro Farlabel ;;AN000; | ||
| 123 | local Nearlabel ;;AN000; | ||
| 124 | jnge Nearlabel ;;AN000; | ||
| 125 | jmp Farlabel ;;AN000; | ||
| 126 | Nearlabel: ;;AN000; | ||
| 127 | endm ;;AN000; | ||
| 128 | ljl macro Farlabel ;;AN000; | ||
| 129 | local Nearlabel ;;AN000; | ||
| 130 | jnl Nearlabel ;;AN000; | ||
| 131 | jmp Farlabel ;;AN000; | ||
| 132 | Nearlabel: ;;AN000; | ||
| 133 | endm ;;AN000; | ||
| 134 | ljle macro Farlabel ;;AN000; | ||
| 135 | local Nearlabel ;;AN000; | ||
| 136 | jnle Nearlabel ;;AN000; | ||
| 137 | jmp Farlabel ;;AN000; | ||
| 138 | Nearlabel: ;;AN000; | ||
| 139 | endm ;;AN000; | ||
| 140 | ljnc macro Farlabel ;;AN000; | ||
| 141 | local Nearlabel ;;AN000; | ||
| 142 | jc Nearlabel ;;AN000; | ||
| 143 | jmp Farlabel ;;AN000; | ||
| 144 | Nearlabel: ;;AN000; | ||
| 145 | endm ;;AN000; | ||
| 146 | ljne macro Farlabel ;;AN000; | ||
| 147 | local Nearlabel ;;AN000; | ||
| 148 | je Nearlabel ;;AN000; | ||
| 149 | jmp Farlabel ;;AN000; | ||
| 150 | Nearlabel: ;;AN000; | ||
| 151 | endm ;;AN000; | ||
| 152 | ljnz macro Farlabel ;;AN000; | ||
| 153 | local Nearlabel ;;AN000; | ||
| 154 | jz Nearlabel ;;AN000; | ||
| 155 | jmp Farlabel ;;AN000; | ||
| 156 | Nearlabel: ;;AN000; | ||
| 157 | endm ;;AN000; | ||
| 158 | ljno macro Farlabel ;;AN000; | ||
| 159 | local Nearlabel ;;AN000; | ||
| 160 | jo Nearlabel ;;AN000; | ||
| 161 | jmp Farlabel ;;AN000; | ||
| 162 | Nearlabel: ;;AN000; | ||
| 163 | endm ;;AN000; | ||
| 164 | ljo macro Farlabel ;;AN000; | ||
| 165 | local Nearlabel ;;AN000; | ||
| 166 | jno Nearlabel ;;AN000; | ||
| 167 | jmp Farlabel ;;AN000; | ||
| 168 | Nearlabel: ;;AN000; | ||
| 169 | endm ;;AN000; | ||
| 170 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/PRN_DEF.ASM b/v4.0/src/SELECT/PRN_DEF.ASM new file mode 100644 index 0000000..3494d7a --- /dev/null +++ b/v4.0/src/SELECT/PRN_DEF.ASM | |||
| @@ -0,0 +1,1556 @@ | |||
| 1 | ;******************************************************************************** | ||
| 2 | ; File: PRN_DEF.ASM | ||
| 3 | ; | ||
| 4 | ; Subroutines to read the printer profile file, extract the printer names, | ||
| 5 | ; build a scroll list for the cas services and retrieve addition information | ||
| 6 | ; from the file on a specific printer. | ||
| 7 | ; Also contains a subroutine to change the parameters for the SELECT command | ||
| 8 | ; in the autoexec.bat file. | ||
| 9 | ; | ||
| 10 | ;******************************************************************************** | ||
| 11 | PAGE , 132 ;AN000; | ||
| 12 | .ALPHA ;AN000; | ||
| 13 | .XLIST ;AN000; | ||
| 14 | INCLUDE MACROS.INC ;AN000; | ||
| 15 | INCLUDE STRUC.INC ;AN000; | ||
| 16 | .LIST ;AN000; | ||
| 17 | |||
| 18 | ;*************************************************************************** | ||
| 19 | ; Define the public subroutines in this module | ||
| 20 | ;*************************************************************************** | ||
| 21 | PUBLIC GET_PRINTER_TITLES_ROUTINE ;AN000; | ||
| 22 | PUBLIC GET_PRINTER_INFO_ROUTINE ;AN000; | ||
| 23 | PUBLIC RELEASE_PRINTER_INFO_ROUTINE ;AN000; | ||
| 24 | PUBLIC CHANGE_AUTOEXEC_ROUTINE ;AN000; | ||
| 25 | ;*************************************************************************** | ||
| 26 | ; Define the public values in this module | ||
| 27 | ;*************************************************************************** | ||
| 28 | PUBLIC SEG_LOC ;AN000; The segment where the printer data is stored | ||
| 29 | PUBLIC NAMES_OFF ;AN000; The offset in the segment of the names table | ||
| 30 | PUBLIC N_PRN_NAMES ;AN000; The number of printer definitions read from the profile | ||
| 31 | PUBLIC MAX_NAME ;AN000; The longest name in the list | ||
| 32 | PUBLIC SIZE_NAMES ;AN000; The number of bytes between each printer name (abs) | ||
| 33 | PUBLIC SEL_FLG ;AN000; AN000; SELECT runtime flag | ||
| 34 | |||
| 35 | EXTRN SYSPARSE: FAR;AN000; | ||
| 36 | EXTRN POS_ZERO: FAR;AN000; | ||
| 37 | EXTRN COPY_ROUTINE: FAR;AN000; | ||
| 38 | EXTRN I_PRINTER: WORD;AN000; | ||
| 39 | EXTRN N_PRINTER_TYPE: BYTE;AN000; | ||
| 40 | EXTRN S_MODE_PARM: WORD;AN000; | ||
| 41 | EXTRN S_CP_DRIVER: WORD;AN000; | ||
| 42 | EXTRN S_CP_PREPARE: WORD;AN000; | ||
| 43 | EXTRN S_GRAPH_PARM: WORD;AN000; | ||
| 44 | EXTRN HOOK_INT_24:FAR;AN000; | ||
| 45 | EXTRN RESTORE_INT_24:FAR;AN000; | ||
| 46 | EXTRN INT_24_ERROR:WORD;AN000; | ||
| 47 | |||
| 48 | |||
| 49 | EXTRN BIN_TO_CHAR_ROUTINE:FAR;AN000; | ||
| 50 | |||
| 51 | DATA SEGMENT BYTE PUBLIC 'DATA';AN000; | ||
| 52 | |||
| 53 | |||
| 54 | SEL_FLG DB 0 ;AN000; Select flag byte | ||
| 55 | ;INSTALLRW EQU 80H ;AN000; INSTALL diskette is R/W | ||
| 56 | |||
| 57 | SEG_LOC DW 0 ;AN000; Location of the segment where the data is | ||
| 58 | NAMES_OFF DW 0 ;AN000; The offset of the names table in the segment | ||
| 59 | SEGMENT_SIZE DW 0 ;AN000; Amount of memory available | ||
| 60 | BUFFER_START DW 0 ;AN000; Starting offset of the file data buffer | ||
| 61 | BUFFER_SIZE DW 0 ;AN000; Number of bytes in the file data buffer | ||
| 62 | FILE_PTR_AT_START DD 0 ;AN000; The file pointer for the data which is at | ||
| 63 | ; the beginning of the file data buffer | ||
| 64 | AMOUNT_OF_DATA DW 0 ;AN000; The number of bytes in the file data buffer | ||
| 65 | CURRENT_PARSE_LOC DW 0 ;AN000; The location to start the next parse. | ||
| 66 | END_CUR_LINE DW 0 ;AN000; The address of the end of the line currently being parsed | ||
| 67 | CX_ORDINAL_VALUE DW 0 ;AN000; The value returned by the parse for next call | ||
| 68 | NUM_PRINTER_DEFS DB 0 ;AN000; The number of printer definitions in the file | ||
| 69 | N_PRN_NAMES DW 0 ;AN000; The next free index into the names table | ||
| 70 | FILE_HANDLE DW 0 ;AN000; Handle for the printer definition file. | ||
| 71 | MAX_NAME DW 0 ;AN000; The length of the longest printer name found in the file | ||
| 72 | START_NEXT_LINE DW 0 ;AN000; The starting offset of the next line to parse | ||
| 73 | APPEND_POINTER DW 0 ;AN000; Offset of the ASCII-N string to append to the SELECT line | ||
| 74 | FILENAME DW 0 ;AN000; Offset of the ASCII-N string containing the filename | ||
| 75 | CDP_FOUND DB 0 ;AN000; | ||
| 76 | CPP_FOUND DB 0 ;AN000; | ||
| 77 | |||
| 78 | |||
| 79 | W_VALUE DW 0 ;AN000; | ||
| 80 | STRING_N DB 10 DUP(0);AN000; | ||
| 81 | |||
| 82 | |||
| 83 | ;AD000;JW BLANK_MODE DW END_BLANK_MODE - $ - 3 ; The blank line for inserting mode parameters | ||
| 84 | ;AD000;JW DB ' , , , , ',? | ||
| 85 | ;AD000;JW END_BLANK_MODE EQU $ | ||
| 86 | |||
| 87 | BLANK_STRING DW 0 ;AN000; Blank values for the other printer profile parameters | ||
| 88 | |||
| 89 | E_SIZE_CR_LF EQU 2 ;AN000; The number of bytes in W_CR_LF | ||
| 90 | W_CR_LF DB 13,10 ;AN000; Carrage return and line feed to append to the select line | ||
| 91 | |||
| 92 | READ_FLAG DB 0 ;AN000; Flag for use when reading data | ||
| 93 | AT_EOF EQU 1B ;AN000; Indicates when the end of file has been reached | ||
| 94 | LAST_LINE EQU 10B ;AN000; Indicates if this is the last line in the buffer | ||
| 95 | |||
| 96 | RESET_EOF EQU 11111110B ;AN000; Masks for resetting the flags | ||
| 97 | RESET_LST_LINE EQU 11111101B ;AN000; | ||
| 98 | |||
| 99 | PARSE_FLAG DB 0 ;AN000; Flag for use when parsing the data | ||
| 100 | FIRST_PARSE EQU 1B ;AN000; Indicates if this is the first line being parsed | ||
| 101 | LINE_DONE EQU 10B ;AN000; Indicates if the current line has already been parsed | ||
| 102 | FIRST_NAME EQU 100B ;AN000; Indicates if a printer names has already been found | ||
| 103 | |||
| 104 | RESET_FIRST_PARSE EQU 11111110B ;AN000; Masks for resetting the flags | ||
| 105 | RESET_LINE_DONE EQU 11111101B ;AN000; | ||
| 106 | RESET_FIRST_NAME EQU 11111011B ;AN000; | ||
| 107 | |||
| 108 | ;*************************************************************************** | ||
| 109 | ; Error codes returned. | ||
| 110 | ;*************************************************************************** | ||
| 111 | ERR_NOT_ENOUGH_MEM EQU 1 ;AN000; There was not enough memory to build the names table | ||
| 112 | ERR_OPENING_FILE EQU 2 ;AN000; Error opening a file | ||
| 113 | ERR_READING_FILE EQU 3 ;AN000; Error reading from a file | ||
| 114 | ERR_FINDING_VALUE EQU 4 ;AN000; Error finding the number of prn defs at the beginning of the file | ||
| 115 | ERR_LINE_TOO_LONG EQU 5 ;AN000; There was a line too long for the buffer | ||
| 116 | ERR_FINDING_NAME EQU 6 ;AN000; There was an error locating a printer name after a P or S | ||
| 117 | ERR_ACCESSING_FILE EQU 7 ;AN000; There was an error updating the file pointer | ||
| 118 | ERR_TOO_MANY_DEFS EQU 8 ;AN000; There are too many defintion in the file | ||
| 119 | ERR_NUMBER_MATCH EQU 9 ;AN000; The number of actual definition do not match the number expected | ||
| 120 | ERR_ALLOCATING_MEM EQU 10 ;AN000; There was an error allocating memory | ||
| 121 | ERR_CDP_CPP EQU 11 ;AN000; A prn defn had either a CDP or CPP but not both | ||
| 122 | ERR_PRN_DEFN EQU 12 ;AN000; | ||
| 123 | |||
| 124 | TRUE EQU 1 ;AN000; | ||
| 125 | FALSE EQU 0 ;AN000; | ||
| 126 | |||
| 127 | |||
| 128 | E_CR EQU 13 ;AN000; | ||
| 129 | E_LF EQU 10 ;AN000; | ||
| 130 | E_FILE_TERM EQU 1AH ;AN000; | ||
| 131 | |||
| 132 | E_MAX_PRN_NAME_LEN EQU 40 ;AN000; The maximum printer name length | ||
| 133 | LENGTH_FILE_PTR EQU 4 ;AN000; The number of bytes in the file pointer | ||
| 134 | MAX_NUM_PRINTER_DEFS EQU 31 ;AC089;SEH ;AC073; The maximum number of printer definitions | ||
| 135 | MIN_SIZE_FILE_BUFFER EQU 0400H ;AN000; The minimum amount of memory needed for the file data buffer | ||
| 136 | LENGTH_PRT_TYPE_IND EQU 1 ;AN000; The length of the printer type indicator | ||
| 137 | SIZE_NAMES EQU E_MAX_PRN_NAME_LEN+LENGTH_FILE_PTR+LENGTH_PRT_TYPE_IND ;AN000; The size of one entry in the names table | ||
| 138 | NAMES_TABLE_SIZE EQU SIZE_NAMES * MAX_NUM_PRINTER_DEFS ;AN000; The size of the names table | ||
| 139 | MINIMUM_MEMORY EQU NAMES_TABLE_SIZE + MIN_SIZE_FILE_BUFFER ;AN000; The minimum amount of memory required | ||
| 140 | |||
| 141 | RANGE_ONLY EQU 1 ;AN000; The parser is only to look for ranges of values | ||
| 142 | RANGE_AND_STRING EQU 3 ;AN000; The parser is to look for ranges and strings | ||
| 143 | |||
| 144 | NUMERIC_VALUE EQU 08000H ;AN000; Parser constant for searching for numeric values | ||
| 145 | SIMPLE_STRING EQU 02000H ;AN000; Parser constant for searching for strings | ||
| 146 | |||
| 147 | |||
| 148 | ; Control blocks for the parser. | ||
| 149 | ; The PARMS INPUT BLOCK | ||
| 150 | PARMS LABEL BYTE ;AN000; | ||
| 151 | PAR_EXTEN DW OFFSET PARMSX ;AN000; Offset of the PARMS EXTENSION BLOCK | ||
| 152 | PAR_NUM DB 2 ;AN000; The number of further definitions | ||
| 153 | DB 0 ;AN000; | ||
| 154 | DB 1 ;AN000; | ||
| 155 | DB 1AH ;AN000; | ||
| 156 | |||
| 157 | ; The PARMS EXTENSION BLOCK | ||
| 158 | PARMSX LABEL BYTE;AN000; | ||
| 159 | PAX_MINP DB 0 ;AN000; | ||
| 160 | PAX_MAXP DB 1 ;AN000; | ||
| 161 | DW CONTROL_P1 ;AN000; | ||
| 162 | PAX_MAX_SW DB 0;AN000; | ||
| 163 | PAX_MAX_K1 DB 0;AN000; | ||
| 164 | |||
| 165 | ; The control blocks for the definition of positional parameters, switch and | ||
| 166 | ; keywords. | ||
| 167 | CONTROL_P1 EQU $ ;AN000; | ||
| 168 | CTL_FUNC_FL DW 2000H;AN000; | ||
| 169 | DW 0002H ;AN000; | ||
| 170 | DW RESULT_P1 ;AN000; | ||
| 171 | DW VALUE_LIST_P1 ;AN000; | ||
| 172 | DB 0 ;AN000; | ||
| 173 | |||
| 174 | VALUE_LIST_P1 EQU $;AN000; | ||
| 175 | VAL_NUM DB 1 ;AN000; Number of value definitions | ||
| 176 | DB 1 ;AN000; Number of range definitions | ||
| 177 | DB 8 ;AN000; Return value if parameter is in this range | ||
| 178 | DD 0 ;AN000; | ||
| 179 | DD 255 ;AN000; | ||
| 180 | DB 0 ;AN000; Number of actual value definitions | ||
| 181 | NUM_STRINGS DB 2 ;AN000; Number of string definitions | ||
| 182 | DB 1 ;AN000; Value to be returned if this string is matched | ||
| 183 | DW OFFSET KEYWORD_PARALLEL;AN000; | ||
| 184 | DB 2 ;AN000; Value to be returned if this string is matched | ||
| 185 | DW OFFSET KEYWORD_SERIAL;AN000; | ||
| 186 | |||
| 187 | DB 3 ;AN000; Value to be returned if this string is matched | ||
| 188 | DW OFFSET KEYWORD_MODE;AN000; | ||
| 189 | DB 4 ;AN000; Value to be returned if this string is matched | ||
| 190 | DW OFFSET KEYWORD_CODE_DRIVER;AN000; | ||
| 191 | DB 5 ;AN000; Value to be returned if this string is matched | ||
| 192 | DW OFFSET KEYWORD_CODE_PREPARE;AN000; | ||
| 193 | DB 6 ;AN000; Value to be returned if this string is matched | ||
| 194 | DW OFFSET KEYWORD_GRAPHICS;AN000; | ||
| 195 | |||
| 196 | KEYWORD_PARALLEL DB 'P',0;AN000; | ||
| 197 | KEYWORD_SERIAL DB 'S',0;AN000; | ||
| 198 | KEYWORD_MODE DB 'SP',0;AN000; | ||
| 199 | KEYWORD_CODE_DRIVER DB 'CDP',0;AN000; | ||
| 200 | KEYWORD_CODE_PREPARE DB 'CPP',0;AN000; | ||
| 201 | KEYWORD_GRAPHICS DB 'GP',0;AN000; | ||
| 202 | |||
| 203 | RESULT_P1 LABEL BYTE;AN000; | ||
| 204 | DB 0 ;AN000; Type of operand returned | ||
| 205 | MATCHED_TAG DB 0 ;AN000; Matched item tag | ||
| 206 | SYNONYM_PTR DW 0 ;AN000; Offset of synonym returned | ||
| 207 | RESULT_FIELD DB 0,0,0,0 ;AN000; Unsure what this is... | ||
| 208 | |||
| 209 | |||
| 210 | ;AD000;JW ;*************************************************************************** | ||
| 211 | ;AD000;JW ; Parser control blocks for parsing the mode parameters | ||
| 212 | ;AD000;JW ;*************************************************************************** | ||
| 213 | ;AD000;JW MODE_PARMS LABEL BYTE | ||
| 214 | ;AD000;JW DW MODE_PARMSX | ||
| 215 | ;AD000;JW DB 0 | ||
| 216 | ;AD000;JW | ||
| 217 | ;AD000;JW MODE_PARMSX LABEL BYTE | ||
| 218 | ;AD000;JW DB 0,0 | ||
| 219 | ;AD000;JW DB 0 | ||
| 220 | ;AD000;JW DB 1 | ||
| 221 | ;AD000;JW DW OFFSET CNTL_BAUD | ||
| 222 | ;AD000;JW | ||
| 223 | ;AD000;JW CNTL_BAUD LABEL BYTE | ||
| 224 | ;AD000;JW DW SIMPLE_STRING | ||
| 225 | ;AD000;JW DW 2 | ||
| 226 | ;AD000;JW DW RESULT_P1 | ||
| 227 | ;AD000;JW DW MODE_VALUES | ||
| 228 | ;AD000;JW DB 5 | ||
| 229 | ;AD000;JW SYN_BAUD DB 'BAUD',0 | ||
| 230 | ;AD000;JW SYN_PARITY DB 'PARITY',0 | ||
| 231 | ;AD000;JW SYN_DATA DB 'DATA',0 | ||
| 232 | ;AD000;JW SYN_STOP DB 'STOP',0 | ||
| 233 | ;AD000;JW SYN_RETRY DB 'RETRY',0 | ||
| 234 | ;AD000;JW | ||
| 235 | ;AD000;JW MODE_VALUES LABEL BYTE | ||
| 236 | ;AD000;JW DB 0 | ||
| 237 | |||
| 238 | |||
| 239 | ;*************************************************************************** | ||
| 240 | ; Parser control blocks for parsing the AUTOEXEC.BAT file for 'SELECT' | ||
| 241 | ;*************************************************************************** | ||
| 242 | SELECT_PARMX LABEL BYTE ;AN000; | ||
| 243 | DB 1,1 ;AN000; | ||
| 244 | DW SELECT_CONTROL ;AN000; | ||
| 245 | DB 0 ;AN000; | ||
| 246 | DB 0 ;AN000; | ||
| 247 | |||
| 248 | SELECT_CONTROL LABEL BYTE;AN000; | ||
| 249 | DW 2000H ;AN000; | ||
| 250 | DW 2 ;AN000; | ||
| 251 | DW RESULT_P1 ;AN000; | ||
| 252 | DW SELECT_VALUE ;AN000; | ||
| 253 | DB 0 ;AN000; | ||
| 254 | |||
| 255 | SELECT_VALUE LABEL BYTE ;AN000; | ||
| 256 | DB 3 ;AN000; | ||
| 257 | DB 0 ;AN000; | ||
| 258 | DB 0 ;AN000; | ||
| 259 | DB 1 ;AN000; | ||
| 260 | DB 1 ;AN000; | ||
| 261 | DW OFFSET SELECT_STR;AN000; | ||
| 262 | |||
| 263 | SELECT_STR DB 'SELECT',0;AN000; | ||
| 264 | ALLOC_FLAG DB 0 | ||
| 265 | ALLOCATED EQU 80H | ||
| 266 | |||
| 267 | |||
| 268 | DATA ENDS ;AN000; | ||
| 269 | |||
| 270 | CODE_FAR SEGMENT BYTE PUBLIC 'CODE';AN000; | ||
| 271 | |||
| 272 | ASSUME CS:CODE_FAR, DS:DATA, ES:DATA;AN000; | ||
| 273 | |||
| 274 | ;*************************************************************************** | ||
| 275 | ; Routines for extracting the printer names from the file data and storing | ||
| 276 | ; them in a table located in high memory. In addition to the name, the | ||
| 277 | ; type of printer, whether Parallel or Serial and the location in the file | ||
| 278 | ; of this printer name is also saved in the table. | ||
| 279 | ;*************************************************************************** | ||
| 280 | |||
| 281 | ;****************************************************************************** | ||
| 282 | ; | ||
| 283 | ; Routine: GET_PRINTER_TITLES_ROUTINE - Reads the names of all the printers | ||
| 284 | ; and their location in the file into a data | ||
| 285 | ; buffer in high memory. | ||
| 286 | ; | ||
| 287 | ; Input: | ||
| 288 | ; DI - The offset of name of the file which contains the printer definitions | ||
| 289 | ; in ASCII-N format. | ||
| 290 | ; | ||
| 291 | ; Output: | ||
| 292 | ; If CY = 1: Indicates that an error has occured. | ||
| 293 | ; BX - The error code for the error which this subroutine detected. | ||
| 294 | ; AX - The error code which was returned if the error was as a result | ||
| 295 | ; of a DOS call. | ||
| 296 | ; If CY = 0: No error has occured. | ||
| 297 | ; AX, BX - Undefined. | ||
| 298 | ; | ||
| 299 | ;****************************************************************************** | ||
| 300 | GET_PRINTER_TITLES_ROUTINE PROC FAR ;AN000; | ||
| 301 | ; | ||
| 302 | CALL HOOK_INT_24 ;AN000; | ||
| 303 | ;; int 3 | ||
| 304 | ;; nop | ||
| 305 | |||
| 306 | PUSH ES ;AN000; | ||
| 307 | ;********************************************************************** | ||
| 308 | ; Allocate the necessary memory for the buffer. A maximum of 64K is | ||
| 309 | ; allocated. | ||
| 310 | ;********************************************************************** | ||
| 311 | CALL ALLOCATE_MEMORY ;AN000; Allocate the memory for the printer data | ||
| 312 | .IF < C > ;AN000; Was there an error? | ||
| 313 | JMP EXIT_WITH_ERROR ;AN000; If so, exit the subroutine | ||
| 314 | .ENDIF ;AN000; | ||
| 315 | ;********************************************************************** | ||
| 316 | ; See if there is enough memory to continue. | ||
| 317 | ;********************************************************************** | ||
| 318 | .IF < SEGMENT_SIZE B MINIMUM_MEMORY> ;AN000; Is there enough memory? | ||
| 319 | MOV BX, ERR_NOT_ENOUGH_MEM ;AN000; No! Return error code. | ||
| 320 | JMP EXIT_WITH_ERROR ;AN000; Exit the subroutine | ||
| 321 | .ENDIF ;AN000; | ||
| 322 | ;********************************************************************** | ||
| 323 | ; Set the pointer for the file data buffer and save the size of this buffer. | ||
| 324 | ;********************************************************************** | ||
| 325 | MOV BUFFER_START, NAMES_TABLE_SIZE ;AN000; Starting address of the file data buffer | ||
| 326 | MOV BX, SEGMENT_SIZE ;AN000; Total amount of memory available | ||
| 327 | SUB BX, NAMES_TABLE_SIZE ;AN000; Calculate the size of the file data buffer | ||
| 328 | MOV BUFFER_SIZE, BX ;AN000; Save this size. | ||
| 329 | MOV NAMES_OFF, 0 ;AN000; Offset of the printer names table | ||
| 330 | ;********************************************************************** | ||
| 331 | ; Open the printer definition file. | ||
| 332 | ;********************************************************************** | ||
| 333 | MOV INT_24_ERROR, 0 ;AN000; | ||
| 334 | CALL POS_ZERO ;AN000; Turn the ASCII-N string into an ASCII-Z string | ||
| 335 | MOV DX, DI ;AN000; Get address of the ASCII-N string | ||
| 336 | ADD DX, 2 ;AN000; Address of the filename | ||
| 337 | MOV AX, 3D00H ;AN000; Open file for reading. | ||
| 338 | DOSCALL ;AN000; | ||
| 339 | .IF < C > ;AN000; Was there an error opening the file? | ||
| 340 | MOV BX, ERR_OPENING_FILE ;AN000; Yes! Return this error code | ||
| 341 | JMP EXIT_WITH_ERROR ;AN000; | ||
| 342 | .ENDIF ;AN000; | ||
| 343 | MOV FILE_HANDLE, AX ;AN000; Save the handle for the file | ||
| 344 | ;********************************************************************** | ||
| 345 | ; Initialize the variable which holds the file pointer at the beginning | ||
| 346 | ; of the buffer. | ||
| 347 | ;********************************************************************** | ||
| 348 | MOV WORD PTR FILE_PTR_AT_START, 0 ;AN000; Zero the low word | ||
| 349 | MOV WORD PTR FILE_PTR_AT_START+2, 0 ;AN000; Zero the high word | ||
| 350 | AND READ_FLAG, RESET_EOF ;AN000; Indicate we are not at EOF | ||
| 351 | ;********************************************************************** | ||
| 352 | ; Read data into the file buffer. | ||
| 353 | ;********************************************************************** | ||
| 354 | MOV DI, BUFFER_START ;AN000; Start reading at this offset | ||
| 355 | SUB DI, NAMES_TABLE_SIZE ;AN000; Make into an offset in the buffer instead of the segment | ||
| 356 | CALL READ_FROM_HERE ;AN000; Read in the data. | ||
| 357 | .IF < C > ;AN000; Was there an error reading from the file? | ||
| 358 | MOV BX, ERR_READING_FILE ;AN000; Return this error code | ||
| 359 | JMP EXIT_WITH_ERROR ;AN000; Return from this subroutine | ||
| 360 | .ENDIF ;AN000; | ||
| 361 | ;********************************************************************** | ||
| 362 | ; Initialize the variables needed for the parsing. | ||
| 363 | ;********************************************************************** | ||
| 364 | MOV CURRENT_PARSE_LOC, NAMES_TABLE_SIZE ;AN000; Start parsing from the beginning. | ||
| 365 | MOV CX_ORDINAL_VALUE, 0 ;AN000; The first parse, CX must be zero. | ||
| 366 | MOV N_PRN_NAMES, 0 ;AN000; There are not names in the table now | ||
| 367 | AND PARSE_FLAG, RESET_LINE_DONE ;AN000; The current line has NOT been parsed | ||
| 368 | OR PARSE_FLAG, FIRST_PARSE ;AN000; Indicate that this is the first parse | ||
| 369 | ;********************************************************************** | ||
| 370 | ; Setup the control blocks for the parser | ||
| 371 | ;********************************************************************** | ||
| 372 | MOV PAR_EXTEN, OFFSET PARMSX ;AN000; Load the address of the parse extention block | ||
| 373 | ;********************************************************************** | ||
| 374 | ; Parse the data. If this is the first parse, then look for the number | ||
| 375 | ; of printer definitions. If it is not, then look for the parameters | ||
| 376 | ; P and S which preface the printer names. | ||
| 377 | ;********************************************************************** | ||
| 378 | MOV VAL_NUM, RANGE_ONLY ;AN000; Parse for a range of values only | ||
| 379 | MOV CTL_FUNC_FL, NUMERIC_VALUE ;AN000; Indicate we are looking for numbers | ||
| 380 | MOV NUM_STRINGS, 2 ;AN000; The number of parameters to look for | ||
| 381 | ;********************************************************************** | ||
| 382 | ; See if there is a complete line in the remainder of the buffer. If there | ||
| 383 | ; is not, then read more data into the buffer starting with the start of | ||
| 384 | ; the current line. | ||
| 385 | ;********************************************************************** | ||
| 386 | PARSE_NEXT_LINE: ;AN000; | ||
| 387 | CALL SEARCH_LINE ;AN000; Search for the first parameter on the line | ||
| 388 | .IF < C > ;AN000; Was there an error? | ||
| 389 | JMP EXIT_WITH_ERROR ;AN000; Yes! Exit the routine | ||
| 390 | .ENDIF ;AN000; | ||
| 391 | .IF < BIT PARSE_FLAG AND FIRST_PARSE > ;AN000; Looking for a value or a string? | ||
| 392 | .IF < AX NE 0 > ;AN000; Was there an error? | ||
| 393 | MOV BX, ERR_FINDING_VALUE ;AN000; Yes! Return with this error code | ||
| 394 | JMP EXIT_WITH_ERROR ;AN000; | ||
| 395 | .ENDIF ;AN000; | ||
| 396 | MOV AL, RESULT_FIELD ;AN000; Get the low order byte of the value | ||
| 397 | MOV NUM_PRINTER_DEFS, AL ;AN000; Store the number of definitions | ||
| 398 | AND PARSE_FLAG, RESET_FIRST_PARSE ;AN000; Indicate the first parse is finished | ||
| 399 | MOV VAL_NUM, RANGE_AND_STRING ;AN000; Specify strings and ranges | ||
| 400 | MOV CTL_FUNC_FL, SIMPLE_STRING ;AN000; Look for specific strings only. | ||
| 401 | .ENDIF ;AN000; | ||
| 402 | ;********************************************************************** | ||
| 403 | ; See if we found a printer name | ||
| 404 | ;********************************************************************** | ||
| 405 | .IF < AX EQ 0 > ;AN000; Was an error found parsing the buffer | ||
| 406 | .IF < N_PRN_NAMES AE MAX_NUM_PRINTER_DEFS > ;AN000; Are there more the 255 printer defs? | ||
| 407 | MOV BX, ERR_TOO_MANY_DEFS ;AN000; If so, return this error. | ||
| 408 | JMP EXIT_WITH_ERROR ;AN000; Terminate the subroutine. | ||
| 409 | .ENDIF ;AN000; | ||
| 410 | ; DX contains the address of the result block | ||
| 411 | CALL COPY_PRINTER_NAME ;AN000; Copy the name to the table | ||
| 412 | .IF < C > ;AN000; Was there an error? | ||
| 413 | MOV BX, ERR_FINDING_NAME ;AN000; Yes! Return this error code | ||
| 414 | JMP EXIT_WITH_ERROR ;AN000; | ||
| 415 | .ENDIF ;AN000; | ||
| 416 | .ENDIF ;AN000; | ||
| 417 | ;********************************************************************** | ||
| 418 | ; Start scanning the next line. | ||
| 419 | ;********************************************************************** | ||
| 420 | MOV DI, START_NEXT_LINE ;AN000; Get the address of the next line to parse | ||
| 421 | MOV CURRENT_PARSE_LOC, DI ;AN000; Save it | ||
| 422 | .IF < CURRENT_PARSE_LOC EQ 0 > ;AN000; Is there more data? | ||
| 423 | JMP EXIT_WITHOUT_ERROR ;AN000; No! Exit the routine | ||
| 424 | .ENDIF ;AN000; | ||
| 425 | JMP PARSE_NEXT_LINE ;AN000; Start processing this line | ||
| 426 | ; | ||
| 427 | EXIT_WITH_ERROR: ;AN000; | ||
| 428 | STC ;AN000; Set the carry flag, indicating error. | ||
| 429 | JMP EXIT_ROUTINE ;AN000; | ||
| 430 | EXIT_WITHOUT_ERROR: ;AN000; | ||
| 431 | MOV CX, N_PRN_NAMES ;AN000; The number of entries in the table | ||
| 432 | .IF < CL NE NUM_PRINTER_DEFS > ;AN000; Did the number of definitions agree with the expected number? | ||
| 433 | MOV BX, ERR_NUMBER_MATCH ;AN000; Return this error message | ||
| 434 | JMP EXIT_WITH_ERROR ;AN000; Return, setting the carry flag. | ||
| 435 | .ENDIF ;AN000; | ||
| 436 | CLC ;AN000; Clear the carry flag - No error. | ||
| 437 | EXIT_ROUTINE: ;AN000; | ||
| 438 | CALL DEALLOCATE_MEMORY | ||
| 439 | POP ES ;AN000; | ||
| 440 | CALL RESTORE_INT_24;AN000; | ||
| 441 | RET ;AN000; | ||
| 442 | ; | ||
| 443 | GET_PRINTER_TITLES_ROUTINE ENDP ;AN000; | ||
| 444 | ;******************************************************************************** | ||
| 445 | ; | ||
| 446 | ;SEARCH_LINE: Search for the first parameter on a line. | ||
| 447 | ; | ||
| 448 | ;INPUT: | ||
| 449 | ; None. | ||
| 450 | ; | ||
| 451 | ;OUTPUT: | ||
| 452 | ; AX - Contains the return codes from the parser | ||
| 453 | ; If CY = 1: There was an error - BX contains an error code | ||
| 454 | ; if CY = 0: There were NO errors. | ||
| 455 | ; All the registers are set from the parser return. | ||
| 456 | ; | ||
| 457 | ;OPERATION: | ||
| 458 | ; | ||
| 459 | ;******************************************************************************** | ||
| 460 | SEARCH_LINE PROC NEAR ;AN000; | ||
| 461 | |||
| 462 | MOV DI, CURRENT_PARSE_LOC ;AN000; Get the current location in the buffer | ||
| 463 | CALL SCAN_FOR_EOLN ;AN000; Search for the end of the line | ||
| 464 | MOV START_NEXT_LINE, DI ;AN000; Save the start address of the next line | ||
| 465 | .IF < C > ;AN000; Was the END OF LINE found? | ||
| 466 | .IF <BIT READ_FLAG AND AT_EOF> ;AN000; Are we at the end of the file? | ||
| 467 | MOV START_NEXT_LINE, 0 ;AN000; Yes! Indicate that this is the last line | ||
| 468 | .ELSE ;AN000; We are not the the end of the file | ||
| 469 | MOV DI, CURRENT_PARSE_LOC ;AN000; The location to read from in the file | ||
| 470 | SUB DI, NAMES_TABLE_SIZE ;AN000; Make into an offset in the buffer instead of the segment | ||
| 471 | CALL READ_FROM_HERE ;AN000; Read in more data | ||
| 472 | .IF < C > ;AN000; Was there an error reading from the file? | ||
| 473 | MOV BX, ERR_READING_FILE ;AN000; Return this error code | ||
| 474 | JMP EXIT_SEARCH_ERROR ;AN000; Return from this subroutine | ||
| 475 | .ENDIF ;AN000; | ||
| 476 | MOV CURRENT_PARSE_LOC, NAMES_TABLE_SIZE ;AN000; Start back at the beginning of the buffer | ||
| 477 | MOV DI, CURRENT_PARSE_LOC ;AN000; Get the current parse location again. | ||
| 478 | CALL SCAN_FOR_EOLN ;AN000; Once again look for the end of the line | ||
| 479 | MOV START_NEXT_LINE, DI ;AN000; Save the start address of the nest line | ||
| 480 | .IF < C > ;AN000; Was it found? | ||
| 481 | MOV BX, ERR_LINE_TOO_LONG ;AN000; No! Indicate an error. | ||
| 482 | JMP EXIT_SEARCH_ERROR ;AN000; Return with this error | ||
| 483 | .ENDIF ;AN000; | ||
| 484 | .ENDIF ;AN000; | ||
| 485 | .ENDIF ;AN000; | ||
| 486 | ;********************************************************************** | ||
| 487 | ; Set up the input parameters for the parse subroutine | ||
| 488 | ;********************************************************************** | ||
| 489 | MOV DI, OFFSET PARMS ;AN000; Offset into ES of the PARMS control block | ||
| 490 | MOV SI, CURRENT_PARSE_LOC ;AN000; Where to start parsing | ||
| 491 | MOV DX, 0 ;AN000; | ||
| 492 | MOV CX, CX_ORDINAL_VALUE ;AN000; The value returned by the parse last time. | ||
| 493 | PUSH DS ;AN000; Save the current data segment | ||
| 494 | PUSH ES ;AN000; Save the file data segment | ||
| 495 | MOV AX, DATA ;AN000; Get the current data segment | ||
| 496 | MOV ES, AX ;AN000; This is the parser control blocks. | ||
| 497 | MOV AX, SEG_LOC ;AN000; Where the data to parse is located | ||
| 498 | MOV DS, AX ;AN000; | ||
| 499 | CALL SYSPARSE ;AN000; Do the parsing | ||
| 500 | POP ES ;AN000; Restore the file data segment | ||
| 501 | POP DS ;AN000; Restore the data segment | ||
| 502 | CLC ;AN000; Indicate there were no errors | ||
| 503 | RET ;AN000; | ||
| 504 | EXIT_SEARCH_ERROR: ;AN000; Here if there were errors | ||
| 505 | STC ;AN000; Indicate so to the calling program | ||
| 506 | RET ;AN000; | ||
| 507 | |||
| 508 | SEARCH_LINE ENDP;AN000; | ||
| 509 | ;******************************************************************************** | ||
| 510 | ; ALLOCATE_MEMORY: Allocate a maximum of 64K of memory. | ||
| 511 | ; | ||
| 512 | ; INPUT: | ||
| 513 | ; None. | ||
| 514 | ; | ||
| 515 | ; OUTPUT: | ||
| 516 | ; SEGMENT_SIZE = The size of the segment allocated. | ||
| 517 | ; SEG_LOC = The location of the segment allocated. | ||
| 518 | ; If CY = 1: There was an error - BX contains an error code | ||
| 519 | ; If CY = 0: There was NO errors. | ||
| 520 | ; | ||
| 521 | ; Operation: | ||
| 522 | ; | ||
| 523 | ;******************************************************************************** | ||
| 524 | ALLOCATE_MEMORY PROC NEAR;AN000; | ||
| 525 | |||
| 526 | AND ALLOC_FLAG,NOT ALLOCATED | ||
| 527 | MOV BX, 0FFFH ;AN000; Try to allocate this amount of memory | ||
| 528 | MOV SEGMENT_SIZE, BX ;AN000; Save the amount of memory asked for | ||
| 529 | MOV AH, 48H ;AN000; DOS Fn. for allocating memory | ||
| 530 | DOSCALL ;AN000; Allocate the memory | ||
| 531 | .IF < C > ;AN000; Was there an error? | ||
| 532 | MOV SEGMENT_SIZE, BX ;AN000; Save the size asked for in this request | ||
| 533 | MOV AH, 48H ;AN000; DOS Fn. for allocating memory | ||
| 534 | DOSCALL ;AN000; Allocate the memory | ||
| 535 | .ENDIF ;AN000; | ||
| 536 | .IF < C > ;AN000; Was there an error allocating the memory? | ||
| 537 | MOV BX, ERR_ALLOCATING_MEM ;AN000; Yes! Return an error code | ||
| 538 | STC ;AN000; Indicate that there was an error | ||
| 539 | .ELSE ;AN000; Otherwise... | ||
| 540 | MOV SEG_LOC, AX ;AN000; Save the location of the memory block allocated | ||
| 541 | MOV ES, AX ;AN000; Save in the extra segment | ||
| 542 | MOV CL, 4 ;AN000; Multiply the number of paragraphs by 16 | ||
| 543 | SHL SEGMENT_SIZE, CL ;AN000; to get the number of bytes. | ||
| 544 | OR ALLOC_FLAG,ALLOCATED | ||
| 545 | CLC ;AN000; Indicate there was no error | ||
| 546 | .ENDIF ;AN000; | ||
| 547 | RET ;AN000; | ||
| 548 | |||
| 549 | ALLOCATE_MEMORY ENDP;AN000; | ||
| 550 | |||
| 551 | |||
| 552 | ;******************************************************************************** | ||
| 553 | ; DEALLOCATE_MEMORY: deallocate memory. | ||
| 554 | ; | ||
| 555 | ; INPUT: | ||
| 556 | ; SEG_LOC previously allocated segment | ||
| 557 | ; | ||
| 558 | ; OUTPUT: | ||
| 559 | ; None. | ||
| 560 | ; | ||
| 561 | ;******************************************************************************** | ||
| 562 | DEALLOCATE_MEMORY PROC NEAR | ||
| 563 | |||
| 564 | TEST ALLOC_FLAG,ALLOCATED | ||
| 565 | JZ DEM10 | ||
| 566 | |||
| 567 | PUSH ES | ||
| 568 | MOV AX,SEG_LOC | ||
| 569 | MOV ES,AX | ||
| 570 | MOV AH,49H | ||
| 571 | INT 21H | ||
| 572 | POP ES | ||
| 573 | DEM10: | ||
| 574 | RET | ||
| 575 | DEALLOCATE_MEMORY ENDP | ||
| 576 | |||
| 577 | ;******************************************************************************* | ||
| 578 | ; | ||
| 579 | ; Routine: SCAN_FOR_EOLN - Scan the given string, for CR and LF. | ||
| 580 | ; | ||
| 581 | ; Input: | ||
| 582 | ; DI - Address of the string to scan for the eoln. | ||
| 583 | ; | ||
| 584 | ; Output: | ||
| 585 | ; If CY = 0: The end of the line was found. | ||
| 586 | ; DI - Contains the address of the start of the next line in the buffer. | ||
| 587 | ; - If DI = 0, the data ends just after either the CR, LF or the | ||
| 588 | ; CR and LF. Therefore, more data must be read before the next line | ||
| 589 | ; can be parsed. | ||
| 590 | ; | ||
| 591 | ; If CY = 1: The end of the line was not found. | ||
| 592 | ; | ||
| 593 | ;******************************************************************************* | ||
| 594 | SCAN_FOR_EOLN PROC NEAR;AN000; | ||
| 595 | |||
| 596 | MOV CX, BUFFER_START ;AN000; The offset in the segment of the buffer | ||
| 597 | ADD CX, AMOUNT_OF_DATA ;AN000; Get the offset of the end of the data | ||
| 598 | SUB CX, DI ;AN000; Subtract the file data pointer | ||
| 599 | ; CX - Contains the amount of data after pointer | ||
| 600 | MOV AL, 0 ;AN000; Flag to indicate CR-LF has not been found yet | ||
| 601 | .WHILE < CX A 0 > ;AN000; Search until the end of the data | ||
| 602 | .IF < <BYTE PTR ES:[DI]> EQ E_FILE_TERM >;AN000; | ||
| 603 | .IF < ZERO AL > ;AN000; | ||
| 604 | MOV END_CUR_LINE, DI ;AN000; Save this location in the string | ||
| 605 | DEC END_CUR_LINE ;AN000; Point to the real end of the line | ||
| 606 | .ENDIF ;AN000; | ||
| 607 | STC ;AN000; | ||
| 608 | MOV DI, 0 ;AN000; | ||
| 609 | JMP EXIT_SCAN ;AN000; | ||
| 610 | .ENDIF ;AN000; | ||
| 611 | .IF < <BYTE PTR ES:[DI]> EQ E_LF > OR ;AN000; Is this character a CR or a LF? | ||
| 612 | .IF < <BYTE PTR ES:[DI]> EQ E_CR > ;AN000; | ||
| 613 | .IF < ZERO AL > ;AN000; Has a CR or a LF already been found? | ||
| 614 | MOV END_CUR_LINE, DI ;AN000; Save this location in the string | ||
| 615 | DEC END_CUR_LINE ;AN000; Point to the real end of the line | ||
| 616 | .ENDIF ;AN000; | ||
| 617 | INC AL ;AN000; Indicate that a CR or a LF has been found | ||
| 618 | .ELSEIF < NONZERO AL > ;AN000; If we have passed the CR-LF, | ||
| 619 | CLC ;AN000; Indicate we have found EOLN | ||
| 620 | JMP EXIT_SCAN ;AN000; Leave the subroutine | ||
| 621 | .ENDIF ;AN000; | ||
| 622 | DEC CX ;AN000; One less character to the end | ||
| 623 | INC DI ;AN000; Point to the next character | ||
| 624 | .ENDWHILE ;AN000; | ||
| 625 | |||
| 626 | .IF < AL AE 2 > ;AN000; Does the data run out right after the CR-LF? | ||
| 627 | MOV DI, 0 ;AN000; Return 0 indicating so. | ||
| 628 | .ENDIF ;AN000; | ||
| 629 | STC ;AN000; Indicate that the whole line is not there | ||
| 630 | |||
| 631 | EXIT_SCAN: ;AN000; | ||
| 632 | RET ;AN000; | ||
| 633 | |||
| 634 | SCAN_FOR_EOLN ENDP;AN000; | ||
| 635 | ;******************************************************************************* | ||
| 636 | ; | ||
| 637 | ; Routine: COPY_PRINTER_NAME - Copy the name of the printer from the file | ||
| 638 | ; into the buffer holding all the names. | ||
| 639 | ; | ||
| 640 | ; Input: | ||
| 641 | ; SI - Contains the address of the start of the printer name. | ||
| 642 | ; DX - Contains the address of the parse result block | ||
| 643 | ; | ||
| 644 | ; Output: | ||
| 645 | ; CY = 1: An error has occured. The name of the printer has not been found. | ||
| 646 | ; CY = 0: No error. | ||
| 647 | ; | ||
| 648 | ; Operation: The name from the file buffer is copied to the printer name | ||
| 649 | ; table. Starting from the address passed in DI, the file buffer is | ||
| 650 | ; scanned until a valid character is found. Starting from this point | ||
| 651 | ; up to forty characters are transferred to the name table. If no | ||
| 652 | ; name is found, the carry flag is set, and nothing is recorded in the | ||
| 653 | ; name table. | ||
| 654 | ; After the name is copied, the remainder of the field in the table | ||
| 655 | ; is cleared. | ||
| 656 | ; | ||
| 657 | ;******************************************************************************* | ||
| 658 | COPY_PRINTER_NAME PROC NEAR;AN000; | ||
| 659 | |||
| 660 | PUSH DS ;AN000; | ||
| 661 | PUSH ES ;AN000; | ||
| 662 | PUSH DX ;AN000; Save the address of the result block | ||
| 663 | ;********************************************************************** | ||
| 664 | ; Calculate the offset into the file data table for this entry | ||
| 665 | ;********************************************************************** | ||
| 666 | MOV AX, N_PRN_NAMES ;AN000; The next free index into the names table | ||
| 667 | MOV BX, SIZE_NAMES ;AN000; Get the number of bytes per entry | ||
| 668 | MUL BX ;AN000; Multiply by the index into the table | ||
| 669 | MOV DI, AX ;AN000; Move the offset into an index register | ||
| 670 | ;********************************************************************** | ||
| 671 | ; Copy the type of printer first | ||
| 672 | ;********************************************************************** | ||
| 673 | POP BX ;AN000; Get the result block address | ||
| 674 | MOV AL, DS:[BX+1] ;AN000; Get the matched item tag | ||
| 675 | .IF < AL EQ 1 > ;AN000; Was the parameter a P? | ||
| 676 | MOV AL, 'P' ;AN000; Yes! | ||
| 677 | .ELSE ;AN000; | ||
| 678 | MOV AL, 'S' ;AN000; No! It was an S | ||
| 679 | .ENDIF ;AN000; | ||
| 680 | MOV ES:[DI+40], AL ;AN000; Store in the table | ||
| 681 | ;********************************************************************** | ||
| 682 | ; Skip the spaces between the printer type indicator and the printer name | ||
| 683 | ;********************************************************************** | ||
| 684 | MOV AL, 32 ;AN000; Character to skip - space | ||
| 685 | XCHG SI, DI ;AN000; Point DI to the line being scanned | ||
| 686 | MOV CX, END_CUR_LINE ;AN000; Get address of the last char in line | ||
| 687 | SUB CX, DI ;AN000; Subtract start | ||
| 688 | INC CX ;AN000; Get the length of the line | ||
| 689 | CLD ;AN000; Scan forward | ||
| 690 | REPZ SCASB ;AN000; Repeat search until character found | ||
| 691 | JZ NAME_NOT_FOUND ;AN000; If all spaces, then it is an error | ||
| 692 | INC CX ;AN000; Increment character count | ||
| 693 | DEC DI ;AN000; Decrement pointer to character | ||
| 694 | ;*********************************************************************** | ||
| 695 | ; Move the printer name to the names list | ||
| 696 | ;*********************************************************************** | ||
| 697 | XCHG SI, DI ;AN000; Exchange the pointers again | ||
| 698 | MOV CX, END_CUR_LINE ;AN000; Get the address of the last char | ||
| 699 | SUB CX, SI ;AN000; Subtract start | ||
| 700 | INC CX ;AN000; Get the length of the line | ||
| 701 | .IF < CX A E_MAX_PRN_NAME_LEN > ;AN000; Is the length of the line too long? | ||
| 702 | MOV CX, E_MAX_PRN_NAME_LEN ;AN000; Yes! Make the line length the maximum size | ||
| 703 | .ENDIF ;AN000; | ||
| 704 | MOV DX, CX ;AN000; Save the line length for later use | ||
| 705 | .WHILE < NONZERO CX > ;AN000; Do while there are more characters in the string | ||
| 706 | MOV AL, BYTE PTR ES:[SI] ;AN000; Get a character from the file data | ||
| 707 | .IF < AL NE 32 > ;AN000; Is this character a space? | ||
| 708 | MOV BX, DX ;AN000; Get the line length | ||
| 709 | SUB BX, CX ;AN000; Get the length of the line copied so far | ||
| 710 | INC BX ;AN000; | ||
| 711 | .IF < MAX_NAME B BX > ;AN000; Is this name longer than the longest so far? | ||
| 712 | MOV MAX_NAME, BX ;AN000; Yes! This is the new maximum | ||
| 713 | .ENDIF ;AN000; | ||
| 714 | .ENDIF ;AN000; | ||
| 715 | MOV BYTE PTR ES:[DI], AL ;AN000; Put the character in the names table | ||
| 716 | INC SI ;AN000; Increment string pointers | ||
| 717 | INC DI ;AN000; | ||
| 718 | DEC CX ;AN000; Decrement the number of characters left | ||
| 719 | .ENDWHILE ;AN000; | ||
| 720 | ;*********************************************************************** | ||
| 721 | ; Fill in the rest of the name area with spaces | ||
| 722 | ;*********************************************************************** | ||
| 723 | MOV CX, E_MAX_PRN_NAME_LEN ;AN000; The maximum line length | ||
| 724 | ; DX contains the line length from last section | ||
| 725 | SUB CX, DX ;AN000; Calculate the space left in the line | ||
| 726 | MOV AL, 32 ;AN000; Character to store | ||
| 727 | REP STOSB ;AN000; Store the blank characters | ||
| 728 | ;*********************************************************************** | ||
| 729 | ; Store the file pointer to this printer name in the name list | ||
| 730 | ;*********************************************************************** | ||
| 731 | INC DI ;AN000; Point DI passed the printer type indicator | ||
| 732 | MOV SI, CURRENT_PARSE_LOC ;AN000; Get the start of the current line | ||
| 733 | SUB SI, NAMES_TABLE_SIZE ;AN000; Subtract offset of the start of the buffer | ||
| 734 | MOV CX, WORD PTR FILE_PTR_AT_START ;AN000; Get the low order word of the pointer | ||
| 735 | MOV DX, WORD PTR FILE_PTR_AT_START[2] ;AN000; Get the high order word | ||
| 736 | ADD CX, SI ;AN000; Add the offset of the start of this line | ||
| 737 | ADC DX, 0 ;AN000; Add the high word | ||
| 738 | MOV WORD PTR ES:[DI], CX ;AN000; Store the low order word in the list | ||
| 739 | MOV WORD PTR ES:[DI+2], DX ;AN000; Store the high order word | ||
| 740 | INC N_PRN_NAMES ;AN000; Point to the next free area in the list | ||
| 741 | CLC ;AN000; | ||
| 742 | JMP EXIT_COPY ;AN000; | ||
| 743 | NAME_NOT_FOUND: ;AN000; | ||
| 744 | STC ;AN000; | ||
| 745 | EXIT_COPY: ;AN000; | ||
| 746 | POP ES ;AN000; | ||
| 747 | POP DS ;AN000; | ||
| 748 | RET ;AN000; | ||
| 749 | |||
| 750 | COPY_PRINTER_NAME ENDP ;AN000; | ||
| 751 | |||
| 752 | ;******************************************************************************* | ||
| 753 | ; Routine: READ_FROM_HERE - Read from the file into the buffer starting from | ||
| 754 | ; the file position pointed to by CURRENT_PARSE_LOC. | ||
| 755 | ; | ||
| 756 | ; Input: | ||
| 757 | ; DI - Contains the current parsing location in the buffer. | ||
| 758 | ; | ||
| 759 | ; Output: | ||
| 760 | ; FILE_PTR_AT_START - Updated for the new data read. | ||
| 761 | ; | ||
| 762 | ; Operation: | ||
| 763 | ; | ||
| 764 | ;******************************************************************************* | ||
| 765 | READ_FROM_HERE PROC NEAR;AN000; | ||
| 766 | ; | ||
| 767 | ;********************************************************************** | ||
| 768 | ; Update the R/W pointer in the file. | ||
| 769 | ;********************************************************************** | ||
| 770 | MOV DX, WORD PTR FILE_PTR_AT_START ;AN000; Get the low order word of the pointer | ||
| 771 | MOV CX, WORD PTR FILE_PTR_AT_START[2] ;AN000; Get the high order word of the pointer | ||
| 772 | ADD DX, DI ;AN000; Add the offset of where to start reading | ||
| 773 | ADC CX, 0 ;AN000; Take care of the carry condition | ||
| 774 | MOV WORD PTR FILE_PTR_AT_START, DX ;AN000; Store the new starting position | ||
| 775 | MOV WORD PTR FILE_PTR_AT_START[2], CX ;AN000; Store the high word of pointer | ||
| 776 | MOV INT_24_ERROR, 0 ;AN000; | ||
| 777 | MOV AX, 4200H ;AN000; DOS Function for moving the file pointer | ||
| 778 | MOV BX, FILE_HANDLE ;AN000; Load the file handle | ||
| 779 | DOSCALL ;AN000; Move the file pointer | ||
| 780 | .IF < C > ;AN000; Was an error encountered? | ||
| 781 | JMP RETURN_WITH_ERROR ;AN000; Yes! Exit the subroutine. | ||
| 782 | .ENDIF ;AN000; | ||
| 783 | ;********************************************************************** | ||
| 784 | ; Read from the file into the data buffer | ||
| 785 | ;********************************************************************** | ||
| 786 | MOV CX, BUFFER_SIZE ;AN000; Number of bytes to read. As many as will fit. | ||
| 787 | MOV BX, FILE_HANDLE ;AN000; Load the DOS file handle for this file | ||
| 788 | MOV AH, 03FH ;AN000; The DOS function to perform | ||
| 789 | MOV DX, BUFFER_START ;AN000; The offset of the file data buffer | ||
| 790 | MOV INT_24_ERROR, 0 ;AN000; Indicate that no critical errors have occured yet | ||
| 791 | PUSH DS ;AN000; Save the current data segment | ||
| 792 | PUSH ES ;AN000; Push the file data buffer | ||
| 793 | POP DS ;AN000; DS now points to the file data buffer | ||
| 794 | DOSCALL ;AN000; Read from the file. | ||
| 795 | POP DS ;AN000; Restore the original data segment | ||
| 796 | ;********************************************************************** | ||
| 797 | ; See if the buffer was filled. | ||
| 798 | ;********************************************************************** | ||
| 799 | MOV AMOUNT_OF_DATA, AX ;AN000; Save the amount of data that was read. | ||
| 800 | .IF < AX B BUFFER_SIZE > ;AN000; Were less bytes read then we asked for? | ||
| 801 | OR READ_FLAG, AT_EOF ;AN000; Yes! Indicate that we are at EOF | ||
| 802 | ; MOV DI, AX ; Move number of characters into an index pointer | ||
| 803 | ; MOV BYTE PTR ES:[DI+NAMES_TABLE_SIZE], 00 ; Place a terminator at the end | ||
| 804 | .ENDIF ;AN000; | ||
| 805 | CLC ;AN000; | ||
| 806 | RET ;AN000; | ||
| 807 | |||
| 808 | RETURN_WITH_ERROR: ;AN000; | ||
| 809 | STC ;AN000; | ||
| 810 | RET ;AN000; | ||
| 811 | |||
| 812 | READ_FROM_HERE ENDP ;AN000; | ||
| 813 | |||
| 814 | ;******************************************************************************** | ||
| 815 | ; Routines for extracting all the information supplied in the profile for a | ||
| 816 | ; specific printer. Given the printer number, the location of its definition | ||
| 817 | ; is looked up in the names table. The file is them parsed for the information. | ||
| 818 | ;******************************************************************************** | ||
| 819 | |||
| 820 | ;****************************************************************************** | ||
| 821 | ; GET_PRINTER_INFO_ROUTINE - Get all the information contained in the printer | ||
| 822 | ; profile file for the specified printer. | ||
| 823 | ; | ||
| 824 | ; INPUT: | ||
| 825 | ; AX - The number of the printer to return the information on. The number | ||
| 826 | ; is the index into the names table for this printer. | ||
| 827 | ; | ||
| 828 | ; OUTPUT: | ||
| 829 | ; If CY = 0, there were no errors. | ||
| 830 | ; The following variable are updated with the information found in | ||
| 831 | ; the file: | ||
| 832 | ; I_PRINTER | ||
| 833 | ; N_PRINTER_TYPE | ||
| 834 | ; S_MODE_PARM | ||
| 835 | ; S_CP_DRIVER | ||
| 836 | ; S_CP_PREPARE | ||
| 837 | ; S_GRAPH_PARM | ||
| 838 | ; | ||
| 839 | ; If CY = 1, There were errors encountered. | ||
| 840 | ; BX = An error code indicating the type of error that occured. | ||
| 841 | ; | ||
| 842 | ; = 3 There was an error reading the file | ||
| 843 | ; = 7 There was a error accessing the file | ||
| 844 | ; = 11 A printer definition has either a CDP or a CPP | ||
| 845 | ; Prefix, but BOTH were not present. | ||
| 846 | ; = 12 There was an error in the printer definition. | ||
| 847 | ; - A line was found with an invalid prefix | ||
| 848 | ; | ||
| 849 | ; If the error was a result of a DOS function, then | ||
| 850 | ; on return, AX will contain the DOS error code. | ||
| 851 | ; | ||
| 852 | ; Operation: | ||
| 853 | ; | ||
| 854 | ; Note: | ||
| 855 | ; The first printer name has an index of 1. | ||
| 856 | ; | ||
| 857 | ;****************************************************************************** | ||
| 858 | GET_PRINTER_INFO_ROUTINE PROC FAR;AN000; | ||
| 859 | |||
| 860 | |||
| 861 | |||
| 862 | CALL HOOK_INT_24 ;AN000; | ||
| 863 | |||
| 864 | |||
| 865 | |||
| 866 | PUSH ES ;AN000; Save the extra segment register | ||
| 867 | ;********************************************************************** | ||
| 868 | ; Calculate the address of the specifed printer | ||
| 869 | ;********************************************************************** | ||
| 870 | MOV I_PRINTER, AX ;AN000; Save the printer index | ||
| 871 | DEC AX ;AN000; Make the first index a 0 | ||
| 872 | MOV BX, SIZE_NAMES ;AN000; Number of bytes in each table entry | ||
| 873 | MUL BX ;AN000; Address is returned in AX | ||
| 874 | MOV DI, AX ;AN000; Move the address to an index register | ||
| 875 | ;********************************************************************** | ||
| 876 | ; Get the file location for this printer name | ||
| 877 | ;********************************************************************** | ||
| 878 | MOV AX, SEG_LOC ;AN000; Get the segment where the data is | ||
| 879 | MOV ES, AX ;AN000; Save in a segment register | ||
| 880 | MOV CX, WORD PTR ES:[DI+41] ;AN000; Get the low order word of the file location | ||
| 881 | MOV DX, WORD PTR ES:[DI+43] ;AN000; Get the high order word of the file location | ||
| 882 | ;********************************************************************** | ||
| 883 | ; Determine if the information is already in the buffer or do we have | ||
| 884 | ; to read more information from the printer profile. | ||
| 885 | ;********************************************************************** | ||
| 886 | .IF < DX B <WORD PTR FILE_PTR_AT_START+2>> ;AN000; Compare the high order words | ||
| 887 | JMP READ_MORE_INFORMATION ;AN000; Info in buffer is passed where we want. | ||
| 888 | .ELSE ;AN000; | ||
| 889 | .IF < DX EQ < WORD PTR FILE_PTR_AT_START+2>> AND ;AN000; High words equal so | ||
| 890 | .IF < CX B <WORD PTR FILE_PTR_AT_START>> ;AN000; compare the low order words | ||
| 891 | JMP READ_MORE_INFORMATION ;AN000; Info in buffer is passed where we want. | ||
| 892 | .ENDIF ;AN000; | ||
| 893 | .ENDIF ;AN000; | ||
| 894 | MOV BX, WORD PTR FILE_PTR_AT_START+2 ;AN000; File location at beginning of buffer | ||
| 895 | MOV SI, WORD PTR FILE_PTR_AT_START ;AN000; Low order word | ||
| 896 | ADD SI, AMOUNT_OF_DATA ;AN000; Get the file pointer of the end of the buffer | ||
| 897 | ADC BX, 0 ;AN000; Add in the high word | ||
| 898 | .IF < DX A BX > ;AN000; If data we want is further in the file, | ||
| 899 | JMP READ_MORE_INFORMATION ;AN000; Read in more data | ||
| 900 | .ELSE ;AN000; | ||
| 901 | .IF < DX EQ BX > AND ;AN000; If the high words are equal do the | ||
| 902 | .IF < CX A SI > ;AN000; comparison on the low order words | ||
| 903 | JMP READ_MORE_INFORMATION ;AN000; Still not there, so read more info | ||
| 904 | .ENDIF ;AN000; | ||
| 905 | .ENDIF ;AN000; | ||
| 906 | MOV AX, I_PRINTER ;AN000; Get the index of this printer name | ||
| 907 | .IF < AL EQ NUM_PRINTER_DEFS > ;AN000; Is this the last one in the list? | ||
| 908 | .IF < BIT READ_FLAG AND AT_EOF > ;AN000; If it is, and all the data has been read, process it | ||
| 909 | JMP PARSE_HERE ;AN000; | ||
| 910 | .ELSE ;AN000; | ||
| 911 | JMP READ_MORE_INFORMATION ;AN000; Not EOF, so read in more data just for safety | ||
| 912 | .ENDIF ;AN000; | ||
| 913 | .ENDIF ;AN000; | ||
| 914 | MOV CX, WORD PTR ES:[DI+SIZE_NAMES+41] ;AN000; Get the pointer to the NEXT printer name | ||
| 915 | MOV DX, WORD PTR ES:[DI+SIZE_NAMES+43] ;AN000; Get the high order word | ||
| 916 | .IF < DX A BX > ;AN000; See if the next printer name is in the buffer | ||
| 917 | JMP READ_MORE_INFORMATION ;AN000; If not, get more information | ||
| 918 | .ELSE ;AN000; | ||
| 919 | .IF < DX EQ BX > AND ;AN000; If the high order words are equal, | ||
| 920 | .IF < CX A SI > ;AN000; Compare the low order. Is the name there? | ||
| 921 | JMP READ_MORE_INFORMATION ;AN000; If not, read more. | ||
| 922 | .ENDIF ;AN000; | ||
| 923 | .ENDIF ;AN000; | ||
| 924 | JMP PARSE_HERE ;AN000; The necessary info is there, so parse it. | ||
| 925 | ;********************************************************************** | ||
| 926 | ; The specified printer information is not currently in the buffer. It | ||
| 927 | ; is necessary to read it from the printer profile file. | ||
| 928 | ;********************************************************************** | ||
| 929 | READ_MORE_INFORMATION: ;AN000; | ||
| 930 | MOV CX, WORD PTR ES:[DI+43] ;AN000; Get the file pointer of this printer name | ||
| 931 | MOV DX, WORD PTR ES:[DI+41] ;AN000; Get the low order word of pointer | ||
| 932 | MOV INT_24_ERROR, 0 ;AN000; Indicate that no critical errors have occured yet | ||
| 933 | MOV AX, 4200H ;AN000; DOS Fn. for positioning file pointer | ||
| 934 | MOV BX, FILE_HANDLE ;AN000; Get the handle of the file | ||
| 935 | DOSCALL ;AN000; Position the pointer | ||
| 936 | .IF < C > ;AN000; If CY = 1, there was an error | ||
| 937 | MOV BX, ERR_ACCESSING_FILE ;AN000; Return this error code | ||
| 938 | JMP ERROR_EXIT ;AN000; Jump to exit routine | ||
| 939 | .ENDIF ;AN000; | ||
| 940 | MOV WORD PTR FILE_PTR_AT_START, AX ;AN000; Set the new pointer at the beginning of the buffer | ||
| 941 | MOV WORD PTR FILE_PTR_AT_START+2, DX ;AN000; Set the high order word | ||
| 942 | MOV AH, 3FH ;AN000; DOS Fn. for reading from a file | ||
| 943 | MOV DX, BUFFER_START ;AN000; Offset of the start of the data buffer | ||
| 944 | MOV BX, FILE_HANDLE ;AN000; Get the file handle | ||
| 945 | MOV CX, BUFFER_SIZE ;AN000; Read as many bytes as the buffer will hold | ||
| 946 | MOV INT_24_ERROR, 0 ;AN000; Indicate that no critical errors have occured yet | ||
| 947 | PUSH DS ;AN000; Save the current data segment | ||
| 948 | PUSH ES ;AN000; Push the segment of the data buffer | ||
| 949 | POP DS ;AN000; Load DS with the segment where to store the data | ||
| 950 | DOSCALL ;AN000; Read in the data | ||
| 951 | POP DS ;AN000; Restore the data segment | ||
| 952 | .IF < C > ;AN000; | ||
| 953 | MOV BX, ERR_READING_FILE;AN000; | ||
| 954 | JMP ERROR_EXIT;AN000; | ||
| 955 | .ENDIF ;AN000; | ||
| 956 | .IF < AX NE BUFFER_SIZE > ;AN000; Were less bytes read then asked for? | ||
| 957 | OR READ_FLAG, AT_EOF ;AN000; If so, then we are at the end of file | ||
| 958 | .ELSE ;AN000; Otherwise... | ||
| 959 | AND READ_FLAG, RESET_EOF ;AN000; We are not at end of file | ||
| 960 | .ENDIF ;AN000; | ||
| 961 | MOV AMOUNT_OF_DATA, AX ;AN000; Save the amount of data actually read | ||
| 962 | ;********************************************************************** | ||
| 963 | ; The printer data is in the data buffer. Begin to parse the data. | ||
| 964 | ;********************************************************************** | ||
| 965 | PARSE_HERE: ;AN000; | ||
| 966 | MOV CDP_FOUND, FALSE ;AN000; | ||
| 967 | MOV CPP_FOUND, FALSE ;AN000; | ||
| 968 | PUSH DI ;AN000; Save the pointer into the names table | ||
| 969 | ;********************************************************************** | ||
| 970 | ; Load the printer profile fields with defaults. | ||
| 971 | ;********************************************************************** | ||
| 972 | COPY_STRING S_MODE_PARM, 40, BLANK_STRING ;AC000;JW | ||
| 973 | COPY_STRING S_CP_DRIVER, 22, BLANK_STRING ;AN000; | ||
| 974 | COPY_STRING S_CP_PREPARE, 12, BLANK_STRING ;AN000; | ||
| 975 | COPY_STRING S_GRAPH_PARM, 20, BLANK_STRING ;AN000; | ||
| 976 | POP DI ;AN000; Restore the pointer into the names table | ||
| 977 | ;********************************************************************** | ||
| 978 | ; Get the type of printer. | ||
| 979 | ;********************************************************************** | ||
| 980 | MOV AL, ES:[DI+40] ;AN000; Get the printer type - Parallel or Serial from the table | ||
| 981 | MOV N_PRINTER_TYPE, AL ;AN000; Save in the appropriate variable | ||
| 982 | ;********************************************************************** | ||
| 983 | ; Get the offset of the start of this printer definition | ||
| 984 | ;********************************************************************** | ||
| 985 | MOV CX, ES:[DI+41] ;AN000; Get the low order word of the file pointer | ||
| 986 | MOV DX, ES:[DI+43] ;AN000; Get the high order word | ||
| 987 | SUB DX, WORD PTR FILE_PTR_AT_START[2] ;AN000; Subtract the high order words | ||
| 988 | SBB CX, WORD PTR FILE_PTR_AT_START ;AN000; Subtract the low order words | ||
| 989 | ADD CX, BUFFER_START ;AN000; Get the offset of the start of the definition | ||
| 990 | MOV CURRENT_PARSE_LOC, CX ;AN000; Save as the scan position | ||
| 991 | OR PARSE_FLAG, FIRST_NAME ;AN000; | ||
| 992 | PARSE_NEXT_PARM: ;AN000; | ||
| 993 | MOV DI, CURRENT_PARSE_LOC ;AN000; Get the current scan position | ||
| 994 | CALL SCAN_FOR_EOLN ;AN000; Search for the end of this line | ||
| 995 | MOV START_NEXT_LINE, DI ;AN000; Save the position of the start of the next line | ||
| 996 | MOV SI, CURRENT_PARSE_LOC ;AN000; The position in the buffer to scan | ||
| 997 | MOV NUM_STRINGS, 6 ;AN000; Number of parameters to parse for | ||
| 998 | MOV DI, OFFSET PARMS ;AN000; Offset of the parameter blocks | ||
| 999 | MOV DX, 0 ;AN000; The parser wants DX = 0. | ||
| 1000 | MOV CX, 0 ;AN000; Tell the parser this is the first scan of this line | ||
| 1001 | PUSH DS ;AN000; Save the current data segment | ||
| 1002 | PUSH ES ;AN000; Save the file data segment | ||
| 1003 | MOV AX, DATA ;AN000; Get the current data segment | ||
| 1004 | MOV ES, AX ;AN000; This is the parser control blocks. | ||
| 1005 | MOV AX, SEG_LOC ;AN000; Where the data to parse is located | ||
| 1006 | MOV DS, AX ;AN000; | ||
| 1007 | CALL SYSPARSE ;AN000; Do the parsing | ||
| 1008 | POP ES ;AN000; Restore the file data segment | ||
| 1009 | POP DS ;AN000; Restore the data segment | ||
| 1010 | .IF < AX EQ 0FFFFH > ;AN000; Was the end of the line found? | ||
| 1011 | JMP UPDATE_PARSE_PTR ;AN000; If so, start the next one | ||
| 1012 | .ELSEIF < NONZERO AX > ;AN000; Was an error encountered parsing the line? | ||
| 1013 | MOV BX, ERR_PRN_DEFN ;AN000; | ||
| 1014 | JMP ERROR_EXIT ;AN000; If so, exit the subroutine | ||
| 1015 | .ENDIF ;AN000; | ||
| 1016 | MOV AL, MATCHED_TAG ;AN000; Get which string was matched | ||
| 1017 | .IF < AL EQ 1 > OR ;AN000; Was this a printer name and type? | ||
| 1018 | .IF < AL EQ 2 > ;AN000; | ||
| 1019 | .IF < BIT PARSE_FLAG AND FIRST_NAME > ;AN000; Is this the first name encountered? | ||
| 1020 | AND PARSE_FLAG, RESET_FIRST_NAME ;AN000; Indicate that the a name has been found | ||
| 1021 | .ELSE ;AN000; Otherwise... | ||
| 1022 | JMP PARSING_DONE ;AN000; This is the second name. We are finished. | ||
| 1023 | .ENDIF ;AN000; | ||
| 1024 | .ELSEIF < AL EQ 3 > ;AN000; AL = 3 ==> Mode parameters | ||
| 1025 | CALL HANDLE_MODE ;AN000; Process | ||
| 1026 | .ELSEIF < AL EQ 4 > ;AN000; AL = 4 ==> Code page driver parameters | ||
| 1027 | MOV CDP_FOUND, TRUE ;AN000; | ||
| 1028 | CALL HANDLE_CODE_DRIVER ;AN000; Process | ||
| 1029 | .ELSEIF < AL EQ 5 > ;AN000; AL = 5 ==> Code page preparation parameters | ||
| 1030 | MOV CPP_FOUND, TRUE ;AN000; | ||
| 1031 | CALL HANDLE_CODE_PREPARE ;AN000; Process | ||
| 1032 | .ELSEIF < AL EQ 6 > ;AN000; AL = 6 ==> Graphics parameters | ||
| 1033 | CALL HANDLE_GRAPHICS ;AN000; Process | ||
| 1034 | .ENDIF ;AN000; | ||
| 1035 | ;********************************************************************** | ||
| 1036 | ; The current line has been parsed. Point to the next line. | ||
| 1037 | ;********************************************************************** | ||
| 1038 | UPDATE_PARSE_PTR: ;AN000; | ||
| 1039 | MOV AX, START_NEXT_LINE ;AN000; Get the address of the start of the next line | ||
| 1040 | MOV CURRENT_PARSE_LOC, AX ;AN000; Save this as the start of the current line | ||
| 1041 | .IF < CURRENT_PARSE_LOC EQ 0 > ;AN000; Is there any more data? | ||
| 1042 | JMP PARSING_DONE ;AN000; No. Exit the routine | ||
| 1043 | .ENDIF ;AN000; | ||
| 1044 | JMP PARSE_NEXT_PARM ;AN000; Start the parsing again | ||
| 1045 | ;********************************************************************** | ||
| 1046 | ; The subroutine is finished. | ||
| 1047 | ;********************************************************************** | ||
| 1048 | PARSING_DONE: ;AN000; | ||
| 1049 | MOV AL, CDP_FOUND ;AN000; | ||
| 1050 | XOR AL, CPP_FOUND ;AN000; | ||
| 1051 | .IF < NZ > ;AN000; | ||
| 1052 | MOV BX, ERR_CDP_CPP ;AN000; | ||
| 1053 | JMP ERROR_EXIT ;AN000; | ||
| 1054 | .ENDIF ;AN000; | ||
| 1055 | CLC ;AN000; Clear the carry - No errors | ||
| 1056 | JMP EXIT_INFO ;AN000; Exit the subroutine | ||
| 1057 | ERROR_EXIT: ;AN000; | ||
| 1058 | STC ;AN000; Set the carry - There were errors | ||
| 1059 | EXIT_INFO: ;AN000; | ||
| 1060 | POP ES ;AN000; Restore the extra segment | ||
| 1061 | CALL RESTORE_INT_24;AN000; | ||
| 1062 | RET ;AN000; return | ||
| 1063 | |||
| 1064 | GET_PRINTER_INFO_ROUTINE ENDP;AN000; | ||
| 1065 | ;******************************************************************************** | ||
| 1066 | ; HANDLE_MODE - Subroutine to process the mode parameter line in the printer | ||
| 1067 | ; profile. | ||
| 1068 | ; | ||
| 1069 | ; INPUT: | ||
| 1070 | ; SI - Points to the beginning of the line to process | ||
| 1071 | ; | ||
| 1072 | ; OUTPUT: | ||
| 1073 | ; S_MODE_PARM - Filled with the information from the line. The line will be | ||
| 1074 | ; in a format for use as the parameters for the MODE command. | ||
| 1075 | ; | ||
| 1076 | ;******************************************************************************** | ||
| 1077 | HANDLE_MODE PROC NEAR;AN000; | ||
| 1078 | |||
| 1079 | ;AD000;JW PUSH SI | ||
| 1080 | ;AD000;JW COPY_STRING S_MODE_PARM, 13, BLANK_MODE | ||
| 1081 | ;AD000;JW POP SI | ||
| 1082 | ;AD000;JW | ||
| 1083 | ;AD000;JW NEXT_MODE_SCAN: ; Scan for the next keyword. | ||
| 1084 | ;AD000;JW MOV DI, OFFSET MODE_PARMS ; Offset of the control blocks for parsing the mode parameters | ||
| 1085 | ;AD000;JW MOV CX, 0 ; Always tell the parser this is the first parse | ||
| 1086 | ;AD000;JW MOV DX, 0 ; The parse wants DX = 0 | ||
| 1087 | ;AD000;JW PUSH ES ; Save the segment registers | ||
| 1088 | ;AD000;JW PUSH DS | ||
| 1089 | ;AD000;JW MOV AX, DATA ; Get the location of the data segment | ||
| 1090 | ;AD000;JW MOV ES, AX ; Load in the extra segment register - The segment of the control blocks | ||
| 1091 | ;AD000;JW MOV AX, SEG_LOC ; Get the location of the printer data | ||
| 1092 | ;AD000;JW MOV DS, AX ; Load into the data segment - The segment of the data to parse | ||
| 1093 | ;AD000;JW CALL SYSPARSE ; Parse the line. | ||
| 1094 | ;AD000;JW POP DS ; Restore the segment registers | ||
| 1095 | ;AD000;JW POP ES | ||
| 1096 | ;AD000;JW | ||
| 1097 | ;AD000;JW ; PUSHH <AX,BX,CX,DX,SI,DI> | ||
| 1098 | ;AD000;JW ; MOV W_VALUE, AX | ||
| 1099 | ;AD000;JW ; WORD_TO_CHAR W_VALUE, STRING_N | ||
| 1100 | ;AD000;JW ; PRINTN STRING_N | ||
| 1101 | ;AD000;JW ; CR_LF | ||
| 1102 | ;AD000;JW ; POPP <DI,SI,DX,CX,BX,AX> | ||
| 1103 | ;AD000;JW | ||
| 1104 | ;AD000;JW .IF < NONZERO AX > ; If errors or the end of the line, end the routine | ||
| 1105 | ;AD000;JW JMP EXIT_MODE_SCAN | ||
| 1106 | ;AD000;JW .ENDIF | ||
| 1107 | ;AD000;JW MOV BX, DX ; Move result pointer into an index register | ||
| 1108 | ;AD000;JW .IF <<WORD PTR [BX+2]> EQ <OFFSET SYN_BAUD>> ; Was this the BAUD keyword? | ||
| 1109 | ;AD000;JW MOV AX, 5 ; Maximum number of character to copy | ||
| 1110 | ;AD000;JW MOV DI, OFFSET S_MODE_PARM+2 ; Where to put the baud parameters | ||
| 1111 | ;AD000;JW .ELSEIF <<WORD PTR [BX+2]> EQ <OFFSET SYN_PARITY>> ; Was this the PARITY keyword? | ||
| 1112 | ;AD000;JW MOV AX, 1 ; Maximum number of character to copy | ||
| 1113 | ;AD000;JW MOV DI, OFFSET S_MODE_PARM+8 ; Where to put the parity parameters | ||
| 1114 | ;AD000;JW .ELSEIF <<WORD PTR [BX+2]> EQ <OFFSET SYN_DATA>> ; Was this the DATA keyword? | ||
| 1115 | ;AD000;JW MOV AX, 1 ; Maximum number of character to copy | ||
| 1116 | ;AD000;JW MOV DI, OFFSET S_MODE_PARM+10 ; Where to put the data parameters | ||
| 1117 | ;AD000;JW .ELSEIF <<WORD PTR [BX+2]> EQ <OFFSET SYN_STOP>> ; Was this the STOP keyword? | ||
| 1118 | ;AD000;JW MOV AX, 1 ; Maximum number of character to copy | ||
| 1119 | ;AD000;JW MOV DI, OFFSET S_MODE_PARM+12 ; Where to put the stop parameters | ||
| 1120 | ;AD000;JW .ELSEIF <<WORD PTR [BX+2]> EQ <OFFSET SYN_RETRY>> ; Was this the RETRY keyword? | ||
| 1121 | ;AD000;JW MOV AX, 1 ; Maximum number of character to copy | ||
| 1122 | ;AD000;JW MOV DI, OFFSET S_MODE_PARM+14 ; Where to put the retry parameters | ||
| 1123 | ;AD000;JW .ENDIF | ||
| 1124 | ;AD000;JW CALL COPY_RESULT ; Copy the string | ||
| 1125 | ;AD000;JW JMP NEXT_MODE_SCAN ; Scan for the next keyword | ||
| 1126 | ;AD000;JW EXIT_MODE_SCAN: | ||
| 1127 | ;AD000;JW CALL REMOVE_BLANKS ; Remove the blanks from the mode line | ||
| 1128 | ;AD000;JW | ||
| 1129 | |||
| 1130 | MOV DI, OFFSET S_MODE_PARM ;AN000; Offset of the variable to load JW | ||
| 1131 | MOV CX, 40 ;AN000; Maximum width of the field JW | ||
| 1132 | CALL COPY_LINE ;AN000; Copy the information from the file data JW | ||
| 1133 | RET ;AN000; Return JW | ||
| 1134 | |||
| 1135 | HANDLE_MODE ENDP;AN000; | ||
| 1136 | ;AD000;JW ;******************************************************************************** | ||
| 1137 | ;AD000;JW ; REMOVE_BLANKS: Remove the blanks from the S_MODE_PARM string. Any trailing | ||
| 1138 | ;AD000;JW ; commas are also removed. | ||
| 1139 | ;AD000;JW ; | ||
| 1140 | ;AD000;JW ; INPUT: | ||
| 1141 | ;AD000;JW ; None. | ||
| 1142 | ;AD000;JW ; | ||
| 1143 | ;AD000;JW ; OUTPUT: | ||
| 1144 | ;AD000;JW ; None. | ||
| 1145 | ;AD000;JW ; | ||
| 1146 | ;AD000;JW ; OPERATION: | ||
| 1147 | ;AD000;JW ; | ||
| 1148 | ;AD000;JW ; | ||
| 1149 | ;AD000;JW ;******************************************************************************** | ||
| 1150 | ;AD000;JW REMOVE_BLANKS PROC NEAR | ||
| 1151 | ;AD000;JW | ||
| 1152 | ;AD000;JW MOV CX, WORD PTR S_MODE_PARM | ||
| 1153 | ;AD000;JW LEA SI, S_MODE_PARM | ||
| 1154 | ;AD000;JW INC SI | ||
| 1155 | ;AD000;JW ADD SI, CX | ||
| 1156 | ;AD000;JW MOV BX, CX | ||
| 1157 | ;AD000;JW .WHILE < CX AE 0 > | ||
| 1158 | ;AD000;JW .IF < <BYTE PTR [SI]> EQ <' '> > OR | ||
| 1159 | ;AD000;JW .IF < <BYTE PTR [SI]> EQ <','> > | ||
| 1160 | ;AD000;JW DEC BX | ||
| 1161 | ;AD000;JW .ELSE | ||
| 1162 | ;AD000;JW .LEAVE | ||
| 1163 | ;AD000;JW .ENDIF | ||
| 1164 | ;AD000;JW DEC SI | ||
| 1165 | ;AD000;JW DEC CX | ||
| 1166 | ;AD000;JW .ENDWHILE | ||
| 1167 | ;AD000;JW MOV WORD PTR S_MODE_PARM, BX | ||
| 1168 | ;AD000;JW | ||
| 1169 | ;AD000;JW MOV CX, BX | ||
| 1170 | ;AD000;JW LEA SI, S_MODE_PARM | ||
| 1171 | ;AD000;JW ADD SI, 2 | ||
| 1172 | ;AD000;JW MOV DI, SI | ||
| 1173 | ;AD000;JW .WHILE < CX A 0 > | ||
| 1174 | ;AD000;JW .IF < <BYTE PTR [SI]> NE <' '>> | ||
| 1175 | ;AD000;JW .IF < SI NE DI > | ||
| 1176 | ;AD000;JW MOV AL, [SI] | ||
| 1177 | ;AD000;JW MOV [DI], AL | ||
| 1178 | ;AD000;JW .ENDIF | ||
| 1179 | ;AD000;JW INC DI | ||
| 1180 | ;AD000;JW .ELSE | ||
| 1181 | ;AD000;JW DEC BX | ||
| 1182 | ;AD000;JW .ENDIF | ||
| 1183 | ;AD000;JW INC SI | ||
| 1184 | ;AD000;JW DEC CX | ||
| 1185 | ;AD000;JW .ENDWHILE | ||
| 1186 | ;AD000;JW MOV WORD PTR S_MODE_PARM, BX | ||
| 1187 | ;AD000;JW RET | ||
| 1188 | ;AD000;JW | ||
| 1189 | ;AD000;JW REMOVE_BLANKS ENDP | ||
| 1190 | ;******************************************************************************** | ||
| 1191 | ; HANDLE_CODE_DRIVER - Subroutine to process the code page driver parameter | ||
| 1192 | ; line in the printer profile. | ||
| 1193 | ; | ||
| 1194 | ; INPUT: | ||
| 1195 | ; SI - Points to the beginning of the line to process | ||
| 1196 | ; | ||
| 1197 | ; OUTPUT: | ||
| 1198 | ; S_CP_DRIVER - Filled with the information from the line. | ||
| 1199 | ; | ||
| 1200 | ; OPERATION: The line from the file is copied to the S_CP_DRIVER variable. | ||
| 1201 | ; This variable is assumed to be a maximum of 22 characters wide. | ||
| 1202 | ; | ||
| 1203 | ;******************************************************************************** | ||
| 1204 | HANDLE_CODE_DRIVER PROC NEAR;AN000; | ||
| 1205 | |||
| 1206 | MOV DI, OFFSET S_CP_DRIVER ;AN000; Offset of the variable to load | ||
| 1207 | MOV CX, 22 ;AN000; Maximum width of the field | ||
| 1208 | CALL COPY_LINE ;AN000; Copy the information from the file data | ||
| 1209 | RET ;AN000; | ||
| 1210 | |||
| 1211 | HANDLE_CODE_DRIVER ENDP;AN000; | ||
| 1212 | |||
| 1213 | ;******************************************************************************** | ||
| 1214 | ; HANDLE_CODE_PREPARE - Subroutine to process the code prepare parameter line | ||
| 1215 | ; in the printer profile. | ||
| 1216 | ; | ||
| 1217 | ; INPUT: | ||
| 1218 | ; SI - Points to the beginning of the line to process | ||
| 1219 | ; | ||
| 1220 | ; OUTPUT: | ||
| 1221 | ; S_CP_PREPARE - Filled with the information from the line. | ||
| 1222 | ; | ||
| 1223 | ; OPERATION: The line from the file is copied to the variable S_CP_PREPARE. | ||
| 1224 | ; The variable is assumed to be a maximum of 12 characters long. | ||
| 1225 | ; | ||
| 1226 | ;******************************************************************************** | ||
| 1227 | HANDLE_CODE_PREPARE PROC NEAR;AN000; | ||
| 1228 | |||
| 1229 | MOV DI, OFFSET S_CP_PREPARE ;AN000; Offset of the variable to load | ||
| 1230 | MOV CX, 12 ;AN000; Maximum length of the variable | ||
| 1231 | CALL COPY_LINE ;AN000; Copy the information from the file data | ||
| 1232 | RET ;AN000; | ||
| 1233 | |||
| 1234 | HANDLE_CODE_PREPARE ENDP;AN000; | ||
| 1235 | |||
| 1236 | ;******************************************************************************** | ||
| 1237 | ; HANDLE_GRAPHICS - Subroutine to process the graphics parameter line in the | ||
| 1238 | ; printer profile. | ||
| 1239 | ; | ||
| 1240 | ; INPUT: | ||
| 1241 | ; SI - Points to the beginning of the line to process | ||
| 1242 | ; | ||
| 1243 | ; OUTPUT: | ||
| 1244 | ; S_GRAPH_PARM - Filled with the information from the line. | ||
| 1245 | ; | ||
| 1246 | ; OPERATION: The line from the file is copied to the S_GRAPH_PARM variable. | ||
| 1247 | ; The variable is assumed to be a maximum of 20 characters long. | ||
| 1248 | ; | ||
| 1249 | ;******************************************************************************** | ||
| 1250 | HANDLE_GRAPHICS PROC NEAR;AN000; | ||
| 1251 | |||
| 1252 | MOV DI, OFFSET S_GRAPH_PARM ;AN000; Offset of the variable to load | ||
| 1253 | MOV CX, 20 ;AN000; Maximum width of the variable | ||
| 1254 | CALL COPY_LINE ;AN000; Load the variable with the data from the file | ||
| 1255 | RET ;AN000; | ||
| 1256 | |||
| 1257 | HANDLE_GRAPHICS ENDP;AN000; | ||
| 1258 | |||
| 1259 | ;******************************************************************************** | ||
| 1260 | ; COPY_RESULT: Copy the string pointed to in the result block to the specified | ||
| 1261 | ; destination. | ||
| 1262 | ; | ||
| 1263 | ; INPUT: | ||
| 1264 | ; AX - The maximum length of the string to copy. | ||
| 1265 | ; DX - The offset in DS of the result block. | ||
| 1266 | ; DI - The offset of where the string is to be stored | ||
| 1267 | ; | ||
| 1268 | ; | ||
| 1269 | ; OUTPUT: | ||
| 1270 | ; CX - The length of the string copied. | ||
| 1271 | ; | ||
| 1272 | ; Operation: The string is copied from the result block to the area pointed to | ||
| 1273 | ; by DS:DI. The string is copied until a null character is encountered. | ||
| 1274 | ; | ||
| 1275 | ;******************************************************************************** | ||
| 1276 | COPY_RESULT PROC NEAR;AN000; | ||
| 1277 | |||
| 1278 | PUSH ES ;AN000; | ||
| 1279 | PUSH SI ;AN000; | ||
| 1280 | MOV BX, DX ;AN000; Put address into an index register | ||
| 1281 | LES SI, [BX+4] ;AN000; Get the address of the string to copy | ||
| 1282 | MOV CX, 0 ;AN000; Zero the string length indicator | ||
| 1283 | .WHILE < CX B AX > ;AN000; Copy up to the number of character in AX | ||
| 1284 | MOV DL, BYTE PTR ES:[SI] ;AN000; Get the first byte | ||
| 1285 | .LEAVE < ZERO DL > ;AN000; Terminate loop if this is a null char | ||
| 1286 | MOV BYTE PTR [DI], DL ;AN000; Save character in the destination string | ||
| 1287 | INC SI ;AN000; Increment source pointer | ||
| 1288 | INC DI ;AN000; Increment destination pointer | ||
| 1289 | INC CX ;AN000; Increment number of characters moved | ||
| 1290 | .ENDWHILE ;AN000; | ||
| 1291 | POP SI ;AN000; | ||
| 1292 | POP ES ;AN000; | ||
| 1293 | RET ;AN000; | ||
| 1294 | |||
| 1295 | COPY_RESULT ENDP;AN000; | ||
| 1296 | |||
| 1297 | ;******************************************************************************** | ||
| 1298 | ; COPY_LINE - Copy a line from the printer profile data to a specified area. | ||
| 1299 | ; | ||
| 1300 | ; INPUT: | ||
| 1301 | ; DI - Points to the location the data is to be copied to. | ||
| 1302 | ; CX - Contains the maximum number of bytes copied. | ||
| 1303 | ; | ||
| 1304 | ; OUTPUT: | ||
| 1305 | ; None. | ||
| 1306 | ; | ||
| 1307 | ; OPERATION: The current line being parsed is copied to the specified area. | ||
| 1308 | ; The length of the line is calculated with the use of the variable | ||
| 1309 | ; CUR_END_LINE. If the lenght of the line is longer then the number passed | ||
| 1310 | ; in CX, then only a portion of the line will be copied. | ||
| 1311 | ; | ||
| 1312 | ;******************************************************************************** | ||
| 1313 | COPY_LINE PROC NEAR;AN000; | ||
| 1314 | |||
| 1315 | |||
| 1316 | PUSH SI ;AN000; Save the index regiter used by the parser | ||
| 1317 | PUSH DI ;AN000; Save the pointer to the variable to load | ||
| 1318 | ADD DI, 2 ;AN000; Push pointer passed the lenght word | ||
| 1319 | MOV AX, END_CUR_LINE ;AN000; Get the pointer to the end of this line | ||
| 1320 | SUB AX, SI ;AN000; Get the distance to the end | ||
| 1321 | INC AX ;AN000; Add to get the length of the line | ||
| 1322 | .IF < AX B CX > ;AN000; If length is greater then the maximum allowed, | ||
| 1323 | MOV CX, AX ;AN000; use the shorter length | ||
| 1324 | .ENDIF ;AN000; | ||
| 1325 | PUSH CX ;AN000; Save the length used. | ||
| 1326 | PUSH ES ;AN000; Swap the values in the segment registers | ||
| 1327 | PUSH DS ;AN000; | ||
| 1328 | POP ES ;AN000; | ||
| 1329 | POP DS ;AN000; | ||
| 1330 | CLD ;AN000; Move in the forward direction | ||
| 1331 | REP MOVSB ;AN000; Move the data | ||
| 1332 | POP CX ;AN000; Restore the line length | ||
| 1333 | POP DI ;AN000; Restore the pointer to the variable | ||
| 1334 | MOV WORD PTR ES:[DI], CX ;AN000; Save the length of the string | ||
| 1335 | POP SI ;AN000; Restore the parser pointer | ||
| 1336 | PUSH DS ;AN000; Swap the segment registers again | ||
| 1337 | PUSH ES ;AN000; | ||
| 1338 | POP DS ;AN000; | ||
| 1339 | POP ES ;AN000; | ||
| 1340 | RET ;AN000; | ||
| 1341 | |||
| 1342 | COPY_LINE ENDP;AN000; | ||
| 1343 | |||
| 1344 | ;******************************************************************************** | ||
| 1345 | ; Routine to deallocate the memory used for the storage of the printer profile | ||
| 1346 | ; data and the table of printer names. These routines also close the profile | ||
| 1347 | ; file. | ||
| 1348 | ;******************************************************************************** | ||
| 1349 | |||
| 1350 | ;******************************************************************************** | ||
| 1351 | ; RELEASE_PRINTER_INFO_ROUTINE - Close the printer profile file and free the | ||
| 1352 | ; allocated memory. | ||
| 1353 | ; | ||
| 1354 | ; INPUT: | ||
| 1355 | ; None. | ||
| 1356 | ; | ||
| 1357 | ; OUTPUT: | ||
| 1358 | ; If CY = 0, There were no error encountered. | ||
| 1359 | ; If CY = 1, There was an error. | ||
| 1360 | ; AX = The DOS error code for the deallocate memory function | ||
| 1361 | ; | ||
| 1362 | ; OPERATION: Closes the printer file and deallocated the memory. | ||
| 1363 | ; | ||
| 1364 | ;******************************************************************************** | ||
| 1365 | RELEASE_PRINTER_INFO_ROUTINE PROC FAR;AN000; | ||
| 1366 | |||
| 1367 | |||
| 1368 | |||
| 1369 | |||
| 1370 | CALL HOOK_INT_24 ;AN000; | ||
| 1371 | |||
| 1372 | |||
| 1373 | PUSH ES ;AN000; | ||
| 1374 | ;********************************************************************** | ||
| 1375 | ; Close the printer definition file | ||
| 1376 | ;********************************************************************** | ||
| 1377 | MOV INT_24_ERROR, 0 ;AN000; Indicate that no critical errors have occured yet | ||
| 1378 | MOV BX, FILE_HANDLE ;AN000; File handle of the profile file | ||
| 1379 | MOV AH, 3EH ;AN000; DOS Fn. for closing a file | ||
| 1380 | DOSCALL ;AN000; Close the file | ||
| 1381 | ;********************************************************************** | ||
| 1382 | ; Deallocate the memory used for the data buffer | ||
| 1383 | ;********************************************************************** | ||
| 1384 | MOV AX, SEG_LOC ;AN000; Location of the data buffer | ||
| 1385 | MOV ES, AX ;AN000; | ||
| 1386 | MOV AH, 49H ;AN000; DOS Fn. for freeing allocated memory | ||
| 1387 | DOSCALL ;AN000; Free the memory | ||
| 1388 | POP ES ;AN000; | ||
| 1389 | CALL RESTORE_INT_24;AN000; | ||
| 1390 | RET ;AN000; | ||
| 1391 | |||
| 1392 | RELEASE_PRINTER_INFO_ROUTINE ENDP;AN000; | ||
| 1393 | |||
| 1394 | ;******************************************************************************* | ||
| 1395 | ; Routines for changing the SELECT command line in the AUTOEXEC.BAT. | ||
| 1396 | ;******************************************************************************* | ||
| 1397 | |||
| 1398 | ;******************************************************************************** | ||
| 1399 | ; CHANGE_AUTOEXEC_ROUTINE: Search a file for a line beginning with SELECT, and | ||
| 1400 | ; change its parameters. | ||
| 1401 | ; | ||
| 1402 | ; INPUT: | ||
| 1403 | ; DI - The offset of an ASCII-N string containing the file to search. | ||
| 1404 | ; SI - The offset of an ASCII-N string containing the data to append as | ||
| 1405 | ; parameters. | ||
| 1406 | ; | ||
| 1407 | ; OUTPUT: | ||
| 1408 | ; None. | ||
| 1409 | ; | ||
| 1410 | ; Operation: | ||
| 1411 | ; | ||
| 1412 | ;******************************************************************************** | ||
| 1413 | CHANGE_AUTOEXEC_ROUTINE PROC FAR;AN000; | ||
| 1414 | |||
| 1415 | |||
| 1416 | |||
| 1417 | TEST SEL_FLG,INSTALLRW ;AN000; Is the install | ||
| 1418 | ;AN000; diskette read/write | ||
| 1419 | ;AN000; (has DISKCOPY occurred?) | ||
| 1420 | JNZ AUTO_OK ;AN000; | ||
| 1421 | CLC ;AN000; no error | ||
| 1422 | JMP AUTO_EXIT_RO ;AN000; If not, exit | ||
| 1423 | |||
| 1424 | AUTO_OK: ;AN000; | ||
| 1425 | CALL HOOK_INT_24 ;AN000; | ||
| 1426 | PUSH ES ;AN000; | ||
| 1427 | MOV APPEND_POINTER, SI ;AN000; Save the address of the string to be appended | ||
| 1428 | MOV FILENAME, DI ;AN000; Save the address of the string containing the filename | ||
| 1429 | ;********************************************************************** | ||
| 1430 | ; Allocate the memory needed for reading the autoexec file. A maximum | ||
| 1431 | ; of 64K is allocated for use. | ||
| 1432 | ;********************************************************************** | ||
| 1433 | CALL ALLOCATE_MEMORY ;AN000; Allocate the memory needed | ||
| 1434 | .IF < C > ;AN000; Was there an error? | ||
| 1435 | JMP AUTO_EXIT_ERROR ;AN000; Yes! Exit the subroutine | ||
| 1436 | .ENDIF ;AN000; | ||
| 1437 | MOV BUFFER_START, 0 ;AN000; Save the offset of the start of the buffer | ||
| 1438 | COPY_WORD BUFFER_SIZE, SEGMENT_SIZE ;AN000; Save the size of the buffer | ||
| 1439 | ;********************************************************************** | ||
| 1440 | ; Open the input file | ||
| 1441 | ;********************************************************************** | ||
| 1442 | MOV INT_24_ERROR, 0 ;AN000; Indicate that no critical errors have occured yet | ||
| 1443 | ; DI contains the address of the filename | ||
| 1444 | CALL POS_ZERO ;AN000; Make the string into an ASCII-Z string | ||
| 1445 | MOV DX, DI ;AN000; Load string offset | ||
| 1446 | ADD DX, 2 ;AN000; Adjust for length word | ||
| 1447 | MOV AX, 3D02H ;AN000; DOS Fn. for opening a file for reading and writing | ||
| 1448 | DOSCALL ;AN000; Open the file | ||
| 1449 | .IF < C > ;AN000; Was there an error? | ||
| 1450 | JMP AUTO_EXIT_ERROR ;AN000; Exit the subroutine | ||
| 1451 | .ENDIF ;AN000; | ||
| 1452 | MOV FILE_HANDLE, AX ;AN000; Save the file handle | ||
| 1453 | ;********************************************************************** | ||
| 1454 | ; Set the file pointer | ||
| 1455 | ;********************************************************************** | ||
| 1456 | MOV WORD PTR FILE_PTR_AT_START[0], 0 ;AN000; Set the file pointer of the data in the buffer | ||
| 1457 | MOV WORD PTR FILE_PTR_AT_START[2], 0 ;AN000; Set the high word | ||
| 1458 | MOV CURRENT_PARSE_LOC, 0 ;AN000; Set the current parsing location | ||
| 1459 | AND READ_FLAG, RESET_EOF ;AN000; Indicate that the end of file has not been reached | ||
| 1460 | ;********************************************************************** | ||
| 1461 | ; Read data into the buffer | ||
| 1462 | ;********************************************************************** | ||
| 1463 | MOV DI, CURRENT_PARSE_LOC ;AN000; Get the current parsing location | ||
| 1464 | CALL READ_FROM_HERE ;AN000; Read data starting from this position | ||
| 1465 | .IF < C > ;AN000; Was there an error? | ||
| 1466 | JMP AUTO_EXIT_ERROR ;AN000; Yes! Exit the subroutine | ||
| 1467 | .ENDIF ;AN000; | ||
| 1468 | ;********************************************************************** | ||
| 1469 | ; Setup the control blocks for the parser | ||
| 1470 | ;********************************************************************** | ||
| 1471 | MOV PAR_EXTEN, OFFSET SELECT_PARMX ;AN000; Address of the parameters extension block | ||
| 1472 | ;********************************************************************** | ||
| 1473 | ; Parse the file for 'SELECT' | ||
| 1474 | ;********************************************************************** | ||
| 1475 | PARSE_FOR_SELECT: ;AN000; Here to parse the line | ||
| 1476 | CALL SEARCH_LINE ;AN000; Parse the line. | ||
| 1477 | .IF < C > ;AN000; Was there an error? | ||
| 1478 | JMP AUTO_EXIT_ERROR ;AN000; Yes! Exit the subroutine | ||
| 1479 | .ENDIF ;AN000; | ||
| 1480 | .IF < AX EQ 0 > ;AN000; Did the parser file 'SELECT'? | ||
| 1481 | MOV CURRENT_PARSE_LOC, SI ;AN000; Yes! Save the position after select as parse location | ||
| 1482 | MOV DX, WORD PTR FILE_PTR_AT_START[0];AN000; | ||
| 1483 | MOV CX, WORD PTR FILE_PTR_AT_START[2];AN000; | ||
| 1484 | ADD DX, CURRENT_PARSE_LOC ;AN000; | ||
| 1485 | ADC CX, 0 ;AN000; | ||
| 1486 | MOV INT_24_ERROR, 0 ;AN000; Indicate that no critical errors have occured yet | ||
| 1487 | MOV BX, FILE_HANDLE ;AN000; | ||
| 1488 | MOV AX, 4200H ;AN000; | ||
| 1489 | DOSCALL ;AN000; | ||
| 1490 | .IF < C > ;AN000; Was there an error writing the data? | ||
| 1491 | JMP AUTO_EXIT_ERROR ;AN000; Yes! Exit the subroutine | ||
| 1492 | .ENDIF ;AN000; | ||
| 1493 | ;***************************************************************** | ||
| 1494 | ; Write the select parameters to the file | ||
| 1495 | ;***************************************************************** | ||
| 1496 | MOV SI, APPEND_POINTER ;AN000; Address of the string to add to the select line | ||
| 1497 | MOV CX, [SI] ;AN000; Size of the string | ||
| 1498 | MOV DX, SI ;AN000; Get the address again | ||
| 1499 | ADD DX, 2 ;AN000; Adjust pointer past length word | ||
| 1500 | MOV INT_24_ERROR, 0 ;AN000; Indicate that no critical errors have occured yet | ||
| 1501 | MOV BX, FILE_HANDLE ;AN000; Get the handle for this file | ||
| 1502 | MOV AH, 40H ;AN000; DOS Fn. number for writing data | ||
| 1503 | DOSCALL ;AN000; Write the data | ||
| 1504 | ;***************************************************************** | ||
| 1505 | ; Write a carrage return and a line feed to the file | ||
| 1506 | ;***************************************************************** | ||
| 1507 | MOV INT_24_ERROR, 0 ;AN000; Indicate that no critical errors have occured yet | ||
| 1508 | MOV DX, OFFSET W_CR_LF ;AN000; Address of string to write | ||
| 1509 | MOV CX, E_SIZE_CR_LF ;AN000; Size of the string | ||
| 1510 | MOV BX, FILE_HANDLE ;AN000; Get the file handle | ||
| 1511 | MOV AH, 40H ;AN000; DOS Fn. for writing data | ||
| 1512 | DOSCALL ;AN000; Write the data | ||
| 1513 | ;***************************************************************** | ||
| 1514 | ; Truncate the file at the current file position | ||
| 1515 | ;***************************************************************** | ||
| 1516 | MOV INT_24_ERROR, 0 ;AN000; Indicate that no critical errors have occured yet | ||
| 1517 | MOV CX, 0 ;AN000; | ||
| 1518 | MOV BX, FILE_HANDLE ;AN000; | ||
| 1519 | MOV AH, 40H ;AN000; | ||
| 1520 | DOSCALL ;AN000; | ||
| 1521 | ;***************************************************************** | ||
| 1522 | ; Close the file. | ||
| 1523 | ;***************************************************************** | ||
| 1524 | CALL RELEASE_PRINTER_INFO_ROUTINE ;AN000; Close the original autoexec file | ||
| 1525 | .ELSE ;AN000; | ||
| 1526 | ;***************************************************************** | ||
| 1527 | ; Parse the next line. | ||
| 1528 | ;***************************************************************** | ||
| 1529 | MOV DI, START_NEXT_LINE ;AN000; Get the address of the next line | ||
| 1530 | MOV CURRENT_PARSE_LOC, DI ;AN000; Save this as the current parse location | ||
| 1531 | .IF < CURRENT_PARSE_LOC EQ 0 > ;AN000; If this is zero, then there is no more data | ||
| 1532 | JMP AUTO_EXIT_CLEAR ;AN000; Exit the subroutine - No errors | ||
| 1533 | .ENDIF ;AN000; | ||
| 1534 | JMP PARSE_FOR_SELECT ;AN000; Parse the next line | ||
| 1535 | .ENDIF ;AN000; | ||
| 1536 | JMP AUTO_EXIT_CLEAR ;AN000; Exit the subroutine - No errors | ||
| 1537 | |||
| 1538 | AUTO_EXIT_ERROR: ;AN000; Here if there was an error | ||
| 1539 | CALL RELEASE_PRINTER_INFO_ROUTINE ;AN000; Close the original file | ||
| 1540 | STC ;AN000; Indicate that there was an error | ||
| 1541 | JMP AUTO_EXIT ;AN000; Exit the subroutine | ||
| 1542 | |||
| 1543 | AUTO_EXIT_CLEAR: ;AN000; Exit here if NO errors. | ||
| 1544 | CLC ;AN000; Indicate there were no errors | ||
| 1545 | AUTO_EXIT: ;AN000; Here to exit | ||
| 1546 | CALL DEALLOCATE_MEMORY | ||
| 1547 | POP ES ;AN000; Restore the extra segment | ||
| 1548 | CALL RESTORE_INT_24;AN000; | ||
| 1549 | AUTO_EXIT_RO: ;AN000; | ||
| 1550 | RET ;AN000; | ||
| 1551 | |||
| 1552 | CHANGE_AUTOEXEC_ROUTINE ENDP;AN000; | ||
| 1553 | |||
| 1554 | CODE_FAR ENDS;AN000; | ||
| 1555 | |||
| 1556 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/ROUTINE2.ASM b/v4.0/src/SELECT/ROUTINE2.ASM new file mode 100644 index 0000000..2a8b7ad --- /dev/null +++ b/v4.0/src/SELECT/ROUTINE2.ASM | |||
| @@ -0,0 +1,1369 @@ | |||
| 1 | ;*************************************************************************** | ||
| 2 | ; Subroutines which are called by the macros in MACROS.INC. | ||
| 3 | ; File: ROUTINE2.ASM | ||
| 4 | ; Latest Change Date: August 04, 1987 | ||
| 5 | ; | ||
| 6 | ; This is a stand alone module and is meant to be linked with the calling | ||
| 7 | ; program. | ||
| 8 | ; | ||
| 9 | ;*************************************************************************** | ||
| 10 | .ALPHA ;AN000; | ||
| 11 | ;********************************************************************** | ||
| 12 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 13 | |||
| 14 | PATH_STRING DW 0 ;AN000; | ||
| 15 | STRING_SIZE DW 0 ;AN000; | ||
| 16 | PATH_PTR DW 0 ;AN000; | ||
| 17 | PATH_SIZE DW 0 ;AN000; | ||
| 18 | MAX_CHAR DW 0 ;AN000; | ||
| 19 | CHAR_COUNT DW 0 ;AN000; | ||
| 20 | |||
| 21 | |||
| 22 | SEARCH_FLAG DB 0 ;AN000; | ||
| 23 | |||
| 24 | PERIOD EQU 00000001B ;AN000; | ||
| 25 | SLASH_FOUND EQU 00000010B ;AN000; | ||
| 26 | |||
| 27 | |||
| 28 | RESET_PERIOD EQU 11111110B ;AN000; | ||
| 29 | RESET_SLASH_FOUND EQU 11111101B ;AN000; | ||
| 30 | |||
| 31 | INVALID_STRING DB '"/\[]:|<>+=;, ' ;AN000; | ||
| 32 | END_INVALID_STRING EQU $ ;AN000; | ||
| 33 | SIZE_INVALID_STR EQU END_INVALID_STRING - INVALID_STRING ;AN000; | ||
| 34 | |||
| 35 | ZEROED_CHAR DB 0 ;AN000; | ||
| 36 | DB 0 ;AN000; | ||
| 37 | |||
| 38 | SEP_POSITION DW 0 ;AN000; | ||
| 39 | NUM_PATHS DW 0 ;AN000; | ||
| 40 | |||
| 41 | |||
| 42 | ERR_INVALID_DRV EQU 1 ;AN000; | ||
| 43 | ERR_NO_DRIVE EQU 2 ;AN000; | ||
| 44 | ERR_DRIVE EQU 3 ;AN000; | ||
| 45 | ERR_LEADING_SLASH EQU 4 ;AN000; | ||
| 46 | ERR_NO_SLASH EQU 5 ;AN000; | ||
| 47 | ERR_LAST_SLASH EQU 6 ;AN000; | ||
| 48 | ERR_INVALID_CHAR EQU 7 ;AN000; | ||
| 49 | |||
| 50 | OLD_ATTRIB DW 0 ;AN000; | ||
| 51 | NEW_ATTRIB DW 0 ;AN000; | ||
| 52 | WAY DW 0 ;AN000; | ||
| 53 | |||
| 54 | |||
| 55 | |||
| 56 | PUBLIC CHK_W_PROTECT_FLAG ;AN000; | ||
| 57 | PUBLIC W_PROTECT_FLAG ;AN000; | ||
| 58 | |||
| 59 | W_P_FILENAME_A DB 'A:\',12 DUP(0), 0 ;AC000;JW | ||
| 60 | W_P_FILENAME_B DB 'B:\',12 DUP(0), 0 ;AN000;JW | ||
| 61 | CHK_W_PROTECT_FLAG DB 0 ;AN000; | ||
| 62 | W_PROTECT_FLAG DB 0 ;AN000; | ||
| 63 | DRIVE_FLAG DB ? ;AN000;JW | ||
| 64 | |||
| 65 | |||
| 66 | NUM_FILES DW 0 ;AN000; | ||
| 67 | LIST_TYPE DW 0 ;AN000; | ||
| 68 | STR_PTR DW 0 ;AN000; | ||
| 69 | FILE_PTR DW 0 ;AN000; | ||
| 70 | |||
| 71 | |||
| 72 | |||
| 73 | DATA ENDS ;AN000; DATA | ||
| 74 | ;********************************************************************** | ||
| 75 | ; | ||
| 76 | .XLIST ;AN000; | ||
| 77 | INCLUDE STRUC.INC ;AN000; | ||
| 78 | INCLUDE MACROS.INC ;AN000; | ||
| 79 | INCLUDE VARSTRUC.INC ;AN000; | ||
| 80 | INCLUDE EXT.INC ;AN000; | ||
| 81 | INCLUDE MAC_EQU.INC ;AN000; | ||
| 82 | EXTRN EXIT_DOS:FAR ;AN000; | ||
| 83 | EXTRN POS_ZERO:FAR ;AN000; | ||
| 84 | EXTRN HOOK_INT_24:FAR ;AN000; | ||
| 85 | EXTRN RESTORE_INT_24:FAR ;AN000; | ||
| 86 | EXTRN GGET_STATUS:FAR ;AN000; | ||
| 87 | .LIST ;AN000; | ||
| 88 | ; | ||
| 89 | ; | ||
| 90 | ;********************************************************************** | ||
| 91 | CODE_FAR SEGMENT PARA PUBLIC 'CODE' ;AN000; Segment for far routine | ||
| 92 | ASSUME CS:CODE_FAR,DS:DATA ;AN000; | ||
| 93 | ; | ||
| 94 | ;******************************************************************************** | ||
| 95 | ; CHECK_DOS_PATH_ROUTINE: Check to see if the sepecified path for the DOS | ||
| 96 | ; SET PATH command is valid. | ||
| 97 | ; | ||
| 98 | ; INPUT: | ||
| 99 | ; SI = Points to an ASCII-N string containing the path to check. There sould | ||
| 100 | ; be an extra byte following the string to facilitate changing the string | ||
| 101 | ; into an ASCII-Z string. | ||
| 102 | ; | ||
| 103 | ; OUTPUT: | ||
| 104 | ; If CY = 0, the path is valid. | ||
| 105 | ; If CY = 1, The path is NOT valid: | ||
| 106 | ; | ||
| 107 | ;******************************************************************************** | ||
| 108 | PUBLIC CHECK_DOS_PATH_ROUTINE ;AN000; | ||
| 109 | CHECK_DOS_PATH_ROUTINE PROC FAR ;AN000; | ||
| 110 | ; | ||
| 111 | MOV PATH_PTR, SI ;AN000; Get the pointer from the path | ||
| 112 | MOV AX, [SI] ;AN000; Get the lenth of the path string | ||
| 113 | .IF < AX EQ 0 > ;AN000; If the length is zero then return that | ||
| 114 | JMP NO_ERROR_DOS_PATH ;AN000; the path is valid. | ||
| 115 | .ENDIF ;AN000; | ||
| 116 | MOV PATH_SIZE, AX ;AN000; Save the size of the string | ||
| 117 | ADD SI, 2 ;AN000; Adjust path pointer for length word | ||
| 118 | ; | ||
| 119 | .REPEAT ;AN000; Check all the path names in the string | ||
| 120 | MOV AL, ';' ;AN000; separator between filenames | ||
| 121 | MOV CX, PATH_PTR ;AN000; Get the pointer to the path | ||
| 122 | ADD CX, 2 ;AN000; Point to the start of the string | ||
| 123 | ADD CX, PATH_SIZE ;AN000; Add the size of the path | ||
| 124 | SUB CX, SI ;AN000; Subtract current pointer - Get length of string remaining | ||
| 125 | CALL ISOLATE_NEXT_PATH ;AN000; Make the next path name into an ASCII-Z string | ||
| 126 | PUSH SEP_POSITION ;AN000; Save the position of the path seperator | ||
| 127 | PUSH WORD PTR ZEROED_CHAR ;AN000; Save the character that was made into a zero | ||
| 128 | MOV CX, SEP_POSITION ;AN000; | ||
| 129 | SUB CX, SI ;AN000; Get the length of the string | ||
| 130 | MOV AX, 0101H ;AN000; | ||
| 131 | CALL FAR PTR CHECK_VALID_PATH ;AN000; Check if it is a valid filename | ||
| 132 | POP WORD PTR ZEROED_CHAR ;AN000; | ||
| 133 | POP SEP_POSITION ;AN000; | ||
| 134 | CALL RESTORE_SEPARATOR ;AN000; Restore the character between the path names | ||
| 135 | .IF < C > ;AN000; Was the file name not valid? | ||
| 136 | JMP ERROR_DOS_PATH ;AN000; Exit the subroutine | ||
| 137 | .ENDIF ;AN000; | ||
| 138 | MOV SI, DI ;AN000; Get the pointer to the next path name | ||
| 139 | .UNTIL < ZERO SI > ;AN000; If zero, all path names have been examined. | ||
| 140 | NO_ERROR_DOS_PATH: ;AN000; | ||
| 141 | CLC ;AN000; | ||
| 142 | JMP EXIT_DOS_PATH ;AN000; | ||
| 143 | ERROR_DOS_PATH: ;AN000; | ||
| 144 | STC ;AN000; | ||
| 145 | EXIT_DOS_PATH: ;AN000; | ||
| 146 | RET ;AN000; | ||
| 147 | ; | ||
| 148 | CHECK_DOS_PATH_ROUTINE ENDP ;AN000; | ||
| 149 | ; | ||
| 150 | ; | ||
| 151 | PUBLIC CHECK_VALID_PATH ;AN000; | ||
| 152 | ;******************************************************************************** | ||
| 153 | ; CHECK_VALID_PATH: Check to see if the sepecified path is valid. | ||
| 154 | ; | ||
| 155 | ; INPUT: | ||
| 156 | ; SI = Points to an ASCII-Z string containing the path to check. There sould | ||
| 157 | ; be an extra byte following the string to facilitate changing the string | ||
| 158 | ; into an ASCII-Z string. | ||
| 159 | ; | ||
| 160 | ; CX = The size of the string containing the path. The zero byte at the end | ||
| 161 | ; of the string is NOT included in the length. | ||
| 162 | ; | ||
| 163 | ; AL = 0: Drive letter cannot be specified. | ||
| 164 | ; = 1: Drive letter is optional and can be specified. | ||
| 165 | ; = 2: Drive letter must be specified. | ||
| 166 | ; | ||
| 167 | ; AH = 0: First non-drive character cannot be a backslash ('\') | ||
| 168 | ; = 1: First non-drive character may be a backslash ('\') | ||
| 169 | ; = 2: First non-drive character must be a backslash ('\') | ||
| 170 | ; | ||
| 171 | ; OUTPUT: | ||
| 172 | ; If CY = 0, the path is valid. | ||
| 173 | ; If CY = 1, The path is NOT valid: | ||
| 174 | ; AX = 1, The drive specified is invalid. | ||
| 175 | ; = 2, There was no drive specified. | ||
| 176 | ; = 3, There was a drive specified. | ||
| 177 | ; = 4, There was a leading backslash | ||
| 178 | ; = 5, The leading backslash was NOT present. | ||
| 179 | ; = 6, There was a trailing backslash. | ||
| 180 | ; | ||
| 181 | ;******************************************************************************** | ||
| 182 | CHECK_VALID_PATH PROC FAR ;AN000; | ||
| 183 | ; | ||
| 184 | PUSH DI ;AN000; | ||
| 185 | MOV STRING_SIZE, CX ;AN000; Save the size of the string | ||
| 186 | MOV PATH_STRING, SI ;AN000; Save the pointer to the string | ||
| 187 | CALL CHECK_VALID_DRIVE ;AN000; See if there is a valid drive | ||
| 188 | .IF < C > ;AN000; Is the drive specified invalid? | ||
| 189 | MOV AX, ERR_INVALID_DRV ;AN000; Return this error code | ||
| 190 | JMP EXIT_CHK_DRV ;AN000; Exit the subroutine | ||
| 191 | .ENDIF ;AN000; | ||
| 192 | .IF < BX EQ 0 > ;AN000; No drive sepecified? | ||
| 193 | .IF < AL EQ 2 > ;AN000; Must the drive be specified? | ||
| 194 | MOV AX, ERR_NO_DRIVE ;AN000; Return this error code | ||
| 195 | JMP EXIT_CHK_DRV ;AN000; Exit the subroutine | ||
| 196 | .ENDIF ;AN000; | ||
| 197 | .ELSE ;AN000; Otherwise, the drive WAS specified. | ||
| 198 | .IF < AL EQ 0 > ;AN000; The drive cannot be specified | ||
| 199 | MOV AX, ERR_DRIVE ;AN000; Return this error code | ||
| 200 | JMP EXIT_CHK_DRV ;AN000; Exit the subroutine | ||
| 201 | .ENDIF ;AN000; | ||
| 202 | ADD SI, 2 ;AN000; Push pointer past the drive | ||
| 203 | .ENDIF ;AN000; | ||
| 204 | .IF < <BYTE PTR [SI]> EQ '\' > ;AN000; Is the next byte a backslash? | ||
| 205 | .IF < AH EQ 0 > ;AN000; Is one permitted? | ||
| 206 | MOV AX, ERR_LEADING_SLASH ;AN000; No! Return this error code | ||
| 207 | JMP EXIT_CHK_DRV ;AN000; Exit the subroutine | ||
| 208 | .ELSE ;AN000; Otherwise, one allowed. | ||
| 209 | INC SI ;AN000; Push pointer past \ | ||
| 210 | .ENDIF ;AN000; | ||
| 211 | .ELSE ;AN000; Otherwise, byte not a backslash | ||
| 212 | .IF < AH EQ 2 > ;AN000; Was one required? | ||
| 213 | MOV AX, ERR_NO_SLASH ;AN000; If so, return this error code | ||
| 214 | JMP EXIT_CHK_DRV ;AN000; Exit from this subroutine | ||
| 215 | .ENDIF ;AN000; | ||
| 216 | .ENDIF ;AN000; | ||
| 217 | ; | ||
| 218 | MOV NUM_PATHS, 0 ;AN000; | ||
| 219 | .REPEAT ;AN000; Check all the path names in the string | ||
| 220 | MOV AL, '\' ;AN000; Separator between filenames | ||
| 221 | MOV CX, PATH_STRING ;AN000; | ||
| 222 | ADD CX, STRING_SIZE ;AN000; | ||
| 223 | SUB CX, SI ;AN000; | ||
| 224 | .IF < NUM_PATHS EQ 0 > AND ;AN000; If this is the first path checked...and | ||
| 225 | .IF < CX EQ 0 > ;AN000; If the length of the path is zero... | ||
| 226 | JMP EXIT_NO_ERROR ;AN000; Exit with no error | ||
| 227 | .ENDIF ;AN000; | ||
| 228 | CALL ISOLATE_NEXT_PATH ;AN000; Make the next path name into an ASCII-Z string | ||
| 229 | CALL CHECK_VALID_FILENAME ;AN000; Check if it is a valid filename | ||
| 230 | CALL RESTORE_SEPARATOR ;AN000; Restore the character between the path names | ||
| 231 | .IF < C > ;AN000; Was the file name not valid? | ||
| 232 | .IF < NUM_PATHS EQ 0 > ;AN000; | ||
| 233 | .LEAVE ;AN000; | ||
| 234 | .ELSE ;AN000; | ||
| 235 | MOV AX, ERR_INVALID_CHAR ;AN000; If not, return this error code | ||
| 236 | JMP EXIT_CHK_DRV ;AN000; Exit the subroutine | ||
| 237 | .ENDIF ;AN000; | ||
| 238 | .ENDIF ;AN000; | ||
| 239 | MOV SI, DI ;AN000; Get the pointer to the next path name | ||
| 240 | .UNTIL < ZERO SI > ;AN000; If zero, all path names have been examined. | ||
| 241 | ; | ||
| 242 | MOV SI, PATH_STRING ;AN000; Get the pointer to the whole string | ||
| 243 | ADD SI, STRING_SIZE ;AN000; Add the string length | ||
| 244 | DEC SI ;AN000; Point to the last character in the string | ||
| 245 | .IF < <BYTE PTR [SI]> EQ '\'> ;AN000; Is the last character a \ ? | ||
| 246 | MOV AX, ERR_LAST_SLASH ;AN000; If so, return this error code | ||
| 247 | JMP EXIT_CHK_DRV ;AN000; Exit from the subroutine | ||
| 248 | .ENDIF ;AN000; | ||
| 249 | EXIT_NO_ERROR: ;AN000; | ||
| 250 | CLC ;AN000; Indicate there were no errors | ||
| 251 | JMP EXIT_CHECK_PATH ;AN000; | ||
| 252 | ; | ||
| 253 | EXIT_CHK_DRV: ;AN000; | ||
| 254 | STC ;AN000; Indicate that there were errors | ||
| 255 | EXIT_CHECK_PATH: ;AN000; | ||
| 256 | POP DI ;AN000; | ||
| 257 | RET ;AN000; | ||
| 258 | ; | ||
| 259 | ; | ||
| 260 | CHECK_VALID_PATH ENDP ;AN000; | ||
| 261 | ;******************************************************************************** | ||
| 262 | ; CHECK_VALID_DRIVE: Check to see if there is a drive specified on the path and | ||
| 263 | ; if there is, is it valid. | ||
| 264 | ; | ||
| 265 | ; INPUT: | ||
| 266 | ; SI - Points to a string containing the path to search. | ||
| 267 | ; | ||
| 268 | ; OUTPUT: | ||
| 269 | ; If CY = 1, the drive is specified and is invalid | ||
| 270 | ; If CY = 0, The drive might be specified and is valid | ||
| 271 | ; BX = 0: The drive is NOT specified. | ||
| 272 | ; = 1: The drive IS specified. | ||
| 273 | ; | ||
| 274 | ; | ||
| 275 | ;******************************************************************************** | ||
| 276 | CHECK_VALID_DRIVE PROC NEAR ;AN000; | ||
| 277 | ; | ||
| 278 | PUSH AX ;AN000; Push all registers used | ||
| 279 | .IF < <BYTE PTR [SI+1]> EQ ':' > ;AN000; Is the second character in the string a ':' | ||
| 280 | MOV AL, [SI] ;AN000; If so, get the first character | ||
| 281 | .IF < AL AE 'A' > AND ;AN000; Is it a capital letter? | ||
| 282 | .IF < AL BE 'Z' > ;AN000; | ||
| 283 | CLC ;AN000; If so, drive valid. | ||
| 284 | MOV BX, 1 ;AN000; Indicate the drive exists | ||
| 285 | .ELSEIF < AL AE 'a' > AND ;AN000; Else, is the drive a lowercase letter? | ||
| 286 | .IF < AL BE 'z' > ;AN000; | ||
| 287 | CLC ;AN000; If so, the drive is valid | ||
| 288 | MOV BX, 1 ;AN000; Indicate that the drive exists | ||
| 289 | .ELSE ;AN000; Otherwise... | ||
| 290 | STC ;AN000; The drive is not valid | ||
| 291 | .ENDIF ;AN000; | ||
| 292 | .ELSE ;AN000; | ||
| 293 | CLC ;AN000; Indicate there were no errors | ||
| 294 | MOV BX, 0 ;AN000; The drive does not exist | ||
| 295 | .ENDIF ;AN000; | ||
| 296 | POP AX ;AN000; | ||
| 297 | ; | ||
| 298 | RET ;AN000; | ||
| 299 | ; | ||
| 300 | CHECK_VALID_DRIVE ENDP ;AN000; | ||
| 301 | ;******************************************************************************** | ||
| 302 | ; CHECK_VALID_FILENAME: Check to see if a filename is valid. | ||
| 303 | ; | ||
| 304 | ; INPUT: | ||
| 305 | ; SI - Points to an ASCII-Z string containing the filename to examine. | ||
| 306 | ; | ||
| 307 | ; OUTPUT: | ||
| 308 | ; If CY = 1, The filename is NOT valid. | ||
| 309 | ; If CY = 0, the filename IS valid. | ||
| 310 | ; | ||
| 311 | ; | ||
| 312 | ;******************************************************************************** | ||
| 313 | CHECK_VALID_FILENAME PROC NEAR ;AN000; | ||
| 314 | ; | ||
| 315 | INC NUM_PATHS ;AN000; | ||
| 316 | AND SEARCH_FLAG, RESET_PERIOD ;AN000; Indicate no periods have been found yet | ||
| 317 | MOV MAX_CHAR, 8 ;AN000; Up to 8 characters can be specified | ||
| 318 | MOV CHAR_COUNT, 0 ;AN000; Number of character so far | ||
| 319 | MOV AL, [SI] ;AN000; Get the first character in the string | ||
| 320 | .WHILE < AL NE 0 > ;AN000; Repeat untill we reach the string's end | ||
| 321 | INC CHAR_COUNT ;AN000; Increment number of characters in path | ||
| 322 | MOV BX, CHAR_COUNT ;AN000; | ||
| 323 | .IF < BX A MAX_CHAR > AND ;AN000; | ||
| 324 | .IF < AL NE '.' > ;AN000; | ||
| 325 | JMP INVALID_CHAR ;AN000; | ||
| 326 | .ENDIF ;AN000; | ||
| 327 | .IF < AL B 20 > ;AN000; Is the character's code less than 20? | ||
| 328 | JMP INVALID_CHAR ;AN000; If so, it's invalid | ||
| 329 | .ELSE ;AN000; Otherwise... | ||
| 330 | CALL VALID_CHAR ;AN000; See if it's invalid | ||
| 331 | .IF < C > ;AN000; If so, | ||
| 332 | JMP INVALID_CHAR ;AN000; Exit the subroutine | ||
| 333 | .ENDIF ;AN000; | ||
| 334 | .ENDIF ;AN000; | ||
| 335 | .IF < AL EQ '.' > ;AN000; Is the character a period? | ||
| 336 | .IF < BIT SEARCH_FLAG AND PERIOD > ;AN000; Is this the first one? | ||
| 337 | JMP INVALID_CHAR ;AN000; If not, filename is invalid. | ||
| 338 | .ELSE ;AN000; Otherwise... | ||
| 339 | OR SEARCH_FLAG, PERIOD ;AN000; Indicate that ONE has been found | ||
| 340 | .IF < CHAR_COUNT EQ 1 > ;AN000; Were there any characters before the period | ||
| 341 | JMP INVALID_CHAR ;AN000; If not, this is an invalid path | ||
| 342 | .ENDIF ;AN000; | ||
| 343 | MOV MAX_CHAR, 3 ;AN000; Allow three characters after the period | ||
| 344 | MOV CHAR_COUNT, 0 ;AN000; No characters yet | ||
| 345 | .ENDIF ;AN000; | ||
| 346 | .ENDIF ;AN000; | ||
| 347 | INC SI ;AN000; Point to next character | ||
| 348 | MOV AL, [SI] ;AN000; Get that character | ||
| 349 | .ENDWHILE ;AN000; | ||
| 350 | .IF < CHAR_COUNT EQ 0 > AND ;AN000; | ||
| 351 | .IF < MAX_CHAR EQ 8 > ;AN000; | ||
| 352 | DEC NUM_PATHS ;AN000; | ||
| 353 | JMP INVALID_CHAR ;AN000; | ||
| 354 | .ENDIF ;AN000; | ||
| 355 | CLC ;AN000; Indicate the name is valid | ||
| 356 | JMP CK_V_FILENAME ;AN000; Exit. | ||
| 357 | ; | ||
| 358 | INVALID_CHAR: ;AN000; Indicate that the name is not valid | ||
| 359 | STC ;AN000; | ||
| 360 | CK_V_FILENAME: ;AN000; | ||
| 361 | RET ;AN000; | ||
| 362 | ; | ||
| 363 | CHECK_VALID_FILENAME ENDP ;AN000; | ||
| 364 | ;******************************************************************************** | ||
| 365 | ; VALID_CHAR: Determine if a character is valid for a filename. | ||
| 366 | ; | ||
| 367 | ; INPUT: | ||
| 368 | ; AL = The character to check. | ||
| 369 | ; | ||
| 370 | ; OUTPUT: | ||
| 371 | ; If CY = 1, the character is not valid. | ||
| 372 | ; If CY = 0, the character IS valid. | ||
| 373 | ; | ||
| 374 | ;******************************************************************************** | ||
| 375 | VALID_CHAR PROC NEAR ;AN000; | ||
| 376 | ; | ||
| 377 | PUSH CX ;AN000; Save the registers used. | ||
| 378 | PUSH DI ;AN000; | ||
| 379 | PUSH ES ;AN000; | ||
| 380 | ; | ||
| 381 | MOV DI, OFFSET INVALID_STRING ;AN000; Get the address of string containing invalid characters | ||
| 382 | PUSH DS ;AN000; Save the data segment | ||
| 383 | POP ES ;AN000; Make ES=DS | ||
| 384 | MOV CX, SIZE_INVALID_STR ;AN000; Get the size of the string | ||
| 385 | CLD ;AN000; Scan forward | ||
| 386 | REPNZ SCASB ;AN000; See if this character is in the invalid string | ||
| 387 | .IF < Z > ;AN000; If so, | ||
| 388 | STC ;AN000; Indicate the character is invalid | ||
| 389 | .ELSE ;AN000; Otherwise... | ||
| 390 | CLC ;AN000; Indicate the character is valid | ||
| 391 | .ENDIF ;AN000; | ||
| 392 | POP CX ;AN000; Restore the registers | ||
| 393 | POP DI ;AN000; | ||
| 394 | POP ES ;AN000; | ||
| 395 | RET ;AN000; | ||
| 396 | ; | ||
| 397 | VALID_CHAR ENDP ;AN000; | ||
| 398 | ;******************************************************************************** | ||
| 399 | ; ISOLATE_NEXT_PATH: Search the filename for a '\'. If found, it is replaced | ||
| 400 | ; by a zero making the string into an ASCII-Z string. | ||
| 401 | ; | ||
| 402 | ; INPUT: | ||
| 403 | ; SI - Points to the first character in the path string | ||
| 404 | ; AL - Contains the character to search for | ||
| 405 | ; CX - Contains the length of the string | ||
| 406 | ; | ||
| 407 | ; OUTPUT: | ||
| 408 | ; DI - Points to the character following the next '\' | ||
| 409 | ; If this character is the last path element, DI = 0. | ||
| 410 | ; | ||
| 411 | ; ZEROED_CHAR is loaded with the character which is made into a zero. | ||
| 412 | ; | ||
| 413 | ;******************************************************************************** | ||
| 414 | ISOLATE_NEXT_PATH PROC NEAR ;AN000; | ||
| 415 | ; | ||
| 416 | PUSH AX ;AN000; Save registers used. | ||
| 417 | PUSH BX ;AN000; | ||
| 418 | PUSH CX ;AN000; | ||
| 419 | PUSH SI ;AN000; | ||
| 420 | ; | ||
| 421 | PUSH ES ;AN000; Make ES = DS | ||
| 422 | PUSH DS ;AN000; | ||
| 423 | POP ES ;AN000; | ||
| 424 | MOV DI, SI ;AN000; Copy the string pointer | ||
| 425 | ; CX holds the length of string after the pointer DI | ||
| 426 | ; AL holds the character to search for | ||
| 427 | CLD ;AN000; Search in the forward direction | ||
| 428 | REPNZ SCASB ;AN000; Search... | ||
| 429 | JNZ END_FOUND ;AN000; If NZ, we reached the string's end | ||
| 430 | MOV ZEROED_CHAR, AL ;AN000; Character overwritten with zero | ||
| 431 | MOV SEP_POSITION, DI ;AN000; Save the position of overwritten char | ||
| 432 | DEC SEP_POSITION ;AN000; | ||
| 433 | MOV BYTE PTR [DI-1], 0 ;AN000; Make the character a zero | ||
| 434 | CMP CX,0 ;AN031; SEH User may have entered semicolon as last char, so check | ||
| 435 | JE END_FOUND2 ;AN031; SEH if it is last char instead of just a separator | ||
| 436 | JMP EXIT_ISOLATE ;AN000; Exit the subroutine | ||
| 437 | END_FOUND: ;AN000; | ||
| 438 | MOV AL, [DI] ;AN000; Get the last character | ||
| 439 | MOV ZEROED_CHAR, AL ;AN000; Save it. | ||
| 440 | MOV SEP_POSITION, DI ;AN000; Save its position | ||
| 441 | MOV BYTE PTR [DI], 0 ;AN000; Make into a zero | ||
| 442 | END_FOUND2: ;AN031; SEH Handle case of semicolon as last character in path | ||
| 443 | MOV DI, 0 ;AN000; Indicate the string is finished | ||
| 444 | EXIT_ISOLATE: ;AN000; | ||
| 445 | POP ES ;AN000; Restore the registers. | ||
| 446 | POP SI ;AN000; | ||
| 447 | POP CX ;AN000; | ||
| 448 | POP BX ;AN000; | ||
| 449 | POP AX ;AN000; | ||
| 450 | ; | ||
| 451 | RET ;AN000; | ||
| 452 | ; | ||
| 453 | ISOLATE_NEXT_PATH ENDP ;AN000; | ||
| 454 | ;******************************************************************************** | ||
| 455 | ; RESTORE_SEPARATOR: Restore the character which separates the characters in | ||
| 456 | ; a path. | ||
| 457 | ; | ||
| 458 | ; INPUT: | ||
| 459 | ; SEP_POSITION - Contain the address of the location to restore the separator. | ||
| 460 | ; ZEROED_CHAR - Contains the character to be restored. | ||
| 461 | ; | ||
| 462 | ; OUTPUT: | ||
| 463 | ; None. | ||
| 464 | ; | ||
| 465 | ;******************************************************************************** | ||
| 466 | RESTORE_SEPARATOR PROC NEAR ;AN000; | ||
| 467 | ; | ||
| 468 | PUSH AX ;AN000; Save registers used | ||
| 469 | PUSH SI ;AN000; | ||
| 470 | MOV SI, SEP_POSITION ;AN000; Get the position of the character | ||
| 471 | MOV AL, ZEROED_CHAR ;AN000; Get the character | ||
| 472 | MOV [SI], AL ;AN000; Save character in this position | ||
| 473 | POP SI ;AN000; Restore the registers | ||
| 474 | POP AX ;AN000; | ||
| 475 | RET ;AN000; | ||
| 476 | ; | ||
| 477 | RESTORE_SEPARATOR ENDP ;AN000; | ||
| 478 | ;******************************************************************************** | ||
| 479 | ; CHANGE_ATTRIBUTE_ROUTINE: Change the attributes on a group of files. | ||
| 480 | ; | ||
| 481 | ; INPUT: | ||
| 482 | ; SI = The address of a list of files to change the attributes of. | ||
| 483 | ; AX = 0: Attach a new attribute to the file. | ||
| 484 | ; AX = 1: Restore the original attribute to the files. | ||
| 485 | ; BX = The number of files in the list. | ||
| 486 | ; | ||
| 487 | ; OUTPUT: | ||
| 488 | ; If CY = 1, there were error encountered. | ||
| 489 | ; If CY = 0, there were no errors. | ||
| 490 | ; | ||
| 491 | ;******************************************************************************** | ||
| 492 | PUBLIC CHANGE_ATTRIBUTE_ROUTINE ;AN000; | ||
| 493 | CHANGE_ATTRIBUTE_ROUTINE PROC FAR ;AN000; | ||
| 494 | ; | ||
| 495 | CALL HOOK_INT_24 ;AN000; | ||
| 496 | ; | ||
| 497 | MOV WAY, AX ;AN000; Save flag indicating whether we are setting or restoring the attrb. | ||
| 498 | MOV NEW_ATTRIB, 02h ;AN000; Set new attribute to hidden. | ||
| 499 | MOV DI, 0 ;AN000; Count of files processed | ||
| 500 | .WHILE < DI B BX > ;AN000; | ||
| 501 | .IF < WAY EQ 0 > ;AN000; Setting the attribute? | ||
| 502 | MOV WORD PTR [SI+12],0 ;AN000; Make filename into a ASCII-Z string | ||
| 503 | MOV DX, SI ;AN000; Load address of filename into DX | ||
| 504 | MOV AX, 4300H ;AN000; Get the file's current attribute | ||
| 505 | DOSCALL ;AN000; | ||
| 506 | .IF < C > ;AN000; Was there an error? | ||
| 507 | JMP CHMOD_ERROR ;AN000; If so, exit the subroutine | ||
| 508 | .ENDIF ;AN000; | ||
| 509 | MOV OLD_ATTRIB, CX ;AN000; Save the attribute | ||
| 510 | MOV CX, NEW_ATTRIB ;AN000; Get the new attribute | ||
| 511 | .ELSE ;AN000; Otherwise, we are restoring the attribute | ||
| 512 | MOV CX, [SI+12] ;AN000; Get the old attribute | ||
| 513 | MOV OLD_ATTRIB, CX ;AN000; Save. | ||
| 514 | MOV WORD PTR [SI+12], 0 ;AN000; Make filename into an ASCII-Z string | ||
| 515 | .ENDIF ;AN000; | ||
| 516 | MOV DX, SI ;AN000; Pointer to the filename | ||
| 517 | MOV AX, 4301H ;AN000; DOS function for setting the attribute | ||
| 518 | DOSCALL ;AN000; Set it. | ||
| 519 | .IF < C > ;AN000; Was there an error? | ||
| 520 | JMP CHMOD_ERROR ;AN000; If so, exit the subroutine | ||
| 521 | .ENDIF ;AN000; | ||
| 522 | MOV CX, OLD_ATTRIB ;AN000; Get the old attribute | ||
| 523 | MOV [SI+12], CX ;AN000; Save in the table | ||
| 524 | ADD SI, 14 ;AN000; Point to the next filename | ||
| 525 | INC DI ;AN000; Increment count of files processed | ||
| 526 | .ENDWHILE ;AN000; | ||
| 527 | CLC ;AN000; Indicate there were no errors | ||
| 528 | RET ;AN000; | ||
| 529 | ; | ||
| 530 | CHMOD_ERROR: ;AN000; | ||
| 531 | STC ;AN000; Indicate there were errors | ||
| 532 | ; | ||
| 533 | CALL RESTORE_INT_24 ;AN000; | ||
| 534 | ; | ||
| 535 | RET ;AN000; | ||
| 536 | ; | ||
| 537 | CHANGE_ATTRIBUTE_ROUTINE ENDP ;AN000; | ||
| 538 | ;**************************************************************************** | ||
| 539 | ; | ||
| 540 | ; COMPARE_ROUTINE: Compare two strings. | ||
| 541 | ; | ||
| 542 | ; INPUT: | ||
| 543 | ; SI = The address of the first string. (ASCII-N string) | ||
| 544 | ; DI = The address of the second string. (ASCII-N string) | ||
| 545 | ; | ||
| 546 | ; OUTPUT: | ||
| 547 | ; If CY = 1, the strings do no compare. | ||
| 548 | ; If CY = 0, the strings are the same. | ||
| 549 | ; | ||
| 550 | ; OPERATION: | ||
| 551 | ; | ||
| 552 | ;**************************************************************************** | ||
| 553 | PUBLIC COMPARE_ROUTINE ;AN000; | ||
| 554 | COMPARE_ROUTINE PROC FAR ;AN000; | ||
| 555 | ; | ||
| 556 | PUSH ES ;AN000; Make ES = DS | ||
| 557 | PUSH DS ;AN000; | ||
| 558 | POP ES ;AN000; | ||
| 559 | ; | ||
| 560 | MOV CX, [SI] ;AN000; Get the length of the first string | ||
| 561 | .IF < [DI] NE CX > ;AN000; Are the lengths of the strings the same? | ||
| 562 | JMP DO_NOT_COMPARE ;AN000; If not, the strings are not the same | ||
| 563 | .ENDIF ;AN000; | ||
| 564 | ADD SI, 2 ;AN000; Move points past the length words | ||
| 565 | ADD DI, 2 ;AN000; | ||
| 566 | CLD ;AN000; Compare in the forward direction | ||
| 567 | REPZ CMPSB ;AN000; Compare the strings | ||
| 568 | JNZ DO_NOT_COMPARE ;AN000; If the zero flag cleared, strings are not the same | ||
| 569 | CLC ;AN000; Indicate the strings do compare | ||
| 570 | JMP EXIT_COMPARE ;AN000; | ||
| 571 | DO_NOT_COMPARE: ;AN000; | ||
| 572 | STC ;AN000; Indicate the strings do no compare | ||
| 573 | EXIT_COMPARE: ;AN000; | ||
| 574 | POP ES ;AN000; | ||
| 575 | RET ;AN000; | ||
| 576 | ; | ||
| 577 | COMPARE_ROUTINE ENDP ;AN000; | ||
| 578 | ;**************************************************************************** | ||
| 579 | ; | ||
| 580 | ; REMOVE_END_BLANKS: Removes the trailing blanks from a string. | ||
| 581 | ; | ||
| 582 | ; INPUT: | ||
| 583 | ; ES:DI Points to the last character in the string. | ||
| 584 | ; | ||
| 585 | ; OUTPUT: | ||
| 586 | ; ES:DI Points to the new end of the string after the blanks have been | ||
| 587 | ; removed. | ||
| 588 | ; | ||
| 589 | ; OPERATION: | ||
| 590 | ; | ||
| 591 | ;**************************************************************************** | ||
| 592 | PUBLIC REMOVE_END_BLANKS ;AN000; | ||
| 593 | REMOVE_END_BLANKS PROC FAR ;AN000; | ||
| 594 | ; | ||
| 595 | MOV CX, 0FFFFH ;AN000; | ||
| 596 | MOV AL, ' ' ;AN000; | ||
| 597 | STD ;AN000; | ||
| 598 | REPZ SCASB ;AN000; | ||
| 599 | .IF < NZ > ;AN000; | ||
| 600 | INC DI ;AN000; | ||
| 601 | .ENDIF ;AN000; | ||
| 602 | RET ;AN000; | ||
| 603 | ; | ||
| 604 | REMOVE_END_BLANKS ENDP ;AN000; | ||
| 605 | ; | ||
| 606 | ;**************************************************************************** | ||
| 607 | ; | ||
| 608 | ; CHECK_WRITE_ROUTINE Determine if the diskette in drive A is write | ||
| 609 | ; protected. | ||
| 610 | ; | ||
| 611 | ; INPUT: | ||
| 612 | ; CX = 0 - drive A ;AN000;JW | ||
| 613 | ; = 1 - drive B ;AN000;JW | ||
| 614 | ; | ||
| 615 | ; OUTPUT: | ||
| 616 | ; If CY = 1, The disk IS write protected. | ||
| 617 | ; If CY = 0, The disk is NOT write protected. | ||
| 618 | ; | ||
| 619 | ; OPERATION: | ||
| 620 | ; | ||
| 621 | ;**************************************************************************** | ||
| 622 | PUBLIC CHECK_WRITE_ROUTINE ;AN000; | ||
| 623 | CHECK_WRITE_ROUTINE PROC FAR ;AN000; | ||
| 624 | ; | ||
| 625 | MOV DRIVE_FLAG,CL ;AN000; | ||
| 626 | ; | ||
| 627 | CALL HOOK_INT_24 ;AN000; | ||
| 628 | ; | ||
| 629 | MOV CHK_W_PROTECT_FLAG, TRUE ;AN000; Indicate to INT 24H handler we are looking for error | ||
| 630 | MOV W_PROTECT_FLAG, FALSE ;AN000; Error has not occured yet. | ||
| 631 | ; | ||
| 632 | MOV W_P_FILENAME_A+3, 0 ;AN000; Make drive string into ASCII-Z string | ||
| 633 | MOV W_P_FILENAME_B+3, 0 ;AN000; Make drive string into ASCII-Z string JW | ||
| 634 | .IF < DRIVE_FLAG eq DRIVE_A > ;AN000;JW | ||
| 635 | MOV DX, OFFSET W_P_FILENAME_A ;AN000; Get address of the string | ||
| 636 | .ELSE ;AN000;JW | ||
| 637 | MOV DX, OFFSET W_P_FILENAME_B ;AN000; Get address of the string JW | ||
| 638 | .ENDIF ;AN000;JW | ||
| 639 | MOV CX, 0 ;AN000; Attribute to give the file | ||
| 640 | MOV INT_24_ERROR, FALSE ;AN000; | ||
| 641 | MOV AH, 5AH ;AN000; DOS Fn. call to create a unique file | ||
| 642 | DOSCALL ;AN000; Create the file | ||
| 643 | .IF < C > ;AN000; Was there an error? | ||
| 644 | .IF < W_PROTECT_FLAG EQ TRUE > ;AN000; If the INT 24H handler was call... | ||
| 645 | JMP WRITE_PROTECTED ;AN000; The disk is write protected. | ||
| 646 | .ELSE ;AN000; Otherwise... | ||
| 647 | JMP CHECK_ERROR ;AN000; There was some other disk error | ||
| 648 | .ENDIF ;AN000; | ||
| 649 | .ELSE ;AN000; | ||
| 650 | .IF < W_PROTECT_FLAG EQ TRUE > ;AN000; If the INT 24H handler was call... | ||
| 651 | JMP WRITE_PROTECTED ;AN000; The disk is write protected. | ||
| 652 | .ENDIF ;AN000; | ||
| 653 | .ENDIF ;AN000; There were no errors... | ||
| 654 | CLOSE_FILE AX ;AN000; Close the created file | ||
| 655 | .IF < DRIVE_FLAG eq DRIVE_A > ;AN000;JW | ||
| 656 | MOV DX, OFFSET W_P_FILENAME_A ;AN000; Get address of the string | ||
| 657 | .ELSE ;AN000;JW | ||
| 658 | MOV DX, OFFSET W_P_FILENAME_B ;AN000; Get address of the string JW | ||
| 659 | .ENDIF ;AN000;JW | ||
| 660 | MOV AH, 41H ;AN000; DOS Fn. for erasing a file | ||
| 661 | DOSCALL ;AN000; Erase the file | ||
| 662 | MOV AX, 0 ;AN000; Indicate the file is NOT write protected | ||
| 663 | CLC ;AN000; Indicate there were no errors | ||
| 664 | JMP CHECK_EXIT ;AN000; Exit the routine | ||
| 665 | |||
| 666 | WRITE_PROTECTED: ;AN000; | ||
| 667 | MOV AX, 1 ;AN000; Indicate the file IS write protected | ||
| 668 | CLC ;AN000; Indicate there were no errors | ||
| 669 | JMP CHECK_EXIT ;AN000; | ||
| 670 | |||
| 671 | CHECK_ERROR: ;AN000; | ||
| 672 | MOV AX, 0 ;AN000; Indicate the file is NOT write protected | ||
| 673 | STC ;AN000; Indicate that there WERE errors | ||
| 674 | |||
| 675 | CHECK_EXIT: ;AN000; | ||
| 676 | CALL RESTORE_INT_24 ;AN000; Restore the original INT 24H handler | ||
| 677 | MOV CHK_W_PROTECT_FLAG, FALSE ;AN000; We are no longer expecting a write protect error | ||
| 678 | RET ;AN000; | ||
| 679 | |||
| 680 | CHECK_WRITE_ROUTINE ENDP ;AN000; | ||
| 681 | ;**************************************************************************** | ||
| 682 | ; | ||
| 683 | ; MATCH_FILES_ROUTINE Determine is a list of file exist on a drive. | ||
| 684 | ; | ||
| 685 | ; INPUT: | ||
| 686 | ; DI = Address of the ASCII-N string containing the drive and path to | ||
| 687 | ; search for the files. | ||
| 688 | ; SI = The address of the list of file. If AX = 2, the first two bytes | ||
| 689 | ; in the list are ignored. | ||
| 690 | ; AX = The type of list to use. | ||
| 691 | ; = 1: Use a list with only 12 bytes between the filenames. | ||
| 692 | ; = 2: Use a list with only 14 bytes between the filenames. | ||
| 693 | ; CX = The number of files in the list. | ||
| 694 | ; | ||
| 695 | ; OUTPUT: | ||
| 696 | ; If CY = 1, There was an error access the disk. | ||
| 697 | ; If CY = 0, There were no errors. | ||
| 698 | ; AX = 1: All the files are on the disk. | ||
| 699 | ; AX = 0: All the files are NOT on the disk. | ||
| 700 | ; | ||
| 701 | ; OPERATION: | ||
| 702 | ; | ||
| 703 | ;**************************************************************************** | ||
| 704 | PUBLIC MATCH_FILES_ROUTINE ;AN000; | ||
| 705 | MATCH_FILES_ROUTINE PROC FAR ;AN000; | ||
| 706 | ; | ||
| 707 | ; | ||
| 708 | PUSH ES ;AN000; Make ES = DS | ||
| 709 | PUSH DS ;AN000; | ||
| 710 | POP ES ;AN000; | ||
| 711 | ; | ||
| 712 | MOV NUM_FILES, CX ;AN000; Save the number of files | ||
| 713 | MOV LIST_TYPE, AX ;AN000; Save the type of the list | ||
| 714 | ; | ||
| 715 | MOV CX, [DI] ;AN000; Get the length of the string | ||
| 716 | ADD DI, 2 ;AN000; Point SI to the start of the string | ||
| 717 | MOV DX, DI ;AN000; Copy the address of the string | ||
| 718 | ADD DI, CX ;AN000; Point to the end of the string | ||
| 719 | .IF < LIST_TYPE EQ 2 > ;AN000; If this list is a 14 byte list... | ||
| 720 | ADD SI, 2 ;AN000; Bypass the first two bytes in the list | ||
| 721 | .ENDIF ;AN000; | ||
| 722 | MOV STR_PTR, DI ;AN000; Save the pointer to the path string | ||
| 723 | MOV FILE_PTR, SI ;AN000; Save the pointer to the file list | ||
| 724 | MOV BX, 0 ;AN000; Initialize the count of files checked | ||
| 725 | ; | ||
| 726 | .WHILE < BX B NUM_FILES > ;AN000; Perform NUM_FILES interations | ||
| 727 | CLD ;AN000; | ||
| 728 | MOV CX, 12 ;AN000; Move 12 bytes for the filename | ||
| 729 | REP MOVSB ;AN000; Move the filename after the path string | ||
| 730 | MOV BYTE PTR [DI], 0 ;AN000; Make string into an ASCII-Z string | ||
| 731 | MOV AH, 4EH ;AN000; DOS Fn. for find a file | ||
| 732 | MOV CX, 0 ;AN000; Attribute used for search | ||
| 733 | DOSCALL ;AN000; Get the matching filename | ||
| 734 | .IF < C > ;AN000; Was there an error? | ||
| 735 | .IF < AX EQ 18 > ;AN000; If error no = 18, then file not found | ||
| 736 | JMP FILE_NOT_FOUND ;AN000; Return to the user | ||
| 737 | .ELSE ;AN000; Otherwise | ||
| 738 | JMP MATCH_ERROR ;AN000; There was some other type of disk error | ||
| 739 | .ENDIF ;AN000; Exit the subroutine | ||
| 740 | .ENDIF ;AN000; | ||
| 741 | MOV DI, STR_PTR ;AN000; Get the pointer to the string | ||
| 742 | MOV SI, FILE_PTR ;AN000; Get the pointer to the file list | ||
| 743 | .IF < LIST_TYPE EQ 1 > ;AN000; Check list type for incrementing the file pointer | ||
| 744 | ADD SI, 12 ;AN000; 12 bytes between files for list type 1 | ||
| 745 | .ELSE ;AN000; | ||
| 746 | ADD SI, 14 ;AN000; 14 bytes between files for list type 2 | ||
| 747 | .ENDIF ;AN000; | ||
| 748 | MOV FILE_PTR, SI ;AN000; Save the new file name pointer | ||
| 749 | INC BX ;AN000; Increment the count of files searched for | ||
| 750 | .ENDWHILE ;AN000; | ||
| 751 | CLC ;AN000; Indicate there were no errors | ||
| 752 | MOV AX, 1 ;AN000; Indicate that all the files were found | ||
| 753 | JMP EXIT_MATCH ;AN000; | ||
| 754 | FILE_NOT_FOUND: ;AN000; | ||
| 755 | CLC ;AN000; Indicate that there were no errors | ||
| 756 | MOV AX, 0 ;AN000; But, all the files were not found | ||
| 757 | JMP EXIT_MATCH ;AN000; | ||
| 758 | MATCH_ERROR: ;AN000; | ||
| 759 | STC ;AN000; Indicate that there were errors | ||
| 760 | EXIT_MATCH: ;AN000; | ||
| 761 | POP ES ;AN000; | ||
| 762 | RET ;AN000; | ||
| 763 | ; | ||
| 764 | MATCH_FILES_ROUTINE ENDP ;AN000; | ||
| 765 | ;************************************************************************ | ||
| 766 | ; | ||
| 767 | ; CLOSE_FILE_ROUTINE: Close File | ||
| 768 | ; | ||
| 769 | ; INPUT: | ||
| 770 | ; BX = The file handle of the file to close. | ||
| 771 | ; | ||
| 772 | ; OUTPUT: | ||
| 773 | ; CY = 0, AX = undefined, successful | ||
| 774 | ; CY = 1, AX = error code | ||
| 775 | ; | ||
| 776 | ; OPERATION: | ||
| 777 | ; | ||
| 778 | ; THIS MACROS CLOSES THE FILE WITH THE GIVEN FILE HANDLE. | ||
| 779 | ; IT MAKES USE OF INT 21 (AH=3EH). | ||
| 780 | ; IF AN ERROR OCCURS, THE CARRY FLAG IS SET, AND THE ERROR CODE | ||
| 781 | ; IS RETURNED IN AX. | ||
| 782 | ; | ||
| 783 | ;************************************************************************** | ||
| 784 | PUBLIC CLOSE_FILE_ROUTINE ;AN000; | ||
| 785 | CLOSE_FILE_ROUTINE PROC FAR ;AN000; | ||
| 786 | ; | ||
| 787 | ; | ||
| 788 | CALL HOOK_INT_24 ;AN000; Hook in the critical error handler | ||
| 789 | MOV INT_24_ERROR, FALSE ;AN000; Indicate no critical error have occured yet | ||
| 790 | MOV AH, 3EH ;AN000; DOS Fn. for closing a file | ||
| 791 | DOSCALL ;AN000; Close the file | ||
| 792 | CALL RESTORE_INT_24 ;AN000; Restore the old critical error handler | ||
| 793 | RET ;AN000; | ||
| 794 | ; | ||
| 795 | CLOSE_FILE_ROUTINE ENDP ;AN000; | ||
| 796 | ;************************************************************** | ||
| 797 | ; | ||
| 798 | ; CREATE_FILE: Create new File | ||
| 799 | ; | ||
| 800 | ; INPUT: | ||
| 801 | ; DI = The address of the filename in ASCII-N format | ||
| 802 | ; CX = The attribute to give the file | ||
| 803 | ; | ||
| 804 | ; OUTPUT: | ||
| 805 | ; If CY = 0: There were no errors. | ||
| 806 | ; AX - The file handle of the created file. | ||
| 807 | ; If CY = 1: There were file errors. AX contains the error code. | ||
| 808 | ; | ||
| 809 | ; OPERATION: | ||
| 810 | ; | ||
| 811 | ; CREATE_FILE CREATES A FILE WITH THE GIVEN NAME USING INT 21H (AH=5BH) | ||
| 812 | ; IF AN ERROR OCCURS, THE CARRY FLAG IS SET, AND THE ERROR CODE | ||
| 813 | ; IS RETURNED IN AX. | ||
| 814 | ; | ||
| 815 | ;************************************************************************** | ||
| 816 | PUBLIC CREATE_FILE_ROUTINE ;AN000; | ||
| 817 | CREATE_FILE_ROUTINE PROC FAR ;AN000; | ||
| 818 | ; | ||
| 819 | CALL HOOK_INT_24 ;AN000; | ||
| 820 | CALL POS_ZERO ;AN000; | ||
| 821 | MOV DX, DI ;AN000; | ||
| 822 | ADD DX, 2 ;AN000; | ||
| 823 | MOV INT_24_ERROR, FALSE ;AN000; | ||
| 824 | MOV AH,5BH ;AN000; | ||
| 825 | DOSCALL ;AN000; | ||
| 826 | CALL RESTORE_INT_24 ;AN000; | ||
| 827 | RET ;AN000; | ||
| 828 | ; | ||
| 829 | CREATE_FILE_ROUTINE ENDP ;AN000; | ||
| 830 | ;**************************************************************************** | ||
| 831 | ; | ||
| 832 | ; ERASE_FILE_ROUTINE: Routine to erase a file. | ||
| 833 | ; | ||
| 834 | ; INPUT: | ||
| 835 | ; DI - The address of an ASCII-N string containing the name of the file | ||
| 836 | ; to erase. | ||
| 837 | ; | ||
| 838 | ; OUTPUT: | ||
| 839 | ; If CY = 0, there were no error encountered. | ||
| 840 | ; If CY = 1, there were errors. AX contains the DOS error code. | ||
| 841 | ; | ||
| 842 | ; OPERATION: | ||
| 843 | ; | ||
| 844 | ; ERASE_FILE ERASES THE FILE USING INT 21H (AH=41H). | ||
| 845 | ; IF AN ERROR OCCURS, THE CARRY FLAG IS SET, AND THE ERROR CODE | ||
| 846 | ; IS RETURNED IN AX. | ||
| 847 | ; | ||
| 848 | ;**************************************************************************** | ||
| 849 | PUBLIC ERASE_FILE_ROUTINE ;AN000; | ||
| 850 | ERASE_FILE_ROUTINE PROC FAR ;AN000; | ||
| 851 | |||
| 852 | CALL HOOK_INT_24 ;AN000; | ||
| 853 | CALL POS_ZERO ;AN000; | ||
| 854 | MOV INT_24_ERROR, FALSE ;AN000; | ||
| 855 | MOV DX, DI ;AN000; | ||
| 856 | ADD DX, 2 ;AN000; | ||
| 857 | MOV AH,41H ;AN000; | ||
| 858 | DOSCALL ;AN000; | ||
| 859 | CALL RESTORE_INT_24 ;AN000; | ||
| 860 | RET ;AN000; | ||
| 861 | |||
| 862 | ERASE_FILE_ROUTINE ENDP ;AN000; | ||
| 863 | ;**************************************************************************** | ||
| 864 | ; | ||
| 865 | ; CHMOD_FILE_ROUTINE: Change file attributes to read/write | ||
| 866 | ; | ||
| 867 | ; SYNTAX: CHMOD_FILE_ROUTINE | ||
| 868 | ; | ||
| 869 | ; INPUT: DI = POINTER TO ASCII-N STRING - FILE NAME | ||
| 870 | ; | ||
| 871 | ; OUTPUT: None. | ||
| 872 | ; | ||
| 873 | ; OPERATION: | ||
| 874 | ; The CHMOD dos call is executed (43H) to change the file's attributes | ||
| 875 | ; to read/write. | ||
| 876 | ; | ||
| 877 | ;**************************************************************************** | ||
| 878 | PUBLIC CHMOD_FILE_ROUTINE ;AN000; | ||
| 879 | CHMOD_FILE_ROUTINE PROC FAR ;AN000; | ||
| 880 | |||
| 881 | CALL HOOK_INT_24 ;AN000; | ||
| 882 | CALL POS_ZERO ;AN000; | ||
| 883 | MOV INT_24_ERROR, FALSE ;AN000; | ||
| 884 | MOV DX, DI ;AN000; | ||
| 885 | ADD DX, 2 ;AN000; | ||
| 886 | MOV AH,043H ;AN000; | ||
| 887 | MOV AL,01 ;AN000; | ||
| 888 | XOR CX,CX ;AN000; | ||
| 889 | DOSCALL ;AN000; | ||
| 890 | CALL RESTORE_INT_24 ;AN000; | ||
| 891 | RET ;AN000; | ||
| 892 | |||
| 893 | CHMOD_FILE_ROUTINE ENDP ;AN000; | ||
| 894 | ;************************************************************************ | ||
| 895 | ; FIND_FILE: Find File | ||
| 896 | ; | ||
| 897 | ; INPUT: | ||
| 898 | ; DI - The address of an ASCII-N string contian the name of the file | ||
| 899 | ; to find. | ||
| 900 | ; CX - The attribute to be used in the search. | ||
| 901 | ; | ||
| 902 | ; OUTPUT: | ||
| 903 | ; If CY = 1, there were errors encountered. AX contians the DOS error | ||
| 904 | ; code. | ||
| 905 | ; If CY = 0, there were no errors. | ||
| 906 | ; | ||
| 907 | ; OPERATION: | ||
| 908 | ; | ||
| 909 | ; FINDFILE FINDS THE FIRST FILENAME SPECIFIED USING INT 21 (AH=4EH). | ||
| 910 | ; AND LOADS INFORMATION INTO THE CURRENT DTA. | ||
| 911 | ; NOTE : THE DEFAULT DTA IS AT 80H IN THE PSP. | ||
| 912 | ; IF AN ERROR OCCURS, THE CARRY FLAG IS SET, AND THE ERROR CODE | ||
| 913 | ; IS RETURNED IN AX. | ||
| 914 | ; | ||
| 915 | ;************************************************************************ | ||
| 916 | PUBLIC FIND_FILE_ROUTINE ;AN000; | ||
| 917 | FIND_FILE_ROUTINE PROC FAR ;AN000; | ||
| 918 | ; | ||
| 919 | CALL HOOK_INT_24 ;AN000; | ||
| 920 | CALL POS_ZERO ;AN000; | ||
| 921 | MOV DX, DI ;AN000; | ||
| 922 | ADD DX, 2 ;AN000; | ||
| 923 | MOV INT_24_ERROR, FALSE ;AN000; | ||
| 924 | ; CX Contains the attribute to be used in the search | ||
| 925 | MOV AH,4EH ;AN000; | ||
| 926 | DOSCALL ;AN000; | ||
| 927 | CALL RESTORE_INT_24 ;AN000; | ||
| 928 | RET ;AN000; | ||
| 929 | |||
| 930 | FIND_FILE_ROUTINE ENDP ;AN000; | ||
| 931 | ;************************************************************************** | ||
| 932 | ; | ||
| 933 | ; OPEN_FILE_ROUTINE - Open File | ||
| 934 | ; | ||
| 935 | ; INPUT: | ||
| 936 | ; DI - The address of an ASCII-N string containing the name of the | ||
| 937 | ; file to open. | ||
| 938 | ; AL - The mode to open the file with ( 0 = read, 1 = write, | ||
| 939 | ; 2 = read/write) | ||
| 940 | ; | ||
| 941 | ; OUTPUT: | ||
| 942 | ; If CY = 1, there were errors encountered. AX contains the DOS error | ||
| 943 | ; code. | ||
| 944 | ; If CY = 0, there were no errors. AX contains the file handle. | ||
| 945 | ; | ||
| 946 | ; OPERATION: | ||
| 947 | ; | ||
| 948 | ; THIS MACRO OPENS A FILE FOR READ/WRITE OPERATIONS. | ||
| 949 | ; IT MAKES USE OF INT 21 (AH=3DH). | ||
| 950 | ; IF AN ERROR OCCURS, THE CARRY FLAG IS SET, AND THE ERROR CODE | ||
| 951 | ; IS RETURNED IN AX. | ||
| 952 | ; | ||
| 953 | ;************************************************************************** | ||
| 954 | PUBLIC OPEN_FILE_ROUTINE ;AN000; | ||
| 955 | OPEN_FILE_ROUTINE PROC FAR ;AN000; | ||
| 956 | ; | ||
| 957 | CALL HOOK_INT_24 ;AN000; | ||
| 958 | CALL POS_ZERO ;AN000; | ||
| 959 | MOV INT_24_ERROR, FALSE ;AN000; | ||
| 960 | MOV DX, DI ;AN000; | ||
| 961 | ADD DX, 2 ;AN000; | ||
| 962 | ; AL contains the mode for opening the file. | ||
| 963 | MOV AH,3DH ;AN000; | ||
| 964 | DOSCALL ;AN000; | ||
| 965 | CALL RESTORE_INT_24 ;AN000; | ||
| 966 | RET ;AN000; | ||
| 967 | |||
| 968 | OPEN_FILE_ROUTINE ENDP ;AN000; | ||
| 969 | ;************************************************************************** | ||
| 970 | ; | ||
| 971 | ; RENAME_FILE_ROUTINE - Rename File | ||
| 972 | ; | ||
| 973 | ; INPUT: | ||
| 974 | ; SI - The address of an ASCII-N string containing the file to rename | ||
| 975 | ; current file name. | ||
| 976 | ; DI - The address of an ASCII-N string containing the new name for the | ||
| 977 | ; file. | ||
| 978 | ; | ||
| 979 | ; OUTPUT: | ||
| 980 | ; If CY = 1, there were errors encountered. AX contains the DOS error | ||
| 981 | ; error code. | ||
| 982 | ; If CY = 0, there were no errors. | ||
| 983 | ; | ||
| 984 | ; | ||
| 985 | ; OPERATION: | ||
| 986 | ; | ||
| 987 | ; THIS MACRO RENAMES A FILE GIVEN 2 NAMES. | ||
| 988 | ; IT MAKES USE OF INT 21 (AH=56H). | ||
| 989 | ; IF AN ERROR OCCURS, THE CARRY FLAG IS SET, AND THE ERROR CODE | ||
| 990 | ; IS RETURNED IN AX. | ||
| 991 | ; | ||
| 992 | ;************************************************************************** | ||
| 993 | PUBLIC RENAME_FILE_ROUTINE ;AN000; | ||
| 994 | RENAME_FILE_ROUTINE PROC FAR ;AN000; | ||
| 995 | |||
| 996 | CALL HOOK_INT_24 ;AN000; | ||
| 997 | PUSH ES ;AN000; | ||
| 998 | PUSH DS ;AN000; | ||
| 999 | POP ES ;AN000; | ||
| 1000 | PUSH DI ;AN000; | ||
| 1001 | ; SI Contains the address of the string containing the old filename. | ||
| 1002 | MOV DI, SI ;AN000; | ||
| 1003 | CALL POS_ZERO ;AN000; | ||
| 1004 | MOV DX, DI ;AN000; | ||
| 1005 | ADD DX, 2 ;AN000; | ||
| 1006 | |||
| 1007 | POP DI ;AN000; | ||
| 1008 | ; DI contains the address of the string containing the new filename. | ||
| 1009 | CALL POS_ZERO ;AN000; | ||
| 1010 | ADD DI, 2 ;AN000; | ||
| 1011 | |||
| 1012 | MOV INT_24_ERROR, FALSE ;AN000; | ||
| 1013 | MOV AH,56H ;AN000; | ||
| 1014 | DOSCALL ;AN000; | ||
| 1015 | POP ES ;AN000; | ||
| 1016 | CALL RESTORE_INT_24 ;AN000; | ||
| 1017 | RET ;AN000; | ||
| 1018 | |||
| 1019 | RENAME_FILE_ROUTINE ENDP ;AN000; | ||
| 1020 | ;************************************************************************** | ||
| 1021 | ; | ||
| 1022 | ; READ_FILE_ROUTINE: Transfer the specified number of bytes from a file into a | ||
| 1023 | ; buffer location. | ||
| 1024 | ; | ||
| 1025 | ; INPUT: | ||
| 1026 | ; BX - The handle of the file to read. | ||
| 1027 | ; DX - The address of where to store the data | ||
| 1028 | ; CX - The number of characters to read | ||
| 1029 | ; | ||
| 1030 | ; OUTPUT: | ||
| 1031 | ; CY = 0, Read success. AX - number of bytes read | ||
| 1032 | ; CY = 1, Read error. AX contains the error code. | ||
| 1033 | ; | ||
| 1034 | ; OPERATION: | ||
| 1035 | ; | ||
| 1036 | ; THIS MACRO READS TO AN ALREADY OPENED FILE. | ||
| 1037 | ; IT MAKES USE OF INT 21 (AH=3FH). | ||
| 1038 | ; AX WILL RETURN THE NUMBER BYTES ACTUALLY WRITTEN. | ||
| 1039 | ; | ||
| 1040 | ;************************************************************************ | ||
| 1041 | PUBLIC READ_FILE_ROUTINE ;AN000; | ||
| 1042 | READ_FILE_ROUTINE PROC FAR ;AN000; | ||
| 1043 | ; | ||
| 1044 | CALL HOOK_INT_24 ;AN000; | ||
| 1045 | MOV INT_24_ERROR, FALSE ;AN000; | ||
| 1046 | ; BX - The file handle | ||
| 1047 | ; CX - The number of bytes to read | ||
| 1048 | ; DX - The address of the buffer to store the data | ||
| 1049 | MOV AH,3FH ;AN000; | ||
| 1050 | DOSCALL ;AN000; | ||
| 1051 | CALL RESTORE_INT_24 ;AN000; | ||
| 1052 | RET ;AN000; | ||
| 1053 | |||
| 1054 | READ_FILE_ROUTINE ENDP ;AN000; | ||
| 1055 | ;************************************************************************** | ||
| 1056 | ; | ||
| 1057 | ; WRITE_FILE_ROUTINE: Transfer the specified number of bytes from a buffer into a | ||
| 1058 | ; specified file. | ||
| 1059 | ; | ||
| 1060 | ; INPUT: | ||
| 1061 | ; BX - The handle of the file to write to. | ||
| 1062 | ; DX - The address of where the data is stored. | ||
| 1063 | ; CX - The number of characters to write. | ||
| 1064 | ; | ||
| 1065 | ; OUTPUT: | ||
| 1066 | ; CY = 0, Write success. AX - number of bytes written. | ||
| 1067 | ; CY = 1, Write error. AX contains the error code. | ||
| 1068 | ; | ||
| 1069 | ; OPERATION: | ||
| 1070 | ; | ||
| 1071 | ; THIS MACRO WRITES TO AN ALREADY OPENED FILE. | ||
| 1072 | ; IT MAKES USE OF INT 21 (AH=3DH). | ||
| 1073 | ; AX WILL RETURN THE NUMBER BYTES ACTUALLY WRITTEN. | ||
| 1074 | ; | ||
| 1075 | ;************************************************************************ | ||
| 1076 | PUBLIC WRITE_FILE_ROUTINE ;AN000; | ||
| 1077 | WRITE_FILE_ROUTINE PROC FAR ;AN000; | ||
| 1078 | ; | ||
| 1079 | CALL HOOK_INT_24 ;AN000; | ||
| 1080 | MOV INT_24_ERROR, FALSE ;AN000; | ||
| 1081 | ; BX - The file handle | ||
| 1082 | ; CX - The number of bytes to read | ||
| 1083 | ; DX - The address of the buffer to store the data | ||
| 1084 | MOV AH,40H ;AN000; | ||
| 1085 | DOSCALL ;AN000; | ||
| 1086 | CALL RESTORE_INT_24 ;AN000; | ||
| 1087 | RET ;AN000; | ||
| 1088 | |||
| 1089 | WRITE_FILE_ROUTINE ENDP ;AN000; | ||
| 1090 | ;*************************************************************************** | ||
| 1091 | ; | ||
| 1092 | ; CHECK_DISK: Check is the specified fixed disk is present. If disk is | ||
| 1093 | ; present, return disk partition status. | ||
| 1094 | ; | ||
| 1095 | ; INPUT: | ||
| 1096 | ; AX = 1: First fixed disk. | ||
| 1097 | ; = 2: Second fixed disk. | ||
| 1098 | ; | ||
| 1099 | ; OUTPUT: | ||
| 1100 | ; CX = 0: Disk not present. | ||
| 1101 | ; = 1: Disk present - No DOS or EDOS partitions | ||
| 1102 | ; = 2: Disk present - DOS or EDOS partitions exist | ||
| 1103 | ; BX = 01H: Primary DOS partition exists | ||
| 1104 | ; = 02H: Extended DOS partitions exists | ||
| 1105 | ; = 04H: Logical drives exist | ||
| 1106 | ; = 08H: Free space exists in EDOS partition | ||
| 1107 | ; = 10H: Free space exists on disk | ||
| 1108 | ; More than one status bit can be set | ||
| 1109 | ; DX = 0: There is no free space in EDOS partition and the | ||
| 1110 | ; disk. | ||
| 1111 | ; = 1: There is free space in the EDOS partition. | ||
| 1112 | ; = 2: There is no EDOS partition, but there is free | ||
| 1113 | ; disk space. | ||
| 1114 | ; DI = Buffer for fixed disk status information. | ||
| 1115 | ; | ||
| 1116 | ; OPERATION: A call is performed to the FDISK utility (GET_DISK_STATUS) | ||
| 1117 | ; to get the status of the specified fixed disk drive. The returned | ||
| 1118 | ; status information is checked and the memory variables are set as | ||
| 1119 | ; specified above. | ||
| 1120 | ; | ||
| 1121 | ;*************************************************************************** | ||
| 1122 | PUBLIC CHECK_DISK_ROUTINE ;AN000; | ||
| 1123 | CHECK_DISK_ROUTINE PROC FAR ;AN000; | ||
| 1124 | ; | ||
| 1125 | PUSH ES ;AN000; Make ES = DS | ||
| 1126 | PUSH DS ;AN000; | ||
| 1127 | POP ES ;AN000; | ||
| 1128 | PUSH DI ;AN000; | ||
| 1129 | ADD DI, 2 ;AN000; | ||
| 1130 | CALL GGET_STATUS ;AN000; | ||
| 1131 | POP DI ;AN000; | ||
| 1132 | MOV [DI+1], CL ;AN000; Store the number of table entries | ||
| 1133 | .IF < ZERO AX > ;AN000; | ||
| 1134 | .IF < BIT BX AND M_DOS_EDOS_PART > ;AN000; | ||
| 1135 | MOV CX, PRESENT_WITH_PART ;AN000; | ||
| 1136 | .ELSE ;AN000; | ||
| 1137 | MOV CX, PRESENT_WITHOUT_PART ;AN000; | ||
| 1138 | .ENDIF ;AN000; | ||
| 1139 | .ELSE ;AN000; | ||
| 1140 | MOV CX, NOT_PRESENT ;AN000; | ||
| 1141 | .ENDIF ;AN000; | ||
| 1142 | MOV DX, NO_EDOS_SPACE ;AN000; Initialize | ||
| 1143 | .IF < BIT BX AND M_EDOS_EXISTS > ;AN000; Does the extended DOS partition exist? | ||
| 1144 | .IF < BIT BX AND M_EDOS_SPACE > ;AN000; Yes! Is there free space in it? | ||
| 1145 | MOV DX, FREE_EDOS_SPACE ;AN000; Indicate that there is free space | ||
| 1146 | .ELSEIF < BIT BX NAND M_FREE_SPACE > ;AN000; Is there no free space on the disk? | ||
| 1147 | MOV DX, NO_EDOS_SPACE ;AN000; Indicate there is no free space in EDOS or on the disk. | ||
| 1148 | .ENDIF ;AN000; | ||
| 1149 | .ELSEIF < BIT BX AND M_FREE_SPACE > ;AN000; No! There is no EDOS partition | ||
| 1150 | MOV DX, NO_EDOS_BUT_SPACE ;AN000; But there is free space on the disk | ||
| 1151 | .ENDIF ;AN000; | ||
| 1152 | POP ES ;AN000; | ||
| 1153 | RET ;AN000; | ||
| 1154 | ; | ||
| 1155 | CHECK_DISK_ROUTINE ENDP ;AN000; | ||
| 1156 | ;************************************************************************;; | ||
| 1157 | ; | ||
| 1158 | ; CHECK_VALID_MEDIA: Check if the diskettes attached will support | ||
| 1159 | ; installation of SELECT. Also, check if install destination will | ||
| 1160 | ; be selected by user or determined by SELECT. | ||
| 1161 | ; | ||
| 1162 | ; SYNTAX: CHECK_VALID_MEDIA var_disk_a, var_disk_b, var_tot, var_disk, | ||
| 1163 | ; var_def, var_index, var_option | ||
| 1164 | ; | ||
| 1165 | ; INPUT: | ||
| 1166 | ; var_disk_a = diskette A presence and type | ||
| 1167 | ; var_disk_b = diskette B presence and type | ||
| 1168 | ; var_tot = total number of dikettes | ||
| 1169 | ; var_disk = 0: first fixed disk is not present | ||
| 1170 | ; > 0: first fixed disk is present | ||
| 1171 | ; | ||
| 1172 | ; OUTPUT: | ||
| 1173 | ; CY = 0: Success variables are returned as defined below. | ||
| 1174 | ; CY = 1: Error - invalid media | ||
| 1175 | ; var_def = 0 use default destination drive | ||
| 1176 | ; = 1 default destination drive not applicable | ||
| 1177 | ; var_index = 1 default destination is drive C | ||
| 1178 | ; = 2 default destination is drive B | ||
| 1179 | ; var_option = 1 possible drive B or C | ||
| 1180 | ; = 2 possible drive A or C | ||
| 1181 | ; = 3 possible drive A or B or C | ||
| 1182 | ; = 4 possible drive A or B | ||
| 1183 | ; | ||
| 1184 | ; OPERATION: The diskette drive types are checked for valid media type. | ||
| 1185 | ; If the diskette media types are valid, a check is made to determine if | ||
| 1186 | ; install destination will be user selected or will be determined by | ||
| 1187 | ; SELECT. The following checks are made. | ||
| 1188 | ; | ||
| 1189 | ; - if one diskette, return valid media and default destination is A | ||
| 1190 | ; | ||
| 1191 | ; - If two diskettes only, return valid and: | ||
| 1192 | ; if A = B, default = B | ||
| 1193 | ; if A <> B, default = A | ||
| 1194 | ; if A and B are mixed 720 and 1.44, destination option is A or B | ||
| 1195 | ; | ||
| 1196 | ; - If one diskette and a fixed disk only, return valid media and | ||
| 1197 | ; destination option is drive A or C. | ||
| 1198 | ; | ||
| 1199 | ; - If two diskettes and a fixed disk, return valid media and: | ||
| 1200 | ; if A = B, destination option is B or C | ||
| 1201 | ; if A <> B, destination option is A or C | ||
| 1202 | ; if A and B are mixed 720 and 1.44, destination option is | ||
| 1203 | ; A or B or C | ||
| 1204 | ; | ||
| 1205 | ;************************************************************************;; | ||
| 1206 | PUBLIC CHECK_VALID_MEDIA_ROUTINE ;AN111;JW | ||
| 1207 | CHECK_VALID_MEDIA_ROUTINE PROC FAR ;AN111;JW | ||
| 1208 | |||
| 1209 | |||
| 1210 | VAR_DISK_A EQU AL ;AN111;JW | ||
| 1211 | VAR_DISK_B EQU BL ;AN111;JW | ||
| 1212 | VAR_DEF EQU CL ;AN111;JW | ||
| 1213 | VAR_INDEX EQU DX ;AN111;JW | ||
| 1214 | VAR_DISK EQU SI ;AN111;JW | ||
| 1215 | VAR_OPTION EQU DI ;AN111;JW | ||
| 1216 | |||
| 1217 | .IF < VAR_DISK_A NE E_DISKETTE_INV > ;AN111; Is disk A present | ||
| 1218 | .IF <VAR_DISK_B NE E_DISKETTE_INV> ;AN111; Is disk B present | ||
| 1219 | .IF < VAR_DISK GT 0 > ;AN111; Hard disk is present? | ||
| 1220 | MOV VAR_DEF, DO_NOT_USE_DEFAULT ;AN111; Yes! Destination drive is undefined | ||
| 1221 | MOV VAR_OPTION,E_OPTION_B_C ;AN111; options will be B or C | ||
| 1222 | MOV VAR_INDEX,DEF_DEST_C ;AN073; SEH highlight option C | ||
| 1223 | CLC ;AN111; Indicate valid media | ||
| 1224 | .ELSE ;AN111; | ||
| 1225 | MOV VAR_DEF, USE_DEFAULT ;AN111; Yes! Use the default destination = B | ||
| 1226 | MOV VAR_INDEX, DEF_DEST_B ;AN111; Drive B is that default | ||
| 1227 | CLC ;AN111; Indicate valid media | ||
| 1228 | .ENDIF ;AN111; | ||
| 1229 | .ELSE ;AN111; | ||
| 1230 | .IF < VAR_DISK GT 0 > ;AN111; Hard disk is present? | ||
| 1231 | MOV VAR_DEF, DO_NOT_USE_DEFAULT ;AN111; Yes! Destination drive is undefined | ||
| 1232 | MOV VAR_OPTION, E_OPTION_A_C ;AN111; options are A or C | ||
| 1233 | MOV VAR_INDEX,DEF_DEST_C ;AN073; SEH highlight option C | ||
| 1234 | CLC ;AN111; Indicate valid media | ||
| 1235 | .ELSE ;AN111; | ||
| 1236 | MOV VAR_DEF, USE_DEFAULT ;AN111; no, Use the default destination | ||
| 1237 | MOV VAR_INDEX, DEF_DEST_A ;AN111; Drive A is that default | ||
| 1238 | CLC ;AN111; Indicate valid media | ||
| 1239 | .ENDIF ;AN111; | ||
| 1240 | .ENDIF ;AN111; | ||
| 1241 | .ELSE ;AN111; | ||
| 1242 | STC ;AN111; Indicate invalid media | ||
| 1243 | .ENDIF ;AN111; | ||
| 1244 | RET ;AN111; | ||
| 1245 | |||
| 1246 | CHECK_VALID_MEDIA_ROUTINE ENDP ;AN111;JW | ||
| 1247 | ;************************************************************************;; | ||
| 1248 | ; | ||
| 1249 | ; SCAN_DISK_TABLE: Scan the specified disk status table from the | ||
| 1250 | ; specified index item for specified field and return status information. | ||
| 1251 | ; | ||
| 1252 | ; INPUT: | ||
| 1253 | ; CX = 1: First fixed disk | ||
| 1254 | ; = 2: Second fixed disk | ||
| 1255 | ; AX = Index of the information to return | ||
| 1256 | ; | ||
| 1257 | ; OUTPUT: | ||
| 1258 | ; AX = 0: Success - Index into table is valid | ||
| 1259 | ; = 1: Error - Index invalid or end of table | ||
| 1260 | ; N_NAME_PART = Partition name. | ||
| 1261 | ; N_SIZE_PART = Partition size. | ||
| 1262 | ; N_STATUS_PART = Partition status | ||
| 1263 | ; P_DRIVE_PART = Drive letter assigned. | ||
| 1264 | ; P_LEVEL1_PART = Version number (1st part). For DOS 4.00 1st part = blank | ||
| 1265 | ; P_LEVEL2_PART = Version number (2nd part). For DOS 4.00 2nd part = 4 | ||
| 1266 | ; P_LEVEL3_PART = Version number (3rd part). For DOS 4.00 3rd part = . | ||
| 1267 | ; P_LEVEL4_PART = Version number (4th part). For DOS 4.00 4th part = 0 | ||
| 1268 | ; | ||
| 1269 | ; OPERATION: | ||
| 1270 | ; Starts scanning the disk table from the point indicated by var_index | ||
| 1271 | ; for either the name, status or type. The table is scanned until either | ||
| 1272 | ; the desired entry is found, or the end of the table is reached. If | ||
| 1273 | ; the end of the table is reached before a matching entry is found, then | ||
| 1274 | ; var_ret returns 1, else if an entry is found, it returns 0. | ||
| 1275 | ; If found, var_index will also return the index of the entry. | ||
| 1276 | ; | ||
| 1277 | ; Note: The index of the first entry in the table is 1. | ||
| 1278 | ; | ||
| 1279 | ;************************************************************************;; | ||
| 1280 | PUBLIC SCAN_DISK_TABLE_ROUTINE ;AN000; | ||
| 1281 | SCAN_DISK_TABLE_ROUTINE PROC FAR ;AN000; | ||
| 1282 | |||
| 1283 | MOV BX, 0 ;AN000; | ||
| 1284 | .IF < CX EQ TABLE_ONE > ;AN000; | ||
| 1285 | MOV SI, OFFSET DISK_1_START ;AN000; Get the address of the first table | ||
| 1286 | MOV BL, DISK_1_VAL_ITEM ;AN000; Number of entries in the first table | ||
| 1287 | .ELSE ;AN000; | ||
| 1288 | MOV SI, OFFSET DISK_2_START ;AN000; Get the address of the second table | ||
| 1289 | MOV BL, DISK_2_VAL_ITEM ;AN000; Number of entries in the second table | ||
| 1290 | .ENDIF ;AN000; | ||
| 1291 | .IF < AX BE BX > ;AN000; | ||
| 1292 | ; AX contains the index | ||
| 1293 | DEC AX ;AN000; Make the first index a 0 | ||
| 1294 | MOV DX, TYPE DISK_STATUS ;AN000; Number of bytes in the structure | ||
| 1295 | MUL DX ;AN000; Calculate the offset into the table | ||
| 1296 | ADD SI, AX ;AN000; Add to the address of the table | ||
| 1297 | COPY_BYTE N_NAME_PART, [SI].N_PART_NAME ;AN000; Copy the table entries | ||
| 1298 | COPY_WORD N_SIZE_PART, [SI].N_PART_SIZE ;AN000; | ||
| 1299 | COPY_BYTE N_STATUS_PART, [SI].N_PART_STATUS ;AN000; | ||
| 1300 | COPY_BYTE P_DRIVE_PART, [SI].P_PART_DRIVE ;AN000; | ||
| 1301 | COPY_BYTE N_TYPE_PART, [SI].N_PART_TYPE ;AN000; | ||
| 1302 | COPY_BYTE N_LEVEL1_PART, [SI].N_PART_LEVEL1 ;AN065;SEH 1st part of version number For DOS 4.00 1st part = blank | ||
| 1303 | COPY_BYTE N_LEVEL2_PART, [SI].N_PART_LEVEL2 ;AN065;SEH 2nd part of version number For DOS 4.00 2nd part = 4 | ||
| 1304 | COPY_BYTE N_LEVEL3_PART, [SI].N_PART_LEVEL3 ;AN065;SEH 2nd part of version number For DOS 4.00 3rd part = . | ||
| 1305 | COPY_BYTE N_LEVEL4_PART, [SI].N_PART_LEVEL4 ;AN065;SEH 2nd part of version number For DOS 4.00 4th part = 0 | ||
| 1306 | MOV AX, DATA_VALID ;AN000; | ||
| 1307 | .ELSE ;AN000; | ||
| 1308 | MOV AX, DATA_INVALID ;AN000; | ||
| 1309 | .ENDIF ;AN000; | ||
| 1310 | RET ;AN000; | ||
| 1311 | |||
| 1312 | SCAN_DISK_TABLE_ROUTINE ENDP ;AN000; | ||
| 1313 | ;************************************************************************;; | ||
| 1314 | ; | ||
| 1315 | ; UPDATE_DISK_TABLE: Update the specifed disk status table for the | ||
| 1316 | ; specified index item. | ||
| 1317 | ; | ||
| 1318 | ; INPUT: | ||
| 1319 | ; CX = 1: First fixed disk | ||
| 1320 | ; = 2: Second fixed disk | ||
| 1321 | ; AX = Index into table | ||
| 1322 | ; | ||
| 1323 | ; OUTPUT: | ||
| 1324 | ; AX = 0: Success - Index into table is valid | ||
| 1325 | ; = 1: Error - Index into table is not valid | ||
| 1326 | ; partition name = N_NAME_PART | ||
| 1327 | ; partition size = N_SIZE_PART | ||
| 1328 | ; partition status = N_STATUS_PART | ||
| 1329 | ; partition type = N_TYPE_PART | ||
| 1330 | ; drive letter = P_DRIVE_PART | ||
| 1331 | ; | ||
| 1332 | ; OPERATION: If the index into the disk table is valid, the disk table | ||
| 1333 | ; is updated for the specifed index. Disk status information is obtained | ||
| 1334 | ; from pre-defined locations as specified above. | ||
| 1335 | ; | ||
| 1336 | ;************************************************************************;; | ||
| 1337 | PUBLIC UPDATE_DISK_TABLE_ROUTINE ;AN000; | ||
| 1338 | UPDATE_DISK_TABLE_ROUTINE PROC FAR ;AN000; | ||
| 1339 | |||
| 1340 | MOV BH, 0 ;AN000; | ||
| 1341 | .IF < CX EQ TABLE_ONE > ;AN000; | ||
| 1342 | MOV SI, OFFSET DISK_1_START ;AN000; Get the address of the first table | ||
| 1343 | MOV BL, DISK_1_VAL_ITEM ;AN000; Number of entries in the first table | ||
| 1344 | .ELSE ;AN000; | ||
| 1345 | MOV SI, OFFSET DISK_2_START ;AN000; Get the address of the second table | ||
| 1346 | MOV BL, DISK_2_VAL_ITEM ;AN000; Number of entries in the second table | ||
| 1347 | .ENDIF ;AN000; | ||
| 1348 | ; AX contains the index. | ||
| 1349 | DEC AX ;AN000; Make the first index a 0 | ||
| 1350 | MOV DX, TYPE DISK_STATUS ;AN000; Number of bytes in the structure | ||
| 1351 | MUL DX ;AN000; Calculate the offset into the table | ||
| 1352 | ADD SI, AX ;AN000; Add to the address of the table | ||
| 1353 | .IF < VAR_INDEX BE BX > ;AN000; | ||
| 1354 | COPY_BYTE [SI].N_PART_NAME, N_NAME_PART ;AN000; | ||
| 1355 | COPY_WORD [SI].N_PART_SIZE, N_SIZE_PART ;AN000; | ||
| 1356 | COPY_BYTE [SI].N_PART_STATUS, N_STATUS_PART ;AN000; | ||
| 1357 | COPY_BYTE [SI].P_PART_DRIVE, P_DRIVE_PART ;AN000; | ||
| 1358 | COPY_BYTE [SI].N_PART_TYPE, N_TYPE_PART ;AN000; | ||
| 1359 | MOV AX, DATA_VALID ;AN000; No error. | ||
| 1360 | .ELSE ;AN000; | ||
| 1361 | MOV AX, DATA_INVALID ;AN000; Indicate an error | ||
| 1362 | .ENDIF ;AN000; | ||
| 1363 | RET ;AN000; | ||
| 1364 | ; | ||
| 1365 | UPDATE_DISK_TABLE_ROUTINE ENDP ;AN000; | ||
| 1366 | ; | ||
| 1367 | CODE_FAR ENDS ;AN000; | ||
| 1368 | ; | ||
| 1369 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/ROUTINES.ASM b/v4.0/src/SELECT/ROUTINES.ASM new file mode 100644 index 0000000..cd4fc0d --- /dev/null +++ b/v4.0/src/SELECT/ROUTINES.ASM | |||
| @@ -0,0 +1,1626 @@ | |||
| 1 | ;*************************************************************************** | ||
| 2 | ; Subroutines which are called by the macros in MACROS.INC. | ||
| 3 | ; File: ROUTINES.ASM | ||
| 4 | ; | ||
| 5 | ; This is a stand alone module and is meant to be linked with the calling | ||
| 6 | ; program. | ||
| 7 | ; | ||
| 8 | ;*************************************************************************** | ||
| 9 | .ALPHA ;AN000; | ||
| 10 | INCLUDE MAC_EQU.INC ;AN000; | ||
| 11 | INCLUDE PAN-LIST.INC ;AN000; | ||
| 12 | INCLUDE PANEL.MAC ;AN000; | ||
| 13 | |||
| 14 | ;********************************************************************** | ||
| 15 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 16 | |||
| 17 | |||
| 18 | NULl_DEVICE DB 'nul',0 ;AN000; | ||
| 19 | CON_DEVICE DB 'con',0 ;AN000; | ||
| 20 | |||
| 21 | SUB_PROGRAM DB 0 ;AN000; | ||
| 22 | PUBLIC EXEC_ERR ;AN000; | ||
| 23 | EXEC_ERR DB 0 ;AN000; | ||
| 24 | FIRST_TRY DB 0 ;AN000;DT | ||
| 25 | INT24_STATUS DB 0 ;AN000; | ||
| 26 | UNHOOKED EQU 0 ;AN000; | ||
| 27 | HOOKED EQU 1 ;AN000; | ||
| 28 | PUBLIC EXEC_DEALLOC,EXEC_FDISK ;AN000; | ||
| 29 | EXEC_DEALLOC DB 0 ;AN000;DT | ||
| 30 | EXEC_FDISK DB 0 ;AN000;DT | ||
| 31 | EXEC_DEHELP DB 0 ;AN000;DT | ||
| 32 | |||
| 33 | DATA ENDS ;AN000; DATA | ||
| 34 | ;********************************************************************** | ||
| 35 | |||
| 36 | .XLIST ;AN000; | ||
| 37 | INCLUDE STRUC.INC ;AN000; | ||
| 38 | INCLUDE MACROS.INC ;AN000; | ||
| 39 | INCLUDE VARSTRUC.INC ;AN000; | ||
| 40 | INCLUDE EXT.INC ;AN000; | ||
| 41 | EXTRN EXIT_DOS:FAR ;AN000; | ||
| 42 | EXTRN SYSDISPMSG:FAR ;AN000; | ||
| 43 | EXTRN HANDLE_ERROR_CALL:FAR ;AN000; | ||
| 44 | EXTRN ALLOCATE_MEMORY_CALL:FAR ;AN000; | ||
| 45 | EXTRN DEALLOCATE_MEMORY_CALL:FAR ;AN000; | ||
| 46 | |||
| 47 | EXTRN INT_23_VECTOR:NEAR ;AN074;SEH ctrl-break | ||
| 48 | EXTRN INT_24_VECTOR:NEAR ;AN000; | ||
| 49 | EXTRN INT_2F_VECTOR:NEAR ;AN000; | ||
| 50 | EXTRN INT_2F_256KB:NEAR ;AN000; | ||
| 51 | EXTRN INT_2F_FORMAT:NEAR ;AN111;JW | ||
| 52 | EXTRN ALLOCATE_HELP:FAR ;AN000; | ||
| 53 | EXTRN DEALLOCATE_HELP:FAR ;AN000; | ||
| 54 | .LIST ;AN000; | ||
| 55 | |||
| 56 | ;********************************************************************** | ||
| 57 | CODE_FAR SEGMENT PARA PUBLIC 'CODE' ;AN000; Segment for far routine | ||
| 58 | ASSUME CS:CODE_FAR,DS:DATA ;AN000; | ||
| 59 | ; | ||
| 60 | ;************************************************************************ | ||
| 61 | ; | ||
| 62 | ; APPEND_STRING: Append an ASCII-N string to the specified string. | ||
| 63 | ; | ||
| 64 | ; INPUT: | ||
| 65 | ; SI - OFFSET NAME_SRC | ||
| 66 | ; CX - IMMED_MAX | ||
| 67 | ; DI - OFFSET NAME_DEST | ||
| 68 | ; | ||
| 69 | ; OUTPUT: | ||
| 70 | ; None. | ||
| 71 | ; | ||
| 72 | ; OPERATION: | ||
| 73 | ; | ||
| 74 | ; | ||
| 75 | ;**************************************************************************** | ||
| 76 | PUBLIC APPEND_STRING_ROUTINE ;AN000; | ||
| 77 | APPEND_STRING_ROUTINE PROC FAR ;AN000; | ||
| 78 | |||
| 79 | PUSH ES ;AN000; | ||
| 80 | PUSH DS ;AN000; | ||
| 81 | POP ES ;AN000; ES and DS point to the data segment | ||
| 82 | |||
| 83 | .IF < CX LT <WORD PTR [DI]> > ;AN000; | ||
| 84 | MOV [DI], CX ;AN000; | ||
| 85 | .ELSE ;AN000; | ||
| 86 | SUB CX, [DI] ;AN000; Calculate space for the other string | ||
| 87 | .IF < CX GE <WORD PTR [SI]>> ;AN000; | ||
| 88 | MOV CX, [SI] ;AN000; Move the entire string | ||
| 89 | .ENDIF ;AN000; | ||
| 90 | MOV AX, [DI] ;AN000; Current size of destination string | ||
| 91 | ADD [DI], CX ;AN000; Add in the length of the new string | ||
| 92 | ADD DI, AX ;AN000; Add length of string to pointer | ||
| 93 | ADD DI, 2 ;AN000; Increment to pass first word and last byte | ||
| 94 | ADD SI, 2 ;AN000; Point source to start of the string | ||
| 95 | CLD ;AN000; | ||
| 96 | REP MOVSB ;AN000; | ||
| 97 | .ENDIF ;AN000; | ||
| 98 | |||
| 99 | POP ES ;AN000; | ||
| 100 | |||
| 101 | RET ;AN000; | ||
| 102 | |||
| 103 | APPEND_STRING_ROUTINE ENDP ;AN000; | ||
| 104 | ;************************************************************************ | ||
| 105 | ; | ||
| 106 | ; COPY_ROUTINE - Subroutine to perform the copy string operation. | ||
| 107 | ; | ||
| 108 | ; INPUT: | ||
| 109 | ; SI - OFFSET NAME_SRC | ||
| 110 | ; AX - IMMED_MAX | ||
| 111 | ; DI - OFFSET NAME_DEST | ||
| 112 | ; | ||
| 113 | ; OUTPUT: | ||
| 114 | ; None. | ||
| 115 | ; | ||
| 116 | ; OPERATION: Copies NAME_SRC1 to NAME_DEST. If NAME_SRC1 is longer then | ||
| 117 | ; IMMED_MAX, then only IMMED_MAX bytes are copied. | ||
| 118 | ; | ||
| 119 | ;**************************************************************************** | ||
| 120 | PUBLIC COPY_ROUTINE ;AN000; | ||
| 121 | COPY_ROUTINE PROC FAR ;AN000; | ||
| 122 | |||
| 123 | PUSH ES ;AN000; | ||
| 124 | PUSH DS ;AN000; | ||
| 125 | POP ES ;AN000; ES and DS point to the data segment | ||
| 126 | |||
| 127 | PUSH DI ;AN000; Save OFFSET NAME_DEST | ||
| 128 | MOV DX, AX ;AN000; Save IMMED_MAX | ||
| 129 | CLD ;AN000; Move strings in the forward direction | ||
| 130 | MOV CX,WORD PTR [SI] ;AN000; Get length of source string | ||
| 131 | ADD SI,2 ;AN000; Point SI to start of string | ||
| 132 | ADD DI,2 ;AN000; Point DI to start of destination. | ||
| 133 | .IF < CX GT AX > ;AN000; | ||
| 134 | MOV CX,AX ;AN000; Will not fit so adjust length | ||
| 135 | .ENDIF ;AN000; | ||
| 136 | SUB AX,CX ;AN000; Amount of room left. | ||
| 137 | REP MOVSB ;AN000; Move the string | ||
| 138 | SUB DX,AX ;AN000; Subtract the amount left over | ||
| 139 | POP SI ;AN000; | ||
| 140 | MOV WORD PTR [SI],DX ;AN000; Store the length of the string | ||
| 141 | |||
| 142 | POP ES ;AN000; | ||
| 143 | RET ;AN000; | ||
| 144 | |||
| 145 | COPY_ROUTINE ENDP ;AN000; | ||
| 146 | ;****************************************************************************** | ||
| 147 | ; | ||
| 148 | ; PUSH_ROUTINE: Routine to do the actual pushing of the screen label | ||
| 149 | ; | ||
| 150 | ; INPUT: | ||
| 151 | ; AX - Contains the address of the code for this screen | ||
| 152 | ; | ||
| 153 | ; OUTPUT: | ||
| 154 | ; None. | ||
| 155 | ; | ||
| 156 | ; OPERATION: The screen label address is pushed onto the SELECT stack | ||
| 157 | ; provided the numher of entries on the stack will not exceed the | ||
| 158 | ; maximum. Error will NOT be generated if the function was not | ||
| 159 | ; successful. | ||
| 160 | ; | ||
| 161 | ;****************************************************************************** | ||
| 162 | PUBLIC PUSH_ROUTINE ;AN000; | ||
| 163 | PUSH_ROUTINE PROC FAR ;AN000; | ||
| 164 | |||
| 165 | .IF < STACK_INDEX B STACK_SIZE > ;AN000; Is there any room? | ||
| 166 | MOV BL,STACK_INDEX ;AN000; Get the index | ||
| 167 | MOV BH, 0 ;AN000; | ||
| 168 | MOV SELECT_STACK[BX],AX ;AN000; Store the label | ||
| 169 | ADD STACK_INDEX,2 ;AN000; Point to next free space | ||
| 170 | .ENDIF ;AN000; | ||
| 171 | RET ;AN000; | ||
| 172 | PUSH_ROUTINE ENDP ;AN000; | ||
| 173 | ;****************************************************************************** | ||
| 174 | ; | ||
| 175 | ; POP_ROUTINE: Routine to do the actual poping of the screen label | ||
| 176 | ; | ||
| 177 | ; INPUT: | ||
| 178 | ; None. | ||
| 179 | ; | ||
| 180 | ; OUTPUT: | ||
| 181 | ; SI contains the address of the screen code. | ||
| 182 | ; | ||
| 183 | ; OPERATION: The screen label address is poped from the SELECT stack | ||
| 184 | ; provided there are entries on the stack. If there are no values | ||
| 185 | ; on the stack then the address of the EXIT_DOS screen will be | ||
| 186 | ; returned. | ||
| 187 | ; | ||
| 188 | ;****************************************************************************** | ||
| 189 | PUBLIC POP_ROUTINE ;AN000; | ||
| 190 | POP_ROUTINE PROC FAR ;AN000; | ||
| 191 | |||
| 192 | .IF < STACK_INDEX A 0 > ;AN000; Is there anything on the stack? | ||
| 193 | SUB STACK_INDEX,2 ;AN000; Point to last item on the stack | ||
| 194 | MOV BL,STACK_INDEX ;AN000; Get the index | ||
| 195 | MOV BH, 0 ;AN000; | ||
| 196 | MOV SI,SELECT_STACK[BX] ;AN000; Get the label | ||
| 197 | .ELSE ;AN000; | ||
| 198 | MOV SI,OFFSET EXIT_DOS ;AN000; EXIT_DOS screen | ||
| 199 | .ENDIF ;AN000; | ||
| 200 | RET ;AN000; | ||
| 201 | |||
| 202 | POP_ROUTINE ENDP ;AN000; | ||
| 203 | ;************************************************************************ | ||
| 204 | ; | ||
| 205 | ; MAKE_DIR_PATHS_ROUTINE: Create the specified directory including all | ||
| 206 | ; the specified sub-directories if they do not exist. | ||
| 207 | ; | ||
| 208 | ; INPUT: | ||
| 209 | ; BX - Points to an ASCII-N string containing the path to create | ||
| 210 | ; | ||
| 211 | ; OUTPUT: | ||
| 212 | ; CY = 0 Success | ||
| 213 | ; CY = 1 Error - AX will contain an error code. | ||
| 214 | ; | ||
| 215 | ; OPERATION: The directory pathname is created. | ||
| 216 | ; If the drive letter and colon are not followed by a '\', then the | ||
| 217 | ; macro will start creating the directories from the default directory. | ||
| 218 | ; If they are followed by a '\', then the macro will start at the root. | ||
| 219 | ; If an error occures, then sub-directories which have been created will | ||
| 220 | ; be removed. | ||
| 221 | ; | ||
| 222 | ; | ||
| 223 | ;**************************************************************************** | ||
| 224 | PUBLIC MAKE_DIR_PATHS_ROUTINE ;AN000; | ||
| 225 | MAKE_DIR_PATHS_ROUTINE PROC FAR ;AN000; | ||
| 226 | |||
| 227 | PUSH ES ;AN000; | ||
| 228 | PUSH DS ;AN000; | ||
| 229 | POP ES ;AN000; | ||
| 230 | |||
| 231 | |||
| 232 | MOV AH, 1 ;AN000; Flag indicating adding or deleting dirs | ||
| 233 | MOV SI, 0 ;AN000; End of the first path created | ||
| 234 | MOV DI, BX ;AN000; Offset of the ASCII-N string | ||
| 235 | ADD DI, 5 ;AN000; Point to the beginning of the path | ||
| 236 | MOV DX, WORD PTR [BX] ;AN000; Get the length of the string | ||
| 237 | MOV CX, DX ;AN000; Store in another variable as well | ||
| 238 | SUB CX, 3 ;AN000; Skip the first 3 characters 'C:\' | ||
| 239 | MOV AL, '\' ;AN000; Delimiter to search for | ||
| 240 | CLD ;AN000; Start searching in the forward direction | ||
| 241 | |||
| 242 | |||
| 243 | PROCESS_NEXT_DIR: ;AN000; | ||
| 244 | CMP AH, 1 ;AN000; Adding or deleting directories? | ||
| 245 | JNE DELETING_DIR_1 ;AN000; If adding, then jump | ||
| 246 | CMP CX,0 ;AN000; Is the string length zero? | ||
| 247 | JNE LENGTH_NOT_ZERO ;AN000; | ||
| 248 | JMP NORMAL_EXIT ;AN000; | ||
| 249 | DELETING_DIR_1: ;AN000; | ||
| 250 | CMP SI, DI ;AN000; Was this the first DIR created? | ||
| 251 | JNE LENGTH_NOT_ZERO ;AN000; | ||
| 252 | JMP ERROR_EXIT ;AN000; | ||
| 253 | |||
| 254 | LENGTH_NOT_ZERO: ;AN000; | ||
| 255 | REPNZ SCASB ;AN000; | ||
| 256 | JNZ STRING_END ;AN000; If not zero, we reached the string end | ||
| 257 | |||
| 258 | INC CX ;AN000; By adjusting DI, more bytes to the strings end | ||
| 259 | CMP AH,1 ;AN000; Adding or deleting | ||
| 260 | JNE DELETING_DIR_2 ;AN000; | ||
| 261 | DEC DI ;AN000; Back DI up to point to the '\' | ||
| 262 | STRING_END: ;AN000; | ||
| 263 | MOV WORD PTR [BX], DX ;AN000; Length of entire string | ||
| 264 | SUB WORD PTR [BX], CX ;AN000; Subtract the amount left in string | ||
| 265 | JMP ADJUST_DONE ;AN000; | ||
| 266 | DELETING_DIR_2: ;AN000; | ||
| 267 | INC DI ;AN000; Adjust DI to point to the '\' | ||
| 268 | MOV WORD PTR [BX], CX ;AN000; Length left in string | ||
| 269 | ADJUST_DONE: ;AN000; | ||
| 270 | |||
| 271 | CMP AH, 1 ;AN000; Adding or deleting directories | ||
| 272 | JNE DELETING_DIR_3 ;AN000; | ||
| 273 | CMP SI, 0 ;AN000; Created a DIR yet? | ||
| 274 | JNE MAKE_START ;AN000; | ||
| 275 | PUSH AX ;AN000; | ||
| 276 | ;********************************************************************** | ||
| 277 | PUSHH <DX,DI> ;AN000; | ||
| 278 | |||
| 279 | MOV DI,BX ;AN000; Get the offset of the string | ||
| 280 | CALL FAR PTR POS_ZERO ;AN000; Make into an ASCII-Z string | ||
| 281 | MOV INT_24_ERROR, 0 ;AN000; Zero the number of critical errors | ||
| 282 | MOV DX,BX ;AN000; Get the start of the string | ||
| 283 | ADD DX, 2 ;AN000; | ||
| 284 | MOV AH,3BH ;AN000; DOS function call number | ||
| 285 | DOSCALL ;AN000; | ||
| 286 | |||
| 287 | POPP <DI,DX> ;AN000; | ||
| 288 | ;********************************************************************** | ||
| 289 | POP AX ;AN000; | ||
| 290 | JNC DIR_DONE ;AN000; | ||
| 291 | MOV SI, DI ;AN000; | ||
| 292 | MAKE_START: ;AN000; | ||
| 293 | PUSH AX ;AN000; | ||
| 294 | ;********************************************************************** | ||
| 295 | PUSHH <DX,DI> ;AN000; | ||
| 296 | MOV DI,BX ;AN000; | ||
| 297 | CALL FAR PTR POS_ZERO ;AN000; position the '0' at the end of the path | ||
| 298 | MOV INT_24_ERROR, 0 ;AN000; Zero the number of critical errors | ||
| 299 | MOV DX,BX ;AN000; advance pointer to beginning of path | ||
| 300 | ADD DX, 2 ;AN000; | ||
| 301 | MOV AH,39H ;AN000; make directory interrupt | ||
| 302 | DOSCALL ;AN000; call to DOS interrupt 21 | ||
| 303 | POPP <DI,DX> ;AN000; | ||
| 304 | ;********************************************************************** | ||
| 305 | JC CANNOT_MAKE ;AN000; | ||
| 306 | POP AX ;AN000; | ||
| 307 | JMP DIR_DONE ;AN000; | ||
| 308 | CANNOT_MAKE: ;AN000; | ||
| 309 | POP CX ;AN000; Pop the previously saved AX value | ||
| 310 | PUSH AX ;AN000; Push the make dir error message | ||
| 311 | MOV AX, '\' ;AN000; | ||
| 312 | STD ;AN000; Now search in the backward direction | ||
| 313 | MOV CX, WORD PTR [BX] ;AN000; | ||
| 314 | JMP DIR_DONE ;AN000; | ||
| 315 | DELETING_DIR_3: ;AN000; | ||
| 316 | PUSH AX ;AN000; | ||
| 317 | ;********************************************************************** | ||
| 318 | PUSHH <DX,DI> ;AN000; | ||
| 319 | MOV DI,BX ;AN000; | ||
| 320 | CALL FAR PTR POS_ZERO ;AN000; position the '0' at the end of the path | ||
| 321 | MOV INT_24_ERROR, 0 ;AN000; Zero the number of critical errors | ||
| 322 | MOV DX,BX ;AN000; advance pointer to beginning of path | ||
| 323 | ADD DX, 2 ;AN000; | ||
| 324 | MOV AH,3AH ;AN000; remove the specified directory | ||
| 325 | DOSCALL ;AN000; call to DOS interrupt 21 | ||
| 326 | POPP <DI,DX> ;AN000; | ||
| 327 | ;********************************************************************** | ||
| 328 | JC ERROR_POP_EXIT ;AN000; | ||
| 329 | POP AX ;AN000; | ||
| 330 | DIR_DONE: ;AN000; | ||
| 331 | MOV BYTE PTR [DI], '\' ;AN000; Put the delimiter back | ||
| 332 | CMP CX,0 ;AN000; | ||
| 333 | JE NORMAL_EXIT ;AN000; If CX = 0, string ends | ||
| 334 | DEC CX ;AN000; | ||
| 335 | CMP AH,1 ;AN000; | ||
| 336 | JNE DELETING_DIR_4 ;AN000; | ||
| 337 | INC DI ;AN000; | ||
| 338 | JMP PROCESS_NEXT_DIR ;AN000; | ||
| 339 | DELETING_DIR_4: ;AN000; | ||
| 340 | DEC DI ;AN000; | ||
| 341 | JMP PROCESS_NEXT_DIR ;AN000; | ||
| 342 | |||
| 343 | ERROR_POP_EXIT: ;AN000; | ||
| 344 | POP CX ;AN000; Pop the extra value off the stack. | ||
| 345 | ERROR_EXIT: ;AN000; | ||
| 346 | POP AX ;AN000; Pop the error message number | ||
| 347 | STC ;AN000; | ||
| 348 | JMP PATHS_DONE ;AN000; | ||
| 349 | NORMAL_EXIT: ;AN000; | ||
| 350 | CLC ;AN000; | ||
| 351 | |||
| 352 | PATHS_DONE: ;AN000; | ||
| 353 | MOV WORD PTR [BX], DX ;AN000; Restore the original path length | ||
| 354 | |||
| 355 | POP ES ;AN000; | ||
| 356 | |||
| 357 | RET ;AN000; | ||
| 358 | |||
| 359 | MAKE_DIR_PATHS_ROUTINE ENDP ;AN000; | ||
| 360 | ;************************************************************************ | ||
| 361 | ; | ||
| 362 | ; POS_ZERO - Position a zero at the end of an ASCII-N string, making it | ||
| 363 | ; into an ASCII-Z string. | ||
| 364 | ; | ||
| 365 | ; INPUT: | ||
| 366 | ; DI - Points to the string to covert. | ||
| 367 | ; | ||
| 368 | ; OUTPUT: | ||
| 369 | ; None. | ||
| 370 | ; | ||
| 371 | ; OPERATION: An ASCII-N string is converted to an ASCII-Z string. | ||
| 372 | ; | ||
| 373 | ;**************************************************************************** | ||
| 374 | PUBLIC POS_ZERO ;AN000; | ||
| 375 | POS_ZERO PROC FAR ;AN000; | ||
| 376 | |||
| 377 | PUSH AX ;AN000; | ||
| 378 | PUSH DI ;AN000; | ||
| 379 | |||
| 380 | MOV AX,[DI] ;AN000; Get the length of the string | ||
| 381 | ADD DI,AX ;AN000; Add the length to the offset | ||
| 382 | ADD DI,2 ;AN000; Adjust for the length word | ||
| 383 | MOV BYTE PTR [DI],0 ;AN000; Position the zero after the end. | ||
| 384 | |||
| 385 | POP DI ;AN000; | ||
| 386 | POP AX ;AN000; | ||
| 387 | |||
| 388 | RET ;AN000; | ||
| 389 | |||
| 390 | POS_ZERO ENDP ;AN000; | ||
| 391 | ;************************************************************************ | ||
| 392 | ; | ||
| 393 | ; BEEP_ROUTINE - Cause the speaker to create a tone of a given frequency | ||
| 394 | ; and duration. | ||
| 395 | ; | ||
| 396 | ; INPUT: | ||
| 397 | ; DI - The frequency of the tone to create. | ||
| 398 | ; BX - The duration of the tone. | ||
| 399 | ; | ||
| 400 | ; OUTPUT: | ||
| 401 | ; None. | ||
| 402 | ; | ||
| 403 | ; OPERATION: Causes the speaker to produce a tone. | ||
| 404 | ; | ||
| 405 | ;**************************************************************************** | ||
| 406 | PUBLIC BEEP_ROUTINE ;AN000; | ||
| 407 | BEEP_ROUTINE PROC FAR ;AN000; | ||
| 408 | |||
| 409 | MOV AL,0B6H ;AN000; write timer mode register | ||
| 410 | OUT 43H,AL ;AN000; | ||
| 411 | MOV DX,14H ;AN000; timer divisor= | ||
| 412 | MOV AX,4F38H ;AN000; 1331000/frequency | ||
| 413 | DIV DI ;AN000; | ||
| 414 | OUT 42H,AL ;AN000; write timer 2 count low byte | ||
| 415 | MOV AL,AH ;AN000; | ||
| 416 | OUT 42H,AL ;AN000; write timer 2 count high byte | ||
| 417 | IN AL,61H ;AN000; get current PORT B setting | ||
| 418 | MOV AH,AL ;AN000; and save it in AH | ||
| 419 | OR AL,3 ;AN000; turn on speaker | ||
| 420 | OUT 61H,AL ;AN000; | ||
| 421 | B_WAIT: MOV CX,2801 ;AN000; wait 10 milliseconds | ||
| 422 | SPKR_ON:LOOP SPKR_ON ;AN000; | ||
| 423 | DEC BX ;AN000; | ||
| 424 | JNZ B_WAIT ;AN000; beep until finished | ||
| 425 | MOV AL,AH ;AN000; recover value of port | ||
| 426 | OUT 61H,AL ;AN000; | ||
| 427 | RET ;AN000; | ||
| 428 | |||
| 429 | BEEP_ROUTINE ENDP ;AN000; | ||
| 430 | ;************************************************************************ | ||
| 431 | ; | ||
| 432 | ; BIN_TO_CHAR_ROUTINE: Convert a binary number to ASCII format. | ||
| 433 | ; | ||
| 434 | ; INPUT: | ||
| 435 | ; AX - The binary number to convert. | ||
| 436 | ; DI - Pointer to the ASCII-N string to store the result. | ||
| 437 | ; | ||
| 438 | ; OUTPUT: | ||
| 439 | ; None. | ||
| 440 | ; | ||
| 441 | ; OPERATION: The specified 16 bit numeric variable contents are | ||
| 442 | ; converted to ASCII and stored in ASCII-N format. Leading zeros | ||
| 443 | ; will not be stored. | ||
| 444 | ; | ||
| 445 | ;**************************************************************************** | ||
| 446 | PUBLIC BIN_TO_CHAR_ROUTINE ;AN000; | ||
| 447 | BIN_TO_CHAR_ROUTINE PROC FAR ;AN000; | ||
| 448 | |||
| 449 | MOV SI, DI ;AN000; Copy the string pointer | ||
| 450 | ADD SI, 6 ;AN000; Point to the string END | ||
| 451 | MOV CX, 10 ;AN000; Number to divide AX by | ||
| 452 | |||
| 453 | .WHILE < NONZERO AX> ;AN000; | ||
| 454 | MOV DX, 0 ;AN000; Zero the high order word | ||
| 455 | DIV CX ;AN000; Divide the binary number | ||
| 456 | ADD DL, 48 ;AN000; Convert to ASCII | ||
| 457 | MOV [SI], DL ;AN000; Store in the string. | ||
| 458 | DEC SI ;AN000; Point to the next free string space | ||
| 459 | .ENDWHILE ;AN000; | ||
| 460 | SUB SI, DI ;AN000; Get the difference in the pointers | ||
| 461 | DEC SI ;AN000; Adjust for the lenght word | ||
| 462 | MOV WORD PTR [DI], 5 ;AN000; Store the number of characters | ||
| 463 | SUB WORD PTR [DI], SI ;AN000; Subtract the number of extra digits | ||
| 464 | MOV CX, WORD PTR [DI] ;AN000; | ||
| 465 | MOV BX, DI ;AN000; | ||
| 466 | ADD BX, 2 ;AN000; | ||
| 467 | .WHILE < NONZERO CX > ;AN000; | ||
| 468 | COPY_BYTE [BX],[BX+SI] ;AN000; | ||
| 469 | DEC CX ;AN000; | ||
| 470 | INC BX ;AN000; | ||
| 471 | .ENDWHILE ;AN000; | ||
| 472 | RET ;AN000; | ||
| 473 | |||
| 474 | BIN_TO_CHAR_ROUTINE ENDP ;AN000; | ||
| 475 | ;************************************************************************** | ||
| 476 | ; | ||
| 477 | ; PREPARE_FILE_ROUTINE: Prepare a file and a buffer for the construction | ||
| 478 | ; of that file line by line. | ||
| 479 | ; | ||
| 480 | ; INPUT: | ||
| 481 | ; BX = The address of an ASCII-N string containing the name of the file | ||
| 482 | ; to create. | ||
| 483 | ; | ||
| 484 | ; OUTPUT: CY = 0: No error was encountered. | ||
| 485 | ; CY = 1: There was an error encountered. | ||
| 486 | ; | ||
| 487 | ; OPERATION: A attempt is made to create the file. If it fails because | ||
| 488 | ; the file already exists, then the file is opened for writing. | ||
| 489 | ; The user will then write to the file be calling WRITE_LINE macro. The | ||
| 490 | ; data will be temperarily stored in a buffer to limit the actual number | ||
| 491 | ; of writes to the file. | ||
| 492 | ; | ||
| 493 | ;************************************************************************** | ||
| 494 | PUBLIC PREPARE_FILE_ROUTINE ;AN000; | ||
| 495 | PREPARE_FILE_ROUTINE PROC FAR ;AN000; | ||
| 496 | ; | ||
| 497 | ;********************************************************************** | ||
| 498 | ; Try to create the file | ||
| 499 | ;********************************************************************** | ||
| 500 | MOV DI, BX ;AN000; Get the address of the file name string | ||
| 501 | CALL POS_ZERO ;AN000; Make the ASCII-N string into an ASCII-Z | ||
| 502 | MOV DX, DI ;AN000; Get the address again | ||
| 503 | ADD DX, 2 ;AN000; Pass the length word and point to string | ||
| 504 | MOV N_WRITE_ERR_CODE, 0 ;AN000; Indicate there have been no errors yet | ||
| 505 | MOV INT_24_ERROR, 0 ;AN000; Zero the number of critical errors | ||
| 506 | MOV CX, 0 ;AN000; Attributes to give the file | ||
| 507 | MOV AH, 3CH ;AN000; Function for creating a file | ||
| 508 | DOSCALL ;AN000; Create the file | ||
| 509 | ;********************************************************************** | ||
| 510 | ; See if an error has occured. | ||
| 511 | ;********************************************************************** | ||
| 512 | .IF < C > ;AN000; Did the DOS fn. return an error? | ||
| 513 | .IF < AX EQ 5 > ;AN000; Was the error ACCESS DENIED? | ||
| 514 | MOV DX, BX ;AN000; Get the address of the string | ||
| 515 | MOV INT_24_ERROR, 0 ;AN000; Zero the number of critical errors | ||
| 516 | MOV AX, 3D01H ;AN000; DOS Fn. for opening a file | ||
| 517 | DOSCALL ;AN000; | ||
| 518 | .IF < C > ;AN000; Was there an error? | ||
| 519 | MOV N_WRITE_ERR_CODE, AX ;AN000; Save this error code | ||
| 520 | .ENDIF ;AN000; | ||
| 521 | .ELSE ;AN000; | ||
| 522 | MOV N_WRITE_ERR_CODE, AX ;AN000; | ||
| 523 | .ENDIF ;AN000; | ||
| 524 | .ENDIF ;AN000; | ||
| 525 | ; | ||
| 526 | .IF < N_WRITE_ERR_CODE NE 0 > ;AN000; | ||
| 527 | STC ;AN000; | ||
| 528 | .ELSE ;AN000; | ||
| 529 | MOV N_WRITE_HANDLE, AX ;AN000; | ||
| 530 | CLC ;AN000; | ||
| 531 | .ENDIF ;AN000; | ||
| 532 | ; | ||
| 533 | END_PREPARE_FILE: ;AN000; | ||
| 534 | ; | ||
| 535 | RET ;AN000; | ||
| 536 | ; | ||
| 537 | PREPARE_FILE_ROUTINE ENDP ;AN000; | ||
| 538 | ;************************************************************************** | ||
| 539 | ; | ||
| 540 | ; WRITE_LINE_ROUTINE: Write a line to the file being constructed. | ||
| 541 | ; | ||
| 542 | ; INPUT: | ||
| 543 | ; BX = The address of an ASCII-N string containing the line to write | ||
| 544 | ; to the file. | ||
| 545 | ; | ||
| 546 | ; OUTPUT: CY = 0: No error was encountered. | ||
| 547 | ; CY = 1: An error was encountered. | ||
| 548 | ; | ||
| 549 | ; OPERATION: The line that is passed, has a CR and a LF appended to the | ||
| 550 | ; end of the line. The data is then stored in a buffer. When the | ||
| 551 | ; buffer is full, the data is written to the disk. | ||
| 552 | ; | ||
| 553 | ;************************************************************************** | ||
| 554 | PUBLIC WRITE_LINE_ROUTINE ;AN000; | ||
| 555 | WRITE_LINE_ROUTINE PROC FAR ;AN000; | ||
| 556 | |||
| 557 | |||
| 558 | ; See if there has been an error so far ; | ||
| 559 | .IF < N_WRITE_ERR_CODE EQ 0 > ;AN000; Has there been an error? | ||
| 560 | MOV SI, BX ;AN000; No! Get the string address | ||
| 561 | ADD SI, WORD PTR [BX] ;AN000; Get the end of string address | ||
| 562 | ADD SI, 2 ;AN000; Adjust for the length word | ||
| 563 | MOV BYTE PTR [SI], E_CR ;AN000; Append a carrage return to the string | ||
| 564 | MOV BYTE PTR [SI+1], E_LF ;AN000; Append a line feed to the string | ||
| 565 | MOV CX, WORD PTR [BX] ;AN000; Get the length of the string | ||
| 566 | ADD CX, 2 ;AN000; Increase the string length by two | ||
| 567 | MOV DX, BX ;AN000; Get the address of the string | ||
| 568 | ADD DX, 2 ;AN000; Adjust pointer for length word | ||
| 569 | MOV BX, N_WRITE_HANDLE ;AN000; Handle for the already opened file | ||
| 570 | MOV INT_24_ERROR, 0 ;AN000; Zero the number of critical errors | ||
| 571 | MOV AH, 40H ;AN000; Function call for writing to a file | ||
| 572 | DOSCALL ;AN000; Write the line | ||
| 573 | .IF < C > ;AN000; Was there an error? | ||
| 574 | MOV N_WRITE_ERR_CODE, AX ;AN000; Yes! Save the error code | ||
| 575 | .ENDIF ;AN000; | ||
| 576 | .ENDIF ;AN000; | ||
| 577 | RET ;AN000; | ||
| 578 | ; | ||
| 579 | WRITE_LINE_ROUTINE ENDP ;AN000; | ||
| 580 | ;************************************************************************** | ||
| 581 | ; | ||
| 582 | ; SAVE_FILE_ROUTINE: Empty the data in the buffer being used to create | ||
| 583 | ; the file and then close the file. | ||
| 584 | ; | ||
| 585 | ; INPUT: | ||
| 586 | ; BX - The address of the string containing the file name. | ||
| 587 | ; | ||
| 588 | ; OUTPUT: CY = 0: No error was encountered. | ||
| 589 | ; CY = 1: An error was encountered. | ||
| 590 | ; AX will contain the code of the error which occured. | ||
| 591 | ; | ||
| 592 | ; OPERATION: The routine will check to see if there is any data left in | ||
| 593 | ; the buffer. If there is, the data is written to the file being | ||
| 594 | ; created. The file is then closed. If errors were encountered at | ||
| 595 | ; anytime during the create process, then the carry flag will be set | ||
| 596 | ; and the error code will be returned in AX. | ||
| 597 | ; | ||
| 598 | ;************************************************************************** | ||
| 599 | PUBLIC SAVE_FILE_ROUTINE ;AN000; | ||
| 600 | SAVE_FILE_ROUTINE PROC FAR ;AN000; | ||
| 601 | ; | ||
| 602 | .IF < N_WRITE_ERR_CODE NE 0 > ;AN000; Has an error been encountered? | ||
| 603 | MOV DI, BX ;AN000; Yes! Erase the file. | ||
| 604 | CALL POS_ZERO ;AN000; Make string into an ASCII-Z string | ||
| 605 | MOV INT_24_ERROR, 0 ;AN000; Zero the number of critical errors | ||
| 606 | MOV DX, DI ;AN000; Get the address of the string | ||
| 607 | ADD DX, 2 ;AN000; Advance pointer past length word | ||
| 608 | MOV AH, 41H ;AN000; DOS function for erasing a file | ||
| 609 | DOSCALL ;AN000; Erase the file | ||
| 610 | .ELSE ;AN000; Otherwise, if no error. | ||
| 611 | MOV BX, N_WRITE_HANDLE ;AN000; Get the file handle | ||
| 612 | MOV INT_24_ERROR, 0 ;AN000; Zero the number of critical errors | ||
| 613 | MOV AH, 3EH ;AN000; DOS function for closing a file | ||
| 614 | DOSCALL ;AN000; Close the file | ||
| 615 | .IF < C > ;AN000; Error closing the file? | ||
| 616 | MOV N_WRITE_ERR_CODE, AX ;AN000; Yes! Save the error code | ||
| 617 | .ENDIF ;AN000; | ||
| 618 | .ENDIF ;AN000; | ||
| 619 | ; | ||
| 620 | MOV AX, N_WRITE_ERR_CODE ;AN000; Return the error code | ||
| 621 | .IF < N_WRITE_ERR_CODE NE 0 > ;AN000; Have errors been encountered? | ||
| 622 | STC ;AN000; Yes! Set the carry flag | ||
| 623 | .ELSE ;AN000; No! | ||
| 624 | CLC ;AN000; Clear the carry flag | ||
| 625 | .ENDIF ;AN000; | ||
| 626 | ; | ||
| 627 | RET ;AN000; | ||
| 628 | ; | ||
| 629 | SAVE_FILE_ROUTINE ENDP ;AN000; | ||
| 630 | ;**************************************************************************** | ||
| 631 | ; | ||
| 632 | ; EXEC_PROGRAM_ROUTINE: Loads another program into memory and begins | ||
| 633 | ; execution. | ||
| 634 | ; | ||
| 635 | ; INPUT: child = Name of the program to execute (ASCII-N format) | ||
| 636 | ; name_com = The command line to be passed to parm_block | ||
| 637 | ; parm_block = Parameter block for child program. | ||
| 638 | ; re_dir = Flag indicating whether to redirect the output or not. | ||
| 639 | ; = 1: Redirect the output. | ||
| 640 | ; = 0: Don't redirect the output. | ||
| 641 | ; | ||
| 642 | ; OUTPUT: CY = 0: Successful | ||
| 643 | ; CY = 1: Error - AX has the error code. | ||
| 644 | ; | ||
| 645 | ; OPERATION: The command line to be passed to the parameter block is | ||
| 646 | ; copied to the command buffer specified for the parameter block and | ||
| 647 | ; a carrage return is appended to the end of the buffer. (The | ||
| 648 | ; command line length can be zero. | ||
| 649 | ; | ||
| 650 | ; The segment offsets in the parameter block are defined and DOS | ||
| 651 | ; function call 29H is performed to set up the default FCB's. | ||
| 652 | ; | ||
| 653 | ; DOS function call 4Bh is performed to load and execute the | ||
| 654 | ; specified child program. The contents of SS and SP are destroyed | ||
| 655 | ; during the call, so they must be save and restored later. When the | ||
| 656 | ; parent program (SELECT) gets control, all available memory is | ||
| 657 | ; allocated to it. It is assumed that memory has been freed (Function | ||
| 658 | ; call 4Ah - FREE_MEM) before invoking this function. | ||
| 659 | ; | ||
| 660 | ;************************************************************************ | ||
| 661 | |||
| 662 | PUBLIC EXEC_PROGRAM_ROUTINE ;AN000; | ||
| 663 | EXEC_PROGRAM_ROUTINE PROC FAR ;AN000; | ||
| 664 | ; | ||
| 665 | ; | ||
| 666 | EX_CHILD EQU [BP]+12 ;AN000; Equates for temporary variables | ||
| 667 | EX_NAME_COM EQU [BP]+10 ;AN000; | ||
| 668 | EX_PARM_BLOCK EQU [BP]+8 ;AN000; | ||
| 669 | EX_RE_DIR EQU [BP]+6 ;AN000; | ||
| 670 | ; | ||
| 671 | MOV SUB_PROGRAM, TRUE ;AN000; | ||
| 672 | ; | ||
| 673 | PUSH BP ;AN000; Save base pointer | ||
| 674 | MOV BP, SP ;AN000; Set up pointer for temp. variables | ||
| 675 | ; | ||
| 676 | PUSH DS ;AN000; Save the segment registers | ||
| 677 | PUSH ES ;AN000; | ||
| 678 | ; | ||
| 679 | MOV AH,2FH ;AC000;JW | ||
| 680 | DOSCALL ;AC000;JW get DTA address | ||
| 681 | PUSH ES ;AC000;JW save DTA seg | ||
| 682 | PUSH BX ;AC000;JW save DTA off | ||
| 683 | ; | ||
| 684 | PUSH DS ;AN000; | ||
| 685 | POP ES ;AN000; Point ES to the current data segment | ||
| 686 | ; | ||
| 687 | .IF < <WORD PTR EX_RE_DIR> EQ EXEC_DIR > ;AN000; | ||
| 688 | MOV AH, 3EH ;AN000; Close Stdout | ||
| 689 | MOV BX, STDOUT ;AN000; | ||
| 690 | DOSCALL ;AN000; | ||
| 691 | MOV DX, OFFSET NULL_DEVICE ;AN000; Open the NULL device | ||
| 692 | MOV AX, 3D01H ;AN000; | ||
| 693 | DOSCALL ;AN000; | ||
| 694 | MOV AH, 3EH ;AN000; Close Stderr | ||
| 695 | MOV BX, STDERR ;AN000; | ||
| 696 | DOSCALL ;AN000; | ||
| 697 | MOV DX, OFFSET NULL_DEVICE ;AN000; Open the NULL device | ||
| 698 | MOV AX, 3D01H ;AN000; | ||
| 699 | DOSCALL ;AN000; | ||
| 700 | .ENDIF ;AN000; | ||
| 701 | ; | ||
| 702 | ; | ||
| 703 | MOV SI, EX_NAME_COM ;AN000; Get the address of the command line | ||
| 704 | MOV CX, WORD PTR [SI] ;AN000; Get the length of the command line | ||
| 705 | MOV BYTE PTR CMD_BUFF, CL ;AN000; Store the lenth of the string | ||
| 706 | MOV DI, OFFSET CMD_BUFF+1 ;AN000; Location to place the string | ||
| 707 | ADD SI, 2 ;AN000; Adjust pointer for length word | ||
| 708 | CLD ;AN000; Move in the forward direction | ||
| 709 | REP MOVSB ;AN000; Copy the string | ||
| 710 | MOV BYTE PTR [DI], 0DH ;AN000; Place a carriage return at the end. | ||
| 711 | ; | ||
| 712 | MOV DI, EX_CHILD ;AN000; Get the address of the program name string | ||
| 713 | CALL POS_ZERO ;AN000; Turn into an ASCII-Z string | ||
| 714 | MOV SI,EX_PARM_BLOCK ;AN000; Address of the parameters | ||
| 715 | MOV AH,62H ;AN000; DOS Function number for getting the PSP segment | ||
| 716 | DOSCALL ;AN000; Get the current PSP segment | ||
| 717 | ; | ||
| 718 | MOV [SI]+8, BX ;AN000; Store PSP segment in the parm block | ||
| 719 | MOV [SI]+12, BX ;AN000; These are the FCB segments | ||
| 720 | MOV AX, DATA ;AN000; Get the address of the data segment | ||
| 721 | MOV [SI]+4, AX ;AN000; Segment of the command line | ||
| 722 | ; | ||
| 723 | MOV ES, BX ;AN000; ES:DI points to the FCB to load | ||
| 724 | MOV DI, 5CH ;AN000; First FCB to load | ||
| 725 | MOV BX, SI ;AN000; Move the address of the parm block | ||
| 726 | MOV SI, [BX]+2 ;AN000; Get the address of the command line | ||
| 727 | INC SI ;AN000; Skip the length byte | ||
| 728 | MOV AX, 2900H ;AN000; DOS Function for parsing a command line | ||
| 729 | DOSCALL ;AN000; Parse the command line | ||
| 730 | MOV AX, 2900H ;AN000; | ||
| 731 | MOV DI, 6CH ;AN000; ES:DI points to the second FCB | ||
| 732 | DOSCALL ;AN000; Parse the second filename | ||
| 733 | ; | ||
| 734 | ;INT 4BH DESTROYS SS,SP ; | ||
| 735 | MOV WORD PTR SAVE_AREA, SP ;AN000; Save the stack segment and pointer | ||
| 736 | MOV WORD PTR SAVE_AREA[2], SS ;AN000; | ||
| 737 | ; | ||
| 738 | MOV FIRST_TRY,TRUE ;AN000;DT initialize variables | ||
| 739 | MOV EXEC_DEALLOC,FALSE ;AN000;DT | ||
| 740 | MOV EXEC_DEHELP,FALSE ;AN000;DT | ||
| 741 | ; | ||
| 742 | MOV INT_24_ERROR, 0 ;AN000; Zero the number of critical errors | ||
| 743 | PUSH DS ;AN000; Save the current data segment | ||
| 744 | POP ES ;AN000; Point ES to the current data segment | ||
| 745 | MOV DX, EX_CHILD ;AN000; Get the string with the name of the sub-program | ||
| 746 | ADD DX, 2 ;AN000; Adjust pointer passed length word | ||
| 747 | MOV AX,4B00H ;AN000; DOS Function number of executing a sub-program | ||
| 748 | PUSH BX ;AN000;DT | ||
| 749 | DOSCALL ;AN000; Fork to the sub-process | ||
| 750 | POP BX ;AN000;DT | ||
| 751 | .IF < c > ;AN000;DT | ||
| 752 | MOV EXEC_ERR,TRUE ;AN000;DT | ||
| 753 | .ELSE ;AN000;DT | ||
| 754 | MOV EXEC_ERR,FALSE ;AN000;DT | ||
| 755 | .ENDIF ;AN000;DT | ||
| 756 | ;RESTORE REGISTERS ; | ||
| 757 | MOV AX,DATA ;AN000; Restore the data register first | ||
| 758 | MOV DS,AX ;AN000; Load the data segment register | ||
| 759 | MOV ES,AX ;AN000; | ||
| 760 | CLI ;AN000; Turn off interrupts while setting SS | ||
| 761 | MOV SS,WORD PTR SAVE_AREA[2] ;AN000; Restore the stack segment and pointer | ||
| 762 | MOV SP,WORD PTR SAVE_AREA ;AN000; | ||
| 763 | STI ;AN000; Turn interrupts on again. | ||
| 764 | CALL FAR PTR HOOK_INT_24 ;AN000; | ||
| 765 | ; | ||
| 766 | .IF < <WORD PTR EX_RE_DIR> EQ EXEC_DIR > ;AN000; Redirect Stdout? | ||
| 767 | MOV AH, 3EH ;AN000; Close Stdout. | ||
| 768 | MOV BX, 1 ;AN000; | ||
| 769 | DOSCALL ;AN000; | ||
| 770 | MOV DX, OFFSET CON_DEVICE ;AN000; Open CON as stdout. | ||
| 771 | MOV AX, 3D01H ;AN000; | ||
| 772 | DOSCALL ;AN000; | ||
| 773 | MOV AH, 3EH ;AN000; Close Stderr. | ||
| 774 | MOV BX, 2 ;AN000; | ||
| 775 | DOSCALL ;AN000; | ||
| 776 | MOV DX, OFFSET CON_DEVICE ;AN000; Open CON as stdout. | ||
| 777 | MOV AX, 3D01H ;AN000; | ||
| 778 | DOSCALL ;AN000; | ||
| 779 | .ENDIF ;AN000; | ||
| 780 | ; | ||
| 781 | MOV AH,1AH ;AN000;JW | ||
| 782 | POP DX ;AN000;JW get old DTA off | ||
| 783 | POP DS ;AN000;JW get old DTA seg | ||
| 784 | DOSCALL ;AN000;JW restore the DTA address | ||
| 785 | ; | ||
| 786 | POP ES ;AN000; Restore all the registers. | ||
| 787 | POP DS ;AN000; | ||
| 788 | POP BP ;AN000; Restore the base pointer | ||
| 789 | ; | ||
| 790 | MOV AH, 4DH ;AN000; Get the return code from the sub-process | ||
| 791 | DOSCALL ;AN000; | ||
| 792 | .IF < AX NE 0 > or ;AN000; SAR;If not zero... | ||
| 793 | .IF < EXEC_ERR eq TRUE > ;AN000; SAR | ||
| 794 | .THEN ;AN000; SAR | ||
| 795 | MOV SUB_ERROR,AL ;AN000; | ||
| 796 | STC ;AN000; Indicate there was an error | ||
| 797 | .ELSE ;AN000; Otherwise... | ||
| 798 | MOV SUB_ERROR,0 ;AN000; | ||
| 799 | CLC ;AN000; No error. | ||
| 800 | .ENDIF ;AN000; | ||
| 801 | MOV SUB_PROGRAM, FALSE ;AN000; | ||
| 802 | MOV EXEC_FDISK, FALSE ;AN000;DT reset FDISK flag | ||
| 803 | ; | ||
| 804 | RET 8 ;AN000; Return, popping the parameters. | ||
| 805 | EXEC_PROGRAM_ROUTINE ENDP ;AN000; | ||
| 806 | ;************************************************************************ | ||
| 807 | ; | ||
| 808 | ; GET_CNTY_DEF_ROUTINE: Get country, keyboard and codepage for the | ||
| 809 | ; specified entry from the CTY_TABLE. | ||
| 810 | ; | ||
| 811 | ; INPUT: | ||
| 812 | ; BX = 1: Use CTY_TAB_A | ||
| 813 | ; = 2: Use CTY_TAB_B | ||
| 814 | ; AX = index into country list table | ||
| 815 | ; | ||
| 816 | ; OUTPUT: | ||
| 817 | ; N_COUNTRY = Country code | ||
| 818 | ; N_KYBD_VAL = 0: Keyboard code is not valid | ||
| 819 | ; = 1: Keyboard code is valid | ||
| 820 | ; S_KEYBOARD = Keyboard code (ASCII-N format) | ||
| 821 | ; N_CP_PRI = Primary code page | ||
| 822 | ; N_CP_SEC = Secondary code page | ||
| 823 | ; N_DESIGNATES = Number of disignates | ||
| 824 | ; N_CPSW = Cpsw status | ||
| 825 | ; N_CTY_RES = Reserved | ||
| 826 | ; | ||
| 827 | ; | ||
| 828 | ; OPERATION: The country code, keyboard, primary codepage and the | ||
| 829 | ; seondary codepage from the CTY_TABLE for the specified index is | ||
| 830 | ; returned as spedified above. | ||
| 831 | ; | ||
| 832 | ; Note: Index of the first item is the table is 1. | ||
| 833 | ; | ||
| 834 | ;**************************************************************************** | ||
| 835 | PUBLIC GET_CNTY_DEF_ROUTINE ;AN000; | ||
| 836 | GET_CNTY_DEF_ROUTINE PROC FAR ;AN000; | ||
| 837 | ; AX contains the search's start index | ||
| 838 | SUB AX, 1 ;AN000; Make the first index 0 | ||
| 839 | MOV DX, TYPE CTY_DEF ;AN000; There are 9 bytes per entry | ||
| 840 | MUL DX ;AN000; Calculate the starting offset | ||
| 841 | MOV SI, AX ;AN000; Move the address into an index reg | ||
| 842 | ; | ||
| 843 | .IF < BX EQ 1 > ;AN000; BX contains which table to search | ||
| 844 | ADD SI, OFFSET CTY_TAB_A_1 ;AN000; Use the first table | ||
| 845 | .ELSE ;AN000; | ||
| 846 | ADD SI, OFFSET CTY_TAB_B_1 ;AN000; Use the second table | ||
| 847 | .ENDIF ;AN000; | ||
| 848 | ; | ||
| 849 | COPY_WORD N_COUNTRY, [SI+0] ;AN000; Get the counrty code | ||
| 850 | COPY_BYTE N_KYBD_VAL, [SI+2] ;AN000; See if the keyboard is valid | ||
| 851 | MOV S_KEYBOARD, 2 ;AN000; Length of the keyboard code string | ||
| 852 | COPY_WORD S_KEYBOARD[2], [SI+3] ;AN000; Get the keyboard code string | ||
| 853 | COPY_WORD N_CP_PRI, [SI+5] ;AN000; Get the primary code page | ||
| 854 | COPY_WORD N_CP_SEC, [SI+7] ;AN000; Get the secondary code page | ||
| 855 | COPY_WORD N_DESIGNATES, [SI+9] ;AN000; Get the number of designates | ||
| 856 | COPY_WORD N_CPSW, [SI+11] ;AN000; Get the code page switching status | ||
| 857 | COPY_BYTE ALT_KYB_ID, [SI+13] ;AN000; Get default alternate keyboard | ||
| 858 | COPY_BYTE N_CTY_RES, [SI+14] ;AN000; A reserved byte | ||
| 859 | |||
| 860 | COPY_WORD I_KYBD_ALT,2 ;AC090;JW | ||
| 861 | RET ;AN000; | ||
| 862 | |||
| 863 | GET_CNTY_DEF_ROUTINE ENDP ;AN000; | ||
| 864 | ;**************************************************************************** | ||
| 865 | ; | ||
| 866 | ; GET_CNTY_INDEX_ROUTINE: Scan CTY_TABLE for the specified country code and | ||
| 867 | ; return index of country code into the table. | ||
| 868 | ; | ||
| 869 | ; INPUT: | ||
| 870 | ; CX = The country code | ||
| 871 | ; | ||
| 872 | ; OUTPUT: | ||
| 873 | ; DX = 1: Country code is in table CTY_TAB_A | ||
| 874 | ; = 2: Country code is in table CTY_TAB_B | ||
| 875 | ; BX = The index into the country list. | ||
| 876 | ; | ||
| 877 | ; OPERATION: The CTY_TABLE is scanned for the specified country code and | ||
| 878 | ; the index into the table is returned. | ||
| 879 | ; | ||
| 880 | ; Note: The index of the first item in the table is 1. | ||
| 881 | ; | ||
| 882 | ;************************************************************************ | ||
| 883 | PUBLIC GET_CNTY_INDEX_ROUTINE ;AN000; | ||
| 884 | GET_CNTY_INDEX_ROUTINE PROC FAR ;AN000; | ||
| 885 | ; | ||
| 886 | MOV DX, 1 ;AN000; Which table to search | ||
| 887 | MOV AH, 0 ;AN000; Clear the high byte | ||
| 888 | .WHILE < DX LE 2 > ;AN000; Search the TWO tables | ||
| 889 | .IF < DX EQ 1 > ;AN000; Are we searching the first table? | ||
| 890 | MOV SI, OFFSET CTY_TAB_A_1 ;AN000; Yes! Get the offset of the table | ||
| 891 | MOV AL, CTY_TAB_A ;AN000; Get the number of entries | ||
| 892 | .ELSE ;AN000; Otherwise... | ||
| 893 | MOV SI, OFFSET CTY_TAB_B_1 ;AN000; Get the offset of the second table | ||
| 894 | MOV AL, CTY_TAB_B ;AN000; Get the number of entries in this table | ||
| 895 | .ENDIF ;AN000; | ||
| 896 | MOV BX, 1 ;AN000; Index currently being scaned | ||
| 897 | ; | ||
| 898 | ; CX contains the country code. | ||
| 899 | .WHILE < <WORD PTR [SI]> NE CX> AND ;AN000; Search until this code is found | ||
| 900 | .WHILE < BX LE AX > ;AN000; And while there are still table entries | ||
| 901 | INC BX ;AN000; Increment the index into the table | ||
| 902 | ADD SI, TYPE CTY_DEF ;AN000; Point to the next table record | ||
| 903 | .ENDWHILE ;AN000; | ||
| 904 | ; | ||
| 905 | .IF < BX GT AX > ;AN000; Index is finished for this table | ||
| 906 | INC DX ;AN000; Examine the next table | ||
| 907 | .ELSE ;AN000; | ||
| 908 | .LEAVE ;AN000; Exit the while loop | ||
| 909 | .ENDIF ;AN000; | ||
| 910 | ; | ||
| 911 | .ENDWHILE ;AN000; | ||
| 912 | RET ;AN000; | ||
| 913 | GET_CNTY_INDEX_ROUTINE ENDP ;AN000; | ||
| 914 | ;**************************************************************************** | ||
| 915 | ; | ||
| 916 | ; GET_KYBD_INDEX_ROUTINE: Scan KYBD_TABLE for the specified keyboard code and | ||
| 917 | ; return index of keyboard code in the table and the | ||
| 918 | ; alternate keyboard indicator. | ||
| 919 | ; | ||
| 920 | ; INPUT: | ||
| 921 | ; DI = The offset of an ASCII-N string containing the keyboard code. | ||
| 922 | ; | ||
| 923 | ; OUTPUT: | ||
| 924 | ; DX = 1: Keyboard is in table KYBD_TAB_A | ||
| 925 | ; = 2: Keyboard is in table KYBD_TAB_B | ||
| 926 | ; BX = The index into keyboard table. | ||
| 927 | ; AL = 0: No alternate keyboard | ||
| 928 | ; = 1: Alternate keyboard present | ||
| 929 | ; | ||
| 930 | ; OPERATION: The KYBD_TABLE is scanned for the specifies keyboard code and | ||
| 931 | ; the index into the table is returned. | ||
| 932 | ; | ||
| 933 | ; Note: The index of the first item in the table is 1. | ||
| 934 | ; | ||
| 935 | ;************************************************************************ | ||
| 936 | PUBLIC GET_KYBD_INDEX_ROUTINE ;AN000; | ||
| 937 | GET_KYBD_INDEX_ROUTINE PROC FAR ;AN000; | ||
| 938 | ; | ||
| 939 | MOV BX, 0 ;AN000; Zero the table index | ||
| 940 | MOV DX, 1 ;AN000; Which table to search | ||
| 941 | MOV AH, 0 ;AN000; Clear high byte to use 16-bit value | ||
| 942 | .WHILE < DX LE 2 > ;AN000; | ||
| 943 | .IF < DX EQ 1 > ;AN000; | ||
| 944 | MOV SI, OFFSET KYBD_TAB_A_1 ;AN000; Get the offset of the table | ||
| 945 | MOV AL, KYBD_TAB_A ;AN000; Get the number of entries | ||
| 946 | .ELSE ;AN000; | ||
| 947 | MOV SI, OFFSET KYBD_TAB_B_1 ;AN000; Get the offset of the second table | ||
| 948 | MOV AL, KYBD_TAB_B ;AN000; Get the number of entries in this table | ||
| 949 | .ENDIF ;AN000; | ||
| 950 | MOV BX, 1 ;AN000; Index currently being scaned | ||
| 951 | ; | ||
| 952 | MOV CX, WORD PTR [DI+2] ;AN000; Get the keyboard code | ||
| 953 | .WHILE < <WORD PTR [SI]> NE CX> AND ;AN000; | ||
| 954 | .WHILE < BX LE AX > ;AN000; | ||
| 955 | INC BX ;AN000; | ||
| 956 | ADD SI, TYPE KYB_DEF ;AN000; | ||
| 957 | .ENDWHILE ;AN000; | ||
| 958 | ; | ||
| 959 | .IF < BX GT AX > ;AN000; Index is finished for this table | ||
| 960 | INC DX ;AN000; Examine the next table | ||
| 961 | .ELSE ;AN000; | ||
| 962 | MOV AL, BYTE PTR [SI+2] ;AN000; Get the alternate keyboard flag | ||
| 963 | .LEAVE ;AN000; Exit the while loop | ||
| 964 | .ENDIF ;AN000; | ||
| 965 | ; | ||
| 966 | .ENDWHILE ;AN000; | ||
| 967 | RET ;AN000; | ||
| 968 | ; | ||
| 969 | GET_KYBD_INDEX_ROUTINE ENDP ;AN000; | ||
| 970 | ;************************************************************************; | ||
| 971 | ; | ||
| 972 | ; GET_KYBD_ROUTINE: Get the keyboard code and the alternate keyboard | ||
| 973 | ; indicator from the KYBD_TABLE for the item specified by the index | ||
| 974 | ; into the keyboard table. | ||
| 975 | ; | ||
| 976 | ; INPUT: | ||
| 977 | ; CX = 1: Keyboard code is in table KYBD_TAB_A | ||
| 978 | ; = 2: Keyboard code is is table KYBD_TAB_B | ||
| 979 | ; AX = index into the keyboard table. | ||
| 980 | ; DI = Address of the keyboard code. (ASCII-N format) | ||
| 981 | ; | ||
| 982 | ; OUTPUT: | ||
| 983 | ; AL = 0: No alternate keyboard | ||
| 984 | ; = 1: Alternate keyboard present | ||
| 985 | ; | ||
| 986 | ; OPERATION: The keyboard code from the KYBD_TABLE for the specified | ||
| 987 | ; index item is returned. Also, the alternate keyboard present | ||
| 988 | ; variable is updated. | ||
| 989 | ; | ||
| 990 | ; Note: Index of the first item in the table is 1. | ||
| 991 | ; | ||
| 992 | ;**************************************************************************** | ||
| 993 | PUBLIC GET_KYBD_ROUTINE ;AN000; | ||
| 994 | GET_KYBD_ROUTINE PROC FAR ;AN000; | ||
| 995 | ; AX contins the search's start index | ||
| 996 | SUB AX, 1 ;AN000; Make the first index 0 | ||
| 997 | MOV DX, TYPE KYB_DEF ;AN000; There are 3 bytes per entry | ||
| 998 | MUL DX ;AN000; Calculate the offset into the table | ||
| 999 | MOV SI, AX ;AN000; Move the address into an index reg | ||
| 1000 | .IF < CX EQ 1> ;AN000; CX Contains which table to search | ||
| 1001 | ADD SI, OFFSET KYBD_TAB_A_1 ;AN000; | ||
| 1002 | .ELSE ;AN000; | ||
| 1003 | ADD SI, OFFSET KYBD_TAB_B_1 ;AN000; | ||
| 1004 | .ENDIF ;AN000; | ||
| 1005 | ; | ||
| 1006 | MOV WORD PTR [DI], 2 ;AN000; Length of the string | ||
| 1007 | COPY_WORD [DI+2], [SI] ;AN000; Get the keyboard name | ||
| 1008 | MOV AL, [SI+2] ;AN000; See if there is an alternate keyboard | ||
| 1009 | RET ;AN000; | ||
| 1010 | ; | ||
| 1011 | GET_KYBD_ROUTINE ENDP ;AN000; | ||
| 1012 | ;;************************************************************************ | ||
| 1013 | ;; | ||
| 1014 | ;; CHK_EX_MEM_ROUTINE: Check if the system supports expanded memory. | ||
| 1015 | ;; | ||
| 1016 | ;; INPUT: | ||
| 1017 | ;; None. | ||
| 1018 | ;; | ||
| 1019 | ;; OUTPUT: | ||
| 1020 | ;; SI = 0: Expanded memory is NOT supported. | ||
| 1021 | ;; = 1: Expanded memory is supported. | ||
| 1022 | ;; BX = 0: XMA card | ||
| 1023 | ;; = 1: MODEL 80 | ||
| 1024 | ;; | ||
| 1025 | ;; OPERATION: A call to the system services (INT 15H, AH = C0H) is performed | ||
| 1026 | ;; to get the system configuration parameters. (model byte). | ||
| 1027 | ;; | ||
| 1028 | ;; The Personal System/2 Model 80 (model byte = 0F8h) always support | ||
| 1029 | ;; expanded memory. | ||
| 1030 | ;; | ||
| 1031 | ;; The Personal System/2 Models 50 and 60 (model byte = 0FCh) support | ||
| 1032 | ;; expanded memory if the CATSKILL 2 is present. The CATSKILL 2 card has | ||
| 1033 | ;; the identity number of F7FEh. F7H is read through the port address | ||
| 1034 | ;; 101h and FEH is read through port 100H | ||
| 1035 | ;; | ||
| 1036 | ;; The PS2 50/60 also support expanded memory if the HOLSTER card is | ||
| 1037 | ;; is present (id = FEFEh). | ||
| 1038 | ;; | ||
| 1039 | ;; AT's (and some XT's ?) support expanded memory if the CATSKILL 1 | ||
| 1040 | ;; (XMA) card is present. | ||
| 1041 | ;; | ||
| 1042 | ;; All other models do not support expanded memory. | ||
| 1043 | ;; | ||
| 1044 | ;;************************************************************************ | ||
| 1045 | SLOT_SETUP EQU 08h ;AN000;Mask to put the desired adapter @RH2 | ||
| 1046 | CARD_ID_LO EQU 100H ;AN000;PS/2 Adapter card id low and @RH2 | ||
| 1047 | CARD_ID_HI EQU 101H ;AN000; high bytes - read only @RH2 | ||
| 1048 | ;Card IDs read from port 100,101 @RH2 | ||
| 1049 | XMAA_CARD_ID EQU 0FEF7h ;AN000; XMA/A Card ID @RH2 | ||
| 1050 | HLST_CARD_ID EQU 0FEFEh ;AN000; HOLSTER card id JW | ||
| 1051 | MODE_REG EQU 31A7H ;AN000; Mode register | ||
| 1052 | TTPOINTER EQU 31A0H ;AN000; Translate Table Pointer (word) | ||
| 1053 | ; | ||
| 1054 | NUM_OF_SLOTS EQU 8 ;AN000; | ||
| 1055 | ; | ||
| 1056 | PUBLIC CHK_EX_MEM_ROUTINE ;AN000; | ||
| 1057 | CHK_EX_MEM_ROUTINE PROC FAR ;AN000; | ||
| 1058 | ; | ||
| 1059 | PUSH ES ;AN000; | ||
| 1060 | MOV AH, 0C0H ;AN000; Function number to get the model byte | ||
| 1061 | INT 15H ;AN000; | ||
| 1062 | .IF < AH eq 80H > ;AN000;IF AH = 80H | ||
| 1063 | MOV SI, 0 ;AN000;then this is a PC or PCjr. No Expanded memory | ||
| 1064 | MOV BX, 0 ;AN000;JW not a model 80 | ||
| 1065 | .ELSE near ;AN000; | ||
| 1066 | .IF < AH ne 086H > ;AN000;If not an old XT or AT | ||
| 1067 | MOV AH, BYTE PTR ES:[BX]+2 ;AN000; Get the model byte | ||
| 1068 | MOV AL, BYTE PTR ES:[BX]+3 ;AN000; Get the sub-model byte | ||
| 1069 | .ENDIF ;AN000; | ||
| 1070 | .IF < AH eq 0F8H> ;AN000; Is this a model 80? | ||
| 1071 | MOV SI, 1 ;AN000; Yes! Expanded memory supported | ||
| 1072 | MOV BX, 1 ;AN000;JW | ||
| 1073 | .ELSEIF < AH eq 0FCH > and ;AN000; Is this a model 50 or 60? | ||
| 1074 | .IF < AL eq 04 > or ;AN000; | ||
| 1075 | .IF < AL eq 05 > ;AN000; | ||
| 1076 | ;------------------------------------- | ||
| 1077 | ; Search for XMA/A cards � | ||
| 1078 | ;------------------------------------- | ||
| 1079 | XOR CX,CX ;AN000;Check all slots starting at 0 @RH2 | ||
| 1080 | MOV BX,0 ;AN000;JW say not a model 80 | ||
| 1081 | .REPEAT ;AN000; | ||
| 1082 | ; | ||
| 1083 | MOV AL,CL ;AN000;Enable the specific slot by ORing @RH2 | ||
| 1084 | OR AL,SLOT_SETUP ;AN000; the slot (bits 0-2) with the @RH2 | ||
| 1085 | OUT 96H,AL ;AN000; setup flag (bit 3). @RH2 | ||
| 1086 | ; | ||
| 1087 | MOV DX,CARD_ID_LO ;AN000;Read the signature ID of the card @RH2 | ||
| 1088 | IN AL,DX ;AN000; @RH2 | ||
| 1089 | XCHG AL,AH ;AN000; @RH2 | ||
| 1090 | MOV DX,CARD_ID_HI ;AN000; @RH2 | ||
| 1091 | IN AL,DX ;AN000; @RH2 | ||
| 1092 | ; | ||
| 1093 | .IF < AX eq XMAA_CARD_ID > or ;AN000; | ||
| 1094 | .IF < AX eq HLST_CARD_ID > ;AN000;JW | ||
| 1095 | MOV SI, 1 ;AN000; Yes! Expanded memory supported | ||
| 1096 | .LEAVE ;AN000; | ||
| 1097 | .ENDIF ;AN000; | ||
| 1098 | ; | ||
| 1099 | .IF < CL eq NUM_OF_SLOTS > ;AN000; | ||
| 1100 | MOV SI, 0 ;AN000; No! Expanded memoory isn't supported | ||
| 1101 | .LEAVE ;AN000; | ||
| 1102 | .ENDIF ;AN000; | ||
| 1103 | ; | ||
| 1104 | INC CL ;AN000;Check next adapter slot @RH2 | ||
| 1105 | ; | ||
| 1106 | .UNTIL ;AN000; | ||
| 1107 | XOR AX,AX ;AN000;JW | ||
| 1108 | OUT 96H,AL ;AN000;JW Reset port to neutral state | ||
| 1109 | ; | ||
| 1110 | .ELSE ;AN000; AT or XT | ||
| 1111 | ;------------------------------------- | ||
| 1112 | ; Search for XMA cards � | ||
| 1113 | ;------------------------------------- | ||
| 1114 | MOV DX,MODE_REG ;AN000;SAVE CONTENTS OF MODE REG | ||
| 1115 | IN AL,DX ;AN000; | ||
| 1116 | PUSH AX ;AN000; | ||
| 1117 | ; | ||
| 1118 | MOV AX,0AA55H ;AN000;DATA PATTERN (IN REAL MODE) | ||
| 1119 | ;BE CERTAIN MODE REG GETS | ||
| 1120 | ;REAL MODE | ||
| 1121 | MOV DX,MODE_REG ;AN000;I/O TO MODE REG | ||
| 1122 | OUT DX,AL ;AN000;WRITE PATTERN | ||
| 1123 | MOV DX,TTPOINTER + 1 ;AN000;I/O TO TT POINTER (ODD ADDR) | ||
| 1124 | XCHG AL,AH ;AN000;CHRG BUS WITH INVERSE PATTERN | ||
| 1125 | OUT DX,AL ;AN000;WRITE IT | ||
| 1126 | MOV DX,MODE_REG ;AN000; | ||
| 1127 | IN AL,DX ;AN000;READ BACK MODE REG | ||
| 1128 | XOR AL,AH ;AN000; | ||
| 1129 | AND AL,0FH ;AN000;MASK OFF UNUSED BITS | ||
| 1130 | ;ZERO FLAG = 0 IF ERROR | ||
| 1131 | POP AX ;AN000; | ||
| 1132 | PUSHF ;AN000;SAVE FLAGS | ||
| 1133 | MOV DX,MODE_REG ;AN000; | ||
| 1134 | OUT DX,AL ;AN000;RESTORE MODE REG TO INITIAL STATE | ||
| 1135 | POPF ;AN000;RESTORE FLAGS | ||
| 1136 | .IF < z > ;AN000; | ||
| 1137 | MOV SI,1 ;AN000;XMA card present | ||
| 1138 | .ELSE ;AN000; | ||
| 1139 | MOV SI,0 ;AN000;no XMA card present | ||
| 1140 | .ENDIF ;AN000; | ||
| 1141 | MOV BX,0 ;AN000;not a model 80 | ||
| 1142 | .ENDIF ;AN000; | ||
| 1143 | .ENDIF ;AN000; | ||
| 1144 | POP ES ;AN000; | ||
| 1145 | RET ;AN000; | ||
| 1146 | CHK_EX_MEM_ROUTINE ENDP ;AN000; | ||
| 1147 | ;**************************************************************************** | ||
| 1148 | ; | ||
| 1149 | ; GET_PRINTER_PARAMS_ROUTINE: Get parameters for specified printer. | ||
| 1150 | ; | ||
| 1151 | ; INPUT: | ||
| 1152 | ; AX = The printer number. | ||
| 1153 | ; BX = The number of the port to retrieve the information on. | ||
| 1154 | ; If var_port = 0, the information that is returned is | ||
| 1155 | ; that which corresponds to var_prt. | ||
| 1156 | ; BX = 0 : Get the information on printer number VAR_PRT | ||
| 1157 | ; = 1 : Get the information for the printer attached to LPT1 | ||
| 1158 | ; = 2 : Get the information for the printer attached to LPT2 | ||
| 1159 | ; = 3 : Get the information for the printer attached to LPT3 | ||
| 1160 | ; = 4 : Get the information for the printer attached to COM1 | ||
| 1161 | ; = 5 : Get the information for the printer attached to COM2 | ||
| 1162 | ; = 6 : Get the information for the printer attached to COM3 | ||
| 1163 | ; = 7 : Get the information for the printer attached to COM4 | ||
| 1164 | ; | ||
| 1165 | ; OUTPUT: | ||
| 1166 | ; AX = 1: Printer information is valid | ||
| 1167 | ; = 0: Printer not valid: default values returned | ||
| 1168 | ; | ||
| 1169 | ; OPERATION: Printer information for the specified printer is returned. | ||
| 1170 | ; If the specified printer is not defined, default values will be | ||
| 1171 | ; returned. | ||
| 1172 | ; I_PRINTER = Index into printer list (16 bit variable) : default 1 | ||
| 1173 | ; N_PRINTER_TYPE = P: Parallel printer | ||
| 1174 | ; = S: Serial printer | ||
| 1175 | ; I_PORT = Port number (16 bit variable) : default 1 | ||
| 1176 | ; I_REDIRECT = Redirection port number (16 bit variable) : default 1 | ||
| 1177 | ; S_MODE_PARM = Mode parameters - ASCII-N format | ||
| 1178 | ; S_CP_DRIVER = Code page driver parameters - ASCII-N format | ||
| 1179 | ; S_CP_PREPARE = Code prepare parameters - ASCII-N format | ||
| 1180 | ; S_GRAPH_PARM = Graphics parameters - ASCII-N format | ||
| 1181 | ; | ||
| 1182 | ; The structures of printer information are searched for the one with | ||
| 1183 | ; the same number as specified by AX. If found, the information | ||
| 1184 | ; in that structure is returned in the variables listed above. | ||
| 1185 | ; | ||
| 1186 | ;**************************************************************************** | ||
| 1187 | PUBLIC GET_PRINTER_PARAMS_ROUTINE ;AN000; | ||
| 1188 | GET_PRINTER_PARAMS_ROUTINE PROC FAR ;AN000; | ||
| 1189 | |||
| 1190 | .IF < BX NE 0 > ;AN000; | ||
| 1191 | DEC BX ;AN000; | ||
| 1192 | MOV AX, TYPE PRINTER_DEF ;AN000; | ||
| 1193 | MUL BX ;AN000; | ||
| 1194 | MOV SI, AX ;AN000; | ||
| 1195 | .IF < PRINTER_TABLES[SI].PRINTER_DATA_VALID EQ 1 > ;AN000; | ||
| 1196 | JMP COPY_INFO ;AN000; | ||
| 1197 | .ELSE ;AN000; | ||
| 1198 | JMP RETURN_DEFAULTS ;AN000; | ||
| 1199 | .ENDIF ;AN000; | ||
| 1200 | .ELSE ;AN000; | ||
| 1201 | MOV SI, 0 ;AN000; Index into the printer table | ||
| 1202 | MOV BX, 1 ;AN000; Which structure is being searched | ||
| 1203 | .WHILE < BX BE 7 > ;AN000; Search the seven structures | ||
| 1204 | .IF < PRINTER_TABLES[SI].PRINTER_TAB_NUM EQ AX > AND ;AN000; Does the printer number match? | ||
| 1205 | .IF < PRINTER_TABLES[SI].PRINTER_DATA_VALID EQ 1 > ;AN000; And is this data valid? | ||
| 1206 | JMP COPY_INFO ;AN000; | ||
| 1207 | .ENDIF ;AN000; | ||
| 1208 | ADD SI, TYPE PRINTER_DEF ;AN000; Search the next structure | ||
| 1209 | INC BX ;AN000; | ||
| 1210 | .ENDWHILE ;AN000; | ||
| 1211 | RETURN_DEFAULTS: ;AN000; | ||
| 1212 | MOV I_PRINTER, 1 ;AN000; Yes! Return the default information | ||
| 1213 | MOV I_PORT, 1 ;AN000; | ||
| 1214 | MOV I_REDIRECT, 1 ;AN000; | ||
| 1215 | MOV S_MODE_PARM, 0 ;AN000; | ||
| 1216 | MOV S_CP_DRIVER, 0 ;AN000; | ||
| 1217 | MOV S_CP_PREPARE, 0 ;AN000; | ||
| 1218 | MOV S_GRAPH_PARM, 0 ;AN000; | ||
| 1219 | MOV AX, 0 ;AN000; Indicate that the default values are being returned | ||
| 1220 | JMP EXIT_GET_PARAMS ;AN000; | ||
| 1221 | .ENDIF ;AN000; | ||
| 1222 | |||
| 1223 | COPY_INFO: ;AN000; | ||
| 1224 | COPY_WORD I_PRINTER, PRINTER_TABLES[SI].PRINTER_INDEX ;AN000; Copy the data out of the structure | ||
| 1225 | COPY_BYTE N_PRINTER_TYPE, PRINTER_TABLES[SI].PRINTER_TYPE ;AN000; | ||
| 1226 | COPY_WORD I_PORT, PRINTER_TABLES[SI].PORT_NUMBER ;AN000; | ||
| 1227 | COPY_WORD I_REDIRECT, PRINTER_TABLES[SI].REDIRECTION_PORT ;AN000; | ||
| 1228 | PUSH SI ;AN000; | ||
| 1229 | COPY_STRING S_MODE_PARM, 40, PRINTER_TABLES[SI].MODE_PARMS ;AN000; | ||
| 1230 | POP SI ;AN000; | ||
| 1231 | PUSH SI ;AN000; | ||
| 1232 | COPY_STRING S_CP_DRIVER, 22, PRINTER_TABLES[SI].CODE_DRIVER ;AN000; | ||
| 1233 | POP SI ;AN000; | ||
| 1234 | PUSH SI ;AN000; | ||
| 1235 | COPY_STRING S_CP_PREPARE, 12, PRINTER_TABLES[SI].CODE_PREPARE ;AN000; | ||
| 1236 | POP SI ;AN000; | ||
| 1237 | PUSH SI ;AN000; | ||
| 1238 | COPY_STRING S_GRAPH_PARM, 20, PRINTER_TABLES[SI].GRAPHICS_PARMS ;AN000; | ||
| 1239 | POP SI ;AN000; | ||
| 1240 | MOV AX, 1 ;AN000; Return that the data is valid | ||
| 1241 | |||
| 1242 | EXIT_GET_PARAMS: ;AN000; | ||
| 1243 | RET ;AN000; | ||
| 1244 | ; | ||
| 1245 | GET_PRINTER_PARAMS_ROUTINE ENDP ;AN000; | ||
| 1246 | ;**************************************************************************** | ||
| 1247 | ; | ||
| 1248 | ; SAVE_PRINTER_PARAMS_ROUTINE: Save the printer information in the printer | ||
| 1249 | ; structures. | ||
| 1250 | ; | ||
| 1251 | ; INPUT: | ||
| 1252 | ; AX = The printer number. | ||
| 1253 | ; | ||
| 1254 | ; OUTPUT: | ||
| 1255 | ; None. | ||
| 1256 | ; | ||
| 1257 | ; OPERATION: Printer information for the specified printer is stored. | ||
| 1258 | ; I_PRINTER = Index into printer list (16 bit variable) : default 1 | ||
| 1259 | ; N_PRINTER_TYPE = P: Parallel printer | ||
| 1260 | ; = S: Serial printer | ||
| 1261 | ; I_PORT = Port number (16 bit variable) : default 1 | ||
| 1262 | ; I_REDIRECT = Redirection port number (16 bit variable) : default 1 | ||
| 1263 | ; S_MODE_PARM = Mode parameters - ASCII-N format | ||
| 1264 | ; S_CP_DRIVER = Code page driver parameters - ASCII-N format | ||
| 1265 | ; S_CP_PREPARE = Code prepare parameters - ASCII-N format | ||
| 1266 | ; S_GRAPH_PARM = Graphics parameters - ASCII-N format | ||
| 1267 | ; | ||
| 1268 | ; The information is stored in the structures according to the type | ||
| 1269 | ; and port number of this printer. The first three structures are for | ||
| 1270 | ; LPT1 - LPT3, while the next four are for COM1 - COM2. | ||
| 1271 | ; | ||
| 1272 | ;**************************************************************************** | ||
| 1273 | PUBLIC SAVE_PRINTER_PARAMS_ROUTINE ;AN000; | ||
| 1274 | SAVE_PRINTER_PARAMS_ROUTINE PROC FAR ;AN000; | ||
| 1275 | |||
| 1276 | PUSH AX ;AN000; Save the printer number | ||
| 1277 | MOV AX, TYPE PRINTER_DEF ;AN000; Get the size of each structure | ||
| 1278 | MOV SI, I_PORT ;AN000; Get the port number | ||
| 1279 | .IF < N_PRINTER_TYPE EQ 'S'> ;AN000; Is this a serial port? | ||
| 1280 | ADD SI, 3 ;AN000; Yes! Store in the later 4 structures | ||
| 1281 | .ENDIF ;AN000; | ||
| 1282 | DEC SI ;AN000; Make the first index a 0 | ||
| 1283 | MUL SI ;AN000; Calculate the address of the structure | ||
| 1284 | MOV BX, AX ;AN000; Put address into an index register | ||
| 1285 | COPY_WORD PRINTER_TABLES[BX].PRINTER_INDEX, I_PRINTER ;AN000; Copy the data into the structure | ||
| 1286 | COPY_BYTE PRINTER_TABLES[BX].PRINTER_TYPE, N_PRINTER_TYPE;AN000; | ||
| 1287 | COPY_WORD PRINTER_TABLES[BX].PORT_NUMBER, I_PORT ;AN000; | ||
| 1288 | COPY_WORD PRINTER_TABLES[BX].REDIRECTION_PORT, I_REDIRECT ;AN000; | ||
| 1289 | COPY_STRING PRINTER_TABLES[BX].MODE_PARMS, 40, S_MODE_PARM ;AC000;JW | ||
| 1290 | COPY_STRING PRINTER_TABLES[BX].CODE_DRIVER, 22, S_CP_DRIVER ;AN000; | ||
| 1291 | COPY_STRING PRINTER_TABLES[BX].CODE_PREPARE, 12, S_CP_PREPARE ;AN000; | ||
| 1292 | COPY_STRING PRINTER_TABLES[BX].GRAPHICS_PARMS, 20, S_GRAPH_PARM ;AN000; | ||
| 1293 | .IF <I_PORT EQ 1 > ;AN029; | ||
| 1294 | COPY_STRING S_GRAPHICS,M_GRAPHICS,S_GRAPH_PARM ;AN029; | ||
| 1295 | .ENDIF ;AN029; | ||
| 1296 | POP AX ;AN000; Restore the printer number | ||
| 1297 | MOV PRINTER_TABLES[BX].PRINTER_TAB_NUM, AX ;AN000; Save the number | ||
| 1298 | MOV PRINTER_TABLES[BX].PRINTER_DATA_VALID, 1 ;AN000; Indicate that the data is valid | ||
| 1299 | |||
| 1300 | MOV SI, 0 ;AN000; | ||
| 1301 | MOV CX, 1 ;AN000; | ||
| 1302 | .WHILE < CX BE 7 > ;AN000; | ||
| 1303 | .IF < PRINTER_TABLES[SI].PRINTER_TAB_NUM EQ AX > AND ;AN000; | ||
| 1304 | .IF < SI NE BX > ;AN000; | ||
| 1305 | MOV PRINTER_TABLES[SI].PRINTER_DATA_VALID, 0 ;AN000; | ||
| 1306 | .ENDIF ;AN000; | ||
| 1307 | ADD SI, TYPE PRINTER_DEF ;AN000; | ||
| 1308 | INC CX ;AN000; | ||
| 1309 | .ENDWHILE ;AN000; | ||
| 1310 | |||
| 1311 | RET ;AN000; | ||
| 1312 | |||
| 1313 | SAVE_PRINTER_PARAMS_ROUTINE ENDP ;AN000; | ||
| 1314 | ;**************************************************************************** | ||
| 1315 | ; | ||
| 1316 | ; DISPLAY_MESSAGE_ROUTINE: Call the message retriever to display a message. | ||
| 1317 | ; | ||
| 1318 | ; INPUT: | ||
| 1319 | ; AX = The number of the message to be displayed. (16 bit value) | ||
| 1320 | ; | ||
| 1321 | ; OUTPUT: | ||
| 1322 | ; If CY = 1, there was an error displaying the message. | ||
| 1323 | ; If CY = 0, there were no errors. | ||
| 1324 | ; | ||
| 1325 | ; OPERATION: | ||
| 1326 | ; | ||
| 1327 | ;**************************************************************************** | ||
| 1328 | PUBLIC DISPLAY_MESSAGE_ROUTINE ;AN000; | ||
| 1329 | DISPLAY_MESSAGE_ROUTINE PROC FAR ;AN000; AX already contains the message number | ||
| 1330 | MOV BX, -1 ;AN000; HANDLE -1 ==> USE ONLY DOS FUNCTION 1-12 | ||
| 1331 | MOV SI, 0 ;AN000; SUBSTITUTION LIST | ||
| 1332 | MOV CX, 0 ;AN000; SUBSTITUTION COUNT | ||
| 1333 | MOV DL, 00 ;AN000; DOS INT21H FUNCTION FOR INPUT 0==> NO INPUT | ||
| 1334 | MOV DI, 0 ;AN000; INPUT BUFFER IF DL = 0AH | ||
| 1335 | MOV DH, -1 ;AN000; MESSAGE CALL -1==> UTILITY MESSAGE | ||
| 1336 | CALL SYSDISPMSG ;AN000; | ||
| 1337 | RET ;AN000; | ||
| 1338 | DISPLAY_MESSAGE_ROUTINE ENDP ;AN000; | ||
| 1339 | |||
| 1340 | ;**************************************************************************** | ||
| 1341 | ; Procedure for hooking the INT_23_VECTOR into vector table | ||
| 1342 | ; INPUT: | ||
| 1343 | ; None. | ||
| 1344 | ; OUTPUT: | ||
| 1345 | ; None. | ||
| 1346 | ;**************************************************************************** | ||
| 1347 | PUBLIC HOOK_INT_23 ;AN074;SEH | ||
| 1348 | HOOK_INT_23 PROC FAR ;AN074;SEH | ||
| 1349 | |||
| 1350 | PUSH AX ;AN074;SEH | ||
| 1351 | PUSH BX ;AN074;SEH | ||
| 1352 | PUSH DX ;AN074;SEH | ||
| 1353 | PUSH ES ;AN074;SEH Save the segment registers. | ||
| 1354 | PUSH DS ;AN074;SEH | ||
| 1355 | PUSHF ;AN074;SEH | ||
| 1356 | ; | ||
| 1357 | MOV AL, 23H ;AN074;SEH Interrupt number to get the vector of | ||
| 1358 | MOV AH, 35H ;AN074;SEH DOS Function number for getting a vector | ||
| 1359 | DOSCALL ;AN074;SEH Get the interrupt vector | ||
| 1360 | MOV WORD PTR OLD_INT_23, BX ;AN074;SEH Save the old vactor offset | ||
| 1361 | MOV AX, ES ;AN074;SEH Get the old vector segment | ||
| 1362 | MOV WORD PTR OLD_INT_23[2], AX ;AN074;SEH Save the old vector segment | ||
| 1363 | PUSH DS ;AN074;SEH Save DS | ||
| 1364 | PUSH CS ;AN074;SEH Point DS to the current code segment | ||
| 1365 | POP DS ;AN074;SEH | ||
| 1366 | MOV DX, OFFSET INT_23_VECTOR ;AN074;SEH Load offset of the new vector | ||
| 1367 | MOV AL, 23H ;AN074;SEH Interrupt number to set | ||
| 1368 | MOV AH, 25H ;AN074;SEH DOS Fn. number for setting a vector | ||
| 1369 | DOSCALL ;AN074;SEH Set the vector | ||
| 1370 | POP DS ;AN074;SEH Restore data segment | ||
| 1371 | ; | ||
| 1372 | POPF ;AN074;SEH | ||
| 1373 | POP DS ;AN074;SEH Restore the registers | ||
| 1374 | POP ES ;AN074;SEH | ||
| 1375 | POP DX ;AN074;SEH | ||
| 1376 | POP BX ;AN074;SEH | ||
| 1377 | POP AX ;AN074;SEH | ||
| 1378 | ; | ||
| 1379 | RET ;AN074;SEH | ||
| 1380 | HOOK_INT_23 ENDP ;AN074;SEH | ||
| 1381 | |||
| 1382 | ;**************************************************************************** | ||
| 1383 | ; Procedure for restoring the old interrupt 23h vector. | ||
| 1384 | ; INPUT: | ||
| 1385 | ; None. | ||
| 1386 | ; OUTPUT: | ||
| 1387 | ; None. | ||
| 1388 | ;**************************************************************************** | ||
| 1389 | PUBLIC RESTORE_INT_23 ;AN074;SEH | ||
| 1390 | RESTORE_INT_23 PROC FAR ;AN074;SEH | ||
| 1391 | ; | ||
| 1392 | PUSHF ;AN074;SEH | ||
| 1393 | PUSH AX ;AN074;SEH | ||
| 1394 | PUSH DX ;AN074;SEH | ||
| 1395 | PUSH DS ;AN074;SEH Save the data segment | ||
| 1396 | ; | ||
| 1397 | PUSH DS ;AN074;SEH Save DS | ||
| 1398 | LDS DX, OLD_INT_23 ;AN074;SEH Load the address of the old vector | ||
| 1399 | MOV AH, 25H ;AN074;SEH DOS Fn. number for setting an interrupt vector | ||
| 1400 | MOV AL, 23H ;AN074;SEH Interrupt vector to set | ||
| 1401 | DOSCALL ;AN074;SEH Set the vector | ||
| 1402 | POP DS ;AN074;SEH Restore data segment | ||
| 1403 | ; | ||
| 1404 | POP DS ;AN074;SEH Restore the data segment | ||
| 1405 | POP DX ;AN074;SEH | ||
| 1406 | POP AX ;AN074;SEH | ||
| 1407 | POPF ;AN074;SEH | ||
| 1408 | ; | ||
| 1409 | RET ;AN074;SEH | ||
| 1410 | RESTORE_INT_23 ENDP ;AN074;SEH | ||
| 1411 | ;**************************************************************************** | ||
| 1412 | ; Procedure for hooking the INT_24_VECTOR into vector table | ||
| 1413 | ; INPUT: | ||
| 1414 | ; None. | ||
| 1415 | ; OUTPUT: | ||
| 1416 | ; None. | ||
| 1417 | ;**************************************************************************** | ||
| 1418 | PUBLIC HOOK_INT_24 ;AN000; | ||
| 1419 | HOOK_INT_24 PROC FAR ;AN000; | ||
| 1420 | |||
| 1421 | PUSH AX ;AN000; | ||
| 1422 | PUSH BX ;AN000; | ||
| 1423 | PUSH DX ;AN000; | ||
| 1424 | PUSH ES ;AN000; Save the segment registers. | ||
| 1425 | PUSH DS ;AN000; | ||
| 1426 | PUSHF ;AN000; | ||
| 1427 | |||
| 1428 | .IF < INT24_STATUS eq UNHOOKED > ;AN000; | ||
| 1429 | |||
| 1430 | MOV AL, 24H ;AN000; Interrupt number to get the vector of | ||
| 1431 | MOV AH, 35H ;AN000; DOS Function number for getting a vector | ||
| 1432 | DOSCALL ;AN000; Get the interrupt vector | ||
| 1433 | MOV WORD PTR OLD_INT_24, BX ;AN000; Save the old vactor offset | ||
| 1434 | MOV AX, ES ;AN000; Get the old vector segment | ||
| 1435 | MOV WORD PTR OLD_INT_24[2], AX ;AN000; Save the old vector segment | ||
| 1436 | PUSH DS ;AN000; Save DS | ||
| 1437 | PUSH CS ;AN000; Point DS to the current code segment | ||
| 1438 | POP DS ;AN000; | ||
| 1439 | MOV DX, OFFSET INT_24_VECTOR ;AN000; Load offset of the new vector | ||
| 1440 | MOV AL, 24H ;AN000; Interrupt number to set | ||
| 1441 | MOV AH, 25H ;AN000; DOS Fn. number for setting a vector | ||
| 1442 | DOSCALL ;AN000; Set the vector | ||
| 1443 | POP DS ;AN000; Restore data segment | ||
| 1444 | MOV INT24_STATUS,HOOKED ;AN000; | ||
| 1445 | |||
| 1446 | .ENDIF ;AN000; | ||
| 1447 | |||
| 1448 | POPF ;AN000; | ||
| 1449 | POP DS ;AN000; Restore the registers | ||
| 1450 | POP ES ;AN000; | ||
| 1451 | POP DX ;AN000; | ||
| 1452 | POP BX ;AN000; | ||
| 1453 | POP AX ;AN000; | ||
| 1454 | |||
| 1455 | RET ;AN000; | ||
| 1456 | HOOK_INT_24 ENDP ;AN000; | ||
| 1457 | |||
| 1458 | ;**************************************************************************** | ||
| 1459 | ; Procedure for restoring the old interrupt 24h vector. | ||
| 1460 | ; INPUT: | ||
| 1461 | ; None. | ||
| 1462 | ; OUTPUT: | ||
| 1463 | ; None. | ||
| 1464 | ;**************************************************************************** | ||
| 1465 | PUBLIC RESTORE_INT_24 ;AN000; | ||
| 1466 | RESTORE_INT_24 PROC FAR ;AN000; | ||
| 1467 | |||
| 1468 | PUSHF ;AN000; | ||
| 1469 | PUSH AX ;AN000; | ||
| 1470 | PUSH DX ;AN000; | ||
| 1471 | PUSH DS ;AN000; Save the data segment | ||
| 1472 | |||
| 1473 | .IF < INT24_STATUS eq HOOKED > ;AN000; | ||
| 1474 | |||
| 1475 | PUSH DS ;AN000; Save DS | ||
| 1476 | LDS DX, OLD_INT_24 ;AN000; Load the address of the old vector | ||
| 1477 | MOV AH, 25H ;AN000; DOS Fn. number for setting an interrupt vector | ||
| 1478 | MOV AL, 24H ;AN000; Interrupt vector to set | ||
| 1479 | DOSCALL ;AN000; Set the vector | ||
| 1480 | POP DS ;AN000; Restore data segment | ||
| 1481 | MOV INT24_STATUS,UNHOOKED ;AN000; | ||
| 1482 | |||
| 1483 | .ENDIF ;AN000; | ||
| 1484 | |||
| 1485 | POP DS ;AN000; Restore the data segment | ||
| 1486 | POP DX ;AN000; | ||
| 1487 | POP AX ;AN000; | ||
| 1488 | POPF ;AN000; | ||
| 1489 | |||
| 1490 | RET ;AN000; | ||
| 1491 | RESTORE_INT_24 ENDP ;AN000; | ||
| 1492 | ;**************************************************************************** | ||
| 1493 | ; Procedure for hooking the INT_2F_VECTOR into vector table | ||
| 1494 | ; INPUT: | ||
| 1495 | ; None. | ||
| 1496 | ; OUTPUT: | ||
| 1497 | ; None. | ||
| 1498 | ;**************************************************************************** | ||
| 1499 | PUBLIC HOOK_INT_2F ;AN000; | ||
| 1500 | PUBLIC RESTORE_INT_2F ;AN000; | ||
| 1501 | HOOK_INT_2F PROC FAR ;AN000; | ||
| 1502 | |||
| 1503 | PUSH AX ;AN000; | ||
| 1504 | PUSH BX ;AN000; | ||
| 1505 | PUSH DX ;AN000; | ||
| 1506 | PUSH ES ;AN000; Save the segment registers. | ||
| 1507 | PUSH DS ;AN000; | ||
| 1508 | MOV AL, 2FH ;AN000; Interrupt number to get the vector of | ||
| 1509 | MOV AH, 35H ;AN000; DOS Function number for getting a vector | ||
| 1510 | DOSCALL ;AN000; Get the interrupt vector | ||
| 1511 | MOV WORD PTR OLD_INT_2F, BX ;AN000; Save the old vactor offset | ||
| 1512 | MOV AX, ES ;AN000; Get the old vector segment | ||
| 1513 | MOV WORD PTR OLD_INT_2F[2], AX ;AN000; Save the old vector segment | ||
| 1514 | PUSH CS ;AN000; Point DS to the current code segment | ||
| 1515 | POP DS ;AN000; | ||
| 1516 | MOV DX, OFFSET INT_2F_VECTOR ;AN000; Load offset of the new vector | ||
| 1517 | MOV AL, 2FH ;AN000; Interrupt number to set | ||
| 1518 | MOV AH, 25H ;AN000; DOS Fn. number for setting a vector | ||
| 1519 | DOSCALL ;AN000; Set the vector | ||
| 1520 | POP DS ;AN000; Restore the registers | ||
| 1521 | POP ES ;AN000; | ||
| 1522 | POP DX ;AN000; | ||
| 1523 | POP BX ;AN000; | ||
| 1524 | POP AX ;AN000; | ||
| 1525 | |||
| 1526 | RET ;AN000; | ||
| 1527 | |||
| 1528 | HOOK_INT_2F ENDP ;AN000; | ||
| 1529 | ;**************************************************************************** | ||
| 1530 | ; Procedure for restoring the old interrupt 2Fh vector. | ||
| 1531 | ; INPUT: | ||
| 1532 | ; None. | ||
| 1533 | ; OUTPUT: | ||
| 1534 | ; None. | ||
| 1535 | ;**************************************************************************** | ||
| 1536 | RESTORE_INT_2F PROC FAR ;AN000; | ||
| 1537 | PUSHF ;AN000; | ||
| 1538 | PUSH AX ;AN000; | ||
| 1539 | PUSH DX ;AN000; | ||
| 1540 | PUSH DS ;AN000; Save the data segment | ||
| 1541 | LDS DX, OLD_INT_2F ;AN000; Load the address of the old vector | ||
| 1542 | MOV AH, 25H ;AN000; DOS Fn. number for setting an interrupt vector | ||
| 1543 | MOV AL, 2FH ;AN000; Interrupt vector to set | ||
| 1544 | DOSCALL ;AN000; Set the vector | ||
| 1545 | POP DS ;AN000; Restore the data segment | ||
| 1546 | POP DX ;AN000; | ||
| 1547 | POP AX ;AN000; | ||
| 1548 | POPF ;AN000; | ||
| 1549 | RET ;AN000; | ||
| 1550 | RESTORE_INT_2F ENDP ;AN000; | ||
| 1551 | ;**************************************************************************** | ||
| 1552 | ; Procedure for hooking the INT_2F_256KB into vector table | ||
| 1553 | ; INPUT: | ||
| 1554 | ; None. | ||
| 1555 | ; OUTPUT: | ||
| 1556 | ; None. | ||
| 1557 | ;**************************************************************************** | ||
| 1558 | PUBLIC HOOK_INT_2F_256KB ;AN000; | ||
| 1559 | HOOK_INT_2F_256KB PROC FAR ;AN000; | ||
| 1560 | |||
| 1561 | PUSH AX ;AN000; | ||
| 1562 | PUSH BX ;AN000; | ||
| 1563 | PUSH DX ;AN000; | ||
| 1564 | PUSH ES ;AN000; Save the segment registers. | ||
| 1565 | PUSH DS ;AN000; | ||
| 1566 | MOV AL, 2FH ;AN000; Interrupt number to get the vector of | ||
| 1567 | MOV AH, 35H ;AN000; DOS Function number for getting a vector | ||
| 1568 | DOSCALL ;AN000; Get the interrupt vector | ||
| 1569 | MOV WORD PTR OLD_INT_2F, BX ;AN000; Save the old vactor offset | ||
| 1570 | MOV AX, ES ;AN000; Get the old vector segment | ||
| 1571 | MOV WORD PTR OLD_INT_2F[2], AX ;AN000; Save the old vector segment | ||
| 1572 | PUSH CS ;AN000; Point DS to the current code segment | ||
| 1573 | POP DS ;AN000; | ||
| 1574 | MOV DX, OFFSET INT_2F_256KB ;AN000; Load offset of the new vector | ||
| 1575 | MOV AL, 2FH ;AN000; Interrupt number to set | ||
| 1576 | MOV AH, 25H ;AN000; DOS Fn. number for setting a vector | ||
| 1577 | DOSCALL ;AN000; Set the vector | ||
| 1578 | POP DS ;AN000; Restore the registers | ||
| 1579 | POP ES ;AN000; | ||
| 1580 | POP DX ;AN000; | ||
| 1581 | POP BX ;AN000; | ||
| 1582 | POP AX ;AN000; | ||
| 1583 | |||
| 1584 | RET ;AN000; | ||
| 1585 | |||
| 1586 | HOOK_INT_2F_256KB ENDP ;AN000; | ||
| 1587 | ;**************************************************************************** | ||
| 1588 | ; Procedure for hooking the INT_2F_FORMAT into vector table | ||
| 1589 | ; INPUT: | ||
| 1590 | ; None. | ||
| 1591 | ; OUTPUT: | ||
| 1592 | ; None. | ||
| 1593 | ;**************************************************************************** | ||
| 1594 | PUBLIC HOOK_INT_2F_FORMAT ;AN111;JW | ||
| 1595 | HOOK_INT_2F_FORMAT PROC FAR ;AN111;JW | ||
| 1596 | |||
| 1597 | PUSH AX ;AN111;JW | ||
| 1598 | PUSH BX ;AN111;JW | ||
| 1599 | PUSH DX ;AN111;JW | ||
| 1600 | PUSH ES ;AN111; Save the segment registers. JW | ||
| 1601 | PUSH DS ;AN111;JW | ||
| 1602 | MOV AL, 2FH ;AN111; Interrupt number to get the vector of JW | ||
| 1603 | MOV AH, 35H ;AN111; DOS Function number for getting a vector JW | ||
| 1604 | DOSCALL ;AN111; Get the interrupt vector JW | ||
| 1605 | MOV WORD PTR OLD_INT_2F, BX ;AN111; Save the old vactor offset JW | ||
| 1606 | MOV AX, ES ;AN111; Get the old vector segment JW | ||
| 1607 | MOV WORD PTR OLD_INT_2F[2], AX ;AN111; Save the old vector segment JW | ||
| 1608 | PUSH CS ;AN111; Point DS to the current code segment JW | ||
| 1609 | POP DS ; ;AN111;JW | ||
| 1610 | MOV DX, OFFSET INT_2F_FORMAT ;AN111; Load offset of the new vector JW | ||
| 1611 | MOV AL, 2FH ;AN111; Interrupt number to set JW | ||
| 1612 | MOV AH, 25H ;AN111; DOS Fn. number for setting a vector JW | ||
| 1613 | DOSCALL ;AN111; Set the vector JW | ||
| 1614 | POP DS ;AN111; Restore the registers JW | ||
| 1615 | POP ES ;AN111;JW | ||
| 1616 | POP DX ;AN111;JW | ||
| 1617 | POP BX ;AN111;JW | ||
| 1618 | POP AX ;AN111;JW | ||
| 1619 | ; | ||
| 1620 | RET ;AN111;JW | ||
| 1621 | ; | ||
| 1622 | HOOK_INT_2F_FORMAT ENDP ;AN111;JW | ||
| 1623 | ;**************************************************************************** | ||
| 1624 | |||
| 1625 | CODE_FAR ENDS ;AN000; | ||
| 1626 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/ROUT_EXT.INC b/v4.0/src/SELECT/ROUT_EXT.INC new file mode 100644 index 0000000..8f937d4 --- /dev/null +++ b/v4.0/src/SELECT/ROUT_EXT.INC | |||
| @@ -0,0 +1,74 @@ | |||
| 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2 | ; | ||
| 3 | ; Routines in ROUTINES.ASM | ||
| 4 | ; | ||
| 5 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 6 | EXTRN APPEND_STRING_ROUTINE:FAR ;AN000; | ||
| 7 | EXTRN BEEP_ROUTINE:FAR ;AN000; | ||
| 8 | EXTRN BIN_TO_CHAR_ROUTINE:FAR ;AN000; | ||
| 9 | EXTRN CHK_EX_MEM_ROUTINE:FAR ;AN000; | ||
| 10 | EXTRN COPY_ROUTINE:FAR ;AN000; | ||
| 11 | EXTRN DISPLAY_MESSAGE_ROUTINE:FAR ;AN000; | ||
| 12 | EXTRN EXEC_PROGRAM_ROUTINE:FAR ;AN000; | ||
| 13 | EXTRN GET_CNTY_DEF_ROUTINE:FAR ;AN000; | ||
| 14 | EXTRN GET_CNTY_INDEX_ROUTINE:FAR ;AN000; | ||
| 15 | EXTRN GET_KYBD_INDEX_ROUTINE:FAR ;AN000; | ||
| 16 | EXTRN GET_KYBD_ROUTINE:FAR ;AN000; | ||
| 17 | EXTRN GET_PRINTER_PARAMS_ROUTINE: FAR ;AN000; | ||
| 18 | EXTRN HOOK_INT_23:FAR ;AN074;SEH ctrl-break | ||
| 19 | EXTRN HOOK_INT_24:FAR ;AN000; | ||
| 20 | EXTRN HOOK_INT_2F:FAR ;AN000; | ||
| 21 | EXTRN HOOK_INT_2F_256KB:FAR ;AN000; | ||
| 22 | EXTRN HOOK_INT_2F_FORMAT:FAR ;AN111;JW | ||
| 23 | EXTRN MAKE_DIR_PATHS_ROUTINE:FAR ;AN000; | ||
| 24 | EXTRN POP_ROUTINE:FAR ;AN000; | ||
| 25 | EXTRN POS_ZERO:FAR ;AN000; | ||
| 26 | EXTRN PREPARE_FILE_ROUTINE:FAR ;AN000; | ||
| 27 | EXTRN PUSH_ROUTINE:FAR ;AN000; | ||
| 28 | EXTRN RESTORE_INT_23:FAR ;AN074;SEH ctrl-break | ||
| 29 | EXTRN RESTORE_INT_24:FAR ;AN000; | ||
| 30 | EXTRN RESTORE_INT_2F:FAR ;AN000; | ||
| 31 | EXTRN SAVE_FILE_ROUTINE:FAR ;AN000; | ||
| 32 | EXTRN SAVE_PRINTER_PARAMS_ROUTINE: FAR ;AN000; | ||
| 33 | EXTRN SCAN_PARAMETERS_ROUTINE:FAR ;AN000; | ||
| 34 | EXTRN SCAN_INFO_FILE_ROUTINE:FAR ;AN001; GHG for 360kb | ||
| 35 | EXTRN WRITE_LINE_ROUTINE:FAR ;AN000; | ||
| 36 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 37 | ; | ||
| 38 | ; Routines in ROUTINE2.ASM | ||
| 39 | ; | ||
| 40 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 41 | EXTRN CHANGE_ATTRIBUTE_ROUTINE:FAR ;AN000; | ||
| 42 | EXTRN CHECK_DISK_ROUTINE:FAR ;AN000; | ||
| 43 | EXTRN CHECK_DOS_PATH_ROUTINE:FAR ;AN000; | ||
| 44 | EXTRN CHECK_VALID_MEDIA_ROUTINE:FAR ;AN000; | ||
| 45 | EXTRN CHECK_VALID_PATH:FAR ;AN000; | ||
| 46 | EXTRN CHECK_WRITE_ROUTINE:FAR ;AN000; | ||
| 47 | EXTRN CHK_W_PROTECT_FLAG:FAR ;AN000; | ||
| 48 | EXTRN CLOSE_FILE_ROUTINE:FAR ;AN000; | ||
| 49 | EXTRN COMPARE_ROUTINE:FAR ;AN000; | ||
| 50 | EXTRN CREATE_FILE_ROUTINE:FAR ;AN000; | ||
| 51 | EXTRN ERASE_FILE_ROUTINE:FAR ;AN000; | ||
| 52 | EXTRN CHMOD_FILE_ROUTINE:FAR ;AN000; | ||
| 53 | EXTRN FIND_FILE_ROUTINE:FAR ;AN000; | ||
| 54 | EXTRN MATCH_FILES_ROUTINE:FAR ;AN000; | ||
| 55 | EXTRN OPEN_FILE_ROUTINE:FAR ;AN000; | ||
| 56 | EXTRN READ_FILE_ROUTINE:FAR ;AN000; | ||
| 57 | EXTRN REMOVE_END_BLANKS:FAR ;AN000; | ||
| 58 | EXTRN RENAME_FILE_ROUTINE:FAR ;AN000; | ||
| 59 | EXTRN SCAN_DISK_TABLE_ROUTINE:FAR ;AN000; | ||
| 60 | EXTRN UPDATE_DISK_TABLE_ROUTINE:FAR ;AN000; | ||
| 61 | EXTRN WRITE_FILE_ROUTINE:FAR ;AN000; | ||
| 62 | EXTRN W_PROTECT_FLAG:FAR ;AN000; | ||
| 63 | ; | ||
| 64 | ; Routine in MOD_COPY.ASM ; | ||
| 65 | EXTRN MOD_XCOPY:FAR ;AN000; | ||
| 66 | ; | ||
| 67 | ; Routines in PRN_DEF.ASM ; | ||
| 68 | EXTRN CHANGE_AUTOEXEC_ROUTINE:FAR ;AN000; | ||
| 69 | EXTRN GET_PRINTER_INFO_ROUTINE:FAR ;AN000; | ||
| 70 | EXTRN GET_PRINTER_TITLES_ROUTINE:FAR ;AN000; | ||
| 71 | EXTRN RELEASE_PRINTER_INFO_ROUTINE:FAR ;AN000; | ||
| 72 | ; | ||
| 73 | ; Routines in S_DISPLY.ASM ; | ||
| 74 | EXTRN SET_DISPLAY_MODE_ROUTINE:FAR ;AN000; | ||
diff --git a/v4.0/src/SELECT/SCN_PARM.ASM b/v4.0/src/SELECT/SCN_PARM.ASM new file mode 100644 index 0000000..5b6a9fd --- /dev/null +++ b/v4.0/src/SELECT/SCN_PARM.ASM | |||
| @@ -0,0 +1,299 @@ | |||
| 1 | ;******************************************************************************** | ||
| 2 | ; File: SCN_PARM.ASM | ||
| 3 | ; | ||
| 4 | ; Subroutine for scanning the SELECT command line, and if the appropriate | ||
| 5 | ; parameter is specified, additional information is read from the disk. | ||
| 6 | ; | ||
| 7 | ;******************************************************************************** | ||
| 8 | .ALPHA ;AN000; | ||
| 9 | .XLIST ;AN000; | ||
| 10 | INCLUDE MACROS.INC ;AN000; | ||
| 11 | INCLUDE STRUC.INC ;AN000; | ||
| 12 | INCLUDE EXT.INC ;AN000; | ||
| 13 | .LIST ;AN000; | ||
| 14 | |||
| 15 | |||
| 16 | PUBLIC SCAN_PARAMETERS_ROUTINE ;AN000; | ||
| 17 | EXTRN SYSPARSE:FAR ;AN000; | ||
| 18 | EXTRN POS_ZERO:FAR ;AN000; | ||
| 19 | EXTRN HOOK_INT_24:FAR ;AN000; | ||
| 20 | EXTRN RESTORE_INT_24:FAR ;AN000; | ||
| 21 | EXTRN CLOSE_FILE_ROUTINE:FAR ;AN000; | ||
| 22 | |||
| 23 | |||
| 24 | DATA SEGMENT BYTE PUBLIC 'DATA';AN000; | ||
| 25 | |||
| 26 | PARMS LABEL BYTE ;AN000; | ||
| 27 | PAR_EXTEN DW PARMSX ;AN000; Offset of the PARMS EXTENSION BLOCK | ||
| 28 | PAR_NUM DB 0 ;AN000; The number of further definitions | ||
| 29 | |||
| 30 | ; The PARMS EXTENSION BLOCK | ||
| 31 | PARMSX LABEL BYTE ;AN000; | ||
| 32 | PAX_MINP DB 1 ;AN000; | ||
| 33 | PAX_MAXP DB 1 ;AN000; | ||
| 34 | DW OFFSET CONTROL_P1;AN000; | ||
| 35 | PAX_MAX_SW DB 0 ;AN000; | ||
| 36 | PAX_MAX_K1 DB 0 ;AN000; | ||
| 37 | |||
| 38 | CONTROL_P1 LABEL BYTE ;AN000; | ||
| 39 | DW 02000H ;AN000; | ||
| 40 | DW 0000H ;AN000; | ||
| 41 | DW RESULT_P1 ;AN000; | ||
| 42 | DW VALUE_LIST_P1 ;AN000; | ||
| 43 | DB 0 ;AN000; | ||
| 44 | |||
| 45 | VALUE_LIST_P1 LABEL BYTE ;AN000; | ||
| 46 | DB 3 ;AN000; Number of value definitions | ||
| 47 | DB 0 ;AN000; Number of range definitions | ||
| 48 | DB 0 ;AN000; Number of actual value definitions | ||
| 49 | DB 2 ;AN000; Number of string definitions | ||
| 50 | DB 0 ;AN000; Value to be returned if this string is matched | ||
| 51 | DW OFFSET KEYWORD_MENU;AN000; | ||
| 52 | DB 1 ;AN000; Value to be returned if this string is matched | ||
| 53 | DW OFFSET KEYWORD_FDISK ;AN000; | ||
| 54 | |||
| 55 | KEYWORD_MENU DB 'MENU',0 ;AN000; | ||
| 56 | KEYWORD_FDISK DB 'FDISK',0 ;AN000; | ||
| 57 | |||
| 58 | RESULT_P1 LABEL BYTE ;AN000; | ||
| 59 | DB 0 ;AN000; Type of operand returned | ||
| 60 | DB 0 ;AN000; Matched item tag | ||
| 61 | DW 0 ;AN000; Offset of synonym returned | ||
| 62 | DB 0,0,0,0 ;AN000; Unsure what this is... | ||
| 63 | |||
| 64 | |||
| 65 | MODE DW 0 ;AN000; | ||
| 66 | option_0 dw 0 | ||
| 67 | OPTION_1 DW 0 ;AN000; | ||
| 68 | OPTION_2 DW 0 ;AN000; | ||
| 69 | OPTION_3 DW 0 ;AN033;SEH | ||
| 70 | FILE_HANDLE DW 0 ;AN000; | ||
| 71 | |||
| 72 | DATA ENDS ;AN000; | ||
| 73 | |||
| 74 | CODE_FAR SEGMENT BYTE PUBLIC 'CODE' ;AN000; | ||
| 75 | |||
| 76 | ASSUME CS:CODE_FAR, DS:DATA, ES:DATA ;AN000; | ||
| 77 | |||
| 78 | ;**************************************************************************** | ||
| 79 | ; | ||
| 80 | ; SCAN_PARAMETERS_ROUTINE: Scan SELECT command line for parameters. | ||
| 81 | ; | ||
| 82 | ; SYNTAX: SCAN_PARAMETERS mode, option, path, filename, buffer, buff_size | ||
| 83 | ; | ||
| 84 | ; INPUT: | ||
| 85 | ; DI = The name of the file which contains the FDISK parameters. | ||
| 86 | ; (ASCII-N format) | ||
| 87 | ; SI = A buffer where the data read from the file can be stored. | ||
| 88 | ; CX = The size of the buffer. | ||
| 89 | ; | ||
| 90 | ; OUTPUT: | ||
| 91 | ; AX = Install mode | ||
| 92 | ; = 0: Parameter is MENU | ||
| 93 | ; = 1: Parameter is FDISK | ||
| 94 | ; = 0FFH: Parameter is invalid | ||
| 95 | ; BX = 0 | ||
| 96 | ; = 1 | ||
| 97 | ; = 2 | ||
| 98 | ; = 0FFh: Parameter is invalid (not 0, 1, 2) | ||
| 99 | ; CX = 0,1,2 | ||
| 100 | ; DI = Install path in ASCII-N format | ||
| 101 | ; | ||
| 102 | ; OPERATION: The SELECT command line is scanned for parameters. The | ||
| 103 | ; return codes for the various parameters are provided in variables | ||
| 104 | ; defined above. If the parameter on the command line is FDISK, then | ||
| 105 | ; the file specified in FILENAME is opened and additional parameters | ||
| 106 | ; are read. If the parameters in the file are invalid, or if the file | ||
| 107 | ; cannot be found, then 0FFh is returned in MODE and OPTION, and the | ||
| 108 | ; path length is set to zero. | ||
| 109 | ; | ||
| 110 | ; Note: | ||
| 111 | ; Before this macro is executed, there must be as ASSUME ES:DATA | ||
| 112 | ; statement. If not, the parser will not execute properly and | ||
| 113 | ; either the computer will hang or erroneous values will be returned. | ||
| 114 | ; | ||
| 115 | ;**************************************************************************** | ||
| 116 | PATH EQU [BP+12] ;AN000; | ||
| 117 | FILENAME EQU [BP+10] ;AN000; | ||
| 118 | BUFFER EQU [BP+8] ;AN000; | ||
| 119 | BUFF_SIZE EQU [BP+6] ;AN000; | ||
| 120 | ; | ||
| 121 | SCAN_PARAMETERS_ROUTINE PROC FAR ;AN000; | ||
| 122 | PUSH BP ;AN000; | ||
| 123 | MOV BP, SP ;AN000; | ||
| 124 | ; | ||
| 125 | MOV OPTION_1, E_SELECT_INV ;AN000; | ||
| 126 | MOV OPTION_2, E_SELECT_INV ;AN000; | ||
| 127 | ; | ||
| 128 | PUSH ES ;AN000; Save the extra register | ||
| 129 | MOV AX, DATA ;AN000; ES contain control block segment | ||
| 130 | MOV ES, AX ;AN000; | ||
| 131 | MOV DI, OFFSET PARMS ;AN000; DI contains offset of control block | ||
| 132 | MOV SI, 0081H ;AN000; SI contains offset of command line | ||
| 133 | MOV DX, 0 ;AN000; DX and CX must be zero | ||
| 134 | MOV CX, 0 ;AN000; | ||
| 135 | MOV AH, 062H ;AN000; Get the PSP segment | ||
| 136 | DOSCALL ;AN000; | ||
| 137 | ; | ||
| 138 | PUSH BX ;AN000; Save for later reference | ||
| 139 | NEXT_PARSE: ;AN000; | ||
| 140 | POP AX ;AN000; Get the PSP segment | ||
| 141 | PUSH AX ;AN000; Place on stack again | ||
| 142 | PUSH DS ;AN000; Save the current data segment | ||
| 143 | MOV DS, AX ;AN000; Load DS with the segment of the command line | ||
| 144 | CALL SYSPARSE ;AN000; Parse the command line | ||
| 145 | POP DS ;AN000; Restore the data segment | ||
| 146 | ; | ||
| 147 | .IF < AX EQ 0 > ;AN000; Were there any errors? | ||
| 148 | MOV BX, DX ;AN000; No! Get the address of the result block | ||
| 149 | MOV AL, [BX]+1 ;AN000; Yes! Get the returned value | ||
| 150 | MOV AH, 0 ;AN000; Zero the high byte | ||
| 151 | MOV MODE, AX ;AN000; Store the result | ||
| 152 | JMP NEXT_PARSE ;AN000; Parse the next parameter | ||
| 153 | .ELSEIF < AX NE -1 > ;AN000; If there was an error, indicate so. | ||
| 154 | MOV MODE, E_SELECT_INV ;AN000; Return that the values are invalid | ||
| 155 | MOV OPTION_1, E_SELECT_INV ;AN000; | ||
| 156 | MOV OPTION_2, E_SELECT_INV ;AN000; | ||
| 157 | .ENDIF ;AN000; | ||
| 158 | POP AX ;AN000; Take the PSP segment off the stack | ||
| 159 | MOV AX,MODE ;AN000; Store the result | ||
| 160 | POP ES ;AN000; | ||
| 161 | POP BP ;AN000; | ||
| 162 | RET ;AN000; | ||
| 163 | SCAN_PARAMETERS_ROUTINE ENDP ;AN000; | ||
| 164 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 165 | ; | ||
| 166 | ; SCAN_INFO_FILE_ROUTINE: Scan SELECT.TMP file for parameters. | ||
| 167 | ; | ||
| 168 | ; INPUT: | ||
| 169 | ; The following variables have been passed to this routine from the | ||
| 170 | ; SCAN_INFO_FILE macro by pushing them on the stack: | ||
| 171 | ; PATH EQU [BP+12] | ||
| 172 | ; FILENAME EQU [BP+10] | ||
| 173 | ; BUFFER EQU [BP+8] | ||
| 174 | ; BUFF_SIZE EQU [BP+6] | ||
| 175 | ; | ||
| 176 | ; OUTPUT: | ||
| 177 | ; AX = Install mode | ||
| 178 | ; = 0: Parameter is MENU | ||
| 179 | ; = 1: Parameter is FDISK | ||
| 180 | ; = 0FFH: Parameter is invalid | ||
| 181 | ; BX = 1 | ||
| 182 | ; = 2 | ||
| 183 | ; = 3 | ||
| 184 | ; = 0FFh: Parameter is invalid (not 1, 2, 3) | ||
| 185 | ; CX = 1 | ||
| 186 | ; = 2 | ||
| 187 | ; = 0FFh: Parameter is invalid (not 1, 2) | ||
| 188 | ; DX = 1 | ||
| 189 | ; = 2 | ||
| 190 | ; = 0FFh: Parameter is invalid (not 1, 2) | ||
| 191 | ; | ||
| 192 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 193 | PUBLIC SCAN_INFO_FILE_ROUTINE ;AN000; | ||
| 194 | SCAN_INFO_FILE_ROUTINE PROC FAR ;AN000; | ||
| 195 | CALL HOOK_INT_24 ;AN000; | ||
| 196 | ; | ||
| 197 | PUSH BP ;AN000; | ||
| 198 | MOV BP, SP ;AN000; | ||
| 199 | MOV OPTION_0, E_SELECT_INV ;AN000; | ||
| 200 | MOV OPTION_1, E_SELECT_INV ;AN000; | ||
| 201 | MOV OPTION_2, E_SELECT_INV ;AN000; | ||
| 202 | MOV OPTION_3, E_SELECT_INV ;AN033;SEH | ||
| 203 | PUSH ES ;AN000; Save the extra register | ||
| 204 | ; | ||
| 205 | .IF < MODE NE E_SELECT_INV> AND NEAR ;AN000; If no error has occured yet, | ||
| 206 | .IF < MODE EQ 1 > NEAR ;AN000; and if the parameter was FDISK... | ||
| 207 | MOV DI, FILENAME ;AN000; Get the offset of the filename | ||
| 208 | CALL POS_ZERO ;AN000; Make into an ASCII-Z string | ||
| 209 | MOV DX, DI ;AN000; Load filename offset again | ||
| 210 | ADD DX, 2 ;AN000; Adjust pointer past the length word | ||
| 211 | MOV AX, 3D00H ;AN000; Fn call for opening a file for reading | ||
| 212 | DOSCALL ;AN000; Open the file | ||
| 213 | .IF < C > ;AN000; If there was as error, do not continue | ||
| 214 | JMP FILE_ERROR ;AN000; Return INVALID parameters to the caller | ||
| 215 | .ENDIF ;AN000; | ||
| 216 | MOV FILE_HANDLE, AX ;AN000; Save the returned file handle | ||
| 217 | MOV AH, 3FH ;AN000; DOS Fn for reading from a file | ||
| 218 | MOV DX, BUFFER ;AN000; Get the offset of the data buffer | ||
| 219 | MOV CX, BUFF_SIZE ;AN000; Get the number of bytes in the buffer | ||
| 220 | MOV BX, FILE_HANDLE ;AN000; Get the file handle for the opened file | ||
| 221 | DOSCALL ;AN000; Read from the file | ||
| 222 | .IF < C > ;AN000; If there was an error, do not continue | ||
| 223 | JMP FILE_ERROR ;AN000; Return INVALID parameters to the caller | ||
| 224 | .ENDIF ;AN000; | ||
| 225 | MOV SI, BUFFER ;AN000; Get the offset of the data buffer | ||
| 226 | MOV BH, 0 ;AN000; Zero the high byte | ||
| 227 | MOV BL, BYTE PTR [SI] ;AN000; Get the first byte from the file | ||
| 228 | SUB BL, '0' ;AN000; Turn into a binary number | ||
| 229 | MOV OPTION_0, BX ;AN000; Save this as the first option | ||
| 230 | MOV BL, BYTE PTR [SI+3] ;AN000; Get the first byte from the file | ||
| 231 | SUB BL, '0' ;AN000; Turn into a binary number | ||
| 232 | MOV OPTION_1, BX ;AN000; Save this as the first option | ||
| 233 | MOV BL, BYTE PTR [SI+6] ;AN000; Get the second option in the file | ||
| 234 | SUB BL, '0' ;AN000; Make into a binary value | ||
| 235 | MOV OPTION_2, BX ;AN000; Save this second option | ||
| 236 | MOV BL, BYTE PTR [SI+9] ;AN033; SEH Get the third option in the file | ||
| 237 | SUB BL, '0' ;AN033; SEH Make into a binary value | ||
| 238 | MOV OPTION_3, BX ;AN033; SEH Save this third option | ||
| 239 | MOV SI, BUFFER ;AN000; Get the offset of the data buffer | ||
| 240 | ADD SI, 12 ;AC033; SEH Point to the start of the path line | ||
| 241 | MOV DI, PATH ;AN000; Get the offset of the path storage | ||
| 242 | MOV BX, DI ;AN000; | ||
| 243 | ADD DI, 2 ;AN000; Adjust pointer past the length word | ||
| 244 | ; AX contains the number of characters read from the file | ||
| 245 | SUB AX, 12 ;AC033; SEH Number of characters left in the buffer | ||
| 246 | MOV CX, 0 ;AN000; Number of characters in the path string | ||
| 247 | MOV WORD PTR [BX], 0 ;AN000; Zero the string length to begin | ||
| 248 | .WHILE < AX GT 0 > ;AN000; Continue while there are characters left | ||
| 249 | MOV DL, [SI] ;AN000; Get the character from the buffer | ||
| 250 | .IF < DL EQ E_CR > OR ;AN000; See if this is the end of the line | ||
| 251 | .IF < DL EQ E_LF > ;AN000; | ||
| 252 | MOV [BX], CX ;AN000; Store the length of path | ||
| 253 | .LEAVE ;AN000; | ||
| 254 | .ENDIF ;AN000; | ||
| 255 | MOV [DI], DL ;AN000; Store the byte in the path | ||
| 256 | INC DI ;AN000; Increment the path pointer | ||
| 257 | INC SI ;AN000; Increment the source pointer | ||
| 258 | INC CX ;AN000; Increment the count of characters | ||
| 259 | DEC AX ;AN000; Decrement the numbers of characters left | ||
| 260 | .IF < CX A M_INSTALL_PATH > ;AN000; If more then 40 characters then an error | ||
| 261 | JMP FILE_ERROR ;AN000; | ||
| 262 | .ENDIF ;AN000; | ||
| 263 | .ENDWHILE ;AN000; | ||
| 264 | .IF < OPTION_1 AE 1 > AND ;AN000; If option is 1 or 2 then a path is needed | ||
| 265 | .IF < OPTION_1 BE 3 > ;AN000; | ||
| 266 | .IF < <WORD PTR [BX]> EQ 0 > ;AN000; If the path length was 0, return error | ||
| 267 | JMP FILE_ERROR ;AN000; | ||
| 268 | .ENDIF ;AN000; | ||
| 269 | .ELSE ;AN000; | ||
| 270 | .IF < <WORD PTR [BX]> NE 0 > ;AN000; If option is 3 and there is a path, error | ||
| 271 | JMP FILE_ERROR ;AN000; | ||
| 272 | .ENDIF ;AN000; | ||
| 273 | .ENDIF ;AN000; | ||
| 274 | JMP CLOSE_THE_FILE ;AN000; | ||
| 275 | FILE_ERROR: ;AN000; Here if there has been an error | ||
| 276 | MOV MODE, E_SELECT_INV ;AN000; | ||
| 277 | MOV OPTION_1, E_SELECT_INV ;AN000; | ||
| 278 | MOV OPTION_2, E_SELECT_INV ;AN000; | ||
| 279 | MOV OPTION_3, E_SELECT_INV ;AN033; SEH | ||
| 280 | MOV BX, PATH ;AN000; | ||
| 281 | MOV WORD PTR [BX], 0 ;AN000; | ||
| 282 | CLOSE_THE_FILE: ;AN000; Close the file | ||
| 283 | MOV BX, FILE_HANDLE ;AN000; Get the file handle | ||
| 284 | CLOSE_FILE BX ;AN000; Close the file | ||
| 285 | .ENDIF ;AN000; | ||
| 286 | MOV AX, option_0 ;AN000; Return the parameters | ||
| 287 | MOV BX, OPTION_1 ;AN000; | ||
| 288 | MOV CX, OPTION_2 ;AN000; | ||
| 289 | MOV DX, OPTION_3 ;AN033; SEH | ||
| 290 | ; | ||
| 291 | POP ES ;AN000; Restore the extra segment | ||
| 292 | POP BP ;AN000; | ||
| 293 | CALL RESTORE_INT_24 ;AN000; | ||
| 294 | RET 8 ;AN000; | ||
| 295 | SCAN_INFO_FILE_ROUTINE ENDP ;AN000; | ||
| 296 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 297 | CODE_FAR ENDS ;AN000; | ||
| 298 | ; | ||
| 299 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/SCROLL.ASM b/v4.0/src/SELECT/SCROLL.ASM new file mode 100644 index 0000000..260d75a --- /dev/null +++ b/v4.0/src/SELECT/SCROLL.ASM | |||
| @@ -0,0 +1,3356 @@ | |||
| 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2 | ; | ||
| 3 | ; SCROLL.ASM | ||
| 4 | ; | ||
| 5 | ; | ||
| 6 | ; | ||
| 7 | ; | ||
| 8 | ; | ||
| 9 | ; | ||
| 10 | ; | ||
| 11 | ; | ||
| 12 | ; | ||
| 13 | ; | ||
| 14 | ; | ||
| 15 | ; | ||
| 16 | ; | ||
| 17 | ; | ||
| 18 | ; | ||
| 19 | ; | ||
| 20 | ; | ||
| 21 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 22 | |||
| 23 | .alpha ; arrange segments alphabetically | ||
| 24 | |||
| 25 | INCLUDE SEL-PAN.INC ;AN024; | ||
| 26 | EXTRN WR_CIS:WORD ;AN024; | ||
| 27 | ; | ||
| 28 | PUBLIC WR_SCBVEC ;AN024; | ||
| 29 | PUBLIC NUM_SCB ;AN024; | ||
| 30 | ; | ||
| 31 | PANEL EQU 0 ;AN024; | ||
| 32 | SCROLL EQU 1 ;AN024; | ||
| 33 | ; | ||
| 34 | CODE SEGMENT PARA PUBLIC 'CODE' ;AN024 | ||
| 35 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 36 | ; | ||
| 37 | ; Scroll Control Block Vector | ||
| 38 | ; | ||
| 39 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 40 | WR_SCBVEC DW 0,OFFSET WR_SCB1 ;AN024;SCB 1 segment,offset | ||
| 41 | DW 0,OFFSET WR_SCB2 ;AN024;SCB 2 segment,offset | ||
| 42 | DW 0,OFFSET WR_SCB3 ;AN024;SCB 3 segment,offset | ||
| 43 | DW 0,OFFSET WR_SCB4 ;AN024;SCB 4 segment,offset | ||
| 44 | DW 0,OFFSET WR_SCB5 ;AN024;SCB 5 segment,offset | ||
| 45 | DW 0,OFFSET WR_SCB6 ;AN024;SCB 6 segment,offset | ||
| 46 | DW 0,OFFSET WR_SCB7 ;AN024;SCB 7 segment,offset | ||
| 47 | DW 0,OFFSET WR_SCB8 ;AN024;SCB 8 segment,offset | ||
| 48 | DW 0,OFFSET WR_SCB9 ;AN024;SCB 9 segment,offset | ||
| 49 | DW 0,OFFSET WR_SCB10 ;AN024;SCB 10 segment,offset | ||
| 50 | DW 0,OFFSET WR_SCB11 ;AN024;SCB 11 segment,offset | ||
| 51 | DW 0,OFFSET WR_SCB12 ;AN024;SCB 12 segment,offset | ||
| 52 | DW 0,OFFSET WR_SCB13 ;AN024;SCB 13 segment,offset | ||
| 53 | DW 0,OFFSET WR_SCB14 ;AN024;SCB 14 segment,offset | ||
| 54 | DW 0,OFFSET WR_SCB15 ;AN024;SCB 15 segment,offset | ||
| 55 | DW 0,OFFSET WR_SCB16 ;AN024;SCB 16 segment,offset | ||
| 56 | DW 0,OFFSET WR_SCB17 ;AN024;SCB 17 segment,offset | ||
| 57 | DW 0,OFFSET WR_SCB18 ;AN024;SCB 18 segment,offset | ||
| 58 | DW 0,OFFSET WR_SCB19 ;AN024;SCB 19 segment,offset | ||
| 59 | DW 0,OFFSET WR_SCB20 ;AN024;SCB 20 segment,offset | ||
| 60 | DW 0,OFFSET WR_SCB21 ;AN024;SCB 21 segment,offset | ||
| 61 | DW 0,OFFSET WR_SCB22 ;AN024;SCB 22 segment,offset | ||
| 62 | DW 0,OFFSET WR_SCB23 ;AN024;SCB 23 segment,offset | ||
| 63 | DW 0,OFFSET WR_SCB24 ;AN024;SCB 24 segment,offset | ||
| 64 | DW 0,OFFSET WR_SCB25 ;AN024;SCB 25 segment,offset | ||
| 65 | DW 0,OFFSET WR_SCB26 ;AN024;SCB 26 segment,offset | ||
| 66 | DW 0,OFFSET WR_SCB27 ;AN024;SCB 27 segment,offset | ||
| 67 | DW 0,OFFSET WR_SCB28 ;AN024;SCB 28 segment,offset | ||
| 68 | NUM_SCB EQU ($-WR_SCBVEC)/4 ;AN024; | ||
| 69 | L_WR_SCBVEC EQU NUM_SCB ;AN024; | ||
| 70 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 71 | ; | ||
| 72 | ; Scroll Data Definition | ||
| 73 | ; | ||
| 74 | ; | ||
| 75 | ; PCSCRWR parameter block | ||
| 76 | ; | ||
| 77 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 78 | WR_INDEX1 DW 15 ;AN000;element order number | ||
| 79 | DW 14 ;AN000; | ||
| 80 | DW 13 ;AN000; | ||
| 81 | DW 12 ;AN000; | ||
| 82 | DW 11 ;AN000; | ||
| 83 | DW 10 ;AN000; | ||
| 84 | DW 9 ;AN000; | ||
| 85 | DW 8 ;AN000; | ||
| 86 | DW 7 ;AN000; | ||
| 87 | DW 6 ;AN000; | ||
| 88 | DW 5 ;AN000; | ||
| 89 | DW 4 ;AN000; | ||
| 90 | DW 3 ;AN000; | ||
| 91 | DW 2 ;AN000; | ||
| 92 | DW 1 ;AN000; | ||
| 93 | ; | ||
| 94 | LEFT_COL_SCROLL EQU 11 ;AN000; | ||
| 95 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 96 | ; | ||
| 97 | ; DOSLEVEL SUPPORT | ||
| 98 | ; | ||
| 99 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 100 | WR_SCB1 DW SCB_WRAP ;AN000;option word one | ||
| 101 | DW SCB_SKIP ;AN000;option word two | ||
| 102 | DW SCB_NUMS ;AN000;option word three | ||
| 103 | DW 0 ;AN068;SEH option word four | ||
| 104 | DW SND_FREQ ;AN000;error beep frequency | ||
| 105 | DW 12 ;AN000;upper left row | ||
| 106 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 107 | DW 0 ;AN000;relative upper left row | ||
| 108 | DW 0 ;AN000;relative upper left column | ||
| 109 | DW SCB_LIST1_W ;AN000;line width | ||
| 110 | DW SCB_LIST1_N ;AN000;number of lines | ||
| 111 | DW 1 ;AN000;number of element on top | ||
| 112 | DW SCB_LIST1_N ;AN000;number of elements | ||
| 113 | DW 1 ;AN000;current element | ||
| 114 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 115 | DW 0 ;AN000;display offset into opt strings | ||
| 116 | DW 1 ;AN000;num list txt col offset in strg | ||
| 117 | DB '.' ;AN000;numbered list separator | ||
| 118 | DW 0 ;AN000;select keystroke string length | ||
| 119 | DW 0 ;AN000;select keystroke string offset | ||
| 120 | DW 0 ;AN000;select keystroke string segment | ||
| 121 | DW 0 ;AN000;return/leave string length | ||
| 122 | DW 0 ;AN000;return/leave string offset | ||
| 123 | DW 0 ;AN000;return/leave string segment | ||
| 124 | DW 0 ;AN000;return/erase string length | ||
| 125 | DW 0 ;AN000;return/erase string offset | ||
| 126 | DW 0 ;AN000;return/erase string segment | ||
| 127 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 128 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 129 | DW 0 ;AN000;up arrow string segment | ||
| 130 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 131 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 132 | DW 0 ;AN000;down arrow string segment | ||
| 133 | DW 0 ;AN000;left arrow string length | ||
| 134 | DW 0 ;AN000;left arrow string offset | ||
| 135 | DW 0 ;AN000;left arrow string segment | ||
| 136 | DW 0 ;AN000;right arrow string length | ||
| 137 | DW 0 ;AN000;right arrow string offset | ||
| 138 | DW 0 ;AN000;right arrow string segment | ||
| 139 | DW WR_PUKEYSLEN ;AN000;page-up string length | ||
| 140 | DW WR_PUKEYS ;AN000;page-up string offset | ||
| 141 | DW 0 ;AN000;page-up string segment | ||
| 142 | DW WR_PDKEYSLEN ;AN000;page-down string length | ||
| 143 | DW WR_PDKEYS ;AN000;page-down string offset | ||
| 144 | DW 0 ;AN000;page-down string segment | ||
| 145 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 146 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 147 | DW 0 ;AN000;pointer indicator string segment | ||
| 148 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 149 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 150 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 151 | DW 0 ;AN000;active indicator string segment | ||
| 152 | DW 1 ;AN000;active ind txt col off into stg | ||
| 153 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 154 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 155 | DW 0 ;AN000;check mark text string segment | ||
| 156 | DW 1 ;AN000;check mark offset into opt strg | ||
| 157 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 158 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 159 | DW 0 ;AN000;up indicator string segment | ||
| 160 | DW 2 ;AN000;up indicator row location | ||
| 161 | DW 1 ;AN000;up indicator column location | ||
| 162 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 163 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 164 | DW 0 ;AN000;down indicator string segment | ||
| 165 | DW 2 ;AN000;down indicator row location | ||
| 166 | DW 2 ;AN000;down indicator column locaiton | ||
| 167 | DW 0 ;AN000;left indicator string length | ||
| 168 | DW 0 ;AN000;left indicator string offset | ||
| 169 | DW 0 ;AN000;left indicator string segment | ||
| 170 | DW 0 ;AN000;left indicator row location | ||
| 171 | DW 0 ;AN000;left indicator column location | ||
| 172 | DW 0 ;AN000;right indicator string length | ||
| 173 | DW 0 ;AN000;right indicator string offset | ||
| 174 | DW 0 ;AN000;right indicator string segment | ||
| 175 | DW 0 ;AN000;right indicator row location | ||
| 176 | DW 0 ;AN000;right indicator column locaiton | ||
| 177 | DW 0 ;AN000;normal color array offset | ||
| 178 | DW 0 ;AN000;normal color array segment | ||
| 179 | DW 1 ;AN000;logical color index number | ||
| 180 | DW 0 ;AN000;number color index table entries | ||
| 181 | DW 0 ;AN000;offset addr of color index table | ||
| 182 | DW 0 ;AN000;segment addr of color index tabl | ||
| 183 | DW WR_INDEX1 ;AN000;index array offset | ||
| 184 | DW 0 ;AN000;index array segment | ||
| 185 | DW WR_SELECT_NUM ;AN000;element selection array offset | ||
| 186 | DW 0 ;AN000;element selection array segment | ||
| 187 | DW SSC_PTSB ;AN000;option array option word | ||
| 188 | DW SCB_LIST1 ;AN000;option array pointer offset | ||
| 189 | DW 0 ;AN000;option array pointer segment | ||
| 190 | DW SCB_LIST1_W ;AN000;option array string length | ||
| 191 | DW 0 ;AN000;option array string segment | ||
| 192 | DB 'A' ;AN000;option array string term char | ||
| 193 | DW 0 ;AN000;keystroke | ||
| 194 | DW 0 ;AN000;log vid buf offset override | ||
| 195 | DW 0 ;AN000;log vid buf segment override | ||
| 196 | DW 0 ;AN000;general purpose format hook opt | ||
| 197 | DW 0 ;AN000;general purpose format hook opt | ||
| 198 | DW 0 ;AN000;length of translation table | ||
| 199 | DW 0 ;AN000;offset of translation table | ||
| 200 | DW 0 ;AN000;segment of translation table | ||
| 201 | DW 0 ;AN000;monocasing table offset | ||
| 202 | DW 0 ;AN000;monocasing table segment | ||
| 203 | DW 0 ;AN000;dbcs table length | ||
| 204 | DW 0 ;AN000;dbcs table offset | ||
| 205 | DW 0 ;AN000;dbcs table segment | ||
| 206 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 207 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 208 | DB 236 DUP(0) ;AN024; | ||
| 209 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 210 | ; | ||
| 211 | ; SELECT COUNTRY CODE AND KEYBOARD | ||
| 212 | ; | ||
| 213 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 214 | WR_SCB2 DW SCB_WRAP ;AN000;option word one | ||
| 215 | DW SCB_SKIP ;AN000;option word two | ||
| 216 | DW SCB_NUMS ;AN000;option word three | ||
| 217 | DW 0 ;AN068;SEH option word four | ||
| 218 | DW SND_FREQ ;AN000;error beep frequency | ||
| 219 | DW 13 ;AN000;upper left row | ||
| 220 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 221 | DW 0 ;AN000;relative upper left row | ||
| 222 | DW 0 ;AN000;relative upper left column | ||
| 223 | DW SCB_LIST2_W ;AN000;line width | ||
| 224 | DW SCB_LIST2_N ;AN000;number of lines | ||
| 225 | DW 1 ;AN000;number of element on top | ||
| 226 | DW SCB_LIST2_N ;AN000;number of elements | ||
| 227 | DW 1 ;AN000;current element | ||
| 228 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 229 | DW 0 ;AN000;display offset into opt strings | ||
| 230 | DW 1 ;AN000;num list txt col offset in strg | ||
| 231 | DB '.' ;AN000;numbered list separator | ||
| 232 | DW 0 ;AN000;select keystroke string length | ||
| 233 | DW 0 ;AN000;select keystroke string offset | ||
| 234 | DW 0 ;AN000;select keystroke string segment | ||
| 235 | DW 0 ;AN000;return/leave string length | ||
| 236 | DW 0 ;AN000;return/leave string offset | ||
| 237 | DW 0 ;AN000;return/leave string segment | ||
| 238 | DW 0 ;AN000;return/erase string length | ||
| 239 | DW 0 ;AN000;return/erase string offset | ||
| 240 | DW 0 ;AN000;return/erase string segment | ||
| 241 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 242 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 243 | DW 0 ;AN000;up arrow string segment | ||
| 244 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 245 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 246 | DW 0 ;AN000;down arrow string segment | ||
| 247 | DW 0 ;AN000;left arrow string length | ||
| 248 | DW 0 ;AN000;left arrow string offset | ||
| 249 | DW 0 ;AN000;left arrow string segment | ||
| 250 | DW 0 ;AN000;right arrow string length | ||
| 251 | DW 0 ;AN000;right arrow string offset | ||
| 252 | DW 0 ;AN000;right arrow string segment | ||
| 253 | DW WR_PUKEYSLEN ;AN000;page-up string length | ||
| 254 | DW WR_PUKEYS ;AN000;page-up string offset | ||
| 255 | DW 0 ;AN000;page-up string segment | ||
| 256 | DW WR_PDKEYSLEN ;AN000;page-down string length | ||
| 257 | DW WR_PDKEYS ;AN000;page-down string offset | ||
| 258 | DW 0 ;AN000;page-down string segment | ||
| 259 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 260 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 261 | DW 0 ;AN000;pointer indicator string segment | ||
| 262 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 263 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 264 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 265 | DW 0 ;AN000;active indicator string segment | ||
| 266 | DW 1 ;AN000;active ind txt col off into stg | ||
| 267 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 268 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 269 | DW 0 ;AN000;check mark text string segment | ||
| 270 | DW 1 ;AN000;check mark offset into opt strg | ||
| 271 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 272 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 273 | DW 0 ;AN000;up indicator string segment | ||
| 274 | DW 2 ;AN000;up indicator row location | ||
| 275 | DW 1 ;AN000;up indicator column location | ||
| 276 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 277 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 278 | DW 0 ;AN000;down indicator string segment | ||
| 279 | DW 2 ;AN000;down indicator row location | ||
| 280 | DW 2 ;AN000;down indicator column locaiton | ||
| 281 | DW 0 ;AN000;left indicator string length | ||
| 282 | DW 0 ;AN000;left indicator string offset | ||
| 283 | DW 0 ;AN000;left indicator string segment | ||
| 284 | DW 0 ;AN000;left indicator row location | ||
| 285 | DW 0 ;AN000;left indicator column location | ||
| 286 | DW 0 ;AN000;right indicator string length | ||
| 287 | DW 0 ;AN000;right indicator string offset | ||
| 288 | DW 0 ;AN000;right indicator string segment | ||
| 289 | DW 0 ;AN000;right indicator row location | ||
| 290 | DW 0 ;AN000;right indicator column locaiton | ||
| 291 | DW WR_CIS ;AN000;normal color array offset | ||
| 292 | DW 0 ;AN000;normal color array segment | ||
| 293 | DW 2 ;AN000;logical color index number | ||
| 294 | DW 0 ;AN000;number color index table entries | ||
| 295 | DW 0 ;AN000;offset addr of color index table | ||
| 296 | DW 0 ;AN000;segment addr of color index tabl | ||
| 297 | DW WR_INDEX1 ;AN000;index array offset | ||
| 298 | DW 0 ;AN000;index array segment | ||
| 299 | DW WR_SELECT_NUM ;AN000;element selection array offset | ||
| 300 | DW 0 ;AN000;element selection array segment | ||
| 301 | DW SSC_PTSB ;AN000;option array option word | ||
| 302 | DW SCB_LIST2 ;AN000;option array pointer offset | ||
| 303 | DW 0 ;AN000;option array pointer segment | ||
| 304 | DW SCB_LIST2_W ;AN000;option array string length | ||
| 305 | DW 0 ;AN000;option array string segment | ||
| 306 | DB 'A' ;AN000;option array string term char | ||
| 307 | DW 0 ;AN000;keystroke | ||
| 308 | DW 0 ;AN000;log vid buf offset override | ||
| 309 | DW 0 ;AN000;log vid buf segment override | ||
| 310 | DW 0 ;AN000;general purpose format hook opt | ||
| 311 | DW 0 ;AN000;general purpose format hook opt | ||
| 312 | DW 0 ;AN000;length of translation table | ||
| 313 | DW 0 ;AN000;offset of translation table | ||
| 314 | DW 0 ;AN000;segment of translation table | ||
| 315 | DW 0 ;AN000;monocasing table offset | ||
| 316 | DW 0 ;AN000;monocasing table segment | ||
| 317 | DW 0 ;AN000;dbcs table length | ||
| 318 | DW 0 ;AN000;dbcs table offset | ||
| 319 | DW 0 ;AN000;dbcs table segment | ||
| 320 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 321 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 322 | DB 236 DUP(0) ;AN024; | ||
| 323 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 324 | ; | ||
| 325 | ; defined country codes 1 | ||
| 326 | ; | ||
| 327 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 328 | WR_SCB3 DW SCB_FRBF+SCB_FRAL ;AN000;option word one | ||
| 329 | DW SCB_ROTN ;AN000;option word two | ||
| 330 | DW 0 ;AN000;option word three | ||
| 331 | DW 0 ;AN068;SEH option word four | ||
| 332 | DW SND_FREQ ;AN000;error beep frequency | ||
| 333 | DW 6 ;AN000;upper left row | ||
| 334 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 335 | DW 0 ;AN000;relative upper left row | ||
| 336 | DW 0 ;AN000;relative upper left column | ||
| 337 | DW SCB_LIST3_W ;AN000;line width | ||
| 338 | DW SCB_LIST3_N ;AN000;number of lines | ||
| 339 | DW 1 ;AN000;number of element on top | ||
| 340 | DW SCB_LIST3_N ;AN000;number of elements | ||
| 341 | DW 1 ;AN000;current element | ||
| 342 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 343 | DW 0 ;AN000;display offset into opt strings | ||
| 344 | DW 1 ;AN000;num list txt col offset in strg | ||
| 345 | DB '.' ;AN000;numbered list separator | ||
| 346 | DW 0 ;AN000;select keystroke string length | ||
| 347 | DW 0 ;AN000;select keystroke string offset | ||
| 348 | DW 0 ;AN000;select keystroke string segment | ||
| 349 | DW 0 ;AN000;return/leave string length | ||
| 350 | DW 0 ;AN000;return/leave string offset | ||
| 351 | DW 0 ;AN000;return/leave string segment | ||
| 352 | DW 0 ;AN000;return/erase string length | ||
| 353 | DW 0 ;AN000;return/erase string offset | ||
| 354 | DW 0 ;AN000;return/erase string segment | ||
| 355 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 356 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 357 | DW 0 ;AN000;up arrow string segment | ||
| 358 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 359 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 360 | DW 0 ;AN000;down arrow string segment | ||
| 361 | DW 0 ;AN000;left arrow string length | ||
| 362 | DW 0 ;AN000;left arrow string offset | ||
| 363 | DW 0 ;AN000;left arrow string segment | ||
| 364 | DW 0 ;AN000;right arrow string length | ||
| 365 | DW 0 ;AN000;right arrow string offset | ||
| 366 | DW 0 ;AN000;right arrow string segment | ||
| 367 | DW 0 ;AN000;page-up string length | ||
| 368 | DW 0 ;AN000;page-up string offset | ||
| 369 | DW 0 ;AN000;page-up string segment | ||
| 370 | DW 0 ;AN000;page-down string length | ||
| 371 | DW 0 ;AN000;page-down string offset | ||
| 372 | DW 0 ;AN000;page-down string segment | ||
| 373 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 374 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 375 | DW 0 ;AN000;pointer indicator string segment | ||
| 376 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 377 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 378 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 379 | DW 0 ;AN000;active indicator string segment | ||
| 380 | DW 1 ;AN000;active ind txt col off into stg | ||
| 381 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 382 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 383 | DW 0 ;AN000;check mark text string segment | ||
| 384 | DW 1 ;AN000;check mark offset into opt strg | ||
| 385 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 386 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 387 | DW 0 ;AN000;up indicator string segment | ||
| 388 | DW 2 ;AN000;up indicator row location | ||
| 389 | DW 1 ;AN000;up indicator column location | ||
| 390 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 391 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 392 | DW 0 ;AN000;down indicator string segment | ||
| 393 | DW 2 ;AN000;down indicator row location | ||
| 394 | DW 2 ;AN000;down indicator column locaiton | ||
| 395 | DW 0 ;AN000;left indicator string length | ||
| 396 | DW 0 ;AN000;left indicator string offset | ||
| 397 | DW 0 ;AN000;left indicator string segment | ||
| 398 | DW 0 ;AN000;left indicator row location | ||
| 399 | DW 0 ;AN000;left indicator column location | ||
| 400 | DW 0 ;AN000;right indicator string length | ||
| 401 | DW 0 ;AN000;right indicator string offset | ||
| 402 | DW 0 ;AN000;right indicator string segment | ||
| 403 | DW 0 ;AN000;right indicator row location | ||
| 404 | DW 0 ;AN000;right indicator column locaiton | ||
| 405 | DW WR_CIS ;AN000;normal color array offset | ||
| 406 | DW 0 ;AN000;normal color array segment | ||
| 407 | DW 3 ;AN000;logical color index number | ||
| 408 | DW 0 ;AN000;number color index table entries | ||
| 409 | DW 0 ;AN000;offset addr of color index table | ||
| 410 | DW 0 ;AN000;segment addr of color index tabl | ||
| 411 | DW WR_INDEX1 ;AN000;index array offset | ||
| 412 | DW 0 ;AN000;index array segment | ||
| 413 | DW WR_SELECT ;AN000;element selection array offset | ||
| 414 | DW 0 ;AN000;element selection array segment | ||
| 415 | DW SSC_PTSB ;AN000;option array option word | ||
| 416 | DW SCB_LIST3 ;AN000;option array pointer offset | ||
| 417 | DW 0 ;AN000;option array pointer segment | ||
| 418 | DW SCB_LIST3_W ;AN000;option array string length | ||
| 419 | DW 0 ;AN000;option array string segment | ||
| 420 | DB 'A' ;AN000;option array string term char | ||
| 421 | DW 0 ;AN000;keystroke | ||
| 422 | DW 0 ;AN000;log vid buf offset override | ||
| 423 | DW 0 ;AN000;log vid buf segment override | ||
| 424 | DW 0 ;AN000;general purpose format hook opt | ||
| 425 | DW 0 ;AN000;general purpose format hook opt | ||
| 426 | DW 0 ;AN000;length of translation table | ||
| 427 | DW 0 ;AN000;offset of translation table | ||
| 428 | DW 0 ;AN000;segment of translation table | ||
| 429 | DW 0 ;AN000;monocasing table offset | ||
| 430 | DW 0 ;AN000;monocasing table segment | ||
| 431 | DW 0 ;AN000;dbcs table length | ||
| 432 | DW 0 ;AN000;dbcs table offset | ||
| 433 | DW 0 ;AN000;dbcs table segment | ||
| 434 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 435 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 436 | DB 236 DUP(0) ;AN024; | ||
| 437 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 438 | ; | ||
| 439 | ; defined country codes 2 | ||
| 440 | ; | ||
| 441 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 442 | WR_SCB4 DW SCB_FRBF+SCB_FRAL ;AN000;option word one | ||
| 443 | DW SCB_ROTN ;AN000;option word two | ||
| 444 | DW 0 ;AN000;option word three | ||
| 445 | DW 0 ;AN068;SEH option word four | ||
| 446 | DW SND_FREQ ;AN000;error beep frequency | ||
| 447 | DW 6 ;AN000;upper left row | ||
| 448 | DW LEFT_COL_SCROLL+SCB_LIST4_W+2 ;AN000;upper left column | ||
| 449 | DW 0 ;AN000;relative upper left row | ||
| 450 | DW 0 ;AN000;relative upper left column | ||
| 451 | DW SCB_LIST4_W ;AN000;line width | ||
| 452 | DW SCB_LIST4_N ;AN000;number of lines | ||
| 453 | DW 1 ;AN000;number of element on top | ||
| 454 | DW SCB_LIST4_N ;AN000;number of elements | ||
| 455 | DW 1 ;AN000;current element | ||
| 456 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 457 | DW 0 ;AN000;display offset into opt strings | ||
| 458 | DW 1 ;AN000;num list txt col offset in strg | ||
| 459 | DB '.' ;AN000;numbered list separator | ||
| 460 | DW 0 ;AN000;select keystroke string length | ||
| 461 | DW 0 ;AN000;select keystroke string offset | ||
| 462 | DW 0 ;AN000;select keystroke string segment | ||
| 463 | DW 0 ;AN000;return/leave string length | ||
| 464 | DW 0 ;AN000;return/leave string offset | ||
| 465 | DW 0 ;AN000;return/leave string segment | ||
| 466 | DW 0 ;AN000;return/erase string length | ||
| 467 | DW 0 ;AN000;return/erase string offset | ||
| 468 | DW 0 ;AN000;return/erase string segment | ||
| 469 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 470 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 471 | DW 0 ;AN000;up arrow string segment | ||
| 472 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 473 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 474 | DW 0 ;AN000;down arrow string segment | ||
| 475 | DW 0 ;AN000;left arrow string length | ||
| 476 | DW 0 ;AN000;left arrow string offset | ||
| 477 | DW 0 ;AN000;left arrow string segment | ||
| 478 | DW 0 ;AN000;right arrow string length | ||
| 479 | DW 0 ;AN000;right arrow string offset | ||
| 480 | DW 0 ;AN000;right arrow string segment | ||
| 481 | DW 0 ;AN000;page-up string length | ||
| 482 | DW 0 ;AN000;page-up string offset | ||
| 483 | DW 0 ;AN000;page-up string segment | ||
| 484 | DW 0 ;AN000;page-down string length | ||
| 485 | DW 0 ;AN000;page-down string offset | ||
| 486 | DW 0 ;AN000;page-down string segment | ||
| 487 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 488 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 489 | DW 0 ;AN000;pointer indicator string segment | ||
| 490 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 491 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 492 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 493 | DW 0 ;AN000;active indicator string segment | ||
| 494 | DW 1 ;AN000;active ind txt col off into stg | ||
| 495 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 496 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 497 | DW 0 ;AN000;check mark text string segment | ||
| 498 | DW 1 ;AN000;check mark offset into opt strg | ||
| 499 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 500 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 501 | DW 0 ;AN000;up indicator string segment | ||
| 502 | DW 2 ;AN000;up indicator row location | ||
| 503 | DW 1 ;AN000;up indicator column location | ||
| 504 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 505 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 506 | DW 0 ;AN000;down indicator string segment | ||
| 507 | DW 2 ;AN000;down indicator row location | ||
| 508 | DW 2 ;AN000;down indicator column locaiton | ||
| 509 | DW 0 ;AN000;left indicator string length | ||
| 510 | DW 0 ;AN000;left indicator string offset | ||
| 511 | DW 0 ;AN000;left indicator string segment | ||
| 512 | DW 0 ;AN000;left indicator row location | ||
| 513 | DW 0 ;AN000;left indicator column location | ||
| 514 | DW 0 ;AN000;right indicator string length | ||
| 515 | DW 0 ;AN000;right indicator string offset | ||
| 516 | DW 0 ;AN000;right indicator string segment | ||
| 517 | DW 0 ;AN000;right indicator row location | ||
| 518 | DW 0 ;AN000;right indicator column locaiton | ||
| 519 | DW WR_CIS ;AN000;normal color array offset | ||
| 520 | DW 0 ;AN000;normal color array segment | ||
| 521 | DW 4 ;AN000;logical color index number | ||
| 522 | DW 0 ;AN000;number color index table entries | ||
| 523 | DW 0 ;AN000;offset addr of color index table | ||
| 524 | DW 0 ;AN000;segment addr of color index tabl | ||
| 525 | DW WR_INDEX1 ;AN000;index array offset | ||
| 526 | DW 0 ;AN000;index array segment | ||
| 527 | DW WR_SELECT ;AN000;element selection array offset | ||
| 528 | DW 0 ;AN000;element selection array segment | ||
| 529 | DW SSC_PTSB ;AN000;option array option word | ||
| 530 | DW SCB_LIST4 ;AN000;option array pointer offset | ||
| 531 | DW 0 ;AN000;option array pointer segment | ||
| 532 | DW SCB_LIST4_W ;AN000;option array string length | ||
| 533 | DW 0 ;AN000;option array string segment | ||
| 534 | DB 'A' ;AN000;option array string term char | ||
| 535 | DW 0 ;AN000;keystroke | ||
| 536 | DW 0 ;AN000;log vid buf offset override | ||
| 537 | DW 0 ;AN000;log vid buf segment override | ||
| 538 | DW 0 ;AN000;general purpose format hook opt | ||
| 539 | DW 0 ;AN000;general purpose format hook opt | ||
| 540 | DW 0 ;AN000;length of translation table | ||
| 541 | DW 0 ;AN000;offset of translation table | ||
| 542 | DW 0 ;AN000;segment of translation table | ||
| 543 | DW 0 ;AN000;monocasing table offset | ||
| 544 | DW 0 ;AN000;monocasing table segment | ||
| 545 | DW 0 ;AN000;dbcs table length | ||
| 546 | DW 0 ;AN000;dbcs table offset | ||
| 547 | DW 0 ;AN000;dbcs table segment | ||
| 548 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 549 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 550 | DB 236 DUP(0) ;AN024; | ||
| 551 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 552 | ; | ||
| 553 | ; defined keyboard codes 1 | ||
| 554 | ; | ||
| 555 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 556 | WR_SCB5 DW SCB_FRBF+SCB_FRAL ;AN000;option word one | ||
| 557 | DW SCB_ROTN ;AN000;option word two | ||
| 558 | DW 0 ;AN000;option word three | ||
| 559 | DW 0 ;AN068;SEH option word four | ||
| 560 | DW SND_FREQ ;AN000;error beep frequency | ||
| 561 | DW 6 ;AN000;upper left row | ||
| 562 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 563 | DW 0 ;AN000;relative upper left row | ||
| 564 | DW 0 ;AN000;relative upper left column | ||
| 565 | DW SCB_LIST5_W ;AN000;line width | ||
| 566 | DW SCB_LIST5_N ;AN000;number of lines | ||
| 567 | DW 1 ;AN000;number of element on top | ||
| 568 | DW SCB_LIST5_N ;AN000;number of elements | ||
| 569 | DW 1 ;AN000;current element | ||
| 570 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 571 | DW 0 ;AN000;display offset into opt strings | ||
| 572 | DW 1 ;AN000;num list txt col offset in strg | ||
| 573 | DB '.' ;AN000;numbered list separator | ||
| 574 | DW 0 ;AN000;select keystroke string length | ||
| 575 | DW 0 ;AN000;select keystroke string offset | ||
| 576 | DW 0 ;AN000;select keystroke string segment | ||
| 577 | DW 0 ;AN000;return/leave string length | ||
| 578 | DW 0 ;AN000;return/leave string offset | ||
| 579 | DW 0 ;AN000;return/leave string segment | ||
| 580 | DW 0 ;AN000;return/erase string length | ||
| 581 | DW 0 ;AN000;return/erase string offset | ||
| 582 | DW 0 ;AN000;return/erase string segment | ||
| 583 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 584 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 585 | DW 0 ;AN000;up arrow string segment | ||
| 586 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 587 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 588 | DW 0 ;AN000;down arrow string segment | ||
| 589 | DW 0 ;AN000;left arrow string length | ||
| 590 | DW 0 ;AN000;left arrow string offset | ||
| 591 | DW 0 ;AN000;left arrow string segment | ||
| 592 | DW 0 ;AN000;right arrow string length | ||
| 593 | DW 0 ;AN000;right arrow string offset | ||
| 594 | DW 0 ;AN000;right arrow string segment | ||
| 595 | DW 0 ;AN000;page-up string length | ||
| 596 | DW 0 ;AN000;page-up string offset | ||
| 597 | DW 0 ;AN000;page-up string segment | ||
| 598 | DW 0 ;AN000;page-down string length | ||
| 599 | DW 0 ;AN000;page-down string offset | ||
| 600 | DW 0 ;AN000;page-down string segment | ||
| 601 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 602 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 603 | DW 0 ;AN000;pointer indicator string segment | ||
| 604 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 605 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 606 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 607 | DW 0 ;AN000;active indicator string segment | ||
| 608 | DW 1 ;AN000;active ind txt col off into stg | ||
| 609 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 610 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 611 | DW 0 ;AN000;check mark text string segment | ||
| 612 | DW 1 ;AN000;check mark offset into opt strg | ||
| 613 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 614 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 615 | DW 0 ;AN000;up indicator string segment | ||
| 616 | DW 2 ;AN000;up indicator row location | ||
| 617 | DW 1 ;AN000;up indicator column location | ||
| 618 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 619 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 620 | DW 0 ;AN000;down indicator string segment | ||
| 621 | DW 2 ;AN000;down indicator row location | ||
| 622 | DW 2 ;AN000;down indicator column locaiton | ||
| 623 | DW 0 ;AN000;left indicator string length | ||
| 624 | DW 0 ;AN000;left indicator string offset | ||
| 625 | DW 0 ;AN000;left indicator string segment | ||
| 626 | DW 0 ;AN000;left indicator row location | ||
| 627 | DW 0 ;AN000;left indicator column location | ||
| 628 | DW 0 ;AN000;right indicator string length | ||
| 629 | DW 0 ;AN000;right indicator string offset | ||
| 630 | DW 0 ;AN000;right indicator string segment | ||
| 631 | DW 0 ;AN000;right indicator row location | ||
| 632 | DW 0 ;AN000;right indicator column locaiton | ||
| 633 | DW WR_CIS ;AN000;normal color array offset | ||
| 634 | DW 0 ;AN000;normal color array segment | ||
| 635 | DW 5 ;AN000;logical color index number | ||
| 636 | DW 0 ;AN000;number color index table entries | ||
| 637 | DW 0 ;AN000;offset addr of color index table | ||
| 638 | DW 0 ;AN000;segment addr of color index tabl | ||
| 639 | DW WR_INDEX1 ;AN000;index array offset | ||
| 640 | DW 0 ;AN000;index array segment | ||
| 641 | DW WR_SELECT ;AN000;element selection array offset | ||
| 642 | DW 0 ;AN000;element selection array segment | ||
| 643 | DW SSC_PTSB ;AN000;option array option word | ||
| 644 | DW SCB_LIST5 ;AN000;option array pointer offset | ||
| 645 | DW 0 ;AN000;option array pointer segment | ||
| 646 | DW SCB_LIST5_W ;AN000;option array string length | ||
| 647 | DW 0 ;AN000;option array string segment | ||
| 648 | DB 'A' ;AN000;option array string term char | ||
| 649 | DW 0 ;AN000;keystroke | ||
| 650 | DW 0 ;AN000;log vid buf offset override | ||
| 651 | DW 0 ;AN000;log vid buf segment override | ||
| 652 | DW 0 ;AN000;general purpose format hook opt | ||
| 653 | DW 0 ;AN000;general purpose format hook opt | ||
| 654 | DW 0 ;AN000;length of translation table | ||
| 655 | DW 0 ;AN000;offset of translation table | ||
| 656 | DW 0 ;AN000;segment of translation table | ||
| 657 | DW 0 ;AN000;monocasing table offset | ||
| 658 | DW 0 ;AN000;monocasing table segment | ||
| 659 | DW 0 ;AN000;dbcs table length | ||
| 660 | DW 0 ;AN000;dbcs table offset | ||
| 661 | DW 0 ;AN000;dbcs table segment | ||
| 662 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 663 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 664 | DB 236 DUP(0) ;AN024; | ||
| 665 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 666 | ; | ||
| 667 | ; defined keyboard codes 2 | ||
| 668 | ; | ||
| 669 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 670 | WR_SCB6 DW SCB_FRBF+SCB_FRAL ;AN000;option word one | ||
| 671 | DW SCB_ROTN ;AN000;option word two | ||
| 672 | DW 0 ;AN000;option word three | ||
| 673 | DW 0 ;AN068;SEH option word four | ||
| 674 | DW SND_FREQ ;AN000;error beep frequency | ||
| 675 | DW 6 ;AN000;upper left row | ||
| 676 | DW LEFT_COL_SCROLL+SCB_LIST6_W+2 ;AN000;upper left column | ||
| 677 | DW 0 ;AN000;relative upper left row | ||
| 678 | DW 0 ;AN000;relative upper left column | ||
| 679 | DW SCB_LIST6_W ;AN000;line width | ||
| 680 | DW SCB_LIST6_N ;AN000;number of lines | ||
| 681 | DW 1 ;AN000;number of element on top | ||
| 682 | DW SCB_LIST6_N ;AN000;number of elements | ||
| 683 | DW 1 ;AN000;current element | ||
| 684 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 685 | DW 0 ;AN000;display offset into opt strings | ||
| 686 | DW 1 ;AN000;num list txt col offset in strg | ||
| 687 | DB '.' ;AN000;numbered list separator | ||
| 688 | DW 0 ;AN000;select keystroke string length | ||
| 689 | DW 0 ;AN000;select keystroke string offset | ||
| 690 | DW 0 ;AN000;select keystroke string segment | ||
| 691 | DW 0 ;AN000;return/leave string length | ||
| 692 | DW 0 ;AN000;return/leave string offset | ||
| 693 | DW 0 ;AN000;return/leave string segment | ||
| 694 | DW 0 ;AN000;return/erase string length | ||
| 695 | DW 0 ;AN000;return/erase string offset | ||
| 696 | DW 0 ;AN000;return/erase string segment | ||
| 697 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 698 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 699 | DW 0 ;AN000;up arrow string segment | ||
| 700 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 701 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 702 | DW 0 ;AN000;down arrow string segment | ||
| 703 | DW 0 ;AN000;left arrow string length | ||
| 704 | DW 0 ;AN000;left arrow string offset | ||
| 705 | DW 0 ;AN000;left arrow string segment | ||
| 706 | DW 0 ;AN000;right arrow string length | ||
| 707 | DW 0 ;AN000;right arrow string offset | ||
| 708 | DW 0 ;AN000;right arrow string segment | ||
| 709 | DW 0 ;AN000;page-up string length | ||
| 710 | DW 0 ;AN000;page-up string offset | ||
| 711 | DW 0 ;AN000;page-up string segment | ||
| 712 | DW 0 ;AN000;page-down string length | ||
| 713 | DW 0 ;AN000;page-down string offset | ||
| 714 | DW 0 ;AN000;page-down string segment | ||
| 715 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 716 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 717 | DW 0 ;AN000;pointer indicator string segment | ||
| 718 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 719 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 720 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 721 | DW 0 ;AN000;active indicator string segment | ||
| 722 | DW 1 ;AN000;active ind txt col off into stg | ||
| 723 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 724 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 725 | DW 0 ;AN000;check mark text string segment | ||
| 726 | DW 1 ;AN000;check mark offset into opt strg | ||
| 727 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 728 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 729 | DW 0 ;AN000;up indicator string segment | ||
| 730 | DW 2 ;AN000;up indicator row location | ||
| 731 | DW 1 ;AN000;up indicator column location | ||
| 732 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 733 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 734 | DW 0 ;AN000;down indicator string segment | ||
| 735 | DW 2 ;AN000;down indicator row location | ||
| 736 | DW 2 ;AN000;down indicator column locaiton | ||
| 737 | DW 0 ;AN000;left indicator string length | ||
| 738 | DW 0 ;AN000;left indicator string offset | ||
| 739 | DW 0 ;AN000;left indicator string segment | ||
| 740 | DW 0 ;AN000;left indicator row location | ||
| 741 | DW 0 ;AN000;left indicator column location | ||
| 742 | DW 0 ;AN000;right indicator string length | ||
| 743 | DW 0 ;AN000;right indicator string offset | ||
| 744 | DW 0 ;AN000;right indicator string segment | ||
| 745 | DW 0 ;AN000;right indicator row location | ||
| 746 | DW 0 ;AN000;right indicator column locaiton | ||
| 747 | DW WR_CIS ;AN000;normal color array offset | ||
| 748 | DW 0 ;AN000;normal color array segment | ||
| 749 | DW 6 ;AN000;logical color index number | ||
| 750 | DW 0 ;AN000;number color index table entries | ||
| 751 | DW 0 ;AN000;offset addr of color index table | ||
| 752 | DW 0 ;AN000;segment addr of color index tabl | ||
| 753 | DW WR_INDEX1 ;AN000;index array offset | ||
| 754 | DW 0 ;AN000;index array segment | ||
| 755 | DW WR_SELECT ;AN000;element selection array offset | ||
| 756 | DW 0 ;AN000;element selection array segment | ||
| 757 | DW SSC_PTSB ;AN000;option array option word | ||
| 758 | DW SCB_LIST6 ;AN000;option array pointer offset | ||
| 759 | DW 0 ;AN000;option array pointer segment | ||
| 760 | DW SCB_LIST6_W ;AN000;option array string length | ||
| 761 | DW 0 ;AN000;option array string segment | ||
| 762 | DB 'A' ;AN000;option array string term char | ||
| 763 | DW 0 ;AN000;keystroke | ||
| 764 | DW 0 ;AN000;log vid buf offset override | ||
| 765 | DW 0 ;AN000;log vid buf segment override | ||
| 766 | DW 0 ;AN000;general purpose format hook opt | ||
| 767 | DW 0 ;AN000;general purpose format hook opt | ||
| 768 | DW 0 ;AN000;length of translation table | ||
| 769 | DW 0 ;AN000;offset of translation table | ||
| 770 | DW 0 ;AN000;segment of translation table | ||
| 771 | DW 0 ;AN000;monocasing table offset | ||
| 772 | DW 0 ;AN000;monocasing table segment | ||
| 773 | DW 0 ;AN000;dbcs table length | ||
| 774 | DW 0 ;AN000;dbcs table offset | ||
| 775 | DW 0 ;AN000;dbcs table segment | ||
| 776 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 777 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 778 | DB 236 DUP(0) ;AN024; | ||
| 779 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 780 | ; | ||
| 781 | ; defined FRENCH keyboard | ||
| 782 | ; | ||
| 783 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 784 | WR_SCB7 DW SCB_WRAP ;AN000;option word one | ||
| 785 | DW SCB_SKIP ;AN000;option word two | ||
| 786 | DW SCB_NUMS ;AN000;option word three | ||
| 787 | DW 0 ;AN068;SEH option word four | ||
| 788 | DW SND_FREQ ;AN000;error beep frequency | ||
| 789 | DW 10 ;AN000;upper left row | ||
| 790 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 791 | DW 0 ;AN000;relative upper left row | ||
| 792 | DW 0 ;AN000;relative upper left column | ||
| 793 | DW SCB_LIST7_W ;AN000;line width | ||
| 794 | DW SCB_LIST7_N ;AN000;number of lines | ||
| 795 | DW 1 ;AN000;number of element on top | ||
| 796 | DW SCB_LIST7_N ;AN000;number of elements | ||
| 797 | DW 1 ;AN000;current element | ||
| 798 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 799 | DW 0 ;AN000;display offset into opt strings | ||
| 800 | DW 1 ;AN000;num list txt col offset in strg | ||
| 801 | DB '.' ;AN000;numbered list separator | ||
| 802 | DW 0 ;AN000;select keystroke string length | ||
| 803 | DW 0 ;AN000;select keystroke string offset | ||
| 804 | DW 0 ;AN000;select keystroke string segment | ||
| 805 | DW 0 ;AN000;return/leave string length | ||
| 806 | DW 0 ;AN000;return/leave string offset | ||
| 807 | DW 0 ;AN000;return/leave string segment | ||
| 808 | DW 0 ;AN000;return/erase string length | ||
| 809 | DW 0 ;AN000;return/erase string offset | ||
| 810 | DW 0 ;AN000;return/erase string segment | ||
| 811 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 812 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 813 | DW 0 ;AN000;up arrow string segment | ||
| 814 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 815 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 816 | DW 0 ;AN000;down arrow string segment | ||
| 817 | DW 0 ;AN000;left arrow string length | ||
| 818 | DW 0 ;AN000;left arrow string offset | ||
| 819 | DW 0 ;AN000;left arrow string segment | ||
| 820 | DW 0 ;AN000;right arrow string length | ||
| 821 | DW 0 ;AN000;right arrow string offset | ||
| 822 | DW 0 ;AN000;right arrow string segment | ||
| 823 | DW 0 ;AN000;page-up string length | ||
| 824 | DW 0 ;AN000;page-up string offset | ||
| 825 | DW 0 ;AN000;page-up string segment | ||
| 826 | DW 0 ;AN000;page-down string length | ||
| 827 | DW 0 ;AN000;page-down string offset | ||
| 828 | DW 0 ;AN000;page-down string segment | ||
| 829 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 830 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 831 | DW 0 ;AN000;pointer indicator string segment | ||
| 832 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 833 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 834 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 835 | DW 0 ;AN000;active indicator string segment | ||
| 836 | DW 1 ;AN000;active ind txt col off into stg | ||
| 837 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 838 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 839 | DW 0 ;AN000;check mark text string segment | ||
| 840 | DW 1 ;AN000;check mark offset into opt strg | ||
| 841 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 842 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 843 | DW 0 ;AN000;up indicator string segment | ||
| 844 | DW 2 ;AN000;up indicator row location | ||
| 845 | DW 1 ;AN000;up indicator column location | ||
| 846 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 847 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 848 | DW 0 ;AN000;down indicator string segment | ||
| 849 | DW 2 ;AN000;down indicator row location | ||
| 850 | DW 2 ;AN000;down indicator column locaiton | ||
| 851 | DW 0 ;AN000;left indicator string length | ||
| 852 | DW 0 ;AN000;left indicator string offset | ||
| 853 | DW 0 ;AN000;left indicator string segment | ||
| 854 | DW 0 ;AN000;left indicator row location | ||
| 855 | DW 0 ;AN000;left indicator column location | ||
| 856 | DW 0 ;AN000;right indicator string length | ||
| 857 | DW 0 ;AN000;right indicator string offset | ||
| 858 | DW 0 ;AN000;right indicator string segment | ||
| 859 | DW 0 ;AN000;right indicator row location | ||
| 860 | DW 0 ;AN000;right indicator column locaiton | ||
| 861 | DW WR_CIS ;AN000;normal color array offset | ||
| 862 | DW 0 ;AN000;normal color array segment | ||
| 863 | DW 7 ;AN000;logical color index number | ||
| 864 | DW 0 ;AN000;number color index table entries | ||
| 865 | DW 0 ;AN000;offset addr of color index table | ||
| 866 | DW 0 ;AN000;segment addr of color index tabl | ||
| 867 | DW WR_INDEX1 ;AN000;index array offset | ||
| 868 | DW 0 ;AN000;index array segment | ||
| 869 | DW WR_SELECT_NUM ;AN000;element selection array offset | ||
| 870 | DW 0 ;AN000;element selection array segment | ||
| 871 | DW SSC_PTSB ;AN000;option array option word | ||
| 872 | DW SCB_LIST7 ;AN000;option array pointer offset | ||
| 873 | DW 0 ;AN000;option array pointer segment | ||
| 874 | DW SCB_LIST7_W ;AN000;option array string length | ||
| 875 | DW 0 ;AN000;option array string segment | ||
| 876 | DB 'A' ;AN000;option array string term char | ||
| 877 | DW 0 ;AN000;keystroke | ||
| 878 | DW 0 ;AN000;log vid buf offset override | ||
| 879 | DW 0 ;AN000;log vid buf segment override | ||
| 880 | DW 0 ;AN000;general purpose format hook opt | ||
| 881 | DW 0 ;AN000;general purpose format hook opt | ||
| 882 | DW 0 ;AN000;length of translation table | ||
| 883 | DW 0 ;AN000;offset of translation table | ||
| 884 | DW 0 ;AN000;segment of translation table | ||
| 885 | DW 0 ;AN000;monocasing table offset | ||
| 886 | DW 0 ;AN000;monocasing table segment | ||
| 887 | DW 0 ;AN000;dbcs table length | ||
| 888 | DW 0 ;AN000;dbcs table offset | ||
| 889 | DW 0 ;AN000;dbcs table segment | ||
| 890 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 891 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 892 | DB 236 DUP(0) ;AN024; | ||
| 893 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 894 | ; | ||
| 895 | ; defined italian keyboard | ||
| 896 | ; | ||
| 897 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 898 | WR_SCB8 DW SCB_WRAP ;AN000;option word one | ||
| 899 | DW SCB_SKIP ;AN000;option word two | ||
| 900 | DW SCB_NUMS ;AN000;option word three | ||
| 901 | DW 0 ;AN068;SEH option word four | ||
| 902 | DW SND_FREQ ;AN000;error beep frequency | ||
| 903 | DW 10 ;AN000;upper left row | ||
| 904 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 905 | DW 0 ;AN000;relative upper left row | ||
| 906 | DW 0 ;AN000;relative upper left column | ||
| 907 | DW SCB_LIST8_W ;AN000;line width | ||
| 908 | DW SCB_LIST8_N ;AN000;number of lines | ||
| 909 | DW 1 ;AN000;number of element on top | ||
| 910 | DW SCB_LIST8_N ;AN000;number of elements | ||
| 911 | DW 1 ;AN000;current element | ||
| 912 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 913 | DW 0 ;AN000;display offset into opt strings | ||
| 914 | DW 1 ;AN000;num list txt col offset in strg | ||
| 915 | DB '.' ;AN000;numbered list separator | ||
| 916 | DW 0 ;AN000;select keystroke string length | ||
| 917 | DW 0 ;AN000;select keystroke string offset | ||
| 918 | DW 0 ;AN000;select keystroke string segment | ||
| 919 | DW 0 ;AN000;return/leave string length | ||
| 920 | DW 0 ;AN000;return/leave string offset | ||
| 921 | DW 0 ;AN000;return/leave string segment | ||
| 922 | DW 0 ;AN000;return/erase string length | ||
| 923 | DW 0 ;AN000;return/erase string offset | ||
| 924 | DW 0 ;AN000;return/erase string segment | ||
| 925 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 926 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 927 | DW 0 ;AN000;up arrow string segment | ||
| 928 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 929 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 930 | DW 0 ;AN000;down arrow string segment | ||
| 931 | DW 0 ;AN000;left arrow string length | ||
| 932 | DW 0 ;AN000;left arrow string offset | ||
| 933 | DW 0 ;AN000;left arrow string segment | ||
| 934 | DW 0 ;AN000;right arrow string length | ||
| 935 | DW 0 ;AN000;right arrow string offset | ||
| 936 | DW 0 ;AN000;right arrow string segment | ||
| 937 | DW 0 ;AN000;page-up string length | ||
| 938 | DW 0 ;AN000;page-up string offset | ||
| 939 | DW 0 ;AN000;page-up string segment | ||
| 940 | DW 0 ;AN000;page-down string length | ||
| 941 | DW 0 ;AN000;page-down string offset | ||
| 942 | DW 0 ;AN000;page-down string segment | ||
| 943 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 944 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 945 | DW 0 ;AN000;pointer indicator string segment | ||
| 946 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 947 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 948 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 949 | DW 0 ;AN000;active indicator string segment | ||
| 950 | DW 1 ;AN000;active ind txt col off into stg | ||
| 951 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 952 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 953 | DW 0 ;AN000;check mark text string segment | ||
| 954 | DW 1 ;AN000;check mark offset into opt strg | ||
| 955 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 956 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 957 | DW 0 ;AN000;up indicator string segment | ||
| 958 | DW 2 ;AN000;up indicator row location | ||
| 959 | DW 1 ;AN000;up indicator column location | ||
| 960 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 961 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 962 | DW 0 ;AN000;down indicator string segment | ||
| 963 | DW 2 ;AN000;down indicator row location | ||
| 964 | DW 2 ;AN000;down indicator column locaiton | ||
| 965 | DW 0 ;AN000;left indicator string length | ||
| 966 | DW 0 ;AN000;left indicator string offset | ||
| 967 | DW 0 ;AN000;left indicator string segment | ||
| 968 | DW 0 ;AN000;left indicator row location | ||
| 969 | DW 0 ;AN000;left indicator column location | ||
| 970 | DW 0 ;AN000;right indicator string length | ||
| 971 | DW 0 ;AN000;right indicator string offset | ||
| 972 | DW 0 ;AN000;right indicator string segment | ||
| 973 | DW 0 ;AN000;right indicator row location | ||
| 974 | DW 0 ;AN000;right indicator column locaiton | ||
| 975 | DW WR_CIS ;AN000;normal color array offset | ||
| 976 | DW 0 ;AN000;normal color array segment | ||
| 977 | DW 8 ;AN000;logical color index number | ||
| 978 | DW 0 ;AN000;number color index table entries | ||
| 979 | DW 0 ;AN000;offset addr of color index table | ||
| 980 | DW 0 ;AN000;segment addr of color index tabl | ||
| 981 | DW WR_INDEX1 ;AN000;index array offset | ||
| 982 | DW 0 ;AN000;index array segment | ||
| 983 | DW WR_SELECT_NUM ;AN000;element selection array offset | ||
| 984 | DW 0 ;AN000;element selection array segment | ||
| 985 | DW SSC_PTSB ;AN000;option array option word | ||
| 986 | DW SCB_LIST8 ;AN000;option array pointer offset | ||
| 987 | DW 0 ;AN000;option array pointer segment | ||
| 988 | DW SCB_LIST8_W ;AN000;option array string length | ||
| 989 | DW 0 ;AN000;option array string segment | ||
| 990 | DB 'A' ;AN000;option array string term char | ||
| 991 | DW 0 ;AN000;keystroke | ||
| 992 | DW 0 ;AN000;log vid buf offset override | ||
| 993 | DW 0 ;AN000;log vid buf segment override | ||
| 994 | DW 0 ;AN000;general purpose format hook opt | ||
| 995 | DW 0 ;AN000;general purpose format hook opt | ||
| 996 | DW 0 ;AN000;length of translation table | ||
| 997 | DW 0 ;AN000;offset of translation table | ||
| 998 | DW 0 ;AN000;segment of translation table | ||
| 999 | DW 0 ;AN000;monocasing table offset | ||
| 1000 | DW 0 ;AN000;monocasing table segment | ||
| 1001 | DW 0 ;AN000;dbcs table length | ||
| 1002 | DW 0 ;AN000;dbcs table offset | ||
| 1003 | DW 0 ;AN000;dbcs table segment | ||
| 1004 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 1005 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 1006 | DB 236 DUP(0) ;AN024; | ||
| 1007 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1008 | ; | ||
| 1009 | ; defined UK keyboard | ||
| 1010 | ; | ||
| 1011 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1012 | WR_SCB9 DW SCB_WRAP ;AN000;option word one | ||
| 1013 | DW SCB_SKIP ;AN000;option word two | ||
| 1014 | DW SCB_NUMS ;AN000;option word three | ||
| 1015 | DW 0 ;AN068;SEH option word four | ||
| 1016 | DW SND_FREQ ;AN000;error beep frequency | ||
| 1017 | DW 10 ;AN000;upper left row | ||
| 1018 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 1019 | DW 0 ;AN000;relative upper left row | ||
| 1020 | DW 0 ;AN000;relative upper left column | ||
| 1021 | DW SCB_LIST9_W ;AN000;line width | ||
| 1022 | DW SCB_LIST9_N ;AN000;number of lines | ||
| 1023 | DW 1 ;AN000;number of element on top | ||
| 1024 | DW SCB_LIST9_N ;AN000;number of elements | ||
| 1025 | DW 1 ;AN000;current element | ||
| 1026 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 1027 | DW 0 ;AN000;display offset into opt strings | ||
| 1028 | DW 1 ;AN000;num list txt col offset in strg | ||
| 1029 | DB '.' ;AN000;numbered list separator | ||
| 1030 | DW 0 ;AN000;select keystroke string length | ||
| 1031 | DW 0 ;AN000;select keystroke string offset | ||
| 1032 | DW 0 ;AN000;select keystroke string segment | ||
| 1033 | DW 0 ;AN000;return/leave string length | ||
| 1034 | DW 0 ;AN000;return/leave string offset | ||
| 1035 | DW 0 ;AN000;return/leave string segment | ||
| 1036 | DW 0 ;AN000;return/erase string length | ||
| 1037 | DW 0 ;AN000;return/erase string offset | ||
| 1038 | DW 0 ;AN000;return/erase string segment | ||
| 1039 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 1040 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 1041 | DW 0 ;AN000;up arrow string segment | ||
| 1042 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 1043 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 1044 | DW 0 ;AN000;down arrow string segment | ||
| 1045 | DW 0 ;AN000;left arrow string length | ||
| 1046 | DW 0 ;AN000;left arrow string offset | ||
| 1047 | DW 0 ;AN000;left arrow string segment | ||
| 1048 | DW 0 ;AN000;right arrow string length | ||
| 1049 | DW 0 ;AN000;right arrow string offset | ||
| 1050 | DW 0 ;AN000;right arrow string segment | ||
| 1051 | DW 0 ;AN000;page-up string length | ||
| 1052 | DW 0 ;AN000;page-up string offset | ||
| 1053 | DW 0 ;AN000;page-up string segment | ||
| 1054 | DW 0 ;AN000;page-down string length | ||
| 1055 | DW 0 ;AN000;page-down string offset | ||
| 1056 | DW 0 ;AN000;page-down string segment | ||
| 1057 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 1058 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 1059 | DW 0 ;AN000;pointer indicator string segment | ||
| 1060 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 1061 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 1062 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 1063 | DW 0 ;AN000;active indicator string segment | ||
| 1064 | DW 1 ;AN000;active ind txt col off into stg | ||
| 1065 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 1066 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 1067 | DW 0 ;AN000;check mark text string segment | ||
| 1068 | DW 1 ;AN000;check mark offset into opt strg | ||
| 1069 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 1070 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 1071 | DW 0 ;AN000;up indicator string segment | ||
| 1072 | DW 2 ;AN000;up indicator row location | ||
| 1073 | DW 1 ;AN000;up indicator column location | ||
| 1074 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 1075 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 1076 | DW 0 ;AN000;down indicator string segment | ||
| 1077 | DW 2 ;AN000;down indicator row location | ||
| 1078 | DW 2 ;AN000;down indicator column locaiton | ||
| 1079 | DW 0 ;AN000;left indicator string length | ||
| 1080 | DW 0 ;AN000;left indicator string offset | ||
| 1081 | DW 0 ;AN000;left indicator string segment | ||
| 1082 | DW 0 ;AN000;left indicator row location | ||
| 1083 | DW 0 ;AN000;left indicator column location | ||
| 1084 | DW 0 ;AN000;right indicator string length | ||
| 1085 | DW 0 ;AN000;right indicator string offset | ||
| 1086 | DW 0 ;AN000;right indicator string segment | ||
| 1087 | DW 0 ;AN000;right indicator row location | ||
| 1088 | DW 0 ;AN000;right indicator column locaiton | ||
| 1089 | DW WR_CIS ;AN000;normal color array offset | ||
| 1090 | DW 0 ;AN000;normal color array segment | ||
| 1091 | DW 9 ;AN000;logical color index number | ||
| 1092 | DW 0 ;AN000;number color index table entries | ||
| 1093 | DW 0 ;AN000;offset addr of color index table | ||
| 1094 | DW 0 ;AN000;segment addr of color index tabl | ||
| 1095 | DW WR_INDEX1 ;AN000;index array offset | ||
| 1096 | DW 0 ;AN000;index array segment | ||
| 1097 | DW WR_SELECT_NUM ;AN000;element selection array offset | ||
| 1098 | DW 0 ;AN000;element selection array segment | ||
| 1099 | DW SSC_PTSB ;AN000;option array option word | ||
| 1100 | DW SCB_LIST9 ;AN000;option array pointer offset | ||
| 1101 | DW 0 ;AN000;option array pointer segment | ||
| 1102 | DW SCB_LIST9_W ;AN000;option array string length | ||
| 1103 | DW 0 ;AN000;option array string segment | ||
| 1104 | DB 'A' ;AN000;option array string term char | ||
| 1105 | DW 0 ;AN000;keystroke | ||
| 1106 | DW 0 ;AN000;log vid buf offset override | ||
| 1107 | DW 0 ;AN000;log vid buf segment override | ||
| 1108 | DW 0 ;AN000;general purpose format hook opt | ||
| 1109 | DW 0 ;AN000;general purpose format hook opt | ||
| 1110 | DW 0 ;AN000;length of translation table | ||
| 1111 | DW 0 ;AN000;offset of translation table | ||
| 1112 | DW 0 ;AN000;segment of translation table | ||
| 1113 | DW 0 ;AN000;monocasing table offset | ||
| 1114 | DW 0 ;AN000;monocasing table segment | ||
| 1115 | DW 0 ;AN000;dbcs table length | ||
| 1116 | DW 0 ;AN000;dbcs table offset | ||
| 1117 | DW 0 ;AN000;dbcs table segment | ||
| 1118 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 1119 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 1120 | DB 236 DUP(0) ;AN024; | ||
| 1121 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1122 | ; | ||
| 1123 | ; select drive b: or c: | ||
| 1124 | ; | ||
| 1125 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1126 | WR_SCB10 DW SCB_WRAP ;AN000;option word one | ||
| 1127 | DW SCB_SKIP ;AN000;option word two | ||
| 1128 | DW SCB_NUMS ;AN000;option word three | ||
| 1129 | DW 0 ;AN068;SEH option word four | ||
| 1130 | DW SND_FREQ ;AN000;error beep frequency | ||
| 1131 | DW 8 ;AN000;upper left row | ||
| 1132 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 1133 | DW 0 ;AN000;relative upper left row | ||
| 1134 | DW 0 ;AN000;relative upper left column | ||
| 1135 | DW SCB_LIST10_W ;AN000;line width | ||
| 1136 | DW SCB_LIST10_N ;AN000;number of lines | ||
| 1137 | DW 1 ;AN000;number of element on top | ||
| 1138 | DW SCB_LIST10_N ;AN000;number of elements | ||
| 1139 | DW 1 ;AN000;current element | ||
| 1140 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 1141 | DW 0 ;AN000;display offset into opt strings | ||
| 1142 | DW 1 ;AN000;num list txt col offset in strg | ||
| 1143 | DB '.' ;AN000;numbered list separator | ||
| 1144 | DW 0 ;AN000;select keystroke string length | ||
| 1145 | DW 0 ;AN000;select keystroke string offset | ||
| 1146 | DW 0 ;AN000;select keystroke string segment | ||
| 1147 | DW 0 ;AN000;return/leave string length | ||
| 1148 | DW 0 ;AN000;return/leave string offset | ||
| 1149 | DW 0 ;AN000;return/leave string segment | ||
| 1150 | DW 0 ;AN000;return/erase string length | ||
| 1151 | DW 0 ;AN000;return/erase string offset | ||
| 1152 | DW 0 ;AN000;return/erase string segment | ||
| 1153 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 1154 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 1155 | DW 0 ;AN000;up arrow string segment | ||
| 1156 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 1157 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 1158 | DW 0 ;AN000;down arrow string segment | ||
| 1159 | DW 0 ;AN000;left arrow string length | ||
| 1160 | DW 0 ;AN000;left arrow string offset | ||
| 1161 | DW 0 ;AN000;left arrow string segment | ||
| 1162 | DW 0 ;AN000;right arrow string length | ||
| 1163 | DW 0 ;AN000;right arrow string offset | ||
| 1164 | DW 0 ;AN000;right arrow string segment | ||
| 1165 | DW 0 ;AN000;page-up string length | ||
| 1166 | DW 0 ;AN000;page-up string offset | ||
| 1167 | DW 0 ;AN000;page-up string segment | ||
| 1168 | DW 0 ;AN000;page-down string length | ||
| 1169 | DW 0 ;AN000;page-down string offset | ||
| 1170 | DW 0 ;AN000;page-down string segment | ||
| 1171 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 1172 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 1173 | DW 0 ;AN000;pointer indicator string segment | ||
| 1174 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 1175 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 1176 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 1177 | DW 0 ;AN000;active indicator string segment | ||
| 1178 | DW 1 ;AN000;active ind txt col off into stg | ||
| 1179 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 1180 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 1181 | DW 0 ;AN000;check mark text string segment | ||
| 1182 | DW 1 ;AN000;check mark offset into opt strg | ||
| 1183 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 1184 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 1185 | DW 0 ;AN000;up indicator string segment | ||
| 1186 | DW 2 ;AN000;up indicator row location | ||
| 1187 | DW 1 ;AN000;up indicator column location | ||
| 1188 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 1189 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 1190 | DW 0 ;AN000;down indicator string segment | ||
| 1191 | DW 2 ;AN000;down indicator row location | ||
| 1192 | DW 2 ;AN000;down indicator column locaiton | ||
| 1193 | DW 0 ;AN000;left indicator string length | ||
| 1194 | DW 0 ;AN000;left indicator string offset | ||
| 1195 | DW 0 ;AN000;left indicator string segment | ||
| 1196 | DW 0 ;AN000;left indicator row location | ||
| 1197 | DW 0 ;AN000;left indicator column location | ||
| 1198 | DW 0 ;AN000;right indicator string length | ||
| 1199 | DW 0 ;AN000;right indicator string offset | ||
| 1200 | DW 0 ;AN000;right indicator string segment | ||
| 1201 | DW 0 ;AN000;right indicator row location | ||
| 1202 | DW 0 ;AN000;right indicator column locaiton | ||
| 1203 | DW WR_CIS ;AN000;normal color array offset | ||
| 1204 | DW 0 ;AN000;normal color array segment | ||
| 1205 | DW 10 ;AN000;logical color index number | ||
| 1206 | DW 0 ;AN000;number color index table entries | ||
| 1207 | DW 0 ;AN000;offset addr of color index table | ||
| 1208 | DW 0 ;AN000;segment addr of color index tabl | ||
| 1209 | DW WR_INDEX1 ;AN000;index array offset | ||
| 1210 | DW 0 ;AN000;index array segment | ||
| 1211 | DW WR_SELECT_NUM ;AN000;element selection array offset | ||
| 1212 | DW 0 ;AN000;element selection array segment | ||
| 1213 | DW SSC_PTSB ;AN000;option array option word | ||
| 1214 | DW SCB_LIST10 ;AN000;option array pointer offset | ||
| 1215 | DW 0 ;AN000;option array pointer segment | ||
| 1216 | DW SCB_LIST10_W ;AN000;option array string length | ||
| 1217 | DW 0 ;AN000;option array string segment | ||
| 1218 | DB 'A' ;AN000;option array string term char | ||
| 1219 | DW 0 ;AN000;keystroke | ||
| 1220 | DW 0 ;AN000;log vid buf offset override | ||
| 1221 | DW 0 ;AN000;log vid buf segment override | ||
| 1222 | DW 0 ;AN000;general purpose format hook opt | ||
| 1223 | DW 0 ;AN000;general purpose format hook opt | ||
| 1224 | DW 0 ;AN000;length of translation table | ||
| 1225 | DW 0 ;AN000;offset of translation table | ||
| 1226 | DW 0 ;AN000;segment of translation table | ||
| 1227 | DW 0 ;AN000;monocasing table offset | ||
| 1228 | DW 0 ;AN000;monocasing table segment | ||
| 1229 | DW 0 ;AN000;dbcs table length | ||
| 1230 | DW 0 ;AN000;dbcs table offset | ||
| 1231 | DW 0 ;AN000;dbcs table segment | ||
| 1232 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 1233 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 1234 | DB 236 DUP(0) ;AN024; | ||
| 1235 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1236 | ; | ||
| 1237 | ; select printer type | ||
| 1238 | ; | ||
| 1239 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1240 | WR_SCB11 DW 0 ;AN000;option word one | ||
| 1241 | DW scb_uind ;AN000;option word two | ||
| 1242 | DW 0 ;AN000;option word three | ||
| 1243 | DW 0 ;AN068;SEH option word four | ||
| 1244 | DW SND_FREQ ;AN000;error beep frequency | ||
| 1245 | DW 11 ;AN000;upper left row | ||
| 1246 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 1247 | DW 0 ;AN000;relative upper left row | ||
| 1248 | DW 0 ;AN000;relative upper left column | ||
| 1249 | DW SCB_LIST11_W ;AN000;line width | ||
| 1250 | DW 10 ;AN000;number of lines | ||
| 1251 | DW 1 ;AN000;number of element on top | ||
| 1252 | DW SCB_LIST11_N ;AN000;number of elements | ||
| 1253 | DW 1 ;AN000;current element | ||
| 1254 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 1255 | DW 0 ;AN000;display offset into opt strings | ||
| 1256 | DW 1 ;AN000;num list txt col offset in strg | ||
| 1257 | DB '.' ;AN000;numbered list separator | ||
| 1258 | DW 0 ;AN000;select keystroke string length | ||
| 1259 | DW 0 ;AN000;select keystroke string offset | ||
| 1260 | DW 0 ;AN000;select keystroke string segment | ||
| 1261 | DW 0 ;AN000;return/leave string length | ||
| 1262 | DW 0 ;AN000;return/leave string offset | ||
| 1263 | DW 0 ;AN000;return/leave string segment | ||
| 1264 | DW 0 ;AN000;return/erase string length | ||
| 1265 | DW 0 ;AN000;return/erase string offset | ||
| 1266 | DW 0 ;AN000;return/erase string segment | ||
| 1267 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 1268 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 1269 | DW 0 ;AN000;up arrow string segment | ||
| 1270 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 1271 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 1272 | DW 0 ;AN000;down arrow string segment | ||
| 1273 | DW 0 ;AN000;left arrow string length | ||
| 1274 | DW 0 ;AN000;left arrow string offset | ||
| 1275 | DW 0 ;AN000;left arrow string segment | ||
| 1276 | DW 0 ;AN000;right arrow string length | ||
| 1277 | DW 0 ;AN000;right arrow string offset | ||
| 1278 | DW 0 ;AN000;right arrow string segment | ||
| 1279 | DW 0 ;AN000;page-up string length | ||
| 1280 | DW 0 ;AN000;page-up string offset | ||
| 1281 | DW 0 ;AN000;page-up string segment | ||
| 1282 | DW 0 ;AN000;page-down string length | ||
| 1283 | DW 0 ;AN000;page-down string offset | ||
| 1284 | DW 0 ;AN000;page-down string segment | ||
| 1285 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 1286 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 1287 | DW 0 ;AN000;pointer indicator string segment | ||
| 1288 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 1289 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 1290 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 1291 | DW 0 ;AN000;active indicator string segment | ||
| 1292 | DW 1 ;AN000;active ind txt col off into stg | ||
| 1293 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 1294 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 1295 | DW 0 ;AN000;check mark text string segment | ||
| 1296 | DW 1 ;AN000;check mark offset into opt strg | ||
| 1297 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 1298 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 1299 | DW 0 ;AN000;up indicator string segment | ||
| 1300 | DW 9 ;AN000;up indicator row location | ||
| 1301 | DW 64 ;AN000;up indicator column location | ||
| 1302 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 1303 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 1304 | DW 0 ;AN000;down indicator string segment | ||
| 1305 | DW 9 ;AN000;down indicator row location | ||
| 1306 | DW 66 ;AN000;down indicator column locaiton | ||
| 1307 | DW 0 ;AN000;left indicator string length | ||
| 1308 | DW 0 ;AN000;left indicator string offset | ||
| 1309 | DW 0 ;AN000;left indicator string segment | ||
| 1310 | DW 0 ;AN000;left indicator row location | ||
| 1311 | DW 0 ;AN000;left indicator column location | ||
| 1312 | DW 0 ;AN000;right indicator string length | ||
| 1313 | DW 0 ;AN000;right indicator string offset | ||
| 1314 | DW 0 ;AN000;right indicator string segment | ||
| 1315 | DW 0 ;AN000;right indicator row location | ||
| 1316 | DW 0 ;AN000;right indicator column locaiton | ||
| 1317 | DW WR_CIS ;AN000;normal color array offset | ||
| 1318 | DW 0 ;AN000;normal color array segment | ||
| 1319 | DW 1 ;AN000;logical color index number | ||
| 1320 | DW 16 ;AN000;number color index table entries | ||
| 1321 | DW WR_CIS ;AN000;offset addr of color index table | ||
| 1322 | DW 0 ;AN000;segment addr of color index tabl | ||
| 1323 | DW WR_INDEX1 ;AN000;index array offset | ||
| 1324 | DW 0 ;AN000;index array segment | ||
| 1325 | DW WR_SELECT ;AN000;element selection array offset | ||
| 1326 | DW 0 ;AN000;element selection array segment | ||
| 1327 | DW SSC_PTSB ;AN000;option array option word | ||
| 1328 | DW SCB_LIST11 ;AN000;option array pointer offset | ||
| 1329 | DW 0 ;AN000;option array pointer segment | ||
| 1330 | DW SCB_LIST11_W ;AN000;option array string length | ||
| 1331 | DW 0 ;AN000;option array string segment | ||
| 1332 | DB 'A' ;AN000;option array string term char | ||
| 1333 | DW 0 ;AN000;keystroke | ||
| 1334 | DW 0 ;AN000;log vid buf offset override | ||
| 1335 | DW 0 ;AN000;log vid buf segment override | ||
| 1336 | DW 0 ;AN000;general purpose format hook opt | ||
| 1337 | DW 0 ;AN000;general purpose format hook opt | ||
| 1338 | DW 0 ;AN000;length of translation table | ||
| 1339 | DW 0 ;AN000;offset of translation table | ||
| 1340 | DW 0 ;AN000;segment of translation table | ||
| 1341 | DW 0 ;AN000;monocasing table offset | ||
| 1342 | DW 0 ;AN000;monocasing table segment | ||
| 1343 | DW 0 ;AN000;dbcs table length | ||
| 1344 | DW 0 ;AN000;dbcs table offset | ||
| 1345 | DW 0 ;AN000;dbcs table segment | ||
| 1346 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 1347 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 1348 | DB 236 DUP(0) ;AN024; | ||
| 1349 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1350 | ; | ||
| 1351 | ; PARALLEL PRINTER PORT | ||
| 1352 | ; | ||
| 1353 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1354 | WR_SCB12 DW SCB_WRAP ;AN000;option word one | ||
| 1355 | DW SCB_SKIP ;AN000;option word two | ||
| 1356 | DW SCB_NUMS ;AN000;option word three | ||
| 1357 | DW 0 ;AN068;SEH option word four | ||
| 1358 | DW SND_FREQ ;AN000;error beep frequency | ||
| 1359 | DW 9 ;AN000;upper left row | ||
| 1360 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 1361 | DW 0 ;AN000;relative upper left row | ||
| 1362 | DW 0 ;AN000;relative upper left column | ||
| 1363 | DW SCB_LIST12_W ;AN000;line width | ||
| 1364 | DW SCB_LIST12_N ;AN000;number of lines | ||
| 1365 | DW 1 ;AN000;number of element on top | ||
| 1366 | DW SCB_LIST12_N ;AN000;number of elements | ||
| 1367 | DW 1 ;AN000;current element | ||
| 1368 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 1369 | DW 0 ;AN000;display offset into opt strings | ||
| 1370 | DW 1 ;AN000;num list txt col offset in strg | ||
| 1371 | DB '.' ;AN000;numbered list separator | ||
| 1372 | DW 0 ;AN000;select keystroke string length | ||
| 1373 | DW 0 ;AN000;select keystroke string offset | ||
| 1374 | DW 0 ;AN000;select keystroke string segment | ||
| 1375 | DW 0 ;AN000;return/leave string length | ||
| 1376 | DW 0 ;AN000;return/leave string offset | ||
| 1377 | DW 0 ;AN000;return/leave string segment | ||
| 1378 | DW 0 ;AN000;return/erase string length | ||
| 1379 | DW 0 ;AN000;return/erase string offset | ||
| 1380 | DW 0 ;AN000;return/erase string segment | ||
| 1381 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 1382 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 1383 | DW 0 ;AN000;up arrow string segment | ||
| 1384 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 1385 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 1386 | DW 0 ;AN000;down arrow string segment | ||
| 1387 | DW 0 ;AN000;left arrow string length | ||
| 1388 | DW 0 ;AN000;left arrow string offset | ||
| 1389 | DW 0 ;AN000;left arrow string segment | ||
| 1390 | DW 0 ;AN000;right arrow string length | ||
| 1391 | DW 0 ;AN000;right arrow string offset | ||
| 1392 | DW 0 ;AN000;right arrow string segment | ||
| 1393 | DW 0 ;AN000;page-up string length | ||
| 1394 | DW 0 ;AN000;page-up string offset | ||
| 1395 | DW 0 ;AN000;page-up string segment | ||
| 1396 | DW 0 ;AN000;page-down string length | ||
| 1397 | DW 0 ;AN000;page-down string offset | ||
| 1398 | DW 0 ;AN000;page-down string segment | ||
| 1399 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 1400 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 1401 | DW 0 ;AN000;pointer indicator string segment | ||
| 1402 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 1403 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 1404 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 1405 | DW 0 ;AN000;active indicator string segment | ||
| 1406 | DW 1 ;AN000;active ind txt col off into stg | ||
| 1407 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 1408 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 1409 | DW 0 ;AN000;check mark text string segment | ||
| 1410 | DW 1 ;AN000;check mark offset into opt strg | ||
| 1411 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 1412 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 1413 | DW 0 ;AN000;up indicator string segment | ||
| 1414 | DW 2 ;AN000;up indicator row location | ||
| 1415 | DW 1 ;AN000;up indicator column location | ||
| 1416 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 1417 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 1418 | DW 0 ;AN000;down indicator string segment | ||
| 1419 | DW 2 ;AN000;down indicator row location | ||
| 1420 | DW 2 ;AN000;down indicator column locaiton | ||
| 1421 | DW 0 ;AN000;left indicator string length | ||
| 1422 | DW 0 ;AN000;left indicator string offset | ||
| 1423 | DW 0 ;AN000;left indicator string segment | ||
| 1424 | DW 0 ;AN000;left indicator row location | ||
| 1425 | DW 0 ;AN000;left indicator column location | ||
| 1426 | DW 0 ;AN000;right indicator string length | ||
| 1427 | DW 0 ;AN000;right indicator string offset | ||
| 1428 | DW 0 ;AN000;right indicator string segment | ||
| 1429 | DW 0 ;AN000;right indicator row location | ||
| 1430 | DW 0 ;AN000;right indicator column locaiton | ||
| 1431 | DW WR_CIS ;AN000;normal color array offset | ||
| 1432 | DW 0 ;AN000;normal color array segment | ||
| 1433 | DW 1 ;AN000;logical color index number | ||
| 1434 | DW 16 ;AN000;number color index table entries | ||
| 1435 | DW WR_CIS ;AN000;offset addr of color index table | ||
| 1436 | DW 0 ;AN000;segment addr of color index tabl | ||
| 1437 | DW WR_INDEX1 ;AN000;index array offset | ||
| 1438 | DW 0 ;AN000;index array segment | ||
| 1439 | DW WR_SELECT_NUM ;AN000;element selection array offset | ||
| 1440 | DW 0 ;AN000;element selection array segment | ||
| 1441 | DW SSC_PTSB ;AN000;option array option word | ||
| 1442 | DW SCB_LIST12 ;AN000;option array pointer offset | ||
| 1443 | DW 0 ;AN000;option array pointer segment | ||
| 1444 | DW SCB_LIST12_W ;AN000;option array string length | ||
| 1445 | DW 0 ;AN000;option array string segment | ||
| 1446 | DB 'A' ;AN000;option array string term char | ||
| 1447 | DW 0 ;AN000;keystroke | ||
| 1448 | DW 0 ;AN000;log vid buf offset override | ||
| 1449 | DW 0 ;AN000;log vid buf segment override | ||
| 1450 | DW 0 ;AN000;general purpose format hook opt | ||
| 1451 | DW 0 ;AN000;general purpose format hook opt | ||
| 1452 | DW 0 ;AN000;length of translation table | ||
| 1453 | DW 0 ;AN000;offset of translation table | ||
| 1454 | DW 0 ;AN000;segment of translation table | ||
| 1455 | DW 0 ;AN000;monocasing table offset | ||
| 1456 | DW 0 ;AN000;monocasing table segment | ||
| 1457 | DW 0 ;AN000;dbcs table length | ||
| 1458 | DW 0 ;AN000;dbcs table offset | ||
| 1459 | DW 0 ;AN000;dbcs table segment | ||
| 1460 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 1461 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 1462 | DB 236 DUP(0) ;AN024; | ||
| 1463 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1464 | ; | ||
| 1465 | ; serial port | ||
| 1466 | ; | ||
| 1467 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1468 | WR_SCB13 DW SCB_WRAP ;AN000;option word one | ||
| 1469 | DW SCB_SKIP ;AN000;option word two | ||
| 1470 | DW SCB_NUMS ;AN000;option word three | ||
| 1471 | DW 0 ;AN068;SEH option word four | ||
| 1472 | DW SND_FREQ ;AN000;error beep frequency | ||
| 1473 | DW 8 ;AN000;upper left row | ||
| 1474 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 1475 | DW 0 ;AN000;relative upper left row | ||
| 1476 | DW 0 ;AN000;relative upper left column | ||
| 1477 | DW SCB_LIST13_W ;AN000;line width | ||
| 1478 | DW SCB_LIST13_N ;AN000;number of lines | ||
| 1479 | DW 1 ;AN000;number of element on top | ||
| 1480 | DW SCB_LIST13_N ;AN000;number of elements | ||
| 1481 | DW 1 ;AN000;current element | ||
| 1482 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 1483 | DW 0 ;AN000;display offset into opt strings | ||
| 1484 | DW 1 ;AN000;num list txt col offset in strg | ||
| 1485 | DB '.' ;AN000;numbered list separator | ||
| 1486 | DW 0 ;AN000;select keystroke string length | ||
| 1487 | DW 0 ;AN000;select keystroke string offset | ||
| 1488 | DW 0 ;AN000;select keystroke string segment | ||
| 1489 | DW 0 ;AN000;return/leave string length | ||
| 1490 | DW 0 ;AN000;return/leave string offset | ||
| 1491 | DW 0 ;AN000;return/leave string segment | ||
| 1492 | DW 0 ;AN000;return/erase string length | ||
| 1493 | DW 0 ;AN000;return/erase string offset | ||
| 1494 | DW 0 ;AN000;return/erase string segment | ||
| 1495 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 1496 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 1497 | DW 0 ;AN000;up arrow string segment | ||
| 1498 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 1499 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 1500 | DW 0 ;AN000;down arrow string segment | ||
| 1501 | DW 0 ;AN000;left arrow string length | ||
| 1502 | DW 0 ;AN000;left arrow string offset | ||
| 1503 | DW 0 ;AN000;left arrow string segment | ||
| 1504 | DW 0 ;AN000;right arrow string length | ||
| 1505 | DW 0 ;AN000;right arrow string offset | ||
| 1506 | DW 0 ;AN000;right arrow string segment | ||
| 1507 | DW 0 ;AN000;page-up string length | ||
| 1508 | DW 0 ;AN000;page-up string offset | ||
| 1509 | DW 0 ;AN000;page-up string segment | ||
| 1510 | DW 0 ;AN000;page-down string length | ||
| 1511 | DW 0 ;AN000;page-down string offset | ||
| 1512 | DW 0 ;AN000;page-down string segment | ||
| 1513 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 1514 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 1515 | DW 0 ;AN000;pointer indicator string segment | ||
| 1516 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 1517 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 1518 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 1519 | DW 0 ;AN000;active indicator string segment | ||
| 1520 | DW 1 ;AN000;active ind txt col off into stg | ||
| 1521 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 1522 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 1523 | DW 0 ;AN000;check mark text string segment | ||
| 1524 | DW 1 ;AN000;check mark offset into opt strg | ||
| 1525 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 1526 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 1527 | DW 0 ;AN000;up indicator string segment | ||
| 1528 | DW 2 ;AN000;up indicator row location | ||
| 1529 | DW 1 ;AN000;up indicator column location | ||
| 1530 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 1531 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 1532 | DW 0 ;AN000;down indicator string segment | ||
| 1533 | DW 2 ;AN000;down indicator row location | ||
| 1534 | DW 2 ;AN000;down indicator column locaiton | ||
| 1535 | DW 0 ;AN000;left indicator string length | ||
| 1536 | DW 0 ;AN000;left indicator string offset | ||
| 1537 | DW 0 ;AN000;left indicator string segment | ||
| 1538 | DW 0 ;AN000;left indicator row location | ||
| 1539 | DW 0 ;AN000;left indicator column location | ||
| 1540 | DW 0 ;AN000;right indicator string length | ||
| 1541 | DW 0 ;AN000;right indicator string offset | ||
| 1542 | DW 0 ;AN000;right indicator string segment | ||
| 1543 | DW 0 ;AN000;right indicator row location | ||
| 1544 | DW 0 ;AN000;right indicator column locaiton | ||
| 1545 | DW WR_CIS ;AN000;normal color array offset | ||
| 1546 | DW 0 ;AN000;normal color array segment | ||
| 1547 | DW 1 ;AN000;logical color index number | ||
| 1548 | DW 16 ;AN000;number color index table entries | ||
| 1549 | DW WR_CIS ;AN000;offset addr of color index table | ||
| 1550 | DW 0 ;AN000;segment addr of color index tabl | ||
| 1551 | DW WR_INDEX1 ;AN000;index array offset | ||
| 1552 | DW 0 ;AN000;index array segment | ||
| 1553 | DW WR_SELECT ;AN000;element selection array offset | ||
| 1554 | DW 0 ;AN000;element selection array segment | ||
| 1555 | DW SSC_PTSB ;AN000;option array option word | ||
| 1556 | DW SCB_LIST13 ;AN000;option array pointer offset | ||
| 1557 | DW 0 ;AN000;option array pointer segment | ||
| 1558 | DW SCB_LIST13_W ;AN000;option array string length | ||
| 1559 | DW 0 ;AN000;option array string segment | ||
| 1560 | DB 'A' ;AN000;option array string term char | ||
| 1561 | DW 0 ;AN000;keystroke | ||
| 1562 | DW 0 ;AN000;log vid buf offset override | ||
| 1563 | DW 0 ;AN000;log vid buf segment override | ||
| 1564 | DW 0 ;AN000;general purpose format hook opt | ||
| 1565 | DW 0 ;AN000;general purpose format hook opt | ||
| 1566 | DW 0 ;AN000;length of translation table | ||
| 1567 | DW 0 ;AN000;offset of translation table | ||
| 1568 | DW 0 ;AN000;segment of translation table | ||
| 1569 | DW 0 ;AN000;monocasing table offset | ||
| 1570 | DW 0 ;AN000;monocasing table segment | ||
| 1571 | DW 0 ;AN000;dbcs table length | ||
| 1572 | DW 0 ;AN000;dbcs table offset | ||
| 1573 | DW 0 ;AN000;dbcs table segment | ||
| 1574 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 1575 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 1576 | DB 236 DUP(0) ;AN024; | ||
| 1577 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1578 | ; | ||
| 1579 | ; parallel redirection | ||
| 1580 | ; | ||
| 1581 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1582 | WR_SCB14 DW SCB_WRAP ;AN000;option word one | ||
| 1583 | DW SCB_SKIP ;AN000;option word two | ||
| 1584 | DW SCB_NUMS ;AN000;option word three | ||
| 1585 | DW 0 ;AN068;SEH option word four | ||
| 1586 | DW SND_FREQ ;AN000;error beep frequency | ||
| 1587 | DW 17 ;AN000;upper left row | ||
| 1588 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 1589 | DW 0 ;AN000;relative upper left row | ||
| 1590 | DW 0 ;AN000;relative upper left column | ||
| 1591 | DW SCB_LIST14_W ;AN000;line width | ||
| 1592 | DW SCB_LIST14_N ;AN000;number of lines | ||
| 1593 | DW 1 ;AN000;number of element on top | ||
| 1594 | DW SCB_LIST14_N ;AN000;number of elements | ||
| 1595 | DW 1 ;AN000;current element | ||
| 1596 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 1597 | DW 0 ;AN000;display offset into opt strings | ||
| 1598 | DW 1 ;AN000;num list txt col offset in strg | ||
| 1599 | DB '.' ;AN000;numbered list separator | ||
| 1600 | DW 0 ;AN000;select keystroke string length | ||
| 1601 | DW 0 ;AN000;select keystroke string offset | ||
| 1602 | DW 0 ;AN000;select keystroke string segment | ||
| 1603 | DW 0 ;AN000;return/leave string length | ||
| 1604 | DW 0 ;AN000;return/leave string offset | ||
| 1605 | DW 0 ;AN000;return/leave string segment | ||
| 1606 | DW 0 ;AN000;return/erase string length | ||
| 1607 | DW 0 ;AN000;return/erase string offset | ||
| 1608 | DW 0 ;AN000;return/erase string segment | ||
| 1609 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 1610 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 1611 | DW 0 ;AN000;up arrow string segment | ||
| 1612 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 1613 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 1614 | DW 0 ;AN000;down arrow string segment | ||
| 1615 | DW 0 ;AN000;left arrow string length | ||
| 1616 | DW 0 ;AN000;left arrow string offset | ||
| 1617 | DW 0 ;AN000;left arrow string segment | ||
| 1618 | DW 0 ;AN000;right arrow string length | ||
| 1619 | DW 0 ;AN000;right arrow string offset | ||
| 1620 | DW 0 ;AN000;right arrow string segment | ||
| 1621 | DW WR_PUKEYSLEN ;AN000;page-up string length | ||
| 1622 | DW WR_PUKEYS ;AN000;page-up string offset | ||
| 1623 | DW 0 ;AN000;page-up string segment | ||
| 1624 | DW WR_PDKEYSLEN ;AN000;page-down string length | ||
| 1625 | DW WR_PDKEYS ;AN000;page-down string offset | ||
| 1626 | DW 0 ;AN000;page-down string segment | ||
| 1627 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 1628 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 1629 | DW 0 ;AN000;pointer indicator string segment | ||
| 1630 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 1631 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 1632 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 1633 | DW 0 ;AN000;active indicator string segment | ||
| 1634 | DW 1 ;AN000;active ind txt col off into stg | ||
| 1635 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 1636 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 1637 | DW 0 ;AN000;check mark text string segment | ||
| 1638 | DW 1 ;AN000;check mark offset into opt strg | ||
| 1639 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 1640 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 1641 | DW 0 ;AN000;up indicator string segment | ||
| 1642 | DW 2 ;AN000;up indicator row location | ||
| 1643 | DW 1 ;AN000;up indicator column location | ||
| 1644 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 1645 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 1646 | DW 0 ;AN000;down indicator string segment | ||
| 1647 | DW 2 ;AN000;down indicator row location | ||
| 1648 | DW 2 ;AN000;down indicator column locaiton | ||
| 1649 | DW 0 ;AN000;left indicator string length | ||
| 1650 | DW 0 ;AN000;left indicator string offset | ||
| 1651 | DW 0 ;AN000;left indicator string segment | ||
| 1652 | DW 0 ;AN000;left indicator row location | ||
| 1653 | DW 0 ;AN000;left indicator column location | ||
| 1654 | DW 0 ;AN000;right indicator string length | ||
| 1655 | DW 0 ;AN000;right indicator string offset | ||
| 1656 | DW 0 ;AN000;right indicator string segment | ||
| 1657 | DW 0 ;AN000;right indicator row location | ||
| 1658 | DW 0 ;AN000;right indicator column locaiton | ||
| 1659 | DW 0 ;AN000;normal color array offset | ||
| 1660 | DW 0 ;AN000;normal color array segment | ||
| 1661 | DW 1 ;AN000;logical color index number | ||
| 1662 | DW 16 ;AN000;number color index table entries | ||
| 1663 | DW WR_CIS ;AN000;offset addr of color index table | ||
| 1664 | DW 0 ;AN000;segment addr of color index tabl | ||
| 1665 | DW WR_INDEX1 ;AN000;index array offset | ||
| 1666 | DW 0 ;AN000;index array segment | ||
| 1667 | DW WR_SELECT ;AN000;element selection array offset | ||
| 1668 | DW 0 ;AN000;element selection array segment | ||
| 1669 | DW SSC_PTSB ;AN000;option array option word | ||
| 1670 | DW SCB_LIST14 ;AN000;option array pointer offset | ||
| 1671 | DW 0 ;AN000;option array pointer segment | ||
| 1672 | DW SCB_LIST14_W ;AN000;option array string length | ||
| 1673 | DW 0 ;AN000;option array string segment | ||
| 1674 | DB 'A' ;AN000;option array string term char | ||
| 1675 | DW 0 ;AN000;keystroke | ||
| 1676 | DW 0 ;AN000;log vid buf offset override | ||
| 1677 | DW 0 ;AN000;log vid buf segment override | ||
| 1678 | DW 0 ;AN000;general purpose format hook opt | ||
| 1679 | DW 0 ;AN000;general purpose format hook opt | ||
| 1680 | DW 0 ;AN000;length of translation table | ||
| 1681 | DW 0 ;AN000;offset of translation table | ||
| 1682 | DW 0 ;AN000;segment of translation table | ||
| 1683 | DW 0 ;AN000;monocasing table offset | ||
| 1684 | DW 0 ;AN000;monocasing table segment | ||
| 1685 | DW 0 ;AN000;dbcs table length | ||
| 1686 | DW 0 ;AN000;dbcs table offset | ||
| 1687 | DW 0 ;AN000;dbcs table segment | ||
| 1688 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 1689 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 1690 | DB 236 DUP(0) ;AN024; | ||
| 1691 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1692 | ; | ||
| 1693 | ; review selections | ||
| 1694 | ; | ||
| 1695 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1696 | WR_SCB15 DW SCB_WRAP ;AN000;option word one | ||
| 1697 | DW SCB_SKIP ;AN000;option word two | ||
| 1698 | DW SCB_NUMS ;AN000;option word three | ||
| 1699 | DW 0 ;AN068;SEH option word four | ||
| 1700 | DW SND_FREQ ;AN000;error beep frequency | ||
| 1701 | DW 11 ;AC079;SEH ;AN000;upper left row | ||
| 1702 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 1703 | DW 0 ;AN000;relative upper left row | ||
| 1704 | DW 0 ;AN000;relative upper left column | ||
| 1705 | DW SCB_LIST15_W ;AN000;line width | ||
| 1706 | DW SCB_LIST15_N ;AN000;number of lines | ||
| 1707 | DW 1 ;AN000;number of element on top | ||
| 1708 | DW SCB_LIST15_N ;AN000;number of elements | ||
| 1709 | DW 1 ;AN000;current element | ||
| 1710 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 1711 | DW 0 ;AN000;display offset into opt strings | ||
| 1712 | DW 1 ;AN000;num list txt col offset in strg | ||
| 1713 | DB '.' ;AN000;numbered list separator | ||
| 1714 | DW 0 ;AN000;select keystroke string length | ||
| 1715 | DW 0 ;AN000;select keystroke string offset | ||
| 1716 | DW 0 ;AN000;select keystroke string segment | ||
| 1717 | DW 0 ;AN000;return/leave string length | ||
| 1718 | DW 0 ;AN000;return/leave string offset | ||
| 1719 | DW 0 ;AN000;return/leave string segment | ||
| 1720 | DW 0 ;AN000;return/erase string length | ||
| 1721 | DW 0 ;AN000;return/erase string offset | ||
| 1722 | DW 0 ;AN000;return/erase string segment | ||
| 1723 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 1724 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 1725 | DW 0 ;AN000;up arrow string segment | ||
| 1726 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 1727 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 1728 | DW 0 ;AN000;down arrow string segment | ||
| 1729 | DW 0 ;AN000;left arrow string length | ||
| 1730 | DW 0 ;AN000;left arrow string offset | ||
| 1731 | DW 0 ;AN000;left arrow string segment | ||
| 1732 | DW 0 ;AN000;right arrow string length | ||
| 1733 | DW 0 ;AN000;right arrow string offset | ||
| 1734 | DW 0 ;AN000;right arrow string segment | ||
| 1735 | DW 0 ;AN000;page-up string length | ||
| 1736 | DW 0 ;AN000;page-up string offset | ||
| 1737 | DW 0 ;AN000;page-up string segment | ||
| 1738 | DW 0 ;AN000;page-down string length | ||
| 1739 | DW 0 ;AN000;page-down string offset | ||
| 1740 | DW 0 ;AN000;page-down string segment | ||
| 1741 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 1742 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 1743 | DW 0 ;AN000;pointer indicator string segment | ||
| 1744 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 1745 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 1746 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 1747 | DW 0 ;AN000;active indicator string segment | ||
| 1748 | DW 1 ;AN000;active ind txt col off into stg | ||
| 1749 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 1750 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 1751 | DW 0 ;AN000;check mark text string segment | ||
| 1752 | DW 1 ;AN000;check mark offset into opt strg | ||
| 1753 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 1754 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 1755 | DW 0 ;AN000;up indicator string segment | ||
| 1756 | DW 2 ;AN000;up indicator row location | ||
| 1757 | DW 1 ;AN000;up indicator column location | ||
| 1758 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 1759 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 1760 | DW 0 ;AN000;down indicator string segment | ||
| 1761 | DW 2 ;AN000;down indicator row location | ||
| 1762 | DW 2 ;AN000;down indicator column locaiton | ||
| 1763 | DW 0 ;AN000;left indicator string length | ||
| 1764 | DW 0 ;AN000;left indicator string offset | ||
| 1765 | DW 0 ;AN000;left indicator string segment | ||
| 1766 | DW 0 ;AN000;left indicator row location | ||
| 1767 | DW 0 ;AN000;left indicator column location | ||
| 1768 | DW 0 ;AN000;right indicator string length | ||
| 1769 | DW 0 ;AN000;right indicator string offset | ||
| 1770 | DW 0 ;AN000;right indicator string segment | ||
| 1771 | DW 0 ;AN000;right indicator row location | ||
| 1772 | DW 0 ;AN000;right indicator column locaiton | ||
| 1773 | DW WR_CIS ;AN000;normal color array offset | ||
| 1774 | DW 0 ;AN000;normal color array segment | ||
| 1775 | DW 1 ;AN000;logical color index number | ||
| 1776 | DW 16 ;AN000;number color index table entries | ||
| 1777 | DW WR_CIS ;AN000;offset addr of color index table | ||
| 1778 | DW 0 ;AN000;segment addr of color index tabl | ||
| 1779 | DW WR_INDEX1 ;AN000;index array offset | ||
| 1780 | DW 0 ;AN000;index array segment | ||
| 1781 | DW WR_SELECT_NUM ;AN000;element selection array offset | ||
| 1782 | DW 0 ;AN000;element selection array segment | ||
| 1783 | DW SSC_PTSB ;AN000;option array option word | ||
| 1784 | DW SCB_LIST15 ;AN000;option array pointer offset | ||
| 1785 | DW 0 ;AN000;option array pointer segment | ||
| 1786 | DW SCB_LIST15_W ;AN000;option array string length | ||
| 1787 | DW 0 ;AN000;option array string segment | ||
| 1788 | DB 'A' ;AN000;option array string term char | ||
| 1789 | DW 0 ;AN000;keystroke | ||
| 1790 | DW 0 ;AN000;log vid buf offset override | ||
| 1791 | DW 0 ;AN000;log vid buf segment override | ||
| 1792 | DW 0 ;AN000;general purpose format hook opt | ||
| 1793 | DW 0 ;AN000;general purpose format hook opt | ||
| 1794 | DW 0 ;AN000;length of translation table | ||
| 1795 | DW 0 ;AN000;offset of translation table | ||
| 1796 | DW 0 ;AN000;segment of translation table | ||
| 1797 | DW 0 ;AN000;monocasing table offset | ||
| 1798 | DW 0 ;AN000;monocasing table segment | ||
| 1799 | DW 0 ;AN000;dbcs table length | ||
| 1800 | DW 0 ;AN000;dbcs table offset | ||
| 1801 | DW 0 ;AN000;dbcs table segment | ||
| 1802 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 1803 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 1804 | DB 236 DUP(0) ;AN024; | ||
| 1805 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1806 | ; | ||
| 1807 | ; review selections #2 | ||
| 1808 | ; | ||
| 1809 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1810 | WR_SCB16 DW SCB_WRAP+SCB_DCHECK+SCB_DACTIVE;AN000;option word one | ||
| 1811 | DW SCB_LCOX ;AN000;option word two | ||
| 1812 | DW SCB_SELACT ;AN000;option word three | ||
| 1813 | DW 0 ;AN068;SEH option word four | ||
| 1814 | DW SND_FREQ ;AN000;error beep frequency | ||
| 1815 | DW 12 ;AN000;upper left row | ||
| 1816 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 1817 | DW 0 ;AN000;relative upper left row | ||
| 1818 | DW 0 ;AN000;relative upper left column | ||
| 1819 | DW 42 ;;AN000;;;SCB_LIST16_W ;line width | ||
| 1820 | DW SCB_LIST16_N ;AN000;number of lines | ||
| 1821 | DW 1 ;AN000;number of element on top | ||
| 1822 | DW SCB_LIST16_N ;AN000;number of elements | ||
| 1823 | DW 1 ;AN000;current element | ||
| 1824 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 1825 | DW 0 ;AN000;display offset into opt strings | ||
| 1826 | DW 1 ;AN000;num list txt col offset in strg | ||
| 1827 | DB '.' ;AN000;numbered list separator | ||
| 1828 | DW 0 ;AN000;select keystroke string length | ||
| 1829 | DW 0 ;AN000;select keystroke string offset | ||
| 1830 | DW 0 ;AN000;select keystroke string segment | ||
| 1831 | DW 0 ;AN000;return/leave string length | ||
| 1832 | DW 0 ;AN000;return/leave string offset | ||
| 1833 | DW 0 ;AN000;return/leave string segment | ||
| 1834 | DW 0 ;AN000;return/erase string length | ||
| 1835 | DW 0 ;AN000;return/erase string offset | ||
| 1836 | DW 0 ;AN000;return/erase string segment | ||
| 1837 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 1838 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 1839 | DW 0 ;AN000;up arrow string segment | ||
| 1840 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 1841 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 1842 | DW 0 ;AN000;down arrow string segment | ||
| 1843 | DW 0 ;AN000;left arrow string length | ||
| 1844 | DW 0 ;AN000;left arrow string offset | ||
| 1845 | DW 0 ;AN000;left arrow string segment | ||
| 1846 | DW 0 ;AN000;right arrow string length | ||
| 1847 | DW 0 ;AN000;right arrow string offset | ||
| 1848 | DW 0 ;AN000;right arrow string segment | ||
| 1849 | DW 0 ;AN000;page-up string length | ||
| 1850 | DW 0 ;AN000;page-up string offset | ||
| 1851 | DW 0 ;AN000;page-up string segment | ||
| 1852 | DW 0 ;AN000;page-down string length | ||
| 1853 | DW 0 ;AN000;page-down string offset | ||
| 1854 | DW 0 ;AN000;page-down string segment | ||
| 1855 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 1856 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 1857 | DW 0 ;AN000;pointer indicator string segment | ||
| 1858 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 1859 | DW WR_NOINDLEN ;AN000;active indicator strg length | ||
| 1860 | DW WR_NOIND ;AN000;active indicator string offset | ||
| 1861 | DW 0 ;AN000;active indicator string segment | ||
| 1862 | DW 50 ;AN000;active ind txt col off into stg | ||
| 1863 | DW WR_YESINDLEN ;AN000;check mark text string length | ||
| 1864 | DW WR_YESIND ;AN000;check mark text string offset | ||
| 1865 | DW 0 ;AN000;check mark text string segment | ||
| 1866 | DW 50 ;AN000;check mark offset into opt strg | ||
| 1867 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 1868 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 1869 | DW 0 ;AN000;up indicator string segment | ||
| 1870 | DW 2 ;AN000;up indicator row location | ||
| 1871 | DW 1 ;AN000;up indicator column location | ||
| 1872 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 1873 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 1874 | DW 0 ;AN000;down indicator string segment | ||
| 1875 | DW 2 ;AN000;down indicator row location | ||
| 1876 | DW 2 ;AN000;down indicator column locaiton | ||
| 1877 | DW 0 ;AN000;left indicator string length | ||
| 1878 | DW 0 ;AN000;left indicator string offset | ||
| 1879 | DW 0 ;AN000;left indicator string segment | ||
| 1880 | DW 0 ;AN000;left indicator row location | ||
| 1881 | DW 0 ;AN000;left indicator column location | ||
| 1882 | DW 0 ;AN000;right indicator string length | ||
| 1883 | DW 0 ;AN000;right indicator string offset | ||
| 1884 | DW 0 ;AN000;right indicator string segment | ||
| 1885 | DW 0 ;AN000;right indicator row location | ||
| 1886 | DW 0 ;AN000;right indicator column locaiton | ||
| 1887 | DW WR_CIS ;AN000;normal color array offset | ||
| 1888 | DW 0 ;AN000;normal color array segment | ||
| 1889 | DW 1 ;AN000;logical color index number | ||
| 1890 | DW 16 ;AN000;number color index table entries | ||
| 1891 | DW WR_CIS ;AN000;offset addr of color index table | ||
| 1892 | DW 0 ;AN000;segment addr of color index tabl | ||
| 1893 | DW WR_INDEX1 ;AN000;index array offset | ||
| 1894 | DW 0 ;AN000;index array segment | ||
| 1895 | DW WR_SELECT_MOD ;AN000;element selection array offset | ||
| 1896 | DW 0 ;AN000;element selection array segment | ||
| 1897 | DW SSC_PTSB ;AN000;option array option word | ||
| 1898 | DW SCB_LIST16 ;AN000;option array pointer offset | ||
| 1899 | DW 0 ;AN000;option array pointer segment | ||
| 1900 | DW SCB_LIST16_W ;AN000;option array string length | ||
| 1901 | DW 0 ;AN000;option array string segment | ||
| 1902 | DB 'A' ;AN000;option array string term char | ||
| 1903 | DW 0 ;AN000;keystroke | ||
| 1904 | DW 0 ;AN000;log vid buf offset override | ||
| 1905 | DW 0 ;AN000;log vid buf segment override | ||
| 1906 | DW 0 ;AN000;general purpose format hook opt | ||
| 1907 | DW 0 ;AN000;general purpose format hook opt | ||
| 1908 | DW 0 ;AN000;length of translation table | ||
| 1909 | DW 0 ;AN000;offset of translation table | ||
| 1910 | DW 0 ;AN000;segment of translation table | ||
| 1911 | DW 0 ;AN000;monocasing table offset | ||
| 1912 | DW 0 ;AN000;monocasing table segment | ||
| 1913 | DW 0 ;AN000;dbcs table length | ||
| 1914 | DW 0 ;AN000;dbcs table offset | ||
| 1915 | DW 0 ;AN000;dbcs table segment | ||
| 1916 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 1917 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 1918 | DB 236 DUP(0) ;AN024; | ||
| 1919 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1920 | ; | ||
| 1921 | ; review selections 3 | ||
| 1922 | ; | ||
| 1923 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1924 | WR_SCB17 DW SCB_WRAP+SCB_DCHECK+SCB_DACTIVE;AN000;option word one | ||
| 1925 | DW SCB_LCOX ;AN000;option word two | ||
| 1926 | DW SCB_SELACT ;AN000;option word three | ||
| 1927 | DW 0 ;AN068;SEH option word four | ||
| 1928 | DW SND_FREQ ;AN000;error beep frequency | ||
| 1929 | DW 12 ;AN000;upper left row | ||
| 1930 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 1931 | DW 0 ;AN000;relative upper left row | ||
| 1932 | DW 0 ;AN000;relative upper left column | ||
| 1933 | DW SCB_LIST17_W ;AN000;line width | ||
| 1934 | DW SCB_LIST17_N ;AN000;number of lines | ||
| 1935 | DW 1 ;AN000;number of element on top | ||
| 1936 | DW SCB_LIST17_N ;AN000;number of elements | ||
| 1937 | DW 1 ;AN000;current element | ||
| 1938 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 1939 | DW 0 ;AN000;display offset into opt strings | ||
| 1940 | DW 1 ;AN000;num list txt col offset in strg | ||
| 1941 | DB '.' ;AN000;numbered list separator | ||
| 1942 | DW 0 ;AN000;select keystroke string length | ||
| 1943 | DW 0 ;AN000;select keystroke string offset | ||
| 1944 | DW 0 ;AN000;select keystroke string segment | ||
| 1945 | DW 0 ;AN000;return/leave string length | ||
| 1946 | DW 0 ;AN000;return/leave string offset | ||
| 1947 | DW 0 ;AN000;return/leave string segment | ||
| 1948 | DW 0 ;AN000;return/erase string length | ||
| 1949 | DW 0 ;AN000;return/erase string offset | ||
| 1950 | DW 0 ;AN000;return/erase string segment | ||
| 1951 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 1952 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 1953 | DW 0 ;AN000;up arrow string segment | ||
| 1954 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 1955 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 1956 | DW 0 ;AN000;down arrow string segment | ||
| 1957 | DW 0 ;AN000;left arrow string length | ||
| 1958 | DW 0 ;AN000;left arrow string offset | ||
| 1959 | DW 0 ;AN000;left arrow string segment | ||
| 1960 | DW 0 ;AN000;right arrow string length | ||
| 1961 | DW 0 ;AN000;right arrow string offset | ||
| 1962 | DW 0 ;AN000;right arrow string segment | ||
| 1963 | DW 0 ;AN000;page-up string length | ||
| 1964 | DW 0 ;AN000;page-up string offset | ||
| 1965 | DW 0 ;AN000;page-up string segment | ||
| 1966 | DW 0 ;AN000;page-down string length | ||
| 1967 | DW 0 ;AN000;page-down string offset | ||
| 1968 | DW 0 ;AN000;page-down string segment | ||
| 1969 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 1970 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 1971 | DW 0 ;AN000;pointer indicator string segment | ||
| 1972 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 1973 | DW WR_NOINDLEN ;AN000;active indicator strg length | ||
| 1974 | DW WR_NOIND ;AN000;active indicator string offset | ||
| 1975 | DW 0 ;AN000;active indicator string segment | ||
| 1976 | DW 50 ;AN000;active ind txt col off into stg | ||
| 1977 | DW WR_YESINDLEN ;AN000;check mark text string length | ||
| 1978 | DW WR_YESIND ;AN000;check mark text string offset | ||
| 1979 | DW 0 ;AN000;check mark text string segment | ||
| 1980 | DW 50 ;AN000;check mark offset into opt strg | ||
| 1981 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 1982 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 1983 | DW 0 ;AN000;up indicator string segment | ||
| 1984 | DW 2 ;AN000;up indicator row location | ||
| 1985 | DW 1 ;AN000;up indicator column location | ||
| 1986 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 1987 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 1988 | DW 0 ;AN000;down indicator string segment | ||
| 1989 | DW 2 ;AN000;down indicator row location | ||
| 1990 | DW 2 ;AN000;down indicator column locaiton | ||
| 1991 | DW 0 ;AN000;left indicator string length | ||
| 1992 | DW 0 ;AN000;left indicator string offset | ||
| 1993 | DW 0 ;AN000;left indicator string segment | ||
| 1994 | DW 0 ;AN000;left indicator row location | ||
| 1995 | DW 0 ;AN000;left indicator column location | ||
| 1996 | DW 0 ;AN000;right indicator string length | ||
| 1997 | DW 0 ;AN000;right indicator string offset | ||
| 1998 | DW 0 ;AN000;right indicator string segment | ||
| 1999 | DW 0 ;AN000;right indicator row location | ||
| 2000 | DW 0 ;AN000;right indicator column locaiton | ||
| 2001 | DW WR_CIS ;AN000;normal color array offset | ||
| 2002 | DW 0 ;AN000;normal color array segment | ||
| 2003 | DW 1 ;AN000;logical color index number | ||
| 2004 | DW 16 ;AN000;number color index table entries | ||
| 2005 | DW WR_CIS ;AN000;offset addr of color index table | ||
| 2006 | DW 0 ;AN000;segment addr of color index tabl | ||
| 2007 | DW WR_INDEX1 ;AN000;index array offset | ||
| 2008 | DW 0 ;AN000;index array segment | ||
| 2009 | DW WR_SELECT_MOD ;AN000;element selection array offset | ||
| 2010 | DW 0 ;AN000;element selection array segment | ||
| 2011 | DW SSC_PTSB ;AN000;option array option word | ||
| 2012 | DW SCB_LIST17 ;AN000;option array pointer offset | ||
| 2013 | DW 0 ;AN000;option array pointer segment | ||
| 2014 | DW SCB_LIST17_W ;AN000;option array string length | ||
| 2015 | DW 0 ;AN000;option array string segment | ||
| 2016 | DB 'A' ;AN000;option array string term char | ||
| 2017 | DW 0 ;AN000;keystroke | ||
| 2018 | DW 0 ;AN000;log vid buf offset override | ||
| 2019 | DW 0 ;AN000;log vid buf segment override | ||
| 2020 | DW 0 ;AN000;general purpose format hook opt | ||
| 2021 | DW 0 ;AN000;general purpose format hook opt | ||
| 2022 | DW 0 ;AN000;length of translation table | ||
| 2023 | DW 0 ;AN000;offset of translation table | ||
| 2024 | DW 0 ;AN000;segment of translation table | ||
| 2025 | DW 0 ;AN000;monocasing table offset | ||
| 2026 | DW 0 ;AN000;monocasing table segment | ||
| 2027 | DW 0 ;AN000;dbcs table length | ||
| 2028 | DW 0 ;AN000;dbcs table offset | ||
| 2029 | DW 0 ;AN000;dbcs table segment | ||
| 2030 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 2031 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 2032 | DB 236 DUP(0) ;AN024; | ||
| 2033 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2034 | ; | ||
| 2035 | ; paritition fixed disk | ||
| 2036 | ; | ||
| 2037 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2038 | WR_SCB18 DW SCB_WRAP ;AN000;option word one | ||
| 2039 | DW SCB_SKIP ;AN000;option word two | ||
| 2040 | DW SCB_NUMS ;AN000;option word three | ||
| 2041 | DW 0 ;AN068;SEH option word four | ||
| 2042 | DW SND_FREQ ;AN000;error beep frequency | ||
| 2043 | DW 15 ;AN000;upper left row | ||
| 2044 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 2045 | DW 0 ;AN000;relative upper left row | ||
| 2046 | DW 0 ;AN000;relative upper left column | ||
| 2047 | DW SCB_LIST18_W ;AN000;line width | ||
| 2048 | DW SCB_LIST18_N ;AN000;number of lines | ||
| 2049 | DW 1 ;AN000;number of element on top | ||
| 2050 | DW SCB_LIST18_N ;AN000;number of elements | ||
| 2051 | DW 1 ;AN000;current element | ||
| 2052 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 2053 | DW 0 ;AN000;display offset into opt strings | ||
| 2054 | DW 1 ;AN000;num list txt col offset in strg | ||
| 2055 | DB '.' ;AN000;numbered list separator | ||
| 2056 | DW 0 ;AN000;select keystroke string length | ||
| 2057 | DW 0 ;AN000;select keystroke string offset | ||
| 2058 | DW 0 ;AN000;select keystroke string segment | ||
| 2059 | DW 0 ;AN000;return/leave string length | ||
| 2060 | DW 0 ;AN000;return/leave string offset | ||
| 2061 | DW 0 ;AN000;return/leave string segment | ||
| 2062 | DW 0 ;AN000;return/erase string length | ||
| 2063 | DW 0 ;AN000;return/erase string offset | ||
| 2064 | DW 0 ;AN000;return/erase string segment | ||
| 2065 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 2066 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 2067 | DW 0 ;AN000;up arrow string segment | ||
| 2068 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 2069 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 2070 | DW 0 ;AN000;down arrow string segment | ||
| 2071 | DW 0 ;AN000;left arrow string length | ||
| 2072 | DW 0 ;AN000;left arrow string offset | ||
| 2073 | DW 0 ;AN000;left arrow string segment | ||
| 2074 | DW 0 ;AN000;right arrow string length | ||
| 2075 | DW 0 ;AN000;right arrow string offset | ||
| 2076 | DW 0 ;AN000;right arrow string segment | ||
| 2077 | DW 0 ;AN000;page-up string length | ||
| 2078 | DW 0 ;AN000;page-up string offset | ||
| 2079 | DW 0 ;AN000;page-up string segment | ||
| 2080 | DW 0 ;AN000;page-down string length | ||
| 2081 | DW 0 ;AN000;page-down string offset | ||
| 2082 | DW 0 ;AN000;page-down string segment | ||
| 2083 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 2084 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 2085 | DW 0 ;AN000;pointer indicator string segment | ||
| 2086 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 2087 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 2088 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 2089 | DW 0 ;AN000;active indicator string segment | ||
| 2090 | DW 1 ;AN000;active ind txt col off into stg | ||
| 2091 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 2092 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 2093 | DW 0 ;AN000;check mark text string segment | ||
| 2094 | DW 1 ;AN000;check mark offset into opt strg | ||
| 2095 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 2096 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 2097 | DW 0 ;AN000;up indicator string segment | ||
| 2098 | DW 2 ;AN000;up indicator row location | ||
| 2099 | DW 1 ;AN000;up indicator column location | ||
| 2100 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 2101 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 2102 | DW 0 ;AN000;down indicator string segment | ||
| 2103 | DW 2 ;AN000;down indicator row location | ||
| 2104 | DW 2 ;AN000;down indicator column locaiton | ||
| 2105 | DW 0 ;AN000;left indicator string length | ||
| 2106 | DW 0 ;AN000;left indicator string offset | ||
| 2107 | DW 0 ;AN000;left indicator string segment | ||
| 2108 | DW 0 ;AN000;left indicator row location | ||
| 2109 | DW 0 ;AN000;left indicator column location | ||
| 2110 | DW 0 ;AN000;right indicator string length | ||
| 2111 | DW 0 ;AN000;right indicator string offset | ||
| 2112 | DW 0 ;AN000;right indicator string segment | ||
| 2113 | DW 0 ;AN000;right indicator row location | ||
| 2114 | DW 0 ;AN000;right indicator column locaiton | ||
| 2115 | DW WR_CIS ;AN000;normal color array offset | ||
| 2116 | DW 0 ;AN000;normal color array segment | ||
| 2117 | DW 1 ;AN000;logical color index number | ||
| 2118 | DW 16 ;AN000;number color index table entries | ||
| 2119 | DW WR_CIS ;AN000;offset addr of color index table | ||
| 2120 | DW 0 ;AN000;segment addr of color index tabl | ||
| 2121 | DW WR_INDEX1 ;AN000;index array offset | ||
| 2122 | DW 0 ;AN000;index array segment | ||
| 2123 | DW WR_SELECT_NUM ;AN000;element selection array offset | ||
| 2124 | DW 0 ;AN000;element selection array segment | ||
| 2125 | DW SSC_PTSB ;AN000;option array option word | ||
| 2126 | DW SCB_LIST18 ;AN000;option array pointer offset | ||
| 2127 | DW 0 ;AN000;option array pointer segment | ||
| 2128 | DW SCB_LIST18_W ;AN000;option array string length | ||
| 2129 | DW 0 ;AN000;option array string segment | ||
| 2130 | DB 'A' ;AN000;option array string term char | ||
| 2131 | DW 0 ;AN000;keystroke | ||
| 2132 | DW 0 ;AN000;log vid buf offset override | ||
| 2133 | DW 0 ;AN000;log vid buf segment override | ||
| 2134 | DW 0 ;AN000;general purpose format hook opt | ||
| 2135 | DW 0 ;AN000;general purpose format hook opt | ||
| 2136 | DW 0 ;AN000;length of translation table | ||
| 2137 | DW 0 ;AN000;offset of translation table | ||
| 2138 | DW 0 ;AN000;segment of translation table | ||
| 2139 | DW 0 ;AN000;monocasing table offset | ||
| 2140 | DW 0 ;AN000;monocasing table segment | ||
| 2141 | DW 0 ;AN000;dbcs table length | ||
| 2142 | DW 0 ;AN000;dbcs table offset | ||
| 2143 | DW 0 ;AN000;dbcs table segment | ||
| 2144 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 2145 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 2146 | DB 236 DUP(0) ;AN024; | ||
| 2147 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2148 | ; | ||
| 2149 | ; paritition fixed disk 2 | ||
| 2150 | ; | ||
| 2151 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2152 | WR_SCB19 DW SCB_WRAP ;AN000;option word one | ||
| 2153 | DW SCB_SKIP ;AN000;option word two | ||
| 2154 | DW SCB_NUMS ;AN000;option word three | ||
| 2155 | DW 0 ;AN068;SEH option word four | ||
| 2156 | DW SND_FREQ ;AN000;error beep frequency | ||
| 2157 | DW 15 ;AN000;upper left row | ||
| 2158 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 2159 | DW 0 ;AN000;relative upper left row | ||
| 2160 | DW 0 ;AN000;relative upper left column | ||
| 2161 | DW SCB_LIST19_W ;AN000;line width | ||
| 2162 | DW SCB_LIST19_N ;AN000;number of lines | ||
| 2163 | DW 1 ;AN000;number of element on top | ||
| 2164 | DW SCB_LIST19_N ;AN000;number of elements | ||
| 2165 | DW 1 ;AN000;current element | ||
| 2166 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 2167 | DW 0 ;AN000;display offset into opt strings | ||
| 2168 | DW 1 ;AN000;num list txt col offset in strg | ||
| 2169 | DB '.' ;AN000;numbered list separator | ||
| 2170 | DW 0 ;AN000;select keystroke string length | ||
| 2171 | DW 0 ;AN000;select keystroke string offset | ||
| 2172 | DW 0 ;AN000;select keystroke string segment | ||
| 2173 | DW 0 ;AN000;return/leave string length | ||
| 2174 | DW 0 ;AN000;return/leave string offset | ||
| 2175 | DW 0 ;AN000;return/leave string segment | ||
| 2176 | DW 0 ;AN000;return/erase string length | ||
| 2177 | DW 0 ;AN000;return/erase string offset | ||
| 2178 | DW 0 ;AN000;return/erase string segment | ||
| 2179 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 2180 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 2181 | DW 0 ;AN000;up arrow string segment | ||
| 2182 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 2183 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 2184 | DW 0 ;AN000;down arrow string segment | ||
| 2185 | DW 0 ;AN000;left arrow string length | ||
| 2186 | DW 0 ;AN000;left arrow string offset | ||
| 2187 | DW 0 ;AN000;left arrow string segment | ||
| 2188 | DW 0 ;AN000;right arrow string length | ||
| 2189 | DW 0 ;AN000;right arrow string offset | ||
| 2190 | DW 0 ;AN000;right arrow string segment | ||
| 2191 | DW 0 ;AN000;page-up string length | ||
| 2192 | DW 0 ;AN000;page-up string offset | ||
| 2193 | DW 0 ;AN000;page-up string segment | ||
| 2194 | DW 0 ;AN000;page-down string length | ||
| 2195 | DW 0 ;AN000;page-down string offset | ||
| 2196 | DW 0 ;AN000;page-down string segment | ||
| 2197 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 2198 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 2199 | DW 0 ;AN000;pointer indicator string segment | ||
| 2200 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 2201 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 2202 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 2203 | DW 0 ;AN000;active indicator string segment | ||
| 2204 | DW 1 ;AN000;active ind txt col off into stg | ||
| 2205 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 2206 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 2207 | DW 0 ;AN000;check mark text string segment | ||
| 2208 | DW 1 ;AN000;check mark offset into opt strg | ||
| 2209 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 2210 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 2211 | DW 0 ;AN000;up indicator string segment | ||
| 2212 | DW 2 ;AN000;up indicator row location | ||
| 2213 | DW 1 ;AN000;up indicator column location | ||
| 2214 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 2215 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 2216 | DW 0 ;AN000;down indicator string segment | ||
| 2217 | DW 2 ;AN000;down indicator row location | ||
| 2218 | DW 2 ;AN000;down indicator column locaiton | ||
| 2219 | DW 0 ;AN000;left indicator string length | ||
| 2220 | DW 0 ;AN000;left indicator string offset | ||
| 2221 | DW 0 ;AN000;left indicator string segment | ||
| 2222 | DW 0 ;AN000;left indicator row location | ||
| 2223 | DW 0 ;AN000;left indicator column location | ||
| 2224 | DW 0 ;AN000;right indicator string length | ||
| 2225 | DW 0 ;AN000;right indicator string offset | ||
| 2226 | DW 0 ;AN000;right indicator string segment | ||
| 2227 | DW 0 ;AN000;right indicator row location | ||
| 2228 | DW 0 ;AN000;right indicator column locaiton | ||
| 2229 | DW WR_CIS ;AN000;normal color array offset | ||
| 2230 | DW 0 ;AN000;normal color array segment | ||
| 2231 | DW 1 ;AN000;logical color index number | ||
| 2232 | DW 16 ;AN000;number color index table entries | ||
| 2233 | DW WR_CIS ;AN000;offset addr of color index table | ||
| 2234 | DW 0 ;AN000;segment addr of color index tabl | ||
| 2235 | DW WR_INDEX1 ;AN000;index array offset | ||
| 2236 | DW 0 ;AN000;index array segment | ||
| 2237 | DW WR_SELECT_NUM ;AN000;element selection array offset | ||
| 2238 | DW 0 ;AN000;element selection array segment | ||
| 2239 | DW SSC_PTSB ;AN000;option array option word | ||
| 2240 | DW SCB_LIST19 ;AN000;option array pointer offset | ||
| 2241 | DW 0 ;AN000;option array pointer segment | ||
| 2242 | DW SCB_LIST19_W ;AN000;option array string length | ||
| 2243 | DW 0 ;AN000;option array string segment | ||
| 2244 | DB 'A' ;AN000;option array string term char | ||
| 2245 | DW 0 ;AN000;keystroke | ||
| 2246 | DW 0 ;AN000;log vid buf offset override | ||
| 2247 | DW 0 ;AN000;log vid buf segment override | ||
| 2248 | DW 0 ;AN000;general purpose format hook opt | ||
| 2249 | DW 0 ;AN000;general purpose format hook opt | ||
| 2250 | DW 0 ;AN000;length of translation table | ||
| 2251 | DW 0 ;AN000;offset of translation table | ||
| 2252 | DW 0 ;AN000;segment of translation table | ||
| 2253 | DW 0 ;AN000;monocasing table offset | ||
| 2254 | DW 0 ;AN000;monocasing table segment | ||
| 2255 | DW 0 ;AN000;dbcs table length | ||
| 2256 | DW 0 ;AN000;dbcs table offset | ||
| 2257 | DW 0 ;AN000;dbcs table segment | ||
| 2258 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 2259 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 2260 | DB 236 DUP(0) ;AN024; | ||
| 2261 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2262 | ; | ||
| 2263 | ; FORMAT FIXED DISK DRIVE | ||
| 2264 | ; | ||
| 2265 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2266 | WR_SCB20 DW SCB_WRAP ;AN000;option word one | ||
| 2267 | DW SCB_SKIP ;AN000;option word two | ||
| 2268 | DW SCB_NUMS ;AN000;option word three | ||
| 2269 | DW 0 ;AN068;SEH option word four | ||
| 2270 | DW SND_FREQ ;AN000;error beep frequency | ||
| 2271 | DW 9 ;AC000;upper left row JW | ||
| 2272 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 2273 | DW 0 ;AN000;relative upper left row | ||
| 2274 | DW 0 ;AN000;relative upper left column | ||
| 2275 | DW SCB_LIST20_W ;AN000;line width | ||
| 2276 | DW SCB_LIST20_N ;AN000;number of lines | ||
| 2277 | DW 1 ;AN000;number of element on top | ||
| 2278 | DW SCB_LIST20_N ;AN000;number of elements | ||
| 2279 | DW 1 ;AN000;current element | ||
| 2280 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 2281 | DW 0 ;AN000;display offset into opt strings | ||
| 2282 | DW 1 ;AN000;num list txt col offset in strg | ||
| 2283 | DB '.' ;AN000;numbered list separator | ||
| 2284 | DW 0 ;AN000;select keystroke string length | ||
| 2285 | DW 0 ;AN000;select keystroke string offset | ||
| 2286 | DW 0 ;AN000;select keystroke string segment | ||
| 2287 | DW 0 ;AN000;return/leave string length | ||
| 2288 | DW 0 ;AN000;return/leave string offset | ||
| 2289 | DW 0 ;AN000;return/leave string segment | ||
| 2290 | DW 0 ;AN000;return/erase string length | ||
| 2291 | DW 0 ;AN000;return/erase string offset | ||
| 2292 | DW 0 ;AN000;return/erase string segment | ||
| 2293 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 2294 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 2295 | DW 0 ;AN000;up arrow string segment | ||
| 2296 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 2297 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 2298 | DW 0 ;AN000;down arrow string segment | ||
| 2299 | DW 0 ;AN000;left arrow string length | ||
| 2300 | DW 0 ;AN000;left arrow string offset | ||
| 2301 | DW 0 ;AN000;left arrow string segment | ||
| 2302 | DW 0 ;AN000;right arrow string length | ||
| 2303 | DW 0 ;AN000;right arrow string offset | ||
| 2304 | DW 0 ;AN000;right arrow string segment | ||
| 2305 | DW 0 ;AN000;page-up string length | ||
| 2306 | DW 0 ;AN000;page-up string offset | ||
| 2307 | DW 0 ;AN000;page-up string segment | ||
| 2308 | DW 0 ;AN000;page-down string length | ||
| 2309 | DW 0 ;AN000;page-down string offset | ||
| 2310 | DW 0 ;AN000;page-down string segment | ||
| 2311 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 2312 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 2313 | DW 0 ;AN000;pointer indicator string segment | ||
| 2314 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 2315 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 2316 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 2317 | DW 0 ;AN000;active indicator string segment | ||
| 2318 | DW 1 ;AN000;active ind txt col off into stg | ||
| 2319 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 2320 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 2321 | DW 0 ;AN000;check mark text string segment | ||
| 2322 | DW 1 ;AN000;check mark offset into opt strg | ||
| 2323 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 2324 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 2325 | DW 0 ;AN000;up indicator string segment | ||
| 2326 | DW 2 ;AN000;up indicator row location | ||
| 2327 | DW 1 ;AN000;up indicator column location | ||
| 2328 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 2329 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 2330 | DW 0 ;AN000;down indicator string segment | ||
| 2331 | DW 2 ;AN000;down indicator row location | ||
| 2332 | DW 2 ;AN000;down indicator column locaiton | ||
| 2333 | DW 0 ;AN000;left indicator string length | ||
| 2334 | DW 0 ;AN000;left indicator string offset | ||
| 2335 | DW 0 ;AN000;left indicator string segment | ||
| 2336 | DW 0 ;AN000;left indicator row location | ||
| 2337 | DW 0 ;AN000;left indicator column location | ||
| 2338 | DW 0 ;AN000;right indicator string length | ||
| 2339 | DW 0 ;AN000;right indicator string offset | ||
| 2340 | DW 0 ;AN000;right indicator string segment | ||
| 2341 | DW 0 ;AN000;right indicator row location | ||
| 2342 | DW 0 ;AN000;right indicator column locaiton | ||
| 2343 | DW WR_CIS ;AN000;normal color array offset | ||
| 2344 | DW 0 ;AN000;normal color array segment | ||
| 2345 | DW 1 ;AN000;logical color index number | ||
| 2346 | DW 16 ;AN000;number color index table entries | ||
| 2347 | DW WR_CIS ;AN000;offset addr of color index table | ||
| 2348 | DW 0 ;AN000;segment addr of color index tabl | ||
| 2349 | DW WR_INDEX1 ;AN000;index array offset | ||
| 2350 | DW 0 ;AN000;index array segment | ||
| 2351 | DW WR_SELECT_NUM ;AN000;element selection array offset | ||
| 2352 | DW 0 ;AN000;element selection array segment | ||
| 2353 | DW SSC_PTSB ;AN000;option array option word | ||
| 2354 | DW SCB_LIST20 ;AN000;option array pointer offset | ||
| 2355 | DW 0 ;AN000;option array pointer segment | ||
| 2356 | DW SCB_LIST20_W ;AN000;option array string length | ||
| 2357 | DW 0 ;AN000;option array string segment | ||
| 2358 | DB 'A' ;AN000;option array string term char | ||
| 2359 | DW 0 ;AN000;keystroke | ||
| 2360 | DW 0 ;AN000;log vid buf offset override | ||
| 2361 | DW 0 ;AN000;log vid buf segment override | ||
| 2362 | DW 0 ;AN000;general purpose format hook opt | ||
| 2363 | DW 0 ;AN000;general purpose format hook opt | ||
| 2364 | DW 0 ;AN000;length of translation table | ||
| 2365 | DW 0 ;AN000;offset of translation table | ||
| 2366 | DW 0 ;AN000;segment of translation table | ||
| 2367 | DW 0 ;AN000;monocasing table offset | ||
| 2368 | DW 0 ;AN000;monocasing table segment | ||
| 2369 | DW 0 ;AN000;dbcs table length | ||
| 2370 | DW 0 ;AN000;dbcs table offset | ||
| 2371 | DW 0 ;AN000;dbcs table segment | ||
| 2372 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 2373 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 2374 | DB 236 DUP(0) ;AN024; | ||
| 2375 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2376 | ; | ||
| 2377 | ; HELP SCROLL INFORMATION | ||
| 2378 | ; | ||
| 2379 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2380 | WR_SCB21 DW scb_uc+SCB_LL ;AN000;option word one | ||
| 2381 | DW SCB_ROTN+scb_dyn+scb_uind;AN000;option word two | ||
| 2382 | DW SCB_RELSCR+SCB_RELUIND ;AN000;option word three | ||
| 2383 | DW 0 ;AN068;SEH option word four | ||
| 2384 | DW 100 ;AN000;error beep frequency | ||
| 2385 | DW 4 ;AN000;upper left row | ||
| 2386 | DW 3 ;AN000;upper left column | ||
| 2387 | DW 0 ;AN000;relative upper left row | ||
| 2388 | DW 0 ;AN000;relative upper left column | ||
| 2389 | DW 53 ;AN000;line width | ||
| 2390 | DW 7 ;AN000;number of lines | ||
| 2391 | DW 1 ;AN000;number of element on top | ||
| 2392 | DW 55 ;AN000;number of elements | ||
| 2393 | DW 1 ;AN000;current element | ||
| 2394 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 2395 | DW 0 ;AN000;display offset into opt strings | ||
| 2396 | DW 0 ;AN000;num list txt col offset in strg | ||
| 2397 | DB 0 ;AN000;numbered list separator | ||
| 2398 | DW 0 ;AN000;select keystroke string length | ||
| 2399 | DW 0 ;AN000;select keystroke string offset | ||
| 2400 | DW 0 ;AN000;select keystroke string segment | ||
| 2401 | DW WR_REHLPKEYSLEN ;AN000;return/leave string length | ||
| 2402 | DW WR_REHLPKEYS ;AN000;return/leave string offset | ||
| 2403 | DW 0 ;AN000;return/leave string segment | ||
| 2404 | DW 0 ;AN000;return/erase string length | ||
| 2405 | DW 0 ;AN000;return/erase string offset | ||
| 2406 | DW 0 ;AN000;return/erase string segment | ||
| 2407 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 2408 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 2409 | DW 0 ;AN000;up arrow string segment | ||
| 2410 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 2411 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 2412 | DW 0 ;AN000;down arrow string segment | ||
| 2413 | DW 0 ;AN000;left arrow string length | ||
| 2414 | DW 0 ;AN000;left arrow string offset | ||
| 2415 | DW 0 ;AN000;left arrow string segment | ||
| 2416 | DW 0 ;AN000;right arrow string length | ||
| 2417 | DW 0 ;AN000;right arrow string offset | ||
| 2418 | DW 0 ;AN000;right arrow string segment | ||
| 2419 | DW WR_PUKEYSLEN ;AN000;page-up string length | ||
| 2420 | DW WR_PUKEYS ;AN000;page-up string offset | ||
| 2421 | DW 0 ;AN000;page-up string segment | ||
| 2422 | DW WR_PDKEYSLEN ;AN000;page-down string length | ||
| 2423 | DW WR_PDKEYS ;AN000;page-down string offset | ||
| 2424 | DW 0 ;AN000;page-down string segment | ||
| 2425 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 2426 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 2427 | DW 0 ;AN000;pointer indicator string segment | ||
| 2428 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 2429 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 2430 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 2431 | DW 0 ;AN000;active indicator string segment | ||
| 2432 | DW 1 ;AN000;active ind txt col off into stg | ||
| 2433 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 2434 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 2435 | DW 0 ;AN000;check mark text string segment | ||
| 2436 | DW 1 ;AN000;check mark offset into opt strg | ||
| 2437 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 2438 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 2439 | DW 0 ;AN000;up indicator string segment | ||
| 2440 | DW 2 ;AN000;up indicator row location | ||
| 2441 | DW 50 ;AN000;up indicator column location | ||
| 2442 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 2443 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 2444 | DW 0 ;AN000;down indicator string segment | ||
| 2445 | DW 2 ;AN000;down indicator row location | ||
| 2446 | DW 51 ;AN000;down indicator column locaiton | ||
| 2447 | DW 0 ;AN000;left indicator string length | ||
| 2448 | DW 0 ;AN000;left indicator string offset | ||
| 2449 | DW 0 ;AN000;left indicator string segment | ||
| 2450 | DW 0 ;AN000;left indicator row location | ||
| 2451 | DW 0 ;AN000;left indicator column location | ||
| 2452 | DW 0 ;AN000;right indicator string length | ||
| 2453 | DW 0 ;AN000;right indicator string offset | ||
| 2454 | DW 0 ;AN000;right indicator string segment | ||
| 2455 | DW 0 ;AN000;right indicator row location | ||
| 2456 | DW 0 ;AN000;right indicator column locaiton | ||
| 2457 | DW 0 ;AN000;normal color array offset | ||
| 2458 | DW 0 ;AN000;normal color array segment | ||
| 2459 | DW 3;AN000;BLACK_WHITE ;logical color index number | ||
| 2460 | DW 0 ;AN000;number color index table entries | ||
| 2461 | DW 0 ;AN000;offset addr of color index table | ||
| 2462 | DW 0 ;AN000;segment addr of color index tabl | ||
| 2463 | DW 0 ;AN000;index array offset | ||
| 2464 | DW 0 ;AN000;index array segment | ||
| 2465 | DW WR_SELECT ;AN000;element selection array offset | ||
| 2466 | DW 0 ;AN000;element selection array segment | ||
| 2467 | DW SSC_PTSB ;AN000;option array option word | ||
| 2468 | DW 0 ;AN000;option array pointer offset | ||
| 2469 | DW 0 ;AN000;option array pointer segment | ||
| 2470 | DW 53 ;AN000;option array string length | ||
| 2471 | DW 0 ;AN000;option array string segment | ||
| 2472 | DB 0 ;AN000;option array string term char | ||
| 2473 | DW 0 ;AN000;keystroke | ||
| 2474 | DW 0 ;AN000;log vid buf offset override | ||
| 2475 | DW 0 ;AN000;log vid buf segment override | ||
| 2476 | DW 0 ;AN000;general purpose format hook opt | ||
| 2477 | DW 0 ;AN000;general purpose format hook opt | ||
| 2478 | DW 0 ;AN000;length of translation table | ||
| 2479 | DW 0 ;AN000;offset of translation table | ||
| 2480 | DW 0 ;AN000;segment of translation table | ||
| 2481 | DW 0 ;AN000;monocasing table offset | ||
| 2482 | DW 0 ;AN000;monocasing table segment | ||
| 2483 | DW 0 ;AN000;dbcs table length | ||
| 2484 | DW 0 ;AN000;dbcs table offset | ||
| 2485 | DW 0 ;AN000;dbcs table segment | ||
| 2486 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 2487 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 2488 | DB 236 DUP(0) ;AN024; | ||
| 2489 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2490 | ; | ||
| 2491 | ; HELP TITLE SCROLL INFORMATION | ||
| 2492 | ; | ||
| 2493 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2494 | WR_SCB22 DW scb_uc+SCB_LL ;AN000;option word one | ||
| 2495 | DW SCB_ROTN+scb_dyn+scb_uind;AN000;option word two | ||
| 2496 | DW SCB_RELSCR+SCB_RELUIND ;AN000;option word three | ||
| 2497 | DW 0 ;AN068;SEH option word four | ||
| 2498 | DW 100 ;AN000;error beep frequency | ||
| 2499 | DW 2 ;AN000;upper left row | ||
| 2500 | DW 3 ;AN000;upper left column | ||
| 2501 | DW 0 ;AN000;relative upper left row | ||
| 2502 | DW 0 ;AN000;relative upper left column | ||
| 2503 | DW 53 ;AN000;line width | ||
| 2504 | DW 1 ;AN000;number of lines | ||
| 2505 | DW 1 ;AN000;number of element on top | ||
| 2506 | DW 1 ;AN000;number of elements | ||
| 2507 | DW 1 ;AN000;current element | ||
| 2508 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 2509 | DW 0 ;AN000;display offset into opt strings | ||
| 2510 | DW 0 ;AN000;num list txt col offset in strg | ||
| 2511 | DB 0 ;AN000;numbered list separator | ||
| 2512 | DW 0 ;AN000;select keystroke string length | ||
| 2513 | DW 0 ;AN000;select keystroke string offset | ||
| 2514 | DW 0 ;AN000;select keystroke string segment | ||
| 2515 | DW 0 ;AN000;return/leave string length | ||
| 2516 | DW 0 ;AN000;return/leave string offset | ||
| 2517 | DW 0 ;AN000;return/leave string segment | ||
| 2518 | DW 0 ;AN000;return/erase string length | ||
| 2519 | DW 0 ;AN000;return/erase string offset | ||
| 2520 | DW 0 ;AN000;return/erase string segment | ||
| 2521 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 2522 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 2523 | DW 0 ;AN000;up arrow string segment | ||
| 2524 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 2525 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 2526 | DW 0 ;AN000;down arrow string segment | ||
| 2527 | DW 0 ;AN000;left arrow string length | ||
| 2528 | DW 0 ;AN000;left arrow string offset | ||
| 2529 | DW 0 ;AN000;left arrow string segment | ||
| 2530 | DW 0 ;AN000;right arrow string length | ||
| 2531 | DW 0 ;AN000;right arrow string offset | ||
| 2532 | DW 0 ;AN000;right arrow string segment | ||
| 2533 | DW WR_PUKEYSLEN ;AN000;page-up string length | ||
| 2534 | DW WR_PUKEYS ;AN000;page-up string offset | ||
| 2535 | DW 0 ;AN000;page-up string segment | ||
| 2536 | DW WR_PDKEYSLEN ;AN000;page-down string length | ||
| 2537 | DW WR_PDKEYS ;AN000;page-down string offset | ||
| 2538 | DW 0 ;AN000;page-down string segment | ||
| 2539 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 2540 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 2541 | DW 0 ;AN000;pointer indicator string segment | ||
| 2542 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 2543 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 2544 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 2545 | DW 0 ;AN000;active indicator string segment | ||
| 2546 | DW 1 ;AN000;active ind txt col off into stg | ||
| 2547 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 2548 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 2549 | DW 0 ;AN000;check mark text string segment | ||
| 2550 | DW 1 ;AN000;check mark offset into opt strg | ||
| 2551 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 2552 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 2553 | DW 0 ;AN000;up indicator string segment | ||
| 2554 | DW 2 ;AN000;up indicator row location | ||
| 2555 | DW 23 ;AN000;up indicator column location | ||
| 2556 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 2557 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 2558 | DW 0 ;AN000;down indicator string segment | ||
| 2559 | DW 2 ;AN000;down indicator row location | ||
| 2560 | DW 21 ;AN000;down indicator column locaiton | ||
| 2561 | DW 0 ;AN000;left indicator string length | ||
| 2562 | DW 0 ;AN000;left indicator string offset | ||
| 2563 | DW 0 ;AN000;left indicator string segment | ||
| 2564 | DW 0 ;AN000;left indicator row location | ||
| 2565 | DW 0 ;AN000;left indicator column location | ||
| 2566 | DW 0 ;AN000;right indicator string length | ||
| 2567 | DW 0 ;AN000;right indicator string offset | ||
| 2568 | DW 0 ;AN000;right indicator string segment | ||
| 2569 | DW 0 ;AN000;right indicator row location | ||
| 2570 | DW 0 ;AN000;right indicator column locaiton | ||
| 2571 | DW 0 ;AN000;normal color array offset | ||
| 2572 | DW 0 ;AN000;normal color array segment | ||
| 2573 | DW 3;AN000;BLACK_WHITE ;logical color index number | ||
| 2574 | DW 0 ;AN000;number color index table entries | ||
| 2575 | DW 0 ;AN000;offset addr of color index table | ||
| 2576 | DW 0 ;AN000;segment addr of color index tabl | ||
| 2577 | DW 0 ;AN000;index array offset | ||
| 2578 | DW 0 ;AN000;index array segment | ||
| 2579 | DW WR_SELECT ;AN000;element selection array offset | ||
| 2580 | DW 0 ;AN000;element selection array segment | ||
| 2581 | DW SSC_PTSB ;AN000;option array option word | ||
| 2582 | DW 0 ;AN000;option array pointer offset | ||
| 2583 | DW 0 ;AN000;option array pointer segment | ||
| 2584 | DW 53 ;AN000;option array string length | ||
| 2585 | DW 0 ;AN000;option array string segment | ||
| 2586 | DB 0 ;AN000;option array string term char | ||
| 2587 | DW 0 ;AN000;keystroke | ||
| 2588 | DW 0 ;AN000;log vid buf offset override | ||
| 2589 | DW 0 ;AN000;log vid buf segment override | ||
| 2590 | DW 0 ;AN000;general purpose format hook opt | ||
| 2591 | DW 0 ;AN000;general purpose format hook opt | ||
| 2592 | DW 0 ;AN000;length of translation table | ||
| 2593 | DW 0 ;AN000;offset of translation table | ||
| 2594 | DW 0 ;AN000;segment of translation table | ||
| 2595 | DW 0 ;AN000;monocasing table offset | ||
| 2596 | DW 0 ;AN000;monocasing table segment | ||
| 2597 | DW 0 ;AN000;dbcs table length | ||
| 2598 | DW 0 ;AN000;dbcs table offset | ||
| 2599 | DW 0 ;AN000;dbcs table segment | ||
| 2600 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 2601 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 2602 | DB 236 DUP(0) ;AN024; | ||
| 2603 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2604 | ; | ||
| 2605 | ; SCR_ACC_CTY | ||
| 2606 | ; | ||
| 2607 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2608 | WR_SCB23 DW SCB_FRBF+SCB_FRAL ;AN000;option word one | ||
| 2609 | DW SCB_ROTN ;AN000;option word two | ||
| 2610 | DW 0 ;AN000;option word three | ||
| 2611 | DW 0 ;AN068;SEH option word four | ||
| 2612 | DW SND_FREQ ;AN000;error beep frequency | ||
| 2613 | DW 4 ;AN000;upper left row | ||
| 2614 | DW 37 ;AN000;**********;upper left column | ||
| 2615 | DW 0 ;AN000;relative upper left row | ||
| 2616 | DW 0 ;AN000;relative upper left column | ||
| 2617 | DW SCB_LIST23_W ;AN000;line width | ||
| 2618 | DW 1 ;AN000;number of lines | ||
| 2619 | DW 1 ;AN000;number of element on top | ||
| 2620 | DW SCB_LIST23_N ;AN000;number of elements | ||
| 2621 | DW 1 ;AN000;current element | ||
| 2622 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 2623 | DW 0 ;AN000;display offset into opt strings | ||
| 2624 | DW 1 ;AN000;num list txt col offset in strg | ||
| 2625 | DB '.' ;AN000;numbered list separator | ||
| 2626 | DW 0 ;AN000;select keystroke string length | ||
| 2627 | DW 0 ;AN000;select keystroke string offset | ||
| 2628 | DW 0 ;AN000;select keystroke string segment | ||
| 2629 | DW 0 ;AN000;return/leave string length | ||
| 2630 | DW 0 ;AN000;return/leave string offset | ||
| 2631 | DW 0 ;AN000;return/leave string segment | ||
| 2632 | DW 0 ;AN000;return/erase string length | ||
| 2633 | DW 0 ;AN000;return/erase string offset | ||
| 2634 | DW 0 ;AN000;return/erase string segment | ||
| 2635 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 2636 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 2637 | DW 0 ;AN000;up arrow string segment | ||
| 2638 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 2639 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 2640 | DW 0 ;AN000;down arrow string segment | ||
| 2641 | DW 0 ;AN000;left arrow string length | ||
| 2642 | DW 0 ;AN000;left arrow string offset | ||
| 2643 | DW 0 ;AN000;left arrow string segment | ||
| 2644 | DW 0 ;AN000;right arrow string length | ||
| 2645 | DW 0 ;AN000;right arrow string offset | ||
| 2646 | DW 0 ;AN000;right arrow string segment | ||
| 2647 | DW 0 ;AN000;page-up string length | ||
| 2648 | DW 0 ;AN000;page-up string offset | ||
| 2649 | DW 0 ;AN000;page-up string segment | ||
| 2650 | DW 0 ;AN000;page-down string length | ||
| 2651 | DW 0 ;AN000;page-down string offset | ||
| 2652 | DW 0 ;AN000;page-down string segment | ||
| 2653 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 2654 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 2655 | DW 0 ;AN000;pointer indicator string segment | ||
| 2656 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 2657 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 2658 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 2659 | DW 0 ;AN000;active indicator string segment | ||
| 2660 | DW 1 ;AN000;active ind txt col off into stg | ||
| 2661 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 2662 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 2663 | DW 0 ;AN000;check mark text string segment | ||
| 2664 | DW 1 ;AN000;check mark offset into opt strg | ||
| 2665 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 2666 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 2667 | DW 0 ;AN000;up indicator string segment | ||
| 2668 | DW 2 ;AN000;up indicator row location | ||
| 2669 | DW 1 ;AN000;up indicator column location | ||
| 2670 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 2671 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 2672 | DW 0 ;AN000;down indicator string segment | ||
| 2673 | DW 2 ;AN000;down indicator row location | ||
| 2674 | DW 2 ;AN000;down indicator column locaiton | ||
| 2675 | DW 0 ;AN000;left indicator string length | ||
| 2676 | DW 0 ;AN000;left indicator string offset | ||
| 2677 | DW 0 ;AN000;left indicator string segment | ||
| 2678 | DW 0 ;AN000;left indicator row location | ||
| 2679 | DW 0 ;AN000;left indicator column location | ||
| 2680 | DW 0 ;AN000;right indicator string length | ||
| 2681 | DW 0 ;AN000;right indicator string offset | ||
| 2682 | DW 0 ;AN000;right indicator string segment | ||
| 2683 | DW 0 ;AN000;right indicator row location | ||
| 2684 | DW 0 ;AN000;right indicator column locaiton | ||
| 2685 | DW WR_CIS ;AN000;normal color array offset | ||
| 2686 | DW 0 ;AN000;normal color array segment | ||
| 2687 | DW 1 ;AN000;logical color index number | ||
| 2688 | DW 16 ;AN000;number color index table entries | ||
| 2689 | DW WR_CIS ;AN000;offset addr of color index table | ||
| 2690 | DW 0 ;AN000;segment addr of color index tabl | ||
| 2691 | DW WR_INDEX1 ;AN000;index array offset | ||
| 2692 | DW 0 ;AN000;index array segment | ||
| 2693 | DW WR_SELECT ;AN000;element selection array offset | ||
| 2694 | DW 0 ;AN000;element selection array segment | ||
| 2695 | DW SSC_PTSB ;AN000;option array option word | ||
| 2696 | DW SCB_LIST23 ;AN000;option array pointer offset | ||
| 2697 | DW 0 ;AN000;option array pointer segment | ||
| 2698 | DW SCB_LIST23_W ;AN000;option array string length | ||
| 2699 | DW 0 ;AN000;option array string segment | ||
| 2700 | DB 'A' ;AN000;option array string term char | ||
| 2701 | DW 0 ;AN000;keystroke | ||
| 2702 | DW 0 ;AN000;log vid buf offset override | ||
| 2703 | DW 0 ;AN000;log vid buf segment override | ||
| 2704 | DW 0 ;AN000;general purpose format hook opt | ||
| 2705 | DW 0 ;AN000;general purpose format hook opt | ||
| 2706 | DW 0 ;AN000;length of translation table | ||
| 2707 | DW 0 ;AN000;offset of translation table | ||
| 2708 | DW 0 ;AN000;segment of translation table | ||
| 2709 | DW 0 ;AN000;monocasing table offset | ||
| 2710 | DW 0 ;AN000;monocasing table segment | ||
| 2711 | DW 0 ;AN000;dbcs table length | ||
| 2712 | DW 0 ;AN000;dbcs table offset | ||
| 2713 | DW 0 ;AN000;dbcs table segment | ||
| 2714 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 2715 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 2716 | DB 236 DUP(0) ;AN024; | ||
| 2717 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2718 | ; | ||
| 2719 | ; SCR_ACC_KYB | ||
| 2720 | ; | ||
| 2721 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2722 | WR_SCB24 DW SCB_FRBF+SCB_FRAL ;AN000;option word one | ||
| 2723 | DW SCB_ROTN ;AN000;option word two | ||
| 2724 | DW 0 ;AN000;option word three | ||
| 2725 | DW 0 ;AN068;SEH option word four | ||
| 2726 | DW SND_FREQ ;AN000;error beep frequency | ||
| 2727 | DW 5 ;AN000;upper left row | ||
| 2728 | DW 37 ;AN000;**********;upper left column | ||
| 2729 | DW 0 ;AN000;relative upper left row | ||
| 2730 | DW 0 ;AN000;relative upper left column | ||
| 2731 | DW SCB_LIST24_W ;AN000;line width | ||
| 2732 | DW 1 ;AN000;number of lines | ||
| 2733 | DW 1 ;AN000;number of element on top | ||
| 2734 | DW SCB_LIST24_N ;AN000;number of elements | ||
| 2735 | DW 1 ;AN000;current element | ||
| 2736 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 2737 | DW 0 ;AN000;display offset into opt strings | ||
| 2738 | DW 1 ;AN000;num list txt col offset in strg | ||
| 2739 | DB '.' ;AN000;numbered list separator | ||
| 2740 | DW 0 ;AN000;select keystroke string length | ||
| 2741 | DW 0 ;AN000;select keystroke string offset | ||
| 2742 | DW 0 ;AN000;select keystroke string segment | ||
| 2743 | DW 0 ;AN000;return/leave string length | ||
| 2744 | DW 0 ;AN000;return/leave string offset | ||
| 2745 | DW 0 ;AN000;return/leave string segment | ||
| 2746 | DW 0 ;AN000;return/erase string length | ||
| 2747 | DW 0 ;AN000;return/erase string offset | ||
| 2748 | DW 0 ;AN000;return/erase string segment | ||
| 2749 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 2750 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 2751 | DW 0 ;AN000;up arrow string segment | ||
| 2752 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 2753 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 2754 | DW 0 ;AN000;down arrow string segment | ||
| 2755 | DW 0 ;AN000;left arrow string length | ||
| 2756 | DW 0 ;AN000;left arrow string offset | ||
| 2757 | DW 0 ;AN000;left arrow string segment | ||
| 2758 | DW 0 ;AN000;right arrow string length | ||
| 2759 | DW 0 ;AN000;right arrow string offset | ||
| 2760 | DW 0 ;AN000;right arrow string segment | ||
| 2761 | DW 0 ;AN000;page-up string length | ||
| 2762 | DW 0 ;AN000;page-up string offset | ||
| 2763 | DW 0 ;AN000;page-up string segment | ||
| 2764 | DW 0 ;AN000;page-down string length | ||
| 2765 | DW 0 ;AN000;page-down string offset | ||
| 2766 | DW 0 ;AN000;page-down string segment | ||
| 2767 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 2768 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 2769 | DW 0 ;AN000;pointer indicator string segment | ||
| 2770 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 2771 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 2772 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 2773 | DW 0 ;AN000;active indicator string segment | ||
| 2774 | DW 1 ;AN000;active ind txt col off into stg | ||
| 2775 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 2776 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 2777 | DW 0 ;AN000;check mark text string segment | ||
| 2778 | DW 1 ;AN000;check mark offset into opt strg | ||
| 2779 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 2780 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 2781 | DW 0 ;AN000;up indicator string segment | ||
| 2782 | DW 2 ;AN000;up indicator row location | ||
| 2783 | DW 1 ;AN000;up indicator column location | ||
| 2784 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 2785 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 2786 | DW 0 ;AN000;down indicator string segment | ||
| 2787 | DW 2 ;AN000;down indicator row location | ||
| 2788 | DW 2 ;AN000;down indicator column locaiton | ||
| 2789 | DW 0 ;AN000;left indicator string length | ||
| 2790 | DW 0 ;AN000;left indicator string offset | ||
| 2791 | DW 0 ;AN000;left indicator string segment | ||
| 2792 | DW 0 ;AN000;left indicator row location | ||
| 2793 | DW 0 ;AN000;left indicator column location | ||
| 2794 | DW 0 ;AN000;right indicator string length | ||
| 2795 | DW 0 ;AN000;right indicator string offset | ||
| 2796 | DW 0 ;AN000;right indicator string segment | ||
| 2797 | DW 0 ;AN000;right indicator row location | ||
| 2798 | DW 0 ;AN000;right indicator column locaiton | ||
| 2799 | DW WR_CIS ;AN000;normal color array offset | ||
| 2800 | DW 0 ;AN000;normal color array segment | ||
| 2801 | DW 1 ;AN000;logical color index number | ||
| 2802 | DW 16 ;AN000;number color index table entries | ||
| 2803 | DW WR_CIS ;AN000;offset addr of color index table | ||
| 2804 | DW 0 ;AN000;segment addr of color index tabl | ||
| 2805 | DW WR_INDEX1 ;AN000;index array offset | ||
| 2806 | DW 0 ;AN000;index array segment | ||
| 2807 | DW WR_SELECT ;AN000;element selection array offset | ||
| 2808 | DW 0 ;AN000;element selection array segment | ||
| 2809 | DW SSC_PTSB ;AN000;option array option word | ||
| 2810 | DW SCB_LIST24 ;AN000;option array pointer offset | ||
| 2811 | DW 0 ;AN000;option array pointer segment | ||
| 2812 | DW SCB_LIST24_W ;AN000;option array string length | ||
| 2813 | DW 0 ;AN000;option array string segment | ||
| 2814 | DB 'A' ;AN000;option array string term char | ||
| 2815 | DW 0 ;AN000;keystroke | ||
| 2816 | DW 0 ;AN000;log vid buf offset override | ||
| 2817 | DW 0 ;AN000;log vid buf segment override | ||
| 2818 | DW 0 ;AN000;general purpose format hook opt | ||
| 2819 | DW 0 ;AN000;general purpose format hook opt | ||
| 2820 | DW 0 ;AN000;length of translation table | ||
| 2821 | DW 0 ;AN000;offset of translation table | ||
| 2822 | DW 0 ;AN000;segment of translation table | ||
| 2823 | DW 0 ;AN000;monocasing table offset | ||
| 2824 | DW 0 ;AN000;monocasing table segment | ||
| 2825 | DW 0 ;AN000;dbcs table length | ||
| 2826 | DW 0 ;AN000;dbcs table offset | ||
| 2827 | DW 0 ;AN000;dbcs table segment | ||
| 2828 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 2829 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 2830 | DB 236 DUP(0) ;AN024; | ||
| 2831 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2832 | ; | ||
| 2833 | ; SCR_ACC_PRT | ||
| 2834 | ; | ||
| 2835 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2836 | WR_SCB25 DW SCB_FRBF+SCB_FRAL ;AN000;option word one | ||
| 2837 | DW SCB_ROTN ;AN000;option word two | ||
| 2838 | DW 0 ;AN000;option word three | ||
| 2839 | DW 0 ;AN068;SEH option word four | ||
| 2840 | DW SND_FREQ ;AN000;error beep frequency | ||
| 2841 | DW 4 ;AN000;upper left row | ||
| 2842 | DW 32 ;AN000;upper left column | ||
| 2843 | DW 0 ;AN000;relative upper left row | ||
| 2844 | DW 0 ;AN000;relative upper left column | ||
| 2845 | DW SCB_LIST11_W ;AN000;line width | ||
| 2846 | DW 1 ;AN000;number of lines | ||
| 2847 | DW 1 ;AN000;number of element on top | ||
| 2848 | DW SCB_LIST11_N ;AN000;number of elements | ||
| 2849 | DW 1 ;AN000;current element | ||
| 2850 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 2851 | DW 0 ;AN000;display offset into opt strings | ||
| 2852 | DW 1 ;AN000;num list txt col offset in strg | ||
| 2853 | DB '.' ;AN000;numbered list separator | ||
| 2854 | DW 0 ;AN000;select keystroke string length | ||
| 2855 | DW 0 ;AN000;select keystroke string offset | ||
| 2856 | DW 0 ;AN000;select keystroke string segment | ||
| 2857 | DW 0 ;AN000;return/leave string length | ||
| 2858 | DW 0 ;AN000;return/leave string offset | ||
| 2859 | DW 0 ;AN000;return/leave string segment | ||
| 2860 | DW 0 ;AN000;return/erase string length | ||
| 2861 | DW 0 ;AN000;return/erase string offset | ||
| 2862 | DW 0 ;AN000;return/erase string segment | ||
| 2863 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 2864 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 2865 | DW 0 ;AN000;up arrow string segment | ||
| 2866 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 2867 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 2868 | DW 0 ;AN000;down arrow string segment | ||
| 2869 | DW 0 ;AN000;left arrow string length | ||
| 2870 | DW 0 ;AN000;left arrow string offset | ||
| 2871 | DW 0 ;AN000;left arrow string segment | ||
| 2872 | DW 0 ;AN000;right arrow string length | ||
| 2873 | DW 0 ;AN000;right arrow string offset | ||
| 2874 | DW 0 ;AN000;right arrow string segment | ||
| 2875 | DW 0 ;AN000;page-up string length | ||
| 2876 | DW 0 ;AN000;page-up string offset | ||
| 2877 | DW 0 ;AN000;page-up string segment | ||
| 2878 | DW 0 ;AN000;page-down string length | ||
| 2879 | DW 0 ;AN000;page-down string offset | ||
| 2880 | DW 0 ;AN000;page-down string segment | ||
| 2881 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 2882 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 2883 | DW 0 ;AN000;pointer indicator string segment | ||
| 2884 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 2885 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 2886 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 2887 | DW 0 ;AN000;active indicator string segment | ||
| 2888 | DW 1 ;AN000;active ind txt col off into stg | ||
| 2889 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 2890 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 2891 | DW 0 ;AN000;check mark text string segment | ||
| 2892 | DW 1 ;AN000;check mark offset into opt strg | ||
| 2893 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 2894 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 2895 | DW 0 ;AN000;up indicator string segment | ||
| 2896 | DW 2 ;AN000;up indicator row location | ||
| 2897 | DW 1 ;AN000;up indicator column location | ||
| 2898 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 2899 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 2900 | DW 0 ;AN000;down indicator string segment | ||
| 2901 | DW 2 ;AN000;down indicator row location | ||
| 2902 | DW 2 ;AN000;down indicator column locaiton | ||
| 2903 | DW 0 ;AN000;left indicator string length | ||
| 2904 | DW 0 ;AN000;left indicator string offset | ||
| 2905 | DW 0 ;AN000;left indicator string segment | ||
| 2906 | DW 0 ;AN000;left indicator row location | ||
| 2907 | DW 0 ;AN000;left indicator column location | ||
| 2908 | DW 0 ;AN000;right indicator string length | ||
| 2909 | DW 0 ;AN000;right indicator string offset | ||
| 2910 | DW 0 ;AN000;right indicator string segment | ||
| 2911 | DW 0 ;AN000;right indicator row location | ||
| 2912 | DW 0 ;AN000;right indicator column locaiton | ||
| 2913 | DW WR_CIS ;AN000;normal color array offset | ||
| 2914 | DW 0 ;AN000;normal color array segment | ||
| 2915 | DW 1 ;AN000;logical color index number | ||
| 2916 | DW 16 ;AN000;number color index table entries | ||
| 2917 | DW WR_CIS ;AN000;offset addr of color index table | ||
| 2918 | DW 0 ;AN000;segment addr of color index tabl | ||
| 2919 | DW WR_INDEX1 ;AN000;index array offset | ||
| 2920 | DW 0 ;AN000;index array segment | ||
| 2921 | DW WR_SELECT ;AN000;element selection array offset | ||
| 2922 | DW 0 ;AN000;element selection array segment | ||
| 2923 | DW SSC_PTSB ;AN000;option array option word | ||
| 2924 | DW SCB_LIST11 ;AN000;option array pointer offset | ||
| 2925 | DW 0 ;AN000;option array pointer segment | ||
| 2926 | DW SCB_LIST11_W ;AN000;option array string length | ||
| 2927 | DW 0 ;AN000;option array string segment | ||
| 2928 | DB 'A' ;AN000;option array string term char | ||
| 2929 | DW 0 ;AN000;keystroke | ||
| 2930 | DW 0 ;AN000;log vid buf offset override | ||
| 2931 | DW 0 ;AN000;log vid buf segment override | ||
| 2932 | DW 0 ;AN000;general purpose format hook opt | ||
| 2933 | DW 0 ;AN000;general purpose format hook opt | ||
| 2934 | DW 0 ;AN000;length of translation table | ||
| 2935 | DW 0 ;AN000;offset of translation table | ||
| 2936 | DW 0 ;AN000;segment of translation table | ||
| 2937 | DW 0 ;AN000;monocasing table offset | ||
| 2938 | DW 0 ;AN000;monocasing table segment | ||
| 2939 | DW 0 ;AN000;dbcs table length | ||
| 2940 | DW 0 ;AN000;dbcs table offset | ||
| 2941 | DW 0 ;AN000;dbcs table segment | ||
| 2942 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 2943 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 2944 | DB 236 DUP(0) ;AN024; | ||
| 2945 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2946 | ; | ||
| 2947 | ; DOS LOCATION SUPPORT ;AN000;JW | ||
| 2948 | ; | ||
| 2949 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2950 | WR_SCB26 DW SCB_WRAP ;AN000;option word one | ||
| 2951 | DW SCB_SKIP ;AN000;option word two | ||
| 2952 | DW SCB_NUMS ;AN000;option word three | ||
| 2953 | DW 0 ;AN068;SEH option word four | ||
| 2954 | DW SND_FREQ ;AN000;error beep frequency | ||
| 2955 | DW 17 ;AN000;upper left row | ||
| 2956 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 2957 | DW 0 ;AN000;relative upper left row | ||
| 2958 | DW 0 ;AN000;relative upper left column | ||
| 2959 | DW SCB_LIST26_W ;AN000;line width | ||
| 2960 | DW SCB_LIST26_N ;AN000;number of lines | ||
| 2961 | DW 1 ;AN000;number of element on top | ||
| 2962 | DW SCB_LIST26_N ;AN000;number of elements | ||
| 2963 | DW 1 ;AN000;current element | ||
| 2964 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 2965 | DW 0 ;AN000;display offset into opt strings | ||
| 2966 | DW 1 ;AN000;num list txt col offset in strg | ||
| 2967 | DB '.' ;AN000;numbered list separator | ||
| 2968 | DW 0 ;AN000;select keystroke string length | ||
| 2969 | DW 0 ;AN000;select keystroke string offset | ||
| 2970 | DW 0 ;AN000;select keystroke string segment | ||
| 2971 | DW 0 ;AN000;return/leave string length | ||
| 2972 | DW 0 ;AN000;return/leave string offset | ||
| 2973 | DW 0 ;AN000;return/leave string segment | ||
| 2974 | DW 0 ;AN000;return/erase string length | ||
| 2975 | DW 0 ;AN000;return/erase string offset | ||
| 2976 | DW 0 ;AN000;return/erase string segment | ||
| 2977 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 2978 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 2979 | DW 0 ;AN000;up arrow string segment | ||
| 2980 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 2981 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 2982 | DW 0 ;AN000;down arrow string segment | ||
| 2983 | DW 0 ;AN000;left arrow string length | ||
| 2984 | DW 0 ;AN000;left arrow string offset | ||
| 2985 | DW 0 ;AN000;left arrow string segment | ||
| 2986 | DW 0 ;AN000;right arrow string length | ||
| 2987 | DW 0 ;AN000;right arrow string offset | ||
| 2988 | DW 0 ;AN000;right arrow string segment | ||
| 2989 | DW WR_PUKEYSLEN ;AN000;page-up string length | ||
| 2990 | DW WR_PUKEYS ;AN000;page-up string offset | ||
| 2991 | DW 0 ;AN000;page-up string segment | ||
| 2992 | DW WR_PDKEYSLEN ;AN000;page-down string length | ||
| 2993 | DW WR_PDKEYS ;AN000;page-down string offset | ||
| 2994 | DW 0 ;AN000;page-down string segment | ||
| 2995 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 2996 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 2997 | DW 0 ;AN000;pointer indicator string segment | ||
| 2998 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 2999 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 3000 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 3001 | DW 0 ;AN000;active indicator string segment | ||
| 3002 | DW 1 ;AN000;active ind txt col off into stg | ||
| 3003 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 3004 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 3005 | DW 0 ;AN000;check mark text string segment | ||
| 3006 | DW 1 ;AN000;check mark offset into opt strg | ||
| 3007 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 3008 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 3009 | DW 0 ;AN000;up indicator string segment | ||
| 3010 | DW 2 ;AN000;up indicator row location | ||
| 3011 | DW 1 ;AN000;up indicator column location | ||
| 3012 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 3013 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 3014 | DW 0 ;AN000;down indicator string segment | ||
| 3015 | DW 2 ;AN000;down indicator row location | ||
| 3016 | DW 2 ;AN000;down indicator column locaiton | ||
| 3017 | DW 0 ;AN000;left indicator string length | ||
| 3018 | DW 0 ;AN000;left indicator string offset | ||
| 3019 | DW 0 ;AN000;left indicator string segment | ||
| 3020 | DW 0 ;AN000;left indicator row location | ||
| 3021 | DW 0 ;AN000;left indicator column location | ||
| 3022 | DW 0 ;AN000;right indicator string length | ||
| 3023 | DW 0 ;AN000;right indicator string offset | ||
| 3024 | DW 0 ;AN000;right indicator string segment | ||
| 3025 | DW 0 ;AN000;right indicator row location | ||
| 3026 | DW 0 ;AN000;right indicator column locaiton | ||
| 3027 | DW 0 ;AN000;normal color array offset | ||
| 3028 | DW 0 ;AN000;normal color array segment | ||
| 3029 | DW 1 ;AN000;logical color index number | ||
| 3030 | DW 16 ;AN000;number color index table entries | ||
| 3031 | DW WR_CIS ;AN000;offset addr of color index table | ||
| 3032 | DW 0 ;AN000;segment addr of color index tabl | ||
| 3033 | DW WR_INDEX1 ;AN000;index array offset | ||
| 3034 | DW 0 ;AN000;index array segment | ||
| 3035 | DW WR_SELECT_NUM ;AN000;element selection array offset | ||
| 3036 | DW 0 ;AN000;element selection array segment | ||
| 3037 | DW SSC_PTSB ;AN000;option array option word | ||
| 3038 | DW SCB_LIST26 ;AN000;option array pointer offset | ||
| 3039 | DW 0 ;AN000;option array pointer segment | ||
| 3040 | DW SCB_LIST26_W ;AN000;option array string length | ||
| 3041 | DW 0 ;AN000;option array string segment | ||
| 3042 | DB 'A' ;AN000;option array string term char | ||
| 3043 | DW 0 ;AN000;keystroke | ||
| 3044 | DW 0 ;AN000;log vid buf offset override | ||
| 3045 | DW 0 ;AN000;log vid buf segment override | ||
| 3046 | DW 0 ;AN000;general purpose format hook opt | ||
| 3047 | DW 0 ;AN000;general purpose format hook opt | ||
| 3048 | DW 0 ;AN000;length of translation table | ||
| 3049 | DW 0 ;AN000;offset of translation table | ||
| 3050 | DW 0 ;AN000;segment of translation table | ||
| 3051 | DW 0 ;AN000;monocasing table offset | ||
| 3052 | DW 0 ;AN000;monocasing table segment | ||
| 3053 | DW 0 ;AN000;dbcs table length | ||
| 3054 | DW 0 ;AN000;dbcs table offset | ||
| 3055 | DW 0 ;AN000;dbcs table segment | ||
| 3056 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 3057 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 3058 | DB 236 DUP(0) ;AN024; | ||
| 3059 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3060 | ; | ||
| 3061 | ; select drive a: or c: ;AN111;JW | ||
| 3062 | ; | ||
| 3063 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3064 | WR_SCB27 DW SCB_WRAP ;AN000;option word one | ||
| 3065 | DW SCB_SKIP ;AN000;option word two | ||
| 3066 | DW SCB_NUMS ;AN000;option word three | ||
| 3067 | DW 0 ;AN068;SEH option word four | ||
| 3068 | DW SND_FREQ ;AN000;error beep frequency | ||
| 3069 | DW 8 ;AN000;upper left row | ||
| 3070 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 3071 | DW 0 ;AN000;relative upper left row | ||
| 3072 | DW 0 ;AN000;relative upper left column | ||
| 3073 | DW SCB_LIST27_W ;AN000;line width | ||
| 3074 | DW SCB_LIST27_N ;AN000;number of lines | ||
| 3075 | DW 1 ;AN000;number of element on top | ||
| 3076 | DW SCB_LIST27_N ;AN000;number of elements | ||
| 3077 | DW 1 ;AN000;current element | ||
| 3078 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 3079 | DW 0 ;AN000;display offset into opt strings | ||
| 3080 | DW 1 ;AN000;num list txt col offset in strg | ||
| 3081 | DB '.' ;AN000;numbered list separator | ||
| 3082 | DW 0 ;AN000;select keystroke string length | ||
| 3083 | DW 0 ;AN000;select keystroke string offset | ||
| 3084 | DW 0 ;AN000;select keystroke string segment | ||
| 3085 | DW 0 ;AN000;return/leave string length | ||
| 3086 | DW 0 ;AN000;return/leave string offset | ||
| 3087 | DW 0 ;AN000;return/leave string segment | ||
| 3088 | DW 0 ;AN000;return/erase string length | ||
| 3089 | DW 0 ;AN000;return/erase string offset | ||
| 3090 | DW 0 ;AN000;return/erase string segment | ||
| 3091 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 3092 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 3093 | DW 0 ;AN000;up arrow string segment | ||
| 3094 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 3095 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 3096 | DW 0 ;AN000;down arrow string segment | ||
| 3097 | DW 0 ;AN000;left arrow string length | ||
| 3098 | DW 0 ;AN000;left arrow string offset | ||
| 3099 | DW 0 ;AN000;left arrow string segment | ||
| 3100 | DW 0 ;AN000;right arrow string length | ||
| 3101 | DW 0 ;AN000;right arrow string offset | ||
| 3102 | DW 0 ;AN000;right arrow string segment | ||
| 3103 | DW 0 ;AN000;page-up string length | ||
| 3104 | DW 0 ;AN000;page-up string offset | ||
| 3105 | DW 0 ;AN000;page-up string segment | ||
| 3106 | DW 0 ;AN000;page-down string length | ||
| 3107 | DW 0 ;AN000;page-down string offset | ||
| 3108 | DW 0 ;AN000;page-down string segment | ||
| 3109 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 3110 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 3111 | DW 0 ;AN000;pointer indicator string segment | ||
| 3112 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 3113 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 3114 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 3115 | DW 0 ;AN000;active indicator string segment | ||
| 3116 | DW 1 ;AN000;active ind txt col off into stg | ||
| 3117 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 3118 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 3119 | DW 0 ;AN000;check mark text string segment | ||
| 3120 | DW 1 ;AN000;check mark offset into opt strg | ||
| 3121 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 3122 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 3123 | DW 0 ;AN000;up indicator string segment | ||
| 3124 | DW 2 ;AN000;up indicator row location | ||
| 3125 | DW 1 ;AN000;up indicator column location | ||
| 3126 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 3127 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 3128 | DW 0 ;AN000;down indicator string segment | ||
| 3129 | DW 2 ;AN000;down indicator row location | ||
| 3130 | DW 2 ;AN000;down indicator column locaiton | ||
| 3131 | DW 0 ;AN000;left indicator string length | ||
| 3132 | DW 0 ;AN000;left indicator string offset | ||
| 3133 | DW 0 ;AN000;left indicator string segment | ||
| 3134 | DW 0 ;AN000;left indicator row location | ||
| 3135 | DW 0 ;AN000;left indicator column location | ||
| 3136 | DW 0 ;AN000;right indicator string length | ||
| 3137 | DW 0 ;AN000;right indicator string offset | ||
| 3138 | DW 0 ;AN000;right indicator string segment | ||
| 3139 | DW 0 ;AN000;right indicator row location | ||
| 3140 | DW 0 ;AN000;right indicator column locaiton | ||
| 3141 | DW 0 ;AN000;normal color array offset | ||
| 3142 | DW 0 ;AN000;normal color array segment | ||
| 3143 | DW 1 ;AN000;logical color index number | ||
| 3144 | DW 16 ;AN000;number color index table entries | ||
| 3145 | DW WR_CIS ;AN000;offset addr of color index table | ||
| 3146 | DW 0 ;AN000;segment addr of color index tabl | ||
| 3147 | DW WR_INDEX1 ;AN000;index array offset | ||
| 3148 | DW 0 ;AN000;index array segment | ||
| 3149 | DW WR_SELECT_NUM ;AN000;element selection array offset | ||
| 3150 | DW 0 ;AN000;element selection array segment | ||
| 3151 | DW SSC_PTSB ;AN000;option array option word | ||
| 3152 | DW SCB_LIST27 ;AN000;option array pointer offset | ||
| 3153 | DW 0 ;AN000;option array pointer segment | ||
| 3154 | DW SCB_LIST27_W ;AN000;option array string length | ||
| 3155 | DW 0 ;AN000;option array string segment | ||
| 3156 | DB 'A' ;AN000;option array string term char | ||
| 3157 | DW 0 ;AN000;keystroke | ||
| 3158 | DW 0 ;AN000;log vid buf offset override | ||
| 3159 | DW 0 ;AN000;log vid buf segment override | ||
| 3160 | DW 0 ;AN000;general purpose format hook opt | ||
| 3161 | DW 0 ;AN000;general purpose format hook opt | ||
| 3162 | DW 0 ;AN000;length of translation table | ||
| 3163 | DW 0 ;AN000;offset of translation table | ||
| 3164 | DW 0 ;AN000;segment of translation table | ||
| 3165 | DW 0 ;AN000;monocasing table offset | ||
| 3166 | DW 0 ;AN000;monocasing table segment | ||
| 3167 | DW 0 ;AN000;dbcs table length | ||
| 3168 | DW 0 ;AN000;dbcs table offset | ||
| 3169 | DW 0 ;AN000;dbcs table segment | ||
| 3170 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 3171 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 3172 | DB 236 DUP(0) ;AN024; | ||
| 3173 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3174 | ; | ||
| 3175 | ; chose shell | ||
| 3176 | ; | ||
| 3177 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3178 | WR_SCB28 DW SCB_WRAP ;AN000;option word one | ||
| 3179 | DW SCB_SKIP ;AN000;option word two | ||
| 3180 | DW SCB_NUMS ;AN000;option word three | ||
| 3181 | DW 0 ;AN068;SEH option word four | ||
| 3182 | DW SND_FREQ ;AN000;error beep frequency | ||
| 3183 | DW 11 ;AC079;SEH ;AN000;upper left row | ||
| 3184 | DW LEFT_COL_SCROLL ;AN000;upper left column | ||
| 3185 | DW 0 ;AN000;relative upper left row | ||
| 3186 | DW 0 ;AN000;relative upper left column | ||
| 3187 | DW SCB_LIST28_W ;AN000;line width | ||
| 3188 | DW SCB_LIST28_N ;AN000;number of lines | ||
| 3189 | DW 1 ;AN000;number of element on top | ||
| 3190 | DW SCB_LIST28_N ;AN000;number of elements | ||
| 3191 | DW 1 ;AN000;current element | ||
| 3192 | DW 0 ;AN000;maximun number of cols to scroll | ||
| 3193 | DW 0 ;AN000;display offset into opt strings | ||
| 3194 | DW 1 ;AN000;num list txt col offset in strg | ||
| 3195 | DB '.' ;AN000;numbered list separator | ||
| 3196 | DW 0 ;AN000;select keystroke string length | ||
| 3197 | DW 0 ;AN000;select keystroke string offset | ||
| 3198 | DW 0 ;AN000;select keystroke string segment | ||
| 3199 | DW 0 ;AN000;return/leave string length | ||
| 3200 | DW 0 ;AN000;return/leave string offset | ||
| 3201 | DW 0 ;AN000;return/leave string segment | ||
| 3202 | DW 0 ;AN000;return/erase string length | ||
| 3203 | DW 0 ;AN000;return/erase string offset | ||
| 3204 | DW 0 ;AN000;return/erase string segment | ||
| 3205 | DW WR_UAKEYSLEN ;AN000;up arrow string length | ||
| 3206 | DW WR_UAKEYS ;AN000;up arrow string offset | ||
| 3207 | DW 0 ;AN000;up arrow string segment | ||
| 3208 | DW WR_DAKEYSLEN ;AN000;down arrow string length | ||
| 3209 | DW WR_DAKEYS ;AN000;down arrow string offset | ||
| 3210 | DW 0 ;AN000;down arrow string segment | ||
| 3211 | DW 0 ;AN000;left arrow string length | ||
| 3212 | DW 0 ;AN000;left arrow string offset | ||
| 3213 | DW 0 ;AN000;left arrow string segment | ||
| 3214 | DW 0 ;AN000;right arrow string length | ||
| 3215 | DW 0 ;AN000;right arrow string offset | ||
| 3216 | DW 0 ;AN000;right arrow string segment | ||
| 3217 | DW 0 ;AN000;page-up string length | ||
| 3218 | DW 0 ;AN000;page-up string offset | ||
| 3219 | DW 0 ;AN000;page-up string segment | ||
| 3220 | DW 0 ;AN000;page-down string length | ||
| 3221 | DW 0 ;AN000;page-down string offset | ||
| 3222 | DW 0 ;AN000;page-down string segment | ||
| 3223 | DW WR_PIINDLEN ;AN000;pointer indicator strg length | ||
| 3224 | DW WR_PIIND ;AN000;pointer indicator string offset | ||
| 3225 | DW 0 ;AN000;pointer indicator string segment | ||
| 3226 | DW 1 ;AN000;pointer ind txt col off into strg | ||
| 3227 | DW WR_AIINDLEN ;AN000;active indicator strg length | ||
| 3228 | DW WR_AIIND ;AN000;active indicator string offset | ||
| 3229 | DW 0 ;AN000;active indicator string segment | ||
| 3230 | DW 1 ;AN000;active ind txt col off into stg | ||
| 3231 | DW WR_CIINDLEN ;AN000;check mark text string length | ||
| 3232 | DW WR_CIIND ;AN000;check mark text string offset | ||
| 3233 | DW 0 ;AN000;check mark text string segment | ||
| 3234 | DW 1 ;AN000;check mark offset into opt strg | ||
| 3235 | DW WR_UIINDLEN ;AN000;up indicator string length | ||
| 3236 | DW WR_UIIND ;AN000;up indicator string offset | ||
| 3237 | DW 0 ;AN000;up indicator string segment | ||
| 3238 | DW 2 ;AN000;up indicator row location | ||
| 3239 | DW 1 ;AN000;up indicator column location | ||
| 3240 | DW WR_DIINDLEN ;AN000;down indicator string length | ||
| 3241 | DW WR_DIIND ;AN000;down indicator string offset | ||
| 3242 | DW 0 ;AN000;down indicator string segment | ||
| 3243 | DW 2 ;AN000;down indicator row location | ||
| 3244 | DW 2 ;AN000;down indicator column locaiton | ||
| 3245 | DW 0 ;AN000;left indicator string length | ||
| 3246 | DW 0 ;AN000;left indicator string offset | ||
| 3247 | DW 0 ;AN000;left indicator string segment | ||
| 3248 | DW 0 ;AN000;left indicator row location | ||
| 3249 | DW 0 ;AN000;left indicator column location | ||
| 3250 | DW 0 ;AN000;right indicator string length | ||
| 3251 | DW 0 ;AN000;right indicator string offset | ||
| 3252 | DW 0 ;AN000;right indicator string segment | ||
| 3253 | DW 0 ;AN000;right indicator row location | ||
| 3254 | DW 0 ;AN000;right indicator column locaiton | ||
| 3255 | DW WR_CIS ;AN000;normal color array offset | ||
| 3256 | DW 0 ;AN000;normal color array segment | ||
| 3257 | DW 1 ;AN000;logical color index number | ||
| 3258 | DW 16 ;AN000;number color index table entries | ||
| 3259 | DW WR_CIS ;AN000;offset addr of color index table | ||
| 3260 | DW 0 ;AN000;segment addr of color index tabl | ||
| 3261 | DW WR_INDEX1 ;AN000;index array offset | ||
| 3262 | DW 0 ;AN000;index array segment | ||
| 3263 | DW WR_SELECT_NUM ;AN000;element selection array offset | ||
| 3264 | DW 0 ;AN000;element selection array segment | ||
| 3265 | DW SSC_PTSB ;AN000;option array option word | ||
| 3266 | DW SCB_LIST28 ;AN000;option array pointer offset | ||
| 3267 | DW 0 ;AN000;option array pointer segment | ||
| 3268 | DW SCB_LIST28_W ;AN000;option array string length | ||
| 3269 | DW 0 ;AN000;option array string segment | ||
| 3270 | DB 'A' ;AN000;option array string term char | ||
| 3271 | DW 0 ;AN000;keystroke | ||
| 3272 | DW 0 ;AN000;log vid buf offset override | ||
| 3273 | DW 0 ;AN000;log vid buf segment override | ||
| 3274 | DW 0 ;AN000;general purpose format hook opt | ||
| 3275 | DW 0 ;AN000;general purpose format hook opt | ||
| 3276 | DW 0 ;AN000;length of translation table | ||
| 3277 | DW 0 ;AN000;offset of translation table | ||
| 3278 | DW 0 ;AN000;segment of translation table | ||
| 3279 | DW 0 ;AN000;monocasing table offset | ||
| 3280 | DW 0 ;AN000;monocasing table segment | ||
| 3281 | DW 0 ;AN000;dbcs table length | ||
| 3282 | DW 0 ;AN000;dbcs table offset | ||
| 3283 | DW 0 ;AN000;dbcs table segment | ||
| 3284 | DW 0 ;AN068;SEH offset of font descriptor block | ||
| 3285 | DW 0 ;AN068;SEH segment of font descriptor block | ||
| 3286 | DB 236 DUP(0) ;AN024; | ||
| 3287 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3288 | ; | ||
| 3289 | ; Keystroke Strings and length calculations | ||
| 3290 | ; | ||
| 3291 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 3292 | WR_REHLPKEYS DB 0,F1,0,F9,ESCAPE ;AN000;return/erase keystroke string | ||
| 3293 | WR_REHLPKEYSLEN EQU ($-WR_REHLPKEYS) ;AN000; | ||
| 3294 | |||
| 3295 | WR_UAKEYS DB 0,UPARROW ;AN000;up arrow keystroke string | ||
| 3296 | WR_UAKEYSLEN EQU ($-WR_UAKEYS) ;AN000; | ||
| 3297 | |||
| 3298 | WR_DAKEYS DB 0,DNARROW ;AN000;down arrow keystroke string | ||
| 3299 | WR_DAKEYSLEN EQU ($-WR_DAKEYS) ;AN000; | ||
| 3300 | |||
| 3301 | |||
| 3302 | WR_PUKEYS DB 0,PGUP ;AN000;define page up key buffer | ||
| 3303 | WR_PUKEYSLEN EQU ($-WR_PUKEYS) ;AN000; | ||
| 3304 | |||
| 3305 | WR_PDKEYS DB 0,PGDN ;AN000;define page down key buffer | ||
| 3306 | WR_PDKEYSLEN EQU ($-WR_PDKEYS) ;AN000; | ||
| 3307 | |||
| 3308 | WR_UIIND DB 24 ;AN000;define up indicator buffer | ||
| 3309 | WR_UIINDLEN EQU ($-WR_UIIND) ;AN000; | ||
| 3310 | |||
| 3311 | WR_DIIND DB 25 ;AN000;define down indicator buffer | ||
| 3312 | WR_DIINDLEN EQU ($-WR_DIIND) ;AN000; | ||
| 3313 | |||
| 3314 | WR_PIIND DB '�' ;AN000;selection pointer indicator buff | ||
| 3315 | WR_PIINDLEN EQU ($-WR_PIIND) ;AN000; | ||
| 3316 | |||
| 3317 | WR_AIIND DB '<' ;AN000;active string indicator buffer | ||
| 3318 | WR_AIINDLEN EQU ($-WR_AIIND) ;AN000; | ||
| 3319 | |||
| 3320 | WR_CIIND DB '>' ;AN000;check mark string indicator buff | ||
| 3321 | WR_CIINDLEN EQU ($-WR_CIIND) ;AN000; | ||
| 3322 | |||
| 3323 | ; | ||
| 3324 | ; Selection array structure | ||
| 3325 | ; | ||
| 3326 | WR_SELECT_NUM DW SCB_ACTIVEON ;AN000; | ||
| 3327 | DW SCB_SKIPON ;AN000; | ||
| 3328 | DW SCB_ACTIVEON ;AN000; | ||
| 3329 | DW SCB_SKIPON ;AN000; | ||
| 3330 | DW SCB_ACTIVEON ;AN000; | ||
| 3331 | DW SCB_SKIPON ;AN000; | ||
| 3332 | DW SCB_ACTIVEON ;AN000; | ||
| 3333 | DW SCB_SKIPON ;AN000; | ||
| 3334 | DW SCB_ACTIVEON ;AN000; | ||
| 3335 | DW SCB_SKIPON ;AN000; | ||
| 3336 | DW SCB_ACTIVEON ;AN000; | ||
| 3337 | |||
| 3338 | WR_SELECT DW SCB_ACTIVEON ;AN000; | ||
| 3339 | DW SCB_ACTIVEON ;AN000; | ||
| 3340 | DW SCB_ACTIVEON ;AN000; | ||
| 3341 | DW SCB_ACTIVEON ;AN000; | ||
| 3342 | DW SCB_ACTIVEON ;AN000; | ||
| 3343 | DW SCB_ACTIVEON ;AN000; | ||
| 3344 | DW SCB_ACTIVEON ;AN000; | ||
| 3345 | DW SCB_ACTIVEON ;AN000; | ||
| 3346 | DW SCB_ACTIVEON ;AN000; | ||
| 3347 | DW SCB_ACTIVEON ;AN000; | ||
| 3348 | DW SCB_ACTIVEON ;AN000; | ||
| 3349 | DW SCB_ACTIVEON ;AN000; | ||
| 3350 | WR_SELECT_MOD DW 10 DUP (0) ;AN000; | ||
| 3351 | |||
| 3352 | INCLUDE PANEL.INF ;AN000; | ||
| 3353 | |||
| 3354 | CODE ENDS ;AN000; | ||
| 3355 | END ;AN000; | ||
| 3356 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/SEL-PAN.ASM b/v4.0/src/SELECT/SEL-PAN.ASM new file mode 100644 index 0000000..7eef8fe --- /dev/null +++ b/v4.0/src/SELECT/SEL-PAN.ASM | |||
| @@ -0,0 +1,48 @@ | |||
| 1 | |||
| 2 | |||
| 3 | PAGE 55,132 ;AN000; | ||
| 4 | NAME SELPAN ;AN000; | ||
| 5 | TITLE SELPAN - Table of entry points of panels, scroll fields, color ;AN000; | ||
| 6 | SUBTTL sel-pan.asm ;AN000; | ||
| 7 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 8 | ; | ||
| 9 | ; SELPAN .ASM | ||
| 10 | ; | ||
| 11 | ; | ||
| 12 | ; Copyright 1988 Microsoft | ||
| 13 | ; | ||
| 14 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 15 | |||
| 16 | .alpha ; arrange segments alphabetically | ||
| 17 | |||
| 18 | EXTRN PCB_VECTOR:WORD ;AN000; | ||
| 19 | EXTRN NUM_PCB:ABS ;AN000; | ||
| 20 | EXTRN WR_SCBVEC:WORD ;AN000; | ||
| 21 | EXTRN NUM_SCB:ABS ;AN000; | ||
| 22 | EXTRN WR_CIS:WORD ;AN000; | ||
| 23 | EXTRN L_WR_CIS:ABS ;AN000; | ||
| 24 | EXTRN WR_CIS2:WORD ;AN000; | ||
| 25 | EXTRN L_WR_CIS2:ABS ;AN000; | ||
| 26 | ; | ||
| 27 | EXT_FILE STRUC ;AN000; | ||
| 28 | PCBS DW 0 ;AN000; | ||
| 29 | NPCBS DW 0 ;AN000; | ||
| 30 | SCBS DW 0 ;AN000; | ||
| 31 | NSCBS DW 0 ;AN000; | ||
| 32 | COLTBL DW 0 ;AN000; | ||
| 33 | NCOLTBL DW 0 ;AN000; | ||
| 34 | MONTBL DW 0 ;AN000; | ||
| 35 | NMONTBL DW 0 ;AN000; | ||
| 36 | EXT_FILE ENDS ;AN000; | ||
| 37 | ; | ||
| 38 | CODE SEGMENT PARA PUBLIC 'CODE' ;AN000; | ||
| 39 | DW PCB_VECTOR ;AN000; | ||
| 40 | DW NUM_PCB ;AN000; | ||
| 41 | DW WR_SCBVEC ;AN000; | ||
| 42 | DW NUM_SCB ;AN000; | ||
| 43 | DW WR_CIS2 ;AN000; | ||
| 44 | DW L_WR_CIS2 ;AN000; | ||
| 45 | DW WR_CIS2 ;AN000; | ||
| 46 | DW L_WR_CIS2 ;AN000; | ||
| 47 | CODE ENDS ;AN000; | ||
| 48 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/SEL-PAN.INC b/v4.0/src/SELECT/SEL-PAN.INC new file mode 100644 index 0000000..684993b --- /dev/null +++ b/v4.0/src/SELECT/SEL-PAN.INC | |||
| @@ -0,0 +1,307 @@ | |||
| 1 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2 | ; | ||
| 3 | ; | ||
| 4 | ; SEL-PAN.INC | ||
| 5 | ; | ||
| 6 | ; | ||
| 7 | FALSE = 0 | ||
| 8 | |||
| 9 | ; | ||
| 10 | ; Dialog Equates | ||
| 11 | ; | ||
| 12 | ; These values will eventually be defined by the dialog. | ||
| 13 | ; | ||
| 14 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 15 | .XLIST ;AN000; | ||
| 16 | LEFT_COL EQU 8 ;AN000; | ||
| 17 | SCR_CONT EQU 1 ;AN000;contextual helps | ||
| 18 | SCR_INDX EQU 2 ;AN000;indexed helps | ||
| 19 | SCR_MAIN EQU 3 ;AN000;main menu | ||
| 20 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 21 | ; | ||
| 22 | ; Help ID equates | ||
| 23 | ; | ||
| 24 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 25 | HCB_KEYS EQU 1 ;AN000;help on keys text | ||
| 26 | HCB_HELP EQU 2 ;AN000;help on help text | ||
| 27 | HCB_MAIN EQU 3 ;AN000;main menu help text | ||
| 28 | HCB_SAMP EQU 4 ;AN000;sample application help text | ||
| 29 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 30 | ; | ||
| 31 | ; Color index record equates | ||
| 32 | ; | ||
| 33 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 34 | WHITE_BLUE EQU 1 ;AN000; | ||
| 35 | BLACK_WHITE EQU 4 ;AN000; | ||
| 36 | WHITE_RED EQU 5 ;AN000; | ||
| 37 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 38 | ; | ||
| 39 | ; Color ID equates | ||
| 40 | ; | ||
| 41 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 42 | CLR_CLR EQU 1 ;AN000;shipped text mode color index | ||
| 43 | CLR_MON EQU 2 ;AN000;shipped monochrome color index | ||
| 44 | CLR_USE EQU 3 ;AN000;user color index | ||
| 45 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 46 | ; | ||
| 47 | ; Sound equates | ||
| 48 | ; | ||
| 49 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 50 | SND_DURA EQU 10000 ;AN000;duration of error beep | ||
| 51 | SND_FREQ EQU 440 ;AN000;frequency of error beep | ||
| 52 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 53 | ; | ||
| 54 | ; Size equates | ||
| 55 | ; | ||
| 56 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 57 | MAX_MEMPAR EQU 4000 ;AN000;size of buffer in 16 byte paraghp | ||
| 58 | MAX_RETKSZ EQU 512 ;AN000;max # of bytes in return key buff | ||
| 59 | MAX_HELPSZ EQU 5000 ;AN000;max # of bytes in help text buff | ||
| 60 | MAX_PANNUM EQU 98 ;AN000;max num of panels possible in mem | ||
| 61 | MAX_SCRNUM EQU 28 ;AN000;max num of scroll possible in mem | ||
| 62 | MAX_CHDQUE EQU 5 ;AN000;max # of child queues to save | ||
| 63 | MAX_PANQUE EQU 4 ;AN000;max # of panel queues to save | ||
| 64 | MAX_NUMCHD EQU 11 ;AN000;max # of parent panels queued | ||
| 65 | MAX_NUMPAN EQU 10 ;AN000;max # of child panels queued | ||
| 66 | MAX_CLRECD EQU 12 ;AN000;num of bytes per PCPANEL color rc | ||
| 67 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 68 | ; | ||
| 69 | ; Keystroke equates | ||
| 70 | ; | ||
| 71 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 72 | KEY_HELP EQU 3B00H ;AN000;F1=Help | ||
| 73 | KEY_SWIT EQU 3C00H ;AN000;F2=Switch | ||
| 74 | KEY_INDX EQU 3F00H ;AN000;F5=Index | ||
| 75 | KEY_KEYS EQU 4000H ;AN000;F7=Keys | ||
| 76 | KEY_SELT EQU 000DH ;AN000;Enter | ||
| 77 | KEY_QUIT EQU 001BH ;AN000;Esc=Quit | ||
| 78 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 79 | ; | ||
| 80 | ; PCPANWR equates | ||
| 81 | ; | ||
| 82 | ; | ||
| 83 | ; PCPANWR option bit equates (PWR_OPT1) | ||
| 84 | ; | ||
| 85 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 86 | PWR_WRITEONE EQU 0000000000000001B ;AN000;write pan specified by PWR_ID | ||
| 87 | PWR_WRITEALL EQU 0000000000000010B ;AN000;write all pans to specified file | ||
| 88 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 89 | ; | ||
| 90 | ; PCPANWR error bit equates (PWR_ERROR) | ||
| 91 | ; | ||
| 92 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 93 | PWR_BUFSIZE EQU 0000000000000001B ;AN000;buffer size is too small | ||
| 94 | PWR_NOPANELS EQU 0000000000000010B ;AN000;file does not contain panels | ||
| 95 | PWR_NOTCASFILE EQU 0000000000000100B ;AN000;CAS file obj list does not exist | ||
| 96 | PWR_PANELSFULL EQU 0000000000001000B ;AN000;panel vector is full | ||
| 97 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 98 | ; | ||
| 99 | ; PCPANEL equates | ||
| 100 | ; | ||
| 101 | ; | ||
| 102 | ; PCPANEL option bit equates (PM_OPT1) | ||
| 103 | ; | ||
| 104 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 105 | PM_RF EQU 0000000000000001B ;AN000;do not refresh display | ||
| 106 | PM_SRF EQU 0000000000000010B ;AN000;selective PVB refresh from LVB | ||
| 107 | PM_BK EQU 0000000000000100B ;AN000;panel break function active | ||
| 108 | PM_CL EQU 0000000000001000B ;AN000;initialize LVB to base char/attr | ||
| 109 | PM_DOA EQU 0000000000010000B ;AN000;display childs in active parent | ||
| 110 | PM_DOV EQU 0000000000100000B ;AN000;use child row, col, color overrid | ||
| 111 | PM_DOQ EQU 0000000001000000B ;AN000;disp all child in parent chd tabl | ||
| 112 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 113 | ; | ||
| 114 | ; PCPANEL error equates for (PM_ERROR) | ||
| 115 | ; | ||
| 116 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 117 | PM_PANPDQ EQU 0000000000000001B ;AN000;invalid parent PDQ or start num | ||
| 118 | PM_PCBVEC EQU 0000000000000010B ;AN000;invalid PCB vector entry found | ||
| 119 | PM_UNKNPANS EQU 0000000000000100B ;AN000;unknown panel source found | ||
| 120 | PM_CHDTAB EQU 0000000000001000B ;AN000;set error with child table | ||
| 121 | PM_COLORX EQU 0000000000010000B ;AN000;panel's color index out of range | ||
| 122 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 123 | ; | ||
| 124 | ; PCPANEL Parent and Child Display Queue option bit equates (PT_OPT) | ||
| 125 | ; | ||
| 126 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 127 | PT_BK EQU 0000000000000001B ;AN000;panel break on | ||
| 128 | PT_SRF EQU 0000000000000010B ;AN000;selective refresh of panel to PVB | ||
| 129 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 130 | ; | ||
| 131 | ; PCPANEL Panel Control Block option equates for individual panels (PCB_OPT1) | ||
| 132 | ; | ||
| 133 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 134 | PCB_CRE EQU 0000000000000001B ;AN000;Create panel from scratch | ||
| 135 | PCB_CMP EQU 0000000000000010B ;AN000;Use compress text form in memory | ||
| 136 | PCB_EXP EQU 0000000000000100B ;AN000;Use expanded text form in memory | ||
| 137 | PCB_MXP EQU 0000000000001000B ;AN000;Use mixed text/attr form in memoy | ||
| 138 | PCB_LB EQU 0000000000010000B ;AN000;Use logical border | ||
| 139 | PCB_ASZ EQU 0000000000100000B ;AN000;Allow sizing of panel | ||
| 140 | PCB_ASC EQU 0000000001000000B ;AN000;Allow scrolling of panel | ||
| 141 | PCB_LAB EQU 0000000010000000B ;AN000;Use the defined panel label | ||
| 142 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 143 | ; | ||
| 144 | ; PCPANEL Child information table option equates (CHILD_OPT) | ||
| 145 | ; | ||
| 146 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 147 | CHD_ABS EQU 0000000000000001B ;AN000;calc child pan pos from scr corne | ||
| 148 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 149 | ; | ||
| 150 | ; PCCLRWR equates | ||
| 151 | ; | ||
| 152 | ; PCCLRWR error bit equates (CWR_ERROR) | ||
| 153 | ; | ||
| 154 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 155 | CWR_BUFSIZE EQU 0000000000000001B ;AN000;buffer size is too small | ||
| 156 | CWR_NOCOLORS EQU 0000000000000010B ;AN000;file does not contain colors | ||
| 157 | CWR_NOTCASFILE EQU 0000000000000100B ;AN000;file object list does not exist | ||
| 158 | CWR_COLORSFULL EQU 0000000000001000B ;AN000;color vector is full | ||
| 159 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 160 | ; | ||
| 161 | ; PCSCRWR equates | ||
| 162 | ; | ||
| 163 | ; | ||
| 164 | ; PCSCRWR option bit equates (SWR_OPT1) | ||
| 165 | ; | ||
| 166 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 167 | SWR_WRITEONE EQU 0000000000000001B ;AN000;write pan specified by SWR_ID | ||
| 168 | SWR_WRITEALL EQU 0000000000000010B ;AN000;write all pans to specified file | ||
| 169 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 170 | ; | ||
| 171 | ; PCSCRWR error bit equates (SWR_ERROR) | ||
| 172 | ; | ||
| 173 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 174 | SWR_BUFSIZE EQU 0000000000000001B ;AN000;buffer size is too small | ||
| 175 | SWR_NOFIELDS EQU 0000000000000010B ;AN000;file does not contain fields | ||
| 176 | SWR_NOTCASFILE EQU 0000000000000100B ;AN000;file object list does not exist | ||
| 177 | SWR_FIELDSFULL EQU 0000000000001000B ;AN000;field vector is full | ||
| 178 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 179 | ; | ||
| 180 | ; PCSTRST equates | ||
| 181 | ; | ||
| 182 | ; PCSTRST equates | ||
| 183 | ; | ||
| 184 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 185 | SSC_TBSL EQU 0000000000000001B ;AN000;use two byte string length | ||
| 186 | SSC_PTSB EQU 0000000000000010B ;AN000;pointer points to string buffer | ||
| 187 | SSC_VTSAO EQU 0000000000000100B ;AN000;vector table is string addr only | ||
| 188 | SSC_VTASO EQU 0000000000001000B ;AN000;vector table addr is seg:offset | ||
| 189 | SSC_SLSB EQU 0000000000010000B ;AN000;string length is in string buffer | ||
| 190 | SSC_SBTC EQU 0000000000100000B ;AN000;string buffer has term. character | ||
| 191 | SSC_VTE EQU 1 ;AN000;error in vector table | ||
| 192 | SSC_SBE EQU 2 ;AN000;error in sting buffer | ||
| 193 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 194 | ; | ||
| 195 | ; PCSLCTP equates | ||
| 196 | ; | ||
| 197 | ; PCSLCTP Option word one (SCB_OPT1) | ||
| 198 | ; | ||
| 199 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 200 | SCB_UC EQU 0000000000000001B ;AN000;upper case option | ||
| 201 | SCB_WRAP EQU 0000000000000010B ;AN000;wrap option | ||
| 202 | SCB_FRBF EQU 0000000000000100B ;AN000;force return before first option | ||
| 203 | SCB_FRAL EQU 0000000000001000B ;AN000;force return after last option | ||
| 204 | SCB_LL EQU 0000000000010000B ;AN000;lock line | ||
| 205 | SCB_UKS EQU 0000000000100000B ;AN000;use keystroke | ||
| 206 | SCB_RD EQU 0000000001000000B ;AN000;return after display option | ||
| 207 | SCB_RUK EQU 0000000010000000B ;AN000;return unused keys option | ||
| 208 | SCB_UI EQU 0000000100000000B ;AN000;use index option | ||
| 209 | SCB_TRN EQU 0000001000000000B ;AN000;translate character | ||
| 210 | SCB_MON EQU 0000010000000000B ;AN000;convert to upper case monocasing | ||
| 211 | SCB_DBCS EQU 0000100000000000B ;AN000;check for double byte chars | ||
| 212 | SCB_TBL EQU 0001000000000000B ;AN000;use given DBCS range table | ||
| 213 | SCB_DCHECK EQU 0010000000000000B ;AN000;display check mark characters | ||
| 214 | SCB_DACTIVE EQU 0100000000000000B ;AN000;display active string indicators | ||
| 215 | SCB_DPOINT EQU 1000000000000000B ;AN000;display selection pointer string | ||
| 216 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 217 | ; | ||
| 218 | ; PCSLCTP Option word two (SCB_OPT2) | ||
| 219 | ; | ||
| 220 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 221 | SCB_CS EQU 0000000000000001B ;AN000;clear screen on entry option | ||
| 222 | SCB_ROTN EQU 0000000000000010B ;AN000;reset option to normal on return | ||
| 223 | SCB_UET EQU 0000000000000100B ;AN000;use existing text option | ||
| 224 | SCB_CFO EQU 0000000000001000B ;AN000;cursor follows option | ||
| 225 | SCB_LCOX EQU 0000000000010000B ;AN000;leave cursor on exit | ||
| 226 | SCB_IPAGE EQU 0000000000100000B ;AN000;instant paging | ||
| 227 | SCB_PM1 EQU 0000000001000000B ;AN000;paging is minus one line | ||
| 228 | SCB_UIND EQU 0000000010000000B ;AN000;display up, dn, lf, rg indicators | ||
| 229 | SCB_UNCA EQU 0000000100000000B ;AN000;use normal color array | ||
| 230 | SCB_DYN EQU 0000001000000000B ;AN000;option array is dynamicly created | ||
| 231 | SCB_LANDR EQU 0000010000000000B ;AN000;left and right scrolling active | ||
| 232 | SCB_CPHY EQU 0000100000000000B ;AN000;color array is physical attributs | ||
| 233 | SCB_NUML EQU 0001000000000000B ;AN000;generate num list in opt strings | ||
| 234 | SCB_SKIP EQU 0010000000000000B ;AN000;skip inactive option strings | ||
| 235 | SCB_SHIGH EQU 0100000000000000B ;AN000;highlight the selected opt strgs | ||
| 236 | SCB_AHIGH EQU 1000000000000000B ;AN000;highlight the active option strgs | ||
| 237 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 238 | ; | ||
| 239 | ; PCSLCTP Option word three (SCB_OPT3) | ||
| 240 | ; | ||
| 241 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 242 | SCB_SELACT EQU 0000000000000001B ;AN000;allow selection of inactive elem | ||
| 243 | SCB_SELEXC EQU 0000000000000010B ;AN000;exclusive selection of one elemet | ||
| 244 | SCB_EXCSING EQU 0000000000000100B ;AN000;one element is always selected | ||
| 245 | SCB_NUMUIND EQU 0000000000001000B ;AN000;display line number count | ||
| 246 | SCB_CHIGH EQU 0000000000010000B ;AN000;hilight cursored and selected stg | ||
| 247 | SCB_NUMS EQU 0000000000100000B ;AN000;auto 0-9 number selection | ||
| 248 | SCB_FINDE EQU 0000000001000000B ;AN000;auto character search | ||
| 249 | SCB_RELUIND EQU 0000000010000000B ;AN000;rel row/col used w/dirct indicato | ||
| 250 | SCB_RELSCR EQU 0000000100000000B ;AN000;rel row/col used w/scroll field | ||
| 251 | SCB_LVBOVR EQU 0000001000000000B ;AN000;use video buffer seg:off override | ||
| 252 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 253 | ; | ||
| 254 | ; PCSLCTP Select Array Option (SCB_SELSEG:SCB_SELOFF) | ||
| 255 | ; | ||
| 256 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 257 | SCB_SELECTON EQU 0000000000000001B ;AN000;element selected | ||
| 258 | SCB_ACTIVEON EQU 0000000000000010B ;AN000;element active | ||
| 259 | SCB_SKIPON EQU 0000000000000100B ;AN000;element should be skipped | ||
| 260 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 261 | ; | ||
| 262 | ; PCHLPWR equates | ||
| 263 | ; | ||
| 264 | ; PCHLPWR option bit equates (HWR_OPT1) | ||
| 265 | ; | ||
| 266 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 267 | HWR_REPLACE EQU 0000000000000001B ;AN000;Replace existing help text/topic | ||
| 268 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 269 | ; | ||
| 270 | ; PCHLPWR error bit equates (HWR_ERROR) | ||
| 271 | ; | ||
| 272 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 273 | HWR_BUFSIZE EQU 0000000000000001B ;AN000;buffer size is too small | ||
| 274 | HWR_HELPUSED EQU 0000000000000010B ;AN000;help ID already in use | ||
| 275 | HWR_INVALDID EQU 0000000000000100B ;AN000;help ID is out of range | ||
| 276 | HWR_NOHLPOBJ EQU 0000000000001000B ;AN000;no help object | ||
| 277 | HWR_NOTCASFILE EQU 0000000000010000B ;AN000;not a valid cas file | ||
| 278 | HWR_HELPSFULL EQU 0000000000100000B ;AN000;help vector is full | ||
| 279 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 280 | ; | ||
| 281 | ; Internal equates | ||
| 282 | ; | ||
| 283 | ; internal equates | ||
| 284 | ; | ||
| 285 | ;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 286 | UPARROW EQU 72 ;AN000;up arrow | ||
| 287 | DNARROW EQU 80 ;AN000;down arrow | ||
| 288 | LFARROW EQU 75 ;AN000;left arrow | ||
| 289 | RTARROW EQU 77 ;AN000;right arrow | ||
| 290 | PGUP EQU 73 ;AN000; | ||
| 291 | PGDN EQU 81 ;AN000; | ||
| 292 | ESCAPE EQU 27 ;AN000; | ||
| 293 | ENTER EQU 13 ;AN000; | ||
| 294 | SPACE EQU 32 ;AN000; | ||
| 295 | F1 EQU 59 ;AN000; | ||
| 296 | F2 EQU 60 ;AN000; | ||
| 297 | F3 EQU 61 ;AN000; | ||
| 298 | F4 EQU 62 ;AN000; | ||
| 299 | F5 EQU 63 ;AN000; | ||
| 300 | F6 EQU 64 ;AN000; | ||
| 301 | F7 EQU 65 ;AN000; | ||
| 302 | F8 EQU 66 ;AN000; | ||
| 303 | F9 EQU 67 ;AN000; | ||
| 304 | F10 EQU 68 ;AN000; | ||
| 305 | .LIST ;AN000; | ||
| 306 | ;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 307 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/SEL-PAN.LNK b/v4.0/src/SELECT/SEL-PAN.LNK new file mode 100644 index 0000000..2864fee --- /dev/null +++ b/v4.0/src/SELECT/SEL-PAN.LNK | |||
| @@ -0,0 +1,5 @@ | |||
| 1 | SEL-PAN+ | ||
| 2 | PANELS+ | ||
| 3 | COLORS+ | ||
| 4 | SCROLL,,, | ||
| 5 | CASSFAR.LIB; | ||
diff --git a/v4.0/src/SELECT/SELCHILD.ASM b/v4.0/src/SELECT/SELCHILD.ASM new file mode 100644 index 0000000..139fcf3 --- /dev/null +++ b/v4.0/src/SELECT/SELCHILD.ASM | |||
| @@ -0,0 +1,62 @@ | |||
| 1 | PAGE 55,132 ;AN000; | ||
| 2 | NAME SELCHILD ;AN000; | ||
| 3 | TITLE SELCHILD - CHILD processing for SELECT.EXE;AN000; | ||
| 4 | SUBTTL selchild.asm ;AN000; | ||
| 5 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 6 | ; | ||
| 7 | ; HANDLE_CHILDREN | ||
| 8 | ; | ||
| 9 | ; Entry: | ||
| 10 | ; | ||
| 11 | ; | ||
| 12 | ; | ||
| 13 | ; Exit: | ||
| 14 | ; | ||
| 15 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 16 | EXTRN QM_ID:WORD ;AN000; | ||
| 17 | EXTRN QM_OPT1:WORD ;AN000; | ||
| 18 | EXTRN QM_ACTIVEPAN:WORD ;AN000; | ||
| 19 | ; | ||
| 20 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000;segment for far routine | ||
| 21 | ASSUME CS:SELECT ;AN000; | ||
| 22 | ; | ||
| 23 | EXTRN GET_PCB:NEAR ;AN000; | ||
| 24 | EXTRN PCDISPQ_CALL:NEAR ;AN000; | ||
| 25 | ; | ||
| 26 | INCLUDE PCEQUATE.INC ;AN000; | ||
| 27 | INCLUDE CASTRUC.INC ;AN000; | ||
| 28 | INCLUDE MACROS.INC ;AN000; | ||
| 29 | ; | ||
| 30 | PUBLIC HANDLE_CHILDREN ;AN000; | ||
| 31 | HANDLE_CHILDREN PROC ;AN000; | ||
| 32 | PUSHH <AX,BX,CX,DI,ES> ;AN000; | ||
| 33 | MOV QM_OPT1,QM_PUSHCHD ;AN000; push child panels | ||
| 34 | ; | ||
| 35 | MOV BX,QM_ACTIVEPAN ;AN000; | ||
| 36 | CALL GET_PCB ;AN000; get panel control block | ||
| 37 | ; for active parent panel | ||
| 38 | MOV CX,ES:[DI]+PCB_CHILDNUM ;AN000; | ||
| 39 | OR CX,CX ;AN000; | ||
| 40 | JZ HC_1 ;AN000; | ||
| 41 | ; | ||
| 42 | PUSH ES:[DI]+PCB_CHILDSEG ;AN000; get address of first child panel | ||
| 43 | PUSH ES:[DI]+PCB_CHILDOFF ;AN000; | ||
| 44 | POP DI ;AN000; | ||
| 45 | POP ES ;AN000; | ||
| 46 | ; | ||
| 47 | HC_0: MOV AX,ES:[DI]+CHD_PCB ;AN000; | ||
| 48 | MOV QM_ID,AX ;AN000; | ||
| 49 | PUSHH <ES,DI> ;AN000; | ||
| 50 | CALL PCDISPQ_CALL ;AN000; push next child on the stack | ||
| 51 | POPP <DI,ES> ;AN000; | ||
| 52 | ; | ||
| 53 | ADD DI,TYPE CHD_PB ;AN000; get next child control block | ||
| 54 | LOOP HC_0 ;AN000; | ||
| 55 | ; | ||
| 56 | HC_1: POPP <ES,DI,CX,BX,AX> ;AN000; | ||
| 57 | RET ;AN000; | ||
| 58 | HANDLE_CHILDREN ENDP ;AN000; | ||
| 59 | SELECT ENDS ;AN000; | ||
| 60 | END ;AN000; | ||
| 61 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 62 | |||
diff --git a/v4.0/src/SELECT/SELECT.INC b/v4.0/src/SELECT/SELECT.INC new file mode 100644 index 0000000..855278b --- /dev/null +++ b/v4.0/src/SELECT/SELECT.INC | |||
| @@ -0,0 +1,54 @@ | |||
| 1 | ;-----------------------------------------------------------------------------+ | ||
| 2 | ; SELECT.INC : | ||
| 3 | ; : | ||
| 4 | ; : | ||
| 5 | ; Dialog Equates : | ||
| 6 | ; : | ||
| 7 | ; These values will eventually be defined by the dialog manager : | ||
| 8 | ; : | ||
| 9 | ;-----------------------------------------------------------------------------+ | ||
| 10 | ; | ||
| 11 | ; Help ID equates | ||
| 12 | ; | ||
| 13 | HCB_KEYS EQU 1 ;AN000;help on keys text | ||
| 14 | HCB_HELP EQU 2 ;AN000;help on help text | ||
| 15 | ; | ||
| 16 | ; Color ID equates | ||
| 17 | ; | ||
| 18 | CLR_CLR EQU 1 ;AN000;shipped text mode color index | ||
| 19 | CLR_MON EQU 2 ;AN000;shipped monochrome color index | ||
| 20 | ; | ||
| 21 | ; Sound equates | ||
| 22 | ; | ||
| 23 | SND_DURA EQU 40000 ;AN000;duration of error beep | ||
| 24 | SND_FREQ EQU 440 ;AN000;frequency of error beep | ||
| 25 | ; | ||
| 26 | ; Size equates | ||
| 27 | ; | ||
| 28 | MAX_MEMPAR EQU 0F7FH ;AC091;SEH reduce area to 62K to help 256K mem problem;AN000;size of buffer in 16 byte paraghp (64KB) | ||
| 29 | MAX_MEMLVB EQU 012BH ;AN000;size of buffer in 16 byte paraghp (4240 BYTES) | ||
| 30 | MAX_RETKSZ EQU 50 ;AN000;max # of bytes in return key buff | ||
| 31 | MAX_HELPSZ EQU 2000H ;AN000;max # of bytes in help text buff (8KB) | ||
| 32 | MAX_PANNUM EQU 98 ;AC111;JW ;max num of panels possible in mem | ||
| 33 | MAX_SCRNUM EQU 28 ;AC111;JW ;max num of scroll possible in mem | ||
| 34 | MAX_CHDQUE EQU 2 ;AN000;max # of child queues to save | ||
| 35 | MAX_PANQUE EQU 5 ;AN000;max # of panel queues to save | ||
| 36 | MAX_NUMCHD EQU 5 ;AN000;max # of parent panels queued | ||
| 37 | MAX_NUMPAN EQU 5 ;AN000;max # of child panels queued | ||
| 38 | MAX_CLRECD EQU 12 ;AN000;num of bytes per PCPANEL color rc | ||
| 39 | ; | ||
| 40 | ; Keystroke equates | ||
| 41 | ; | ||
| 42 | KEY_HELP EQU 3B00H ;AN000;F1=Help | ||
| 43 | KEY_SWIT EQU 3C00H ;AN000;F2=Switch | ||
| 44 | KEY_INDX EQU 3F00H ;AN000;F5=Index | ||
| 45 | KEY_KEYS EQU 4300H ;AN000;F9=Keys | ||
| 46 | KEY_SELT EQU 000DH ;AN000;Enter | ||
| 47 | KEY_QUIT EQU 001BH ;AN000;Esc=Quit | ||
| 48 | ; | ||
| 49 | ; Miscellaneous equates | ||
| 50 | ; | ||
| 51 | VECSEGLEN EQU 2 ;AN000;vector segment length | ||
| 52 | VECOFFLEN EQU 2 ;AN000;vector offset length | ||
| 53 | |||
| 54 | INCLUDE PCEQUATE.INC ;AN000; | ||
diff --git a/v4.0/src/SELECT/SELECT.LNK b/v4.0/src/SELECT/SELECT.LNK new file mode 100644 index 0000000..1736d28 --- /dev/null +++ b/v4.0/src/SELECT/SELECT.LNK | |||
| @@ -0,0 +1,36 @@ | |||
| 1 | SELECT0+ | ||
| 2 | SELECT1+ | ||
| 3 | SELECT2+ | ||
| 4 | SELECT2A+ | ||
| 5 | SELECT3+ | ||
| 6 | SELECT4+ | ||
| 7 | SELECT5+ | ||
| 8 | SELECT5A+ | ||
| 9 | SELECT6+ | ||
| 10 | SELECT7+ | ||
| 11 | SELECT8+ | ||
| 12 | SELECT9+ | ||
| 13 | ROUTINE2+ | ||
| 14 | GEN_COMS+ | ||
| 15 | ROUTINES+ | ||
| 16 | INTVEC+ | ||
| 17 | CKDISP+ | ||
| 18 | SCN_PARM+ | ||
| 19 | PRN_DEF+ | ||
| 20 | VAR+ | ||
| 21 | CASERVIC+ | ||
| 22 | INPUT+ | ||
| 23 | INITMEM+ | ||
| 24 | MPARSE+ | ||
| 25 | MOD_COPY+ | ||
| 26 | S_DISPLY+ | ||
| 27 | BRIDGE+ | ||
| 28 | ASM2C+ | ||
| 29 | GET_STAT+ | ||
| 30 | GLOBAL+ | ||
| 31 | INT13+ | ||
| 32 | BOOTREC, | ||
| 33 | SELECT.EXE /EXEPACK | ||
| 34 | SELECT/MAP | ||
| 35 | SERVICES.LIB+ | ||
| 36 | CASSFAR.LIB; | ||
diff --git a/v4.0/src/SELECT/SELECT.MAK b/v4.0/src/SELECT/SELECT.MAK new file mode 100644 index 0000000..84e9cd5 --- /dev/null +++ b/v4.0/src/SELECT/SELECT.MAK | |||
| @@ -0,0 +1,287 @@ | |||
| 1 | COM=..\COMMON | ||
| 2 | MSG=..\MESSAGES | ||
| 3 | country=usa | ||
| 4 | |||
| 5 | # | ||
| 6 | # Make file for SELECT.EXE, SELECT.DAT, SELECT.COM, SELECT.HLP | ||
| 7 | # | ||
| 8 | |||
| 9 | # | ||
| 10 | # Build CASSFAR.LIB | ||
| 11 | # | ||
| 12 | |||
| 13 | DUMMY.OUT: SELECT.MAK | ||
| 14 | CD ..\CASSFAR | ||
| 15 | MAKE CASSFAR.MAK | ||
| 16 | CD ..\SELECT | ||
| 17 | |||
| 18 | # | ||
| 19 | # Make SELECT.EXE | ||
| 20 | # | ||
| 21 | |||
| 22 | SELECT.CTL: SELECT.SKL $(MSG)\$(COUNTRY).MSG | ||
| 23 | MSGBUILD SELECT.SKL | ||
| 24 | |||
| 25 | |||
| 26 | SELECT0.OBJ: SELECT0.ASM $(COM)\STRUC.INC $(COM)\SYSMSG.INC CASEXTRN.INC \ | ||
| 27 | PANEL.MAC SELECT.INC PAN-LIST.INC CASTRUC.INC MACROS.INC \ | ||
| 28 | MACROS2.INC MACROS3.INC MACROS4.INC MACROS5.INC MACROS6.INC \ | ||
| 29 | MACROS7.INC MAC_EQU.INC EXT.INC VARSTRUC.INC ROUT_EXT.INC \ | ||
| 30 | SELECT.CTL SELECT.MAK | ||
| 31 | ASM87 SELECT0 -b1 | ||
| 32 | |||
| 33 | SELECT1.OBJ: SELECT1.ASM $(COM)\STRUC.INC $(COM)\SYSMSG.INC CASEXTRN.INC \ | ||
| 34 | PANEL.MAC SELECT.INC PAN-LIST.INC CASTRUC.INC MACROS.INC \ | ||
| 35 | MACROS2.INC MACROS3.INC MACROS4.INC MACROS5.INC MACROS6.INC \ | ||
| 36 | MACROS7.INC MAC_EQU.INC EXT.INC VARSTRUC.INC ROUT_EXT.INC \ | ||
| 37 | SELECT.MAK | ||
| 38 | ASM87 SELECT1 -b1 | ||
| 39 | |||
| 40 | SELECT2.OBJ: SELECT2.ASM $(COM)\STRUC.INC $(COM)\SYSMSG.INC CASEXTRN.INC \ | ||
| 41 | PANEL.MAC SELECT.INC PAN-LIST.INC CASTRUC.INC MACROS.INC \ | ||
| 42 | MACROS2.INC MACROS3.INC MACROS4.INC MACROS5.INC MACROS6.INC \ | ||
| 43 | MACROS7.INC MAC_EQU.INC EXT.INC VARSTRUC.INC ROUT_EXT.INC \ | ||
| 44 | SELECT.MAK | ||
| 45 | ASM87 SELECT2 -b1 | ||
| 46 | |||
| 47 | SELECT2A.OBJ: SELECT2A.ASM $(COM)\STRUC.INC $(COM)\SYSMSG.INC CASEXTRN.INC \ | ||
| 48 | PANEL.MAC SELECT.INC PAN-LIST.INC CASTRUC.INC MACROS.INC \ | ||
| 49 | MACROS2.INC MACROS3.INC MACROS4.INC MACROS5.INC MACROS6.INC \ | ||
| 50 | MACROS7.INC MAC_EQU.INC EXT.INC VARSTRUC.INC ROUT_EXT.INC \ | ||
| 51 | SELECT.MAK | ||
| 52 | ASM87 SELECT2A -b1 | ||
| 53 | |||
| 54 | SELECT3.OBJ: SELECT3.ASM $(COM)\STRUC.INC $(COM)\SYSMSG.INC CASEXTRN.INC \ | ||
| 55 | PANEL.MAC SELECT.INC PAN-LIST.INC CASTRUC.INC MACROS.INC \ | ||
| 56 | MACROS2.INC MACROS3.INC MACROS4.INC MACROS5.INC MACROS6.INC \ | ||
| 57 | MACROS7.INC MAC_EQU.INC EXT.INC VARSTRUC.INC ROUT_EXT.INC \ | ||
| 58 | SELECT.MAK | ||
| 59 | ASM87 SELECT3 -b1 | ||
| 60 | |||
| 61 | SELECT4.OBJ: SELECT4.ASM $(COM)\STRUC.INC $(COM)\SYSMSG.INC CASEXTRN.INC \ | ||
| 62 | PANEL.MAC SELECT.INC PAN-LIST.INC CASTRUC.INC MACROS.INC \ | ||
| 63 | MACROS2.INC MACROS3.INC MACROS4.INC MACROS5.INC MACROS6.INC \ | ||
| 64 | MACROS7.INC MAC_EQU.INC EXT.INC VARSTRUC.INC ROUT_EXT.INC \ | ||
| 65 | SELECT.MAK | ||
| 66 | ASM87 SELECT4 -b1 | ||
| 67 | |||
| 68 | SELECT5.OBJ: SELECT5.ASM $(COM)\STRUC.INC $(COM)\SYSMSG.INC CASEXTRN.INC \ | ||
| 69 | PANEL.MAC SELECT.INC PAN-LIST.INC CASTRUC.INC MACROS.INC \ | ||
| 70 | MACROS2.INC MACROS3.INC MACROS4.INC MACROS5.INC MACROS6.INC \ | ||
| 71 | MACROS7.INC MAC_EQU.INC EXT.INC VARSTRUC.INC ROUT_EXT.INC \ | ||
| 72 | SELECT.MAK | ||
| 73 | ASM87 SELECT5 -b1 | ||
| 74 | |||
| 75 | SELECT5A.OBJ: SELECT5A.ASM $(COM)\STRUC.INC $(COM)\SYSMSG.INC CASEXTRN.INC \ | ||
| 76 | PANEL.MAC SELECT.INC PAN-LIST.INC CASTRUC.INC MACROS.INC \ | ||
| 77 | MACROS2.INC MACROS3.INC MACROS4.INC MACROS5.INC MACROS6.INC \ | ||
| 78 | MACROS7.INC MAC_EQU.INC EXT.INC VARSTRUC.INC ROUT_EXT.INC \ | ||
| 79 | SELECT.MAK | ||
| 80 | ASM87 SELECT5A -b1 | ||
| 81 | |||
| 82 | SELECT6.OBJ: SELECT6.ASM $(COM)\STRUC.INC $(COM)\SYSMSG.INC CASEXTRN.INC \ | ||
| 83 | PANEL.MAC SELECT.INC PAN-LIST.INC CASTRUC.INC MACROS.INC \ | ||
| 84 | MACROS2.INC MACROS3.INC MACROS4.INC MACROS5.INC MACROS6.INC \ | ||
| 85 | MACROS7.INC MAC_EQU.INC EXT.INC VARSTRUC.INC ROUT_EXT.INC \ | ||
| 86 | SELECT.MAK | ||
| 87 | ASM87 SELECT6 -b1 | ||
| 88 | |||
| 89 | SELECT7.OBJ: SELECT7.ASM $(COM)\STRUC.INC $(COM)\SYSMSG.INC CASEXTRN.INC \ | ||
| 90 | PANEL.MAC SELECT.INC PAN-LIST.INC CASTRUC.INC MACROS.INC \ | ||
| 91 | MACROS2.INC MACROS3.INC MACROS4.INC MACROS5.INC MACROS6.INC \ | ||
| 92 | MACROS7.INC MAC_EQU.INC EXT.INC VARSTRUC.INC ROUT_EXT.INC \ | ||
| 93 | SELECT.MAK | ||
| 94 | ASM87 SELECT7 -b1 | ||
| 95 | |||
| 96 | SELECT8.OBJ: SELECT8.ASM $(COM)\STRUC.INC $(COM)\SYSMSG.INC CASEXTRN.INC \ | ||
| 97 | PANEL.MAC SELECT.INC PAN-LIST.INC CASTRUC.INC MACROS.INC \ | ||
| 98 | MACROS2.INC MACROS3.INC MACROS4.INC MACROS5.INC MACROS6.INC \ | ||
| 99 | MACROS7.INC MAC_EQU.INC EXT.INC VARSTRUC.INC ROUT_EXT.INC \ | ||
| 100 | SELECT.MAK | ||
| 101 | ASM87 SELECT8 -b1 | ||
| 102 | |||
| 103 | SELECT9.OBJ: SELECT9.ASM $(COM)\STRUC.INC $(COM)\SYSMSG.INC CASEXTRN.INC \ | ||
| 104 | PANEL.MAC SELECT.INC PAN-LIST.INC CASTRUC.INC MACROS.INC \ | ||
| 105 | MACROS2.INC MACROS3.INC MACROS4.INC MACROS5.INC MACROS6.INC \ | ||
| 106 | MACROS7.INC MAC_EQU.INC EXT.INC VARSTRUC.INC ROUT_EXT.INC \ | ||
| 107 | SELECT.MAK | ||
| 108 | ASM87 SELECT9 -b1 | ||
| 109 | |||
| 110 | GEN_COMS.OBJ: GEN_COMS.ASM $(COM)\STRUC.INC $(COM)\SYSMSG.INC CASEXTRN.INC \ | ||
| 111 | PANEL.MAC SELECT.INC PAN-LIST.INC CASTRUC.INC MACROS.INC \ | ||
| 112 | MACROS2.INC MACROS3.INC MACROS4.INC MACROS5.INC MACROS6.INC \ | ||
| 113 | MACROS7.INC MAC_EQU.INC EXT.INC VARSTRUC.INC ROUT_EXT.INC \ | ||
| 114 | SELECT.MAK | ||
| 115 | ASM87 GEN_COMS -b1 | ||
| 116 | |||
| 117 | MPARSE.OBJ: MPARSE.ASM $(COM)\PARSE.ASM SELECT.MAK | ||
| 118 | ASM87 MPARSE -b1 | ||
| 119 | |||
| 120 | INITMEM.OBJ: INITMEM.ASM $(COM)\STRUC.INC MACROS.INC MACROS2.INC MACROS3.INC \ | ||
| 121 | MACROS4.INC MACROS5.INC MACROS6.INC MACROS7.INC SELECT.MAK | ||
| 122 | ASM87 INITMEM -b1 | ||
| 123 | |||
| 124 | INPUT.OBJ: INPUT.ASM PCEQUATE.INC SELECT.MAK | ||
| 125 | ASM87 INPUT -b1 | ||
| 126 | |||
| 127 | ONEDRIVE.OBJ: ONEDRIVE.ASM SELECT.MAK | ||
| 128 | ASM87 ONEDRIVE -b1 | ||
| 129 | |||
| 130 | ROUTINES.OBJ: ROUTINES.ASM $(COM)\STRUC.INC MAC_EQU.INC VARSTRUC.INC EXT.INC \ | ||
| 131 | MACROS.INC MACROS2.INC MACROS3.INC MACROS4.INC MACROS5.INC \ | ||
| 132 | MACROS6.INC MACROS7.INC SELECT.MAK | ||
| 133 | ASM87 ROUTINES -b1 | ||
| 134 | |||
| 135 | ROUTINE2.OBJ: ROUTINE2.ASM $(COM)\STRUC.INC MAC_EQU.INC EXT.INC VARSTRUC.INC \ | ||
| 136 | MACROS.INC MACROS2.INC MACROS3.INC MACROS4.INC MACROS5.INC \ | ||
| 137 | MACROS6.INC MACROS7.INC SELECT.MAK | ||
| 138 | ASM87 ROUTINE2 -b1 | ||
| 139 | |||
| 140 | VAR.OBJ: VAR.ASM $(COM)\SYSMSG.INC SEL_FILE.INC VARSTRUC.INC SELECT.MAK | ||
| 141 | ASM87 VAR -b1 | ||
| 142 | |||
| 143 | PRN_DEF.OBJ: PRN_DEF.ASM $(COM)\STRUC.INC MACROS.INC MACROS2.INC MACROS3.INC \ | ||
| 144 | MACROS4.INC MACROS5.INC MACROS6.INC MACROS7.INC SELECT.MAK | ||
| 145 | ASM87 PRN_DEF -b1 | ||
| 146 | |||
| 147 | SCN_PARM.OBJ: SCN_PARM.ASM $(COM)\STRUC.INC EXT.INC MACROS.INC MACROS2.INC \ | ||
| 148 | MACROS3.INC MACROS4.INC MACROS5.INC MACROS6.INC MACROS7.INC \ | ||
| 149 | SELECT.MAK | ||
| 150 | ASM87 SCN_PARM -b1 | ||
| 151 | |||
| 152 | S_DISPLY.OBJ: S_DISPLY.ASM $(COM)\STRUC.INC SELECT.MAK | ||
| 153 | ASM87 S_DISPLY -b1 | ||
| 154 | |||
| 155 | MOD_COPY.OBJ: MOD_COPY.ASM $(COM)\STRUC.INC DOS.EQU XCOPY.EQU DOSFILES.INC \ | ||
| 156 | MACROS.INC MACROS2.INC MACROS3.INC MACROS4.INC MACROS5.INC \ | ||
| 157 | MACROS6.INC MACROS7.INC SELECT.MAK | ||
| 158 | ASM87 MOD_COPY -b1 | ||
| 159 | |||
| 160 | BRIDGE.OBJ: BRIDGE.ASM CASVAR.INC CASRN.INC SELECT.MAK | ||
| 161 | ASM87 BRIDGE -b1 | ||
| 162 | |||
| 163 | CASERVIC.OBJ: CASERVIC.ASM CASVAR.INC CASRN.INC PAN-LIST.INC SELECT.INC \ | ||
| 164 | CASTRUC.INC DATA.MAC PANEL.MAC MACROS.INC SELECT.MAK | ||
| 165 | ASM87 CASERVIC -b1 | ||
| 166 | |||
| 167 | CKDISP.OBJ: CKDISP.ASM $(COM)\STRUC.INC SELECT.MAK | ||
| 168 | ASM87 CKDISP -b1 | ||
| 169 | |||
| 170 | INTVEC.OBJ: INTVEC.ASM $(COM)\STRUC.INC MAC_EQU.INC PAN-LIST.INC \ | ||
| 171 | PANEL.MAC MACROS.INC VARSTRUC.INC EXT.INC CASEXTRN.INC \ | ||
| 172 | SELECT.MAK | ||
| 173 | ASM87 INTVEC -b1 | ||
| 174 | |||
| 175 | ASM2C.OBJ : ASM2C.ASM SELECT.MAK | ||
| 176 | ASM87 ASM2C -b1 | ||
| 177 | |||
| 178 | GET_STAT.OBJ : GET_STAT.C SELECT.MAK | ||
| 179 | CCOMP GET_STAT.C /AS /Od /Zep /DLINT_ARGS | ||
| 180 | |||
| 181 | INT13.OBJ : INT13.C SELECT.MAK | ||
| 182 | CCOMP INT13.C /AS /Od /Zep /DLINT_ARGS | ||
| 183 | |||
| 184 | GLOBAL.OBJ : GLOBAL.C SELECT.MAK | ||
| 185 | CCOMP GLOBAL.C /AS /Od /Zep /DLINT_ARGS | ||
| 186 | |||
| 187 | BOOTREC.OBJ : ..\Fdisk\BOOTREC.ASM ..\Fdisk\FDBOOT.INC SELECT.MAK | ||
| 188 | Copy ..\FDISK\BOOTREC.ASM BOOTREC.ASM | ||
| 189 | Copy ..\FDISK\FDBOOT.INC FDBOOT.INC | ||
| 190 | ASM87 BOOTREC -b1 | ||
| 191 | Del BOOTREC.asm | ||
| 192 | Del FDBOOT.INC | ||
| 193 | |||
| 194 | SELQUIT.OBJ : SELQUIT.ASM PANEL.MAC PCEQUATE.INC PAN-LIST.INC CASTRUC.INC \ | ||
| 195 | EXT.INC $(COM)\STRUC.INC MACROS.INC MACROS2.INC MACROS3.INC \ | ||
| 196 | MACROS4.INC MACROS5.INC MACROS6.INC MACROS7.INC SELECT.MAK | ||
| 197 | ASM87 SELQUIT -b1 | ||
| 198 | |||
| 199 | SELCHILD.OBJ : SELCHILD.ASM PCEQUATE.INC CASTRUC.INC MACROS.INC MACROS2.INC \ | ||
| 200 | MACROS3.INC MACROS4.INC MACROS5.INC MACROS6.INC MACROS7.INC \ | ||
| 201 | SELECT.MAK | ||
| 202 | ASM87 SELCHILD -b1 | ||
| 203 | |||
| 204 | SERVICES.OBJ : SERVICES.ASM PCEQUATE.INC CASTRUC.INC CASVAR.INC MACROS.INC \ | ||
| 205 | MACROS2.INC MACROS3.INC MACROS4.INC MACROS5.INC MACROS6.INC \ | ||
| 206 | MACROS7.INC SELECT.MAK | ||
| 207 | ASM87 SERVICES -b1 | ||
| 208 | |||
| 209 | GET_HELP.OBJ : GET_HELP.ASM SELECT.MAK | ||
| 210 | ASM87 GET_HELP -b1 | ||
| 211 | |||
| 212 | SELSERV.OBJ : SELSERV.ASM SELECT.MAK | ||
| 213 | ASM87 SELSERV -b1 | ||
| 214 | |||
| 215 | SERVICES.LIB : SELQUIT.OBJ SELCHILD.OBJ SERVICES.OBJ GET_HELP.OBJ SELSERV.OBJ \ | ||
| 216 | SELECT.MAK | ||
| 217 | LIB SERVICES.LIB -+ SELQUIT; | ||
| 218 | LIB SERVICES.LIB -+ SELCHILD; | ||
| 219 | LIB SERVICES.LIB -+ SERVICES; | ||
| 220 | LIB SERVICES.LIB -+ GET_HELP; | ||
| 221 | LIB SERVICES.LIB -+ SELSERV; | ||
| 222 | |||
| 223 | SELECT.EXE: SELECT0.OBJ SELECT1.OBJ SELECT2.OBJ SELECT2A.OBJ SELECT3.OBJ \ | ||
| 224 | SELECT4.OBJ SELECT5.OBJ SELECT6.OBJ SELECT7.OBJ SELECT8.OBJ SELECT9.OBJ \ | ||
| 225 | ROUTINE2.OBJ GEN_COMS.OBJ ROUTINES.OBJ INTVEC.OBJ ONEDRIVE.OBJ \ | ||
| 226 | CKDISP.OBJ SCN_PARM.OBJ PRN_DEF.OBJ VAR.OBJ CASERVIC.OBJ INPUT.OBJ \ | ||
| 227 | INITMEM.OBJ MPARSE.OBJ MOD_COPY.OBJ S_DISPLY.OBJ BRIDGE.OBJ \ | ||
| 228 | ASM2C.OBJ GET_STAT.OBJ GLOBAL.OBJ INT13.OBJ BOOTREC.OBJ \ | ||
| 229 | SERVICES.LIB CASSTMP.LIB SLIBFP.LIB $(COM)\SETVER.BAT | ||
| 230 | LINK @SELECT.ARF | ||
| 231 | TAG SELECT.EXE | ||
| 232 | |||
| 233 | # | ||
| 234 | # Make SELECT.COM | ||
| 235 | # | ||
| 236 | |||
| 237 | SSTUB.OBJ: SSTUB.ASM $(COM)\SYSMSG.INC SELECT.CTL SELECT.MAK | ||
| 238 | ASM87 SSTUB -b1 | ||
| 239 | |||
| 240 | SELECT.COM: SSTUB.OBJ | ||
| 241 | LINK SSTUB; | ||
| 242 | EXE2BIN SSTUB.EXE SELECT.COM | ||
| 243 | TAG SELECT.COM | ||
| 244 | |||
| 245 | # | ||
| 246 | # Make SELECT.DAT | ||
| 247 | # | ||
| 248 | |||
| 249 | DUMMY.OUT: SELECT.MAK | ||
| 250 | COPY $(COUNTRY).INF+,, PANEL.INF | ||
| 251 | |||
| 252 | PANELS.OBJ: PANELS.ASM SEL-PAN.INC PAN-LIST.INC PANEL.INF SELECT.MAK | ||
| 253 | ASM87 PANELS -a-b1 | ||
| 254 | |||
| 255 | COLORS.OBJ: COLORS.ASM SEL-PAN.INC SELECT.MAK | ||
| 256 | ASM87 COLORS -a-b1 | ||
| 257 | |||
| 258 | SCROLL.OBJ: SCROLL.ASM SEL-PAN.INC PANEL.INF SELECT.MAK | ||
| 259 | ASM87 SCROLL -a-b1 | ||
| 260 | |||
| 261 | SEL-PAN.OBJ: SEL-PAN.ASM CASVAR.INC SEL-PAN.INC SELECT.MAK | ||
| 262 | ASM87 SEL-PAN -a-b1 | ||
| 263 | |||
| 264 | SEL-PAN.EXE: PANELS.OBJ COLORS.OBJ SCROLL.OBJ SEL-PAN.OBJ | ||
| 265 | LINK @PANELS.ARF | ||
| 266 | ERASE SELECT.DAT | ||
| 267 | SEL-PAN | ||
| 268 | |||
| 269 | # | ||
| 270 | # Make ASC2HLP.EXE | ||
| 271 | # | ||
| 272 | |||
| 273 | DUMMY.OUT: SELECT.MAK | ||
| 274 | CD ..\SHELLHLP | ||
| 275 | MAKE SHELLHLP.MAK | ||
| 276 | CD ..\SELECT | ||
| 277 | # | ||
| 278 | # Make SELECT.HLP | ||
| 279 | # | ||
| 280 | |||
| 281 | SELECT.HLP: $(COUNTRY).TXT SELECT.MAK | ||
| 282 | ERASE SELECT.HLP | ||
| 283 | chmode +r usa.txt | ||
| 284 | ..\SHELLHLP\ASC2HLP $(COUNTRY).TXT SELECT.HLP | ||
| 285 | chmode +r usa.txt | ||
| 286 | |||
| 287 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/SELECT.PRT b/v4.0/src/SELECT/SELECT.PRT new file mode 100644 index 0000000..de646a2 --- /dev/null +++ b/v4.0/src/SELECT/SELECT.PRT | |||
| @@ -0,0 +1,75 @@ | |||
| 1 | 22 | ||
| 2 | P IBM 5152 Graphics Printer Model 2 | ||
| 3 | GP GRAPHICS | ||
| 4 | |||
| 5 | P IBM 4201 Proprinter | ||
| 6 | CDP 4201,437 | ||
| 7 | CPP 4201.CPI | ||
| 8 | GP GRAPHICS | ||
| 9 | |||
| 10 | P IBM 4201 Proprinter II | ||
| 11 | CDP 4201,437 | ||
| 12 | CPP 4201.CPI | ||
| 13 | GP GRAPHICS | ||
| 14 | |||
| 15 | P IBM 4202 Proprinter XL | ||
| 16 | CDP 4201,437 | ||
| 17 | CPP 4201.CPI | ||
| 18 | GP GRAPHICS | ||
| 19 | |||
| 20 | P IBM 4207 Proprinter X24 | ||
| 21 | CDP 4208,437 | ||
| 22 | CPP 4208.CPI | ||
| 23 | GP GRAPHICS | ||
| 24 | |||
| 25 | P IBM 4208 Proprinter XL24 | ||
| 26 | CDP 4208,437 | ||
| 27 | CPP 4208.CPI | ||
| 28 | GP GRAPHICS | ||
| 29 | |||
| 30 | S IBM 4201 Proprinter (Serial) | ||
| 31 | SP BAUD=96 PARITY=E DATA=8 STOP=1 | ||
| 32 | GP GRAPHICS | ||
| 33 | |||
| 34 | S IBM 4202 Proprinter XL (Serial) | ||
| 35 | SP BAUD=96 PARITY=E DATA=8 STOP=1 | ||
| 36 | GP GRAPHICS | ||
| 37 | |||
| 38 | S IBM 4207 Proprinter X24 (Serial) | ||
| 39 | SP BAUD=96 PARITY=E DATA=8 STOP=1 | ||
| 40 | GP GRAPHICS | ||
| 41 | |||
| 42 | S IBM 4208 Proprinter XL24 (Serial) | ||
| 43 | SP BAUD=96 PARITY=E DATA=8 STOP=1 | ||
| 44 | GP GRAPHICS | ||
| 45 | |||
| 46 | P IBM 5182 Color Printer | ||
| 47 | GP COLOR1 | ||
| 48 | |||
| 49 | P IBM 3852 Ink Jet Printer | ||
| 50 | |||
| 51 | P IBM 5201 Quietwriter I Printer | ||
| 52 | |||
| 53 | P IBM 5201 Quietwriter II Printer | ||
| 54 | GP GRAPHICS | ||
| 55 | |||
| 56 | P IBM 5202 Quietwriter III Printer | ||
| 57 | CDP 5202,437 | ||
| 58 | CPP 5202.CPI | ||
| 59 | GP GRAPHICS | ||
| 60 | |||
| 61 | P IBM 5216 Wheelprinter | ||
| 62 | |||
| 63 | P IBM 5223 Wheelprinter E Model 1 | ||
| 64 | |||
| 65 | S IBM 3812 Pageprinter | ||
| 66 | SP BAUD=96 PARITY=E DATA=8 STOP=1 RETRY=P | ||
| 67 | GP GRAPHICS | ||
| 68 | |||
| 69 | P Other IBM Parallel Printer | ||
| 70 | |||
| 71 | S Other IBM Serial Printer | ||
| 72 | |||
| 73 | P Other Parallel Printer | ||
| 74 | |||
| 75 | S Other Serial Printer | ||
diff --git a/v4.0/src/SELECT/SELECT.SKL b/v4.0/src/SELECT/SELECT.SKL new file mode 100644 index 0000000..93b383f --- /dev/null +++ b/v4.0/src/SELECT/SELECT.SKL | |||
| @@ -0,0 +1,43 @@ | |||
| 1 | :util select ;AN000; | ||
| 2 | ;AN000; | ||
| 3 | :class A ;AN000; | ||
| 4 | :use 1 COMMON1 ;AN000; | ||
| 5 | :use 2 common2 ;AN000; | ||
| 6 | :use 3 common3 ;AN000; | ||
| 7 | :def 4 BELL,'Invalid SELECT Boot Media',CR,LF,CR,LF ;AN000; | ||
| 8 | 'Insert INSTALL diskette in drive A, then retry' ;AN000; | ||
| 9 | :def 5 BELL,'Invalid Disk/Diskette Media',CR,LF,CR,LF ;AN000; | ||
| 10 | 'Insert INSTALL diskette in drive A, then retry' ;AN000; | ||
| 11 | :def 6 BELL,'Invalid Parameters on SELECT Command Line',CR,LF,CR,LF ;AN000; | ||
| 12 | 'Make sure the INSTALL diskette is in drive A,',CR,LF ;AN000; | ||
| 13 | 'then press Ctrl+Alt+Del to restart.' ;AN000; | ||
| 14 | :def 7 BELL,'Unable to install DOS. Program terminated',CR,LF ;AN000; | ||
| 15 | :def 8 'Loading SELECT. Please wait...' ;AN000; | ||
| 16 | :def 9 'You must restart your computer to continue.',CR,LF,CR,LF ;AN000; | ||
| 17 | 'Press Ctrl+Alt+Del to continue with DOS installation.' ;AN000; | ||
| 18 | :class B ;AN000; | ||
| 19 | :def 10 'Insert SELECT diskette in drive A',CR,LF,CR,LF ;AN000; | ||
| 20 | 'Press ENTER to continue installing DOS,',CR,LF ;AN000; | ||
| 21 | 'or press ESC to exit.',CR,LF ;AN000; | ||
| 22 | :def 11 BELL ;AN000; | ||
| 23 | :def 12 'Insert SELECT diskette in drive A',CR,LF,CR,LF ;AN000; | ||
| 24 | 'Press ENTER to continue.',CR,LF ;AN000; | ||
| 25 | :def 13 'Remove the SELECT COPY Diskette from drive A',CR,LF,CR,LF ;AC080;SEH ;AN000; | ||
| 26 | 'Insert the INSTALL Diskette in drive A',CR,LF,CR,LF,CR,LF ;AN000; | ||
| 27 | 'Press Enter to continue.',CR,LF ;AN000; | ||
| 28 | :def 14 'Remove the INSTALL Diskette from drive A',CR,LF,CR,LF ;AN000; | ||
| 29 | 'Insert the SELECT COPY Diskette in drive A',CR,LF,CR,LF,CR,LF ;AC080;SEH ;AN000; | ||
| 30 | 'Press Enter to continue.',CR,LF ;AN000; | ||
| 31 | :def 15 'Copying diskette . . .',CR,LF ;AN000; | ||
| 32 | :def 16 'Drive not ready. Please close the',CR,LF,CR,LF ;AN000; | ||
| 33 | 'diskette drive door and press Enter',CR,LF ;AN000; | ||
| 34 | 'to continue, or Esc to exit SELECT.',CR,LF ;AN000; | ||
| 35 | :def 17 'Write protect diskette in drive.',CR,LF,CR,LF ;AN000; | ||
| 36 | 'Please remove protect tab and',CR,LF ;AN000; | ||
| 37 | 'press ENTER to continue, or Esc to exit SELECT.',CR,LF ;AN000; | ||
| 38 | :def 18 'An error occurred while installing DOS.',CR,LF ;AN000; | ||
| 39 | 'Press Enter to continue, or Esc to exit SELECT.',CR,LF ;AN000; | ||
| 40 | :def 19 'Insert the INSTALL Diskette in drive A',CR,LF,CR,LF ;AN000; | ||
| 41 | 'Press Enter to continue.',CR,LF ;AN000; | ||
| 42 | :use 20 EXTEND8 ;AN067;SEH insufficient memory | ||
| 43 | :end ;AN000; | ||
diff --git a/v4.0/src/SELECT/SELECT0.ASM b/v4.0/src/SELECT/SELECT0.ASM new file mode 100644 index 0000000..f7198c4 --- /dev/null +++ b/v4.0/src/SELECT/SELECT0.ASM | |||
| @@ -0,0 +1,372 @@ | |||
| 1 | |||
| 2 | |||
| 3 | PAGE 60,132 ;AN000; | ||
| 4 | NAME SELECT ;AN000; | ||
| 5 | TITLE SELECT0 - DOS - SELECT.EXE ;AN000; | ||
| 6 | SUBTTL select0.asm ;AN000; | ||
| 7 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 8 | ; | ||
| 9 | ; SELECT0.ASM : Copyright 1988 Microsoft | ||
| 10 | ; | ||
| 11 | ; DATE: July 4/87 | ||
| 12 | ; | ||
| 13 | ; COMMENTS: Assemble with MASM 3.0 (using the /A option) | ||
| 14 | ; | ||
| 15 | ; Panel flow is defined in the following files: | ||
| 16 | ; | ||
| 17 | ; � SELECT1.ASM | ||
| 18 | ; � SELECT2.ASM | ||
| 19 | ; � SELECT3.ASM | ||
| 20 | ; � SELECT4.ASM | ||
| 21 | ; � SELECT5.ASM | ||
| 22 | ; � SELECT6.ASM | ||
| 23 | ; | ||
| 24 | ; CHANGE HISTORY: | ||
| 25 | ; | ||
| 26 | ; This module contains the change history for the entire SELECT | ||
| 27 | ; component as of 1/25/88. Some changes before this date are | ||
| 28 | ; listed in the individual modules. | ||
| 29 | ; | ||
| 30 | ; A000 - 1/25/88, designates original 4.00 level source. | ||
| 31 | ; A001-A009, All changes made prior to 1/25/88, these descriptions | ||
| 32 | ; exist in the individual modules which were Revised. | ||
| 33 | ; A111 - D353, 12/28/87, added support for A: to A: installation on | ||
| 34 | ; systems with only one diskette drive. J.W. | ||
| 35 | ; A010 - D407, 1/25/88, changed install to one directory to not | ||
| 36 | ; copy over system files. J.W. | ||
| 37 | ; A011 - P3231, 1/26/88, add 'PRINT /D:LPTx' or 'PRINT /D:COMx' to | ||
| 38 | ; autoexec.bat file for balanced and max. DOS function. S. H. | ||
| 39 | ; A012 - P3238, 1/27/88, add /DATE as default shell invocation switch. | ||
| 40 | ; S. H. | ||
| 41 | ; A013 - P3239, 1/27/88, changed text of prompt setting in DOSSHELL.BAT | ||
| 42 | ; file. J.W. | ||
| 43 | ; A014 - P3275, 1/29/87, added check for minimum DOS function. S. H. | ||
| 44 | ; A015 - P3310, 2/1/88, Removed PRINT invocation from diskette based | ||
| 45 | ; system. J.W. | ||
| 46 | ; A016 - D445, 2/4/88, removed /REF from DOSSHELL.BAT file. S. H. | ||
| 47 | ; A017 - P3339, 2/4/88, Added check for read-only .BAT and .340 files, | ||
| 48 | ; J.W. | ||
| 49 | ; A018 - D418, 2/4/88, removed the default /TEXT option on a model 25 | ||
| 50 | ; or 30. S. H. | ||
| 51 | ; A019 - D443, 2/4/88, changed 'SHELL.BAT' to DOSSHELL.BAT'. S. H. | ||
| 52 | ; A020 - D438, 2/5/88, removed EXT_DISKETTE_SCREEN and EXT_DISK_PARMS_SCREEN | ||
| 53 | ; and other code related to supporting external diskette drives. | ||
| 54 | ; S. H. | ||
| 55 | ; A021 - D442, 2/8/88, Added selection of SHARE when >32M partition | ||
| 56 | ; exists. J.W. | ||
| 57 | ; A022 - P3403, 2/8/88, edited Welcome Screen to inform PS/2 users they | ||
| 58 | ; can use 1 or 2 MB 3.5" blank diskette. S. H. | ||
| 59 | ; A023 - P3292, 2/8/88, implemented error level check on FDISK to detect | ||
| 60 | ; a disk with no primary DOS partition defined. J.W. | ||
| 61 | ; A024 - D463, 2/9/88, changed method for reading and writing the | ||
| 62 | ; SELECT.DAT file. File can now be compressed. Eliminated | ||
| 63 | ; the large and slow CAS routines. J.W./D.T. | ||
| 64 | ; A025 - P3460, 2/10/88, Changed printer panel number and panel list | ||
| 65 | ; to remove unused panels. J.W. | ||
| 66 | ; A026 - P3450, 2/11/88, added color change to unselected fields on | ||
| 67 | ; the DOS location panel. J.W. | ||
| 68 | ; A027 - P3459, 2/15/88, set the carry flag in HANDLE_F3 in order to | ||
| 69 | ; eliminate an endless loop in GET_FUNCTION_CALL. S. H. | ||
| 70 | ; A028 - P3592, 2/22/88, Add text to direct users to Getting Started With | ||
| 71 | ; DOS 4.00 book. J.W. | ||
| 72 | ; A029 - P3529, 2/17/88, Corrected GRAPHICS parameter initialization | ||
| 73 | ; problem. J.W. | ||
| 74 | ; A030 - P3527, 2/17/88, Changed incorrect diskette error panel to be | ||
| 75 | ; more descriptive. J.W. | ||
| 76 | ; A031 - P3546, 2/17/88, changed code to allow a semi-colon as the last | ||
| 77 | ; character entered in DOS or APPEND PATH. S. H. | ||
| 78 | ; A032 - P3576, 2/22/88, changed code to flash message on screen if | ||
| 79 | ; user does not put SELECT diskette in to start SELECT (360KB | ||
| 80 | ; diskettes only). S. H. | ||
| 81 | ; A033 - P3620, 2/24/88, saved the value in I_DESTINATION so that it | ||
| 82 | ; is not wiped out upon reboot. S. H. | ||
| 83 | ; A034 - P3618, 2/25/88, changed code so that user does not have to reboot | ||
| 84 | ; if he makes no changes to the partition. S. H. | ||
| 85 | ; A035 - P3654, 2/29/88, updated help texts #18 and #19 received from I.D. | ||
| 86 | ; S. H. | ||
| 87 | ; A036 - P3666, 3/1/88, added GRAPHICS to the SELECT.PRT file for | ||
| 88 | ; Quietwriter II and Pageprinter. | ||
| 89 | ; A037 - P3672, 3/1/88, removed /MSG from SHELL= statement in CONFIG.SYS | ||
| 90 | ; for installs to hard disk (for purposes of code reduction in | ||
| 91 | ; COMMAND.COM). | ||
| 92 | ; A038 - P3700, 3/2/88, changed second scroll option on DOS Location | ||
| 93 | ; Screen to let user know system files not copied. | ||
| 94 | ; A039 - D496, 3/3/88, added a dummy file for the user of the SHELL | ||
| 95 | ; tutorial to copy and delete. | ||
| 96 | ; A040 - P3741, 3/4/88, changed D_XMA2EMS_1 values. | ||
| 97 | ; A041 - P3747, 3/4/88, changed initialization values for D_BUFFERS_2 | ||
| 98 | ; and D_FASTOPEN_2 (max. DOS utilization) | ||
| 99 | ; A042 - P3737, 3/9/88, changed FDISK.EXE to FDISK.COM. | ||
| 100 | ; A043 - P3813, 3/10/88, moved the COMSPEC statement in the AUTOEXEC.BAT | ||
| 101 | ; after the @ECHO OFF statement. | ||
| 102 | ; A044 - P3852, 3/14/88, changed D_XMA2EMS_1 values again. | ||
| 103 | ; A045 - D503, 3/15/88, changed MAJOR_DOS_VER to 4 and MINOR_DOS_VER to | ||
| 104 | ; 00 for DOS 4.00 build. Everything visible to user still says | ||
| 105 | ; DOS 4.00. | ||
| 106 | ; A046 - D474, 3/16/88, changed the /E parameter for buffers to /X. | ||
| 107 | ; | ||
| 108 | ; A047 - P3924, 3/17/88, SELECT now includes VERSIONA.INC for the DOS | ||
| 109 | ; version check---check formerly made in MAC_EQU.INC. | ||
| 110 | ; A048 - P3857, 3/18/88, changed code for 360KB install to hardfile on | ||
| 111 | ; 256KB machine to deallocate memory before COMMAND.COM is | ||
| 112 | ; read in. | ||
| 113 | ; A049 - P4017, 3/25/88, changed capital "W" to a small "w" in the | ||
| 114 | ; Getting Started with DOS 4.00 title in panels. | ||
| 115 | ; A050 - P4020, 3/25/88, removed quote marks and spaces between 1 MB | ||
| 116 | ; and 2 MB on Welcome Screen. | ||
| 117 | ; A051 - P3992, 3/26/88, edited code for DOS Location Screen so that | ||
| 118 | ; ESC (hit from any field) takes you back to previous screen. | ||
| 119 | ; | ||
| 120 | ; A052 - P4015, 3/28/88, stated diskette size user needs when installing | ||
| 121 | ; to a single 3.5 inch diskette. | ||
| 122 | ; A053 - D505, 3/28/88, redesigned the Dos Location screen. | ||
| 123 | ; A054 - P4006, 3/28/88, turned off blinking cursor on early SELECT | ||
| 124 | ; screens (enhanced color display used). | ||
| 125 | ; A055 - D508, 3/29/88, put SHARE.EXE on 720 Install diskette. | ||
| 126 | ; A056 - P4047, 3/29/88, revised installation complete panel for | ||
| 127 | ; 720 to 720 installation. | ||
| 128 | ; A057 - P3866, strengthened panel msg referring user to Getting Started | ||
| 129 | ; with DOS 4.00. | ||
| 130 | ; A058 - P3945, corrected code that creates install path when putting | ||
| 131 | ; DOSSHELL.BAT in the root. | ||
| 132 | ; A059 - P4056, 3/30/88, corrected input routines to flush buffer before | ||
| 133 | ; read. | ||
| 134 | ; A060 - P4008, 3/30/88, added error message for help access when install | ||
| 135 | ; disk not in drive. | ||
| 136 | ; A061 - P4000, 3/30/88, corrected problem with allowable return key | ||
| 137 | ; strings. | ||
| 138 | ; A062 - P4059, 3/30/88, added FORMAT.COM to SELECT and OPERATING | ||
| 139 | ; diskettes; moved IFSFUNC from OPERATING to INSTALL diskette. | ||
| 140 | ; | ||
| 141 | ; A063 - P3950, 4/1/88, added code to enable SELECT to install to a | ||
| 142 | ; 256KB 2-drive convertible. | ||
| 143 | ; A064 - D514, 4/6/88, revised two Installation Complete panels. | ||
| 144 | ; | ||
| 145 | ; A065 - D501, 4/6/88, added code to check for OS/2 and rename its | ||
| 146 | ; config.sys and autoexec.bat to config.os2 and autoexec.os2. | ||
| 147 | ; | ||
| 148 | ; A066 - P4179, D519, 4/6/88, moved the print statement to next to last | ||
| 149 | ; in the autoexec.bat file. | ||
| 150 | ; A067 - P4290, 4/13/88, output message to user if SELECT encounters | ||
| 151 | ; insufficient memory to install DOS. | ||
| 152 | ; A068 - P4325, 4/14/88, updated CASTRUC.INC to match G:\CASSFAR\PCSLCTP. | ||
| 153 | ; | ||
| 154 | ; A069 - P4364, 4/18/88, updated SELECT to match new PCINPUT file. | ||
| 155 | ; A070 - P4401, 4/19/88, changed Latin America's default code page to 850. | ||
| 156 | ; | ||
| 157 | ; A071 - P4428, 4/22/88, removed the /PRE parameter from the DOSSHELL.BAT. | ||
| 158 | ; | ||
| 159 | ; A072 - P3950, overlay PARSER and PCINPUT segments if on a 256KB machine. | ||
| 160 | ; | ||
| 161 | ; A073 - P4409, 5/2/88, corrected problem of SELECT using different default | ||
| 162 | ; drives on different machines---variable not assigned. | ||
| 163 | ; A074 - P4568, 5/2/88, disallow user to end SELECT by pressing CTRL-BREAK. | ||
| 164 | ; A075 - P4720, 5/6/88, changed "INSTALL COPY" diskette name to "SELECT | ||
| 165 | ; COPY". | ||
| 166 | ; A076 - P4718, 5/6/88, capitalized the sentence in the INSTALLATION | ||
| 167 | ; COMPLETE panels which points the user to the Getting Started | ||
| 168 | ; with DOS 4.00 book. | ||
| 169 | ; A077 - P4772, 5/6/88, added /PROMPT as default startup parameter for | ||
| 170 | ; DOS Shell for 256K machine. | ||
| 171 | ; A078 - P4782, 5/9/88, changed FASTOPEN defaults for maximum DOS | ||
| 172 | ; function to 150,150. | ||
| 173 | ; A079 - P4744, 5/10/88, made panel and scroll field change for Installation | ||
| 174 | ; Option screen. | ||
| 175 | ; A080 - P4832, 5/11/88, changed SELECT.SKL and USA.MSG to reflect the | ||
| 176 | ; change of "INSTALL COPY" to "SELECT COPY" diskette (see P4720). | ||
| 177 | ; | ||
| 178 | ; A081 - P4848, 5/12/88, spaced over the keys at the bottom of the help | ||
| 179 | ; panel to allow more room for translation; exported it on this | ||
| 180 | ; ptm to export help text changes. | ||
| 181 | ; A082 - P4916, 5/18/88, turned cursor off following FDISK reboot. | ||
| 182 | ; | ||
| 183 | ; A083 - P4917, 5/19/88, stopped typomatic effect of pressing enter key | ||
| 184 | ; too long during installation. | ||
| 185 | ; A084 - P4906, 5/19/88, corrected mode 40 machine installation hang. | ||
| 186 | ; | ||
| 187 | ; A085 - P4926, 5/19/88, homed the cursor before call to format so that | ||
| 188 | ; message stating % of diskette formatted is at top of screen. | ||
| 189 | ; | ||
| 190 | ; A086 - P4934, 5/20/88, changed the 16h value used for INT 2Fh when | ||
| 191 | ; checking for ANSI presence to 1Ah to avoid MICROSOFT collision. | ||
| 192 | ; | ||
| 193 | ; A087 - P4955, 5/23/88, adjusted the spacing between the ENTER and F1 | ||
| 194 | ; keys on the bottom of panels 31 (Time and Date) and 32 (Format | ||
| 195 | ; Fixed Disk Drive) to give more room for translation. | ||
| 196 | ; A088 - P5064, 6/9/88, replaced a call to clear the input buffer in | ||
| 197 | ; PCINCHA_CALL (see A059). | ||
| 198 | ; A089 - P5048, 6/9/88, increased the value of MAX_NUM_PRINTER_DEFS to | ||
| 199 | ; allow more printers in the SELECT.PRT file. | ||
| 200 | ; A090 - P5127, 6/17/88, changed default index for alternate keyboards | ||
| 201 | ; to be second (old) keyboard. J. Wright | ||
| 202 | ; A091 - P5142, 6/30/88, reduced memory allocation for panels from 64KB | ||
| 203 | ; to 62KB to allow more room for foreign versions of SELECT to | ||
| 204 | ; run. S. Holahan | ||
| 205 | ; A092 - P5173, 7/15/88, added @BREAK=OFF" after :COMMON statement | ||
| 206 | ; in DOSSHELL.BAT file. S. Holahan | ||
| 207 | ; | ||
| 208 | ; | ||
| 209 | ; | ||
| 210 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 211 | CODE SEGMENT PARA PUBLIC 'CODE' ;AN000; Segment for CASS libraries | ||
| 212 | CODE ENDS ;AN000; | ||
| 213 | ; | ||
| 214 | CODE_FAR SEGMENT PARA PUBLIC 'CODE' ;AN000; Segment for miscellaneous routines | ||
| 215 | CODE_FAR ENDS ;AN000; | ||
| 216 | ; | ||
| 217 | _TEXT segment byte public 'CODE' ;AN000; | ||
| 218 | _TEXT ends ;AN000; | ||
| 219 | _DATA segment word public 'DATA' ;AN000; | ||
| 220 | _DATA ends ;AN000; | ||
| 221 | CONST segment word public 'CONST' ;AN000; | ||
| 222 | CONST ends ;AN000; | ||
| 223 | _BSS segment word public 'BSS' ;AN000; | ||
| 224 | _BSS ends ;AN000; | ||
| 225 | ; | ||
| 226 | ; | ||
| 227 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; Segment for Data values | ||
| 228 | DATA ENDS ;AN000; | ||
| 229 | ; | ||
| 230 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000; | ||
| 231 | SELECT ENDS ;AN000; | ||
| 232 | |||
| 233 | SERVICE SEGMENT PARA PUBLIC 'SERVICE' ;AN000; Segment for CAS_SERVICE routines | ||
| 234 | SERVICE ENDS ;AN000; | ||
| 235 | ; | ||
| 236 | OUR_STACK SEGMENT BYTE STACK ;AN000; Segment for Local Stack | ||
| 237 | DB 512 DUP('IBM ') ;AN000; | ||
| 238 | LAST_STACK EQU $ ;AN000; | ||
| 239 | OUR_STACK ENDS ;AN000; | ||
| 240 | ; | ||
| 241 | PARSER SEGMENT PARA PUBLIC 'PARSER' ;AN000; Segment for PARSE code | ||
| 242 | PARSER ENDS ;AN000; | ||
| 243 | |||
| 244 | PCINPUT SEGMENT PARA PUBLIC 'PCINPUT' ;AN072; | ||
| 245 | PCINPUT ENDS ;AN072; | ||
| 246 | ; | ||
| 247 | ZSEG SEGMENT PARA PUBLIC 'ZSEG' ;AN000; Dummy segment for End-of-Code | ||
| 248 | ZSEG ENDS ;AN000; | ||
| 249 | ; | ||
| 250 | AGROUP GROUP CODE,CODE_FAR,DATA,PARSER,SERVICE,SELECT,OUR_STACK,ZSEG ;AN000; | ||
| 251 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 252 | ; | ||
| 253 | ; | ||
| 254 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 255 | .XLIST ;AN000; | ||
| 256 | INCLUDE PANEL.MAC ;AN000; | ||
| 257 | INCLUDE STRUC.INC ;AN000; | ||
| 258 | INCLUDE MACROS.INC ;AN000; | ||
| 259 | INCLUDE SYSMSG.INC ;AN000; | ||
| 260 | INCLUDE ROUT_EXT.INC ;AN000; | ||
| 261 | INCLUDE EXT.INC ;AN000; | ||
| 262 | INCLUDE PAN-LIST.INC ;AN000; | ||
| 263 | .LIST ;AN000; | ||
| 264 | ; | ||
| 265 | EXTRN DEALLOCATE_MEMORY_CALL:FAR ;AN000; | ||
| 266 | EXTRN CHECK_VERSION:NEAR ;AN000; | ||
| 267 | ; | ||
| 268 | PUBLIC INSTALL ;AN000; | ||
| 269 | PUBLIC SYSDISPMSG ;AN000; | ||
| 270 | PUBLIC EXIT_SELECT ;AN000; | ||
| 271 | PUBLIC EXIT_SELECT2 ;AN000; | ||
| 272 | PUBLIC INITIALIZATION ;AN000; | ||
| 273 | PUBLIC ABORT_SELECT ;AN000; | ||
| 274 | ; | ||
| 275 | MSG_UTILNAME <SELECT> ;AN000; | ||
| 276 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 277 | ; | ||
| 278 | ; | ||
| 279 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 280 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000; | ||
| 281 | ASSUME CS:SELECT,DS:DATA,SS:our_STACK ;AN000; | ||
| 282 | ; | ||
| 283 | OLD_STACK_SEG DW ? ;AN000; | ||
| 284 | OLD_STACK_OFF DW ? ;AN000; | ||
| 285 | ; | ||
| 286 | INCLUDE CASEXTRN.INC ;AN000; | ||
| 287 | ; | ||
| 288 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 289 | ; | ||
| 290 | ; Beginning of code | ||
| 291 | ; | ||
| 292 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 293 | INSTALL PROC FAR ;AN000; | ||
| 294 | CLI ;AN000; | ||
| 295 | MOV AX,SS ;AN000; | ||
| 296 | MOV OLD_STACK_SEG,AX ;AN000; | ||
| 297 | MOV OLD_STACK_OFF,SP ;AN000; | ||
| 298 | mov ax,our_stack ;AN000; | ||
| 299 | mov ss,ax ;AN000; | ||
| 300 | mov sp,512*4 ;AN000; | ||
| 301 | STI ;AN000; | ||
| 302 | ; | ||
| 303 | MOV AX,DATA ;AN000; | ||
| 304 | MOV DS,AX ;AN000; | ||
| 305 | JMP INITIALIZATION ;AN000; | ||
| 306 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 307 | ; | ||
| 308 | ; CODE TO LEAVE SELECT WITH!!!! | ||
| 309 | ; | ||
| 310 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 311 | EXIT_SELECT: ;AN000; | ||
| 312 | ; | ||
| 313 | FIND_FILE S_AUTO_REBOOT, 0 ;AN000;DT Make sure INSTALL disk in drive | ||
| 314 | .IF < c > ;AN000;DT | ||
| 315 | .REPEAT ;AN000;DT make sure diskette | ||
| 316 | CLEAR_SCREEN ;AN000;DT with COMMAND.COM in drive | ||
| 317 | DISPLAY_MESSAGE 19 ;AN000;DT Insert INSTALL diskette | ||
| 318 | GET_FUNCTION FK_ENT ;AN000;DT | ||
| 319 | FIND_FILE S_AUTO_REBOOT, 0 ;AN000;DT | ||
| 320 | .LEAVE < nc > ;AN000;DT | ||
| 321 | HANDLE_ERROR ERR_DOS_DISK, 2 ;AN000;DT | ||
| 322 | .UNTIL ;AN000;DT | ||
| 323 | CLEAR_SCREEN2 ;AN000;JW | ||
| 324 | .ENDIF ;AN000; | ||
| 325 | ; | ||
| 326 | EXIT_SELECT2: ;AN000; | ||
| 327 | ; | ||
| 328 | DEALLOCATE_MEMORY ;AN000;free up allocated segment | ||
| 329 | .IF < NC > ;AN000; | ||
| 330 | CALL RESTORE_INT_23 ;AN074;SEH restore ctrl-break before exiting | ||
| 331 | MOV AX,OLD_STACK_SEG ;AN000; | ||
| 332 | MOV SS,AX ;AN000; | ||
| 333 | MOV SP,OLD_STACK_OFF ;AN000; | ||
| 334 | CALL CURSORON ;AN000; | ||
| 335 | MOV AX,4C00H ;AN000; | ||
| 336 | INT 21H ;AN000; | ||
| 337 | .ELSE ;AN000; | ||
| 338 | ABORT_SELECT: ;AN000;exit without handling allocated memory | ||
| 339 | CALL RESTORE_INT_23 ;AN074;SEH restore ctrl-break before exiting | ||
| 340 | MOV AX,OLD_STACK_SEG ;AN000; | ||
| 341 | MOV SS,AX ;AN000; | ||
| 342 | MOV SP,OLD_STACK_OFF ;AN000; | ||
| 343 | CALL CURSORON ;AN000; | ||
| 344 | MOV AX,4C00H ;AN000; | ||
| 345 | INT 21H ;AN000; | ||
| 346 | .ENDIF ;AN000; | ||
| 347 | INSTALL ENDP ;AN000; | ||
| 348 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 349 | ; | ||
| 350 | ; Message Retriever code inserted at this point.... | ||
| 351 | ; | ||
| 352 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 353 | MSG_SERVICES <NOVERCHECKmsg, FARmsg, GETmsg, DISPLAYmsg, LOADmsg> ;AN000; | ||
| 354 | MSG_SERVICES <SELECT.CLA,SELECT.CLB> ;AN000; | ||
| 355 | MSG_SERVICES <SELECT.CL1,SELECT.CL2> ;AN000; | ||
| 356 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 357 | ; | ||
| 358 | ; Start of SELECT.EXE code | ||
| 359 | ; | ||
| 360 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 361 | INITIALIZATION: ;AN000; | ||
| 362 | LOAD_MESSAGES ;AN000; | ||
| 363 | JMP CHECK_VERSION ;AN000; | ||
| 364 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 365 | |||
| 366 | |||
| 367 | SELECT ENDS ;AN000; | ||
| 368 | |||
| 369 | include msgdcl.inc | ||
| 370 | |||
| 371 | END INSTALL ;AN000; | ||
| 372 | |||
diff --git a/v4.0/src/SELECT/SELECT1.ASM b/v4.0/src/SELECT/SELECT1.ASM new file mode 100644 index 0000000..3770fd7 --- /dev/null +++ b/v4.0/src/SELECT/SELECT1.ASM | |||
| @@ -0,0 +1,447 @@ | |||
| 1 | |||
| 2 | |||
| 3 | PAGE 60,132 ;AN000; | ||
| 4 | NAME SELECT ;AN000; | ||
| 5 | TITLE SELECT1 - DOS - SELECT.EXE ;AN000; | ||
| 6 | SUBTTL select1.asm ;AN000; | ||
| 7 | .ALPHA ;AN000; | ||
| 8 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 9 | ; | ||
| 10 | ; SELECT1.ASM : Copyright 1988 Microsoft | ||
| 11 | ; | ||
| 12 | ; DATE: July 4/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 | ; CHANGE HISTORY: | ||
| 26 | ; | ||
| 27 | ; ;AN001;JW - P2452 Check for user switching disk before asked to | ||
| 28 | ; | ||
| 29 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 30 | _TEXT segment byte public 'CODE' ;AN000; | ||
| 31 | extrn gget_status:far ;AN000; | ||
| 32 | _TEXT ends ;AN000; | ||
| 33 | _DATA segment word public 'DATA' ;AN000; | ||
| 34 | _DATA ends ;AN000; | ||
| 35 | CONST segment word public 'CONST' ;AN000; | ||
| 36 | CONST ends ;AN000; | ||
| 37 | _BSS segment word public 'BSS' ;AN000; | ||
| 38 | _BSS ends ;AN000; | ||
| 39 | ; | ||
| 40 | DGROUP GROUP CONST,_BSS,_DATA ;AN000; | ||
| 41 | ; | ||
| 42 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; Segment for Data values | ||
| 43 | DATA ENDS ;AN000; | ||
| 44 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 45 | ; | ||
| 46 | ; | ||
| 47 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 48 | .XLIST ;AN000; | ||
| 49 | INCLUDE PANEL.MAC ;AN000; | ||
| 50 | INCLUDE SELECT.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; | ||
| 57 | INCLUDE PAN-LIST.INC ;AN000; | ||
| 58 | .LIST ;AN000; | ||
| 59 | ; | ||
| 60 | EXTRN PM_BASECHAR:BYTE ;AN000; | ||
| 61 | EXTRN PM_BASEATTR:BYTE ;AN000; | ||
| 62 | EXTRN CRD_CCBVECOFF:WORD ;AN000; | ||
| 63 | EXTRN CRD_CCBVECSEG:WORD ;AN000; | ||
| 64 | ; | ||
| 65 | EXTRN ALLOCATE_MEMORY_CALL:FAR ;AN000; | ||
| 66 | EXTRN DEALLOCATE_MEMORY_CALL:FAR ;AN000; | ||
| 67 | EXTRN VIDEO_CHECK:FAR ;AN000; | ||
| 68 | EXTRN EXIT_SELECT:NEAR ;AN000; | ||
| 69 | EXTRN EXIT_SELECT2:NEAR ;AN000;JW | ||
| 70 | EXTRN ABORT_SELECT:NEAR ;AN000; | ||
| 71 | EXTRN HANDLE_F3:NEAR ;AN001;GHG | ||
| 72 | ; | ||
| 73 | PUBLIC CHECK_VERSION ;AN000; | ||
| 74 | PUBLIC INTRO_SCREEN ;AN000; | ||
| 75 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 76 | ; | ||
| 77 | ; | ||
| 78 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 79 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000; | ||
| 80 | ASSUME CS:SELECT,DS:DATA ;AN000; | ||
| 81 | ; | ||
| 82 | PUBLIC BCHAR ;AN000; | ||
| 83 | DB 'BCHAR=' ;AN000; | ||
| 84 | BCHAR DB ' ' ;AN000; | ||
| 85 | ; | ||
| 86 | INCLUDE CASEXTRN.INC ;AN000; | ||
| 87 | ; | ||
| 88 | EXTRN EXIT_DOS:NEAR ;AN000; | ||
| 89 | EXTRN EXIT_DOS_CONT:NEAR ;AN000; | ||
| 90 | EXTRN PROCESS_ESC_F3:NEAR ;AN000; | ||
| 91 | EXTRN WORKSPACE_SCREEN:NEAR ;AN000; | ||
| 92 | EXTRN DATE_TIME_SCREEN:NEAR ;AN000; | ||
| 93 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 94 | ; | ||
| 95 | ; Beginning of code | ||
| 96 | ; | ||
| 97 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 98 | CHECK_VERSION: ;AN000; | ||
| 99 | INIT_VAR N_HOUSE_CLEAN,E_CLEAN_NO ;AN000; no files to be erased on exit | ||
| 100 | ; | ||
| 101 | CHECK_DOS_VERSION ;AN000; check DOS version | ||
| 102 | ;;;check for DOS version 4.00 ; | ||
| 103 | .IF c ;AN000; if incorrect DOS version | ||
| 104 | DISPLAY_MESSAGE 1 ;AN000; | ||
| 105 | GOTO EXIT_DOS_CONT ;AN000; | ||
| 106 | .ENDIF ;AN000; EXIT | ||
| 107 | ; | ||
| 108 | CHECK_DEFAULT_DRIVE ;AN000; check if default drive is A: | ||
| 109 | ;;;check if default drive is A: ; | ||
| 110 | .IF c ;AN000; if default drive not A: | ||
| 111 | DISPLAY_MESSAGE 4 ;AN000; | ||
| 112 | GOTO EXIT_DOS_CONT ;AN000; | ||
| 113 | .ENDIF ;AN000; EXIT | ||
| 114 | ; | ||
| 115 | CHECK_DISKETTE N_DISKETTE_A,N_DISKETTE_B,N_DISKETTE_TOT,P_STR120_1 ;AN000; | ||
| 116 | ;;;get diskette media type and no of drives ; | ||
| 117 | ;;;N_DISKETTE_A & B - media type 360k,720k, etc ; | ||
| 118 | ;;;N_DISKETTE_TOT - number of drives ; | ||
| 119 | ; | ||
| 120 | CHECK_DISK E_DISK_1,N_DISK_1,N_DISK_1_S1,N_DISK_1_S2,DISK_1_TABLE ;AN000; | ||
| 121 | ;;;get partition status for 1st fixed disk ; | ||
| 122 | ;;;N_DISK_1 - disk status ; | ||
| 123 | ;;;N_DISK_1_S1 - detailed disk status word 1 ; | ||
| 124 | ;;;N_DISK_1_S2 - detailed disk status word 2 ; | ||
| 125 | ;;;DISK_1_TABLE - status of all partitions ; | ||
| 126 | ; | ||
| 127 | CHECK_DISK E_DISK_2,N_DISK_2,N_DISK_2_S1,N_DISK_2_S2,DISK_2_TABLE ;AN000; | ||
| 128 | ;;;get partition status for 2nd fixed disk ; | ||
| 129 | ;;;N_DISK_2 - disk status ; | ||
| 130 | ;;;N_DISK_2_S1 - detailed disk status byte 1 ; | ||
| 131 | ;;;N_DISK_2_S2 - detailed disk status byte 2 ; | ||
| 132 | ;;;DISK_2_TABLE - status of all partitions ; | ||
| 133 | ; | ||
| 134 | CHECK_VALID_MEDIA N_DISKETTE_A,N_DISKETTE_B,N_DISKETTE_TOT,N_DISK_1,N_DEST_DRIVE,I_DEST_DRIVE,N_DRIVE_OPTION ;AN000;JW | ||
| 135 | ;;;check if disk/diskette combination is valid ; | ||
| 136 | ;;;also determine default install drive ; | ||
| 137 | ;;;N_DEST_DRIVE - default/user drive choice ; | ||
| 138 | ;;;I_DEST_DRIVE - drive A: or B: or C: ; ;AN111;JW | ||
| 139 | ;;;N_DRIVE_OPTION - which drive options are avail ;AN111;JW | ||
| 140 | .IF c ;AN000; | ||
| 141 | DISPLAY_MESSAGE 5 ;AN000; | ||
| 142 | GOTO EXIT_DOS_CONT ;AN000; | ||
| 143 | .ENDIF ;AN000; | ||
| 144 | ; | ||
| 145 | GET_INSTALLED_MEM MEM_SIZE ;AN000; | ||
| 146 | ; | ||
| 147 | CHECK_MACHINE MACHINE_TYPE, PS2_FLAG ;AN000;JW | ||
| 148 | ; | ||
| 149 | SCAN_PARAMETERS N_SELECT_MODE ;AN000; | ||
| 150 | ;;;scan command line ; | ||
| 151 | ;;;N_SELECT_MODE - MENU or FDISK ; | ||
| 152 | .IF < N_SELECT_MODE EQ E_SELECT_INV > ;AN000;JW | ||
| 153 | DISPLAY_MESSAGE 6 ;AN000;JW | ||
| 154 | GOTO EXIT_SELECT2 ;AN000;JW | ||
| 155 | .ENDIF ;AN000;JW | ||
| 156 | ; | ||
| 157 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 158 | ; | ||
| 159 | ; If this is reboot after FDISK, load parameters in SELECT.TMP | ||
| 160 | ; | ||
| 161 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 162 | .IF < N_SELECT_MODE eq E_SELECT_FDISK > and ;AN000;JW | ||
| 163 | .IF < N_DISKETTE_A ne E_DISKETTE_360 > ;AN000; | ||
| 164 | CALL SCAN_INFO_CALL ;AN000; | ||
| 165 | .ENDIF ;AN000; | ||
| 166 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 167 | CHECK_DISPLAY ;AN000; determine display type | ||
| 168 | .IF < ACTIVE eq EGA > or ;AN000; | ||
| 169 | .IF < ALTERNATE eq EGA > or ;AN000; | ||
| 170 | .IF < ACTIVE eq LCD > or ;AN000; | ||
| 171 | .IF < ALTERNATE eq LCD > ;AN000; | ||
| 172 | INIT_VAR N_DISPLAY, E_CPSW_DISP ;AN000; | ||
| 173 | .ELSE ;AN000; | ||
| 174 | INIT_VAR N_DISPLAY, E_NOCPSW_DISP ;AN000; | ||
| 175 | .ENDIF ;AN000; | ||
| 176 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 177 | ; | ||
| 178 | ; Read in SELECT.DAT data (all but the help) | ||
| 179 | ; | ||
| 180 | ; This will read in the panels, the scroll fields, | ||
| 181 | ; the color index (COLOR or MONO), and (EVENTUALLY) | ||
| 182 | ; the input fields. | ||
| 183 | ; | ||
| 184 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 185 | SET_DISPLAY_MODE ;AC084; SEH call moved before video information requested ;AN000; set display to 80 col and 25 lines | ||
| 186 | CALL PCGVIDO_CALL ;AN000;get video information | ||
| 187 | ALLOCATE_MEMORY ;AN000;allocate enough memory for SELECT.DAT | ||
| 188 | .IF < NC > ;AN000; | ||
| 189 | CALL INITIALIZE ;AN000;read all panels, color, scroll | ||
| 190 | .IF < NC > ;AN000;check if error condition occurred | ||
| 191 | INITIALIZE_BCHAR BCHAR ;AN000;Initialize the background character | ||
| 192 | JMP MEMORY_ALLOCATED ;AN000; | ||
| 193 | .ELSE ;AN000; | ||
| 194 | JMP EXIT_SELECT ;AN000;terminate SELECT without affecting memory | ||
| 195 | .ENDIF ;AN000; | ||
| 196 | .ELSE ;AN000; | ||
| 197 | DISPLAY_MESSAGE 20 ;AN067;SEH insufficient memory | ||
| 198 | JMP ABORT_SELECT ;AN000; | ||
| 199 | .ENDIF ;AN000; | ||
| 200 | MEMORY_ALLOCATED: ;AN000; | ||
| 201 | ;;; CALL CURSOROFF ;AN000;deactive cursor | ||
| 202 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 203 | ; | ||
| 204 | ; Commence the heart of the SELECT installation routine. | ||
| 205 | ; At the initial portion of the code, a system hardware | ||
| 206 | ; check out is performed. The peripherals are established, | ||
| 207 | ; the display type is determined, and checks are made against | ||
| 208 | ; disk media installed. | ||
| 209 | ; | ||
| 210 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 211 | ;;; CALL CURSOROFF ;AN000; | ||
| 212 | ; | ||
| 213 | .IF < ACTIVE eq EGA > ;AN000; if active display = EGA | ||
| 214 | COPY_STRING S_STR120_1,M_STR120_1,S_PREP_EGA;AN000; set parameter for EGA.CPI | ||
| 215 | .ELSEIF < ACTIVE eq LCD > ;AN000; elseif active display = LCD | ||
| 216 | COPY_STRING S_STR120_1,M_STR120_1,S_PREP_LCD;AN000; set parameter for LCD.CPI | ||
| 217 | .ELSE ;AN000; else | ||
| 218 | INIT_VAR S_STR120_1, 0 ;AN000; set parameter = null | ||
| 219 | .ENDIF ;AN000; | ||
| 220 | ; | ||
| 221 | .IF < S_STR120_1 gt 0 > ;AN000; if parameter is not null | ||
| 222 | EXEC_PROGRAM S_MODE,S_STR120_1,PARM_BLOCK,EXEC_DIR ;AN000;GHG exec MODE CON CP PREP((850)...) | ||
| 223 | EXEC_PROGRAM S_MODE,S_CP_SEL,PARM_BLOCK,EXEC_DIR ;AN000;GHG execute MODE CON CP SEL=850 | ||
| 224 | .ENDIF ;AN000; | ||
| 225 | ; | ||
| 226 | INIT_VAR F_PARTITION, E_PART_DEFAULT ;AN000; | ||
| 227 | INIT_VAR F_FORMAT, E_FORMAT_FAT ;AN000; | ||
| 228 | .IF < N_SELECT_MODE eq E_SELECT_FDISK > ;AN000; | ||
| 229 | INIT_VAR I_DEST_DRIVE, E_DEST_DRIVE_C ;AN000; | ||
| 230 | GOTO DATE_TIME_SCREEN ;AN000; | ||
| 231 | .ENDIF ;AN000; | ||
| 232 | ; | ||
| 233 | CHECK_EXPANDED_MEMORY N_XMA, N_MOD80 ;AN000; check if expanded memory is present | ||
| 234 | GET_NUMBER_PORTS N_PARALLEL, N_SERIAL ;AN000; get number of parallel/serial ports | ||
| 235 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 236 | ; | ||
| 237 | ; Initialize pre-defined country and keyboard information | ||
| 238 | ; | ||
| 239 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 240 | GET_DOS_COUNTRY P_STR120_1, N_COUNTRY ;AN000; get current DOS country | ||
| 241 | GET_COUNTRY_INDEX N_COUNTRY, N_CTY_LIST,I_COUNTRY ;AN000; get index into country table | ||
| 242 | GET_COUNTRY_DEFAULTS N_CTY_LIST, I_COUNTRY ;AN000; get default data for specified country | ||
| 243 | .IF < N_DISPLAY eq E_CPSW_DISP > ;AN000; | ||
| 244 | .IF < N_CPSW eq E_CPSW_NOT_VAL > ;AN000; if cpsw not valid | ||
| 245 | INIT_VAR F_CPSW, E_CPSW_NA ;AN000; set cpsw = not available | ||
| 246 | .ELSEIF < N_CPSW eq E_CPSW_NOT_REC > ;AN000; else if cpsw not recommended | ||
| 247 | INIT_VAR F_CPSW, E_CPSW_NO ;AN000; set cpsw = no | ||
| 248 | .ELSE ;AN000; else | ||
| 249 | INIT_VAR F_CPSW, E_CPSW_YES ;AN000; set cpsw = yes | ||
| 250 | .ENDIF ;AN000; | ||
| 251 | .ELSE ;AN000; | ||
| 252 | INIT_VAR F_CPSW, E_CPSW_NA ;AN000; | ||
| 253 | .ENDIF ;AN000; | ||
| 254 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 255 | ; | ||
| 256 | ; If country is SWISS: | ||
| 257 | ; then get keyboard from an input field | ||
| 258 | ; | ||
| 259 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 260 | COMPARE_STRINGS S_KEYBOARD,S_SWISS ;AN000;GHG is default KB=SF? | ||
| 261 | .IF <NC> ;AN000;GHG | ||
| 262 | RETURN_STRING STR_SWISS_KEYB,S_KEYBOARD,M_KEYBOARD+2;AN000;GHG | ||
| 263 | .ENDIF ;AN000;GHG | ||
| 264 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 265 | ; | ||
| 266 | ; Establish the default keyboard indice based on the | ||
| 267 | ; existing keyboard string. | ||
| 268 | ; | ||
| 269 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 270 | GET_KEYBOARD_INDEX S_KEYBOARD,N_KYBD_LIST,I_KEYBOARD,N_KYBD_ALT;AN000; get kybd info | ||
| 271 | .IF < N_KYBD_ALT eq E_KYBD_ALT_YES > near ;AN000; | ||
| 272 | GET_ALT_KYBD_TABLE S_KEYBOARD,ALT_TAB_PTR,ALT_KYB_ID ;AN000; get ptr to alt kybd | ||
| 273 | COPY_BYTE ALT_KYB_ID_PREV, ALT_KYB_ID ;AN000; set prev id = current id | ||
| 274 | INIT_VAR I_KYBD_ALT, 2 ;AN090; set index into alt kybd list = 2 | ||
| 275 | GET_ALT_KEYBOARD ALT_TAB_PTR,ALT_KYB_ID,I_KYBD_ALT,S_KYBD_ALT;AN000; get alt kybd id | ||
| 276 | .ELSE ;AN000; | ||
| 277 | INIT_VAR ALT_KYB_ID_PREV, 0 ;AN000; set prev alt kyb id = 0 | ||
| 278 | .ENDIF ;AN000; | ||
| 279 | ; | ||
| 280 | INIT_VAR N_KYB_LOAD, E_KYB_LOAD_UND ;AN000; set KEYB loaded status = undefined | ||
| 281 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 282 | ; | ||
| 283 | ; Initialize installation variables to default values | ||
| 284 | ; | ||
| 285 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 286 | .IF < MEM_SIZE eq 256 > ;AN000;JW | ||
| 287 | INIT_VAR I_WORKSPACE, E_WORKSPACE_MIN ;AN000; set workspace option = minimum DOS JW | ||
| 288 | COPY_STRING S_FILES, M_FILES, D_FILES_2 ;AN000; set FILES = 20 | ||
| 289 | .ELSE ;AN000;JW | ||
| 290 | INIT_VAR I_WORKSPACE, E_WORKSPACE_BAL ;AN000; set workspace option = balance DOS | ||
| 291 | COPY_STRING S_FILES, M_FILES, D_FILES_1 ;AN000; set FILES = 20 | ||
| 292 | .ENDIF ;AN000;JW | ||
| 293 | INIT_VAR N_WORK_PREV, 0 ;AN000; set previous workspace option=undefined | ||
| 294 | COPY_STRING S_BREAK, M_BREAK, S_ON ;AN000; set BREAK = ON | ||
| 295 | COPY_STRING S_CPSW, M_CPSW, S_OFF ;AN000; set CPSW = OFF | ||
| 296 | COPY_STRING S_LASTDRIVE,M_LASTDRIVE,D_LASTDRIVE_1 ;AN000; set LASTDRIVE = E | ||
| 297 | INIT_VAR S_STACKS, 0 ;AN000; set STACKS = null (spaces) | ||
| 298 | COPY_STRING S_VERIFY, M_VERIFY, S_OFF ;AN000; set VERIFY = OFF | ||
| 299 | COPY_STRING S_PROMPT, M_PROMPT, D_PROMPT_1 ;AN000; set PROMPT = $P$G | ||
| 300 | COPY_STRING S_DOS_LOC,M_DOS_LOC,D_DOS_LOC_1 ;AN000; set DOS location = DOS | ||
| 301 | INIT_VAR S_INSTALL_PATH, 0 ;AN000; set install path = null | ||
| 302 | INIT_VAR F_SHELL,E_SHELL_NO ;AN000; set SHELL = no | ||
| 303 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 304 | COPY_STRING S_SHELL, M_SHELL, D_SHELL_1 ;AN000; set SHELL parameter = /R | ||
| 305 | .ELSE ;AN000; | ||
| 306 | COPY_STRING S_SHELL, M_SHELL, D_SHELL_2 ;AN000; set SHELL parameter = /R | ||
| 307 | .ENDIF ;AN000;DT | ||
| 308 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 309 | ; | ||
| 310 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 311 | INIT_VAR F_SHARE, E_SHARE_NO ;AN000; set SHARE = no | ||
| 312 | INIT_VAR S_SHARE, 0 ;AN000; set SHARE parameter = null | ||
| 313 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 314 | ; | ||
| 315 | ; Continue initialization ... | ||
| 316 | ; | ||
| 317 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 318 | INIT_VAR F_VDISK, E_VDISK_NO ;AN000; set VDISK = no | ||
| 319 | INIT_VAR S_VDISK, 0 ;AN000; set VDISK field = null (spaces) | ||
| 320 | .IF < N_XMA eq E_XMA_PRESENT > ;AN000; if expanded memory present | ||
| 321 | INIT_VAR F_XMA, E_XMA_NO ;AN000; set XMA = no (default) | ||
| 322 | INIT_VAR S_XMAEM, 0 ;AN000; set XMAEM field=null (spaces) | ||
| 323 | COPY_STRING S_XMA2EMS,M_XMA2EMS,D_XMA2EMS_1 ;AN000; & XMA2EMS field=FRAME=(D000,C800,CC00) | ||
| 324 | .ELSE ;AN000; else | ||
| 325 | INIT_VAR F_XMA, E_XMA_NA ;AN000; set XMA = no | ||
| 326 | .ENDIF ;AN000; | ||
| 327 | INIT_VAR F_REVIEW, E_REVIEW_ACCEPT ;AN000; set review option = accept selection | ||
| 328 | INIT_VAR I_CTY_KYBD, E_CTY_KB_PREDEF ;AN000; set country support=pre-defined support | ||
| 329 | ; | ||
| 330 | .IF < ACTIVE eq CGA > or ;AN000; if CGA adaptor | ||
| 331 | .IF < ALTERNATE eq CGA > ;AN000; | ||
| 332 | INIT_VAR F_GRAFTABL, E_GRAFTABL_YES ;AN000; set GRAFTABL = yes | ||
| 333 | .ELSE ;AN000; else | ||
| 334 | INIT_VAR F_GRAFTABL, E_GRAFTABL_NA ;AN000; set GRAFTABL = not available | ||
| 335 | .ENDIF ;AN000; | ||
| 336 | ; | ||
| 337 | INIT_VAR N_NUMPRINT, MIN_NUMPRINT ;AN000; set number of printers = 0 | ||
| 338 | INIT_VAR I_PRINTER, 1 ;AN000; set index into printer list = 1 | ||
| 339 | INIT_VAR I_PORT, 1 ;AN000; set port number = 1 | ||
| 340 | INIT_VAR I_REDIRECT, 1 ;AN000; set redirect port number = 1 | ||
| 341 | ; | ||
| 342 | CALL HOOK_INT_23 ;AN074; SEH don't allow ctrl-break | ||
| 343 | CALL CURSOROFF ;AN054; SEH moved from earlier in code | ||
| 344 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 345 | ; | ||
| 346 | ; ������������������������������������Ŀ | ||
| 347 | ; �WELCOME_SCREEN � | ||
| 348 | ; � � | ||
| 349 | ; �������������������������������������� | ||
| 350 | ; | ||
| 351 | ; The WELCOME screen is always presented. | ||
| 352 | ; The screen does not have help, F3 function or input variables. | ||
| 353 | ; Valid keys are ENTER and ESC. | ||
| 354 | ; ESC key will return control to the DOS command line. | ||
| 355 | ; If installing from 360KB diskettes, must prompt for INSTALL diskette | ||
| 356 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 357 | WELCOME_SCREEN: ;AN000; | ||
| 358 | ; | ||
| 359 | .IF < N_DISKETTE_A eq E_DISKETTE_360 > ;AN000; | ||
| 360 | INSERT_DISK SUB_REM_DOS_A, S_DOS_COM_360 ;AN000; Insert the INSTALL diskette | ||
| 361 | .ENDIF ;AN000; | ||
| 362 | ; | ||
| 363 | WELCOME_SCREEN2: ;AN000; | ||
| 364 | INIT_PQUEUE PAN_WELCOME ;AN000; initialize queue | ||
| 365 | PREPARE_PANEL SUB_CONT_OPTION ;AN000; prepare continue or cancel | ||
| 366 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 367 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 368 | DISPLAY_PANEL ;AN000; display WELCOME panel | ||
| 369 | ; | ||
| 370 | GET_FUNCTION FK_ENT_ESC_F3 ;AN000; get user entered function | ||
| 371 | .IF < N_USER_FUNC eq E_F3 > ;AN000;DT if user entered F3 key | ||
| 372 | GOTO EXIT_DOS ;AN000;DT | ||
| 373 | .ELSEIF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key | ||
| 374 | FIND_FILE S_PRINT_FILE, E_FILE_ATTR ;AN001; check to make sure they did not switch | ||
| 375 | .IF < c > ;AN000;JW | ||
| 376 | INSERT_DISK SUB_REM_DOS_A, S_PRINT_FILE ;AN000;JW | ||
| 377 | .ENDIF ;AN000;JW | ||
| 378 | GOTO INTRO_SCREEN ;AN000; go to next screen | ||
| 379 | .ELSE ;AN000; else | ||
| 380 | CALL HANDLE_F3 ;AN001;GHG exit to DOS command line | ||
| 381 | .IF < C > ;AN001;GHG | ||
| 382 | GOTO EXIT_DOS ;AN001;GHG | ||
| 383 | .ELSE ;AN001;GHG | ||
| 384 | GOTO WELCOME_SCREEN2 ;AN001;GHG | ||
| 385 | .ENDIF ;AN000; | ||
| 386 | .ENDIF ;AN000; | ||
| 387 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 388 | ; | ||
| 389 | ; ������������������������������������Ŀ | ||
| 390 | ; �INTRO_SCREEN � | ||
| 391 | ; � � | ||
| 392 | ; �������������������������������������� | ||
| 393 | ; | ||
| 394 | ; The INTRODUCTION screen is always presented. | ||
| 395 | ; The screen does not have help, F3 function or any variables. | ||
| 396 | ; Valid keys are ENTER and ESC. | ||
| 397 | ; ESC key will return control to the DOS command line. | ||
| 398 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 399 | INTRO_SCREEN: ;AN000; | ||
| 400 | INIT_PQUEUE PAN_INTRO ;AN000; initialize queue | ||
| 401 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 402 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 403 | DISPLAY_PANEL ;AN000; display INTRODUCTION panel | ||
| 404 | ; | ||
| 405 | GET_FUNCTION FK_ENT_ESC_F3 ;AN000; get user entered function | ||
| 406 | .IF < N_USER_FUNC eq E_F3 > ;AN027;SEH Added to prevent going to Welcome Screen | ||
| 407 | GOTO EXIT_DOS ;AN027;SEH when F3 hit | ||
| 408 | ; (ENTER or ESC) | ||
| 409 | .ELSEIF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key | ||
| 410 | GOTO WORKSPACE_SCREEN ;AN000; go to next screen | ||
| 411 | .ELSE ;AN000; else | ||
| 412 | GOTO WELCOME_SCREEN2 ;AN001;GHG; exit to DOS command line | ||
| 413 | .ENDIF ;AN000; | ||
| 414 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 415 | ; | ||
| 416 | ; ROUTINE TO SCAN SELECT.TMP FILE | ||
| 417 | ; | ||
| 418 | ; Broken down into a subroutine for code savings... | ||
| 419 | ; | ||
| 420 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 421 | PUBLIC SCAN_INFO_CALL ;AN000; | ||
| 422 | SCAN_INFO_CALL PROC NEAR ;AN000; | ||
| 423 | SCAN_INFO_FILE F_SHELL, N_FORMAT_MODE,N_DISK1_MODE,I_DESTINATION,S_INSTALL_PATH,S_SELECT_TMP,P_STR120_1,M_STR120_1 | ||
| 424 | ;;;F_SHELL - shell installation flag | ||
| 425 | ;;;N_FORMAT_MODE - partition & format option : | ||
| 426 | ;;; new(select),new(user),used(user) ; | ||
| 427 | ;;;N_DISK1_MODE - 1st disk status - new or used ; | ||
| 428 | ;;;I_DESTINATION - destination on c: disk option | ||
| 429 | ;;;S_INSTALL_PATH - DOS install path ; | ||
| 430 | ;;;S_SELECT_TMP - file for FDISK parameters ; | ||
| 431 | ; | ||
| 432 | .IF < N_SELECT_MODE eq E_SELECT_INV > ;AN000; if SELECT mode not MENU or FDISK | ||
| 433 | DISPLAY_MESSAGE 6 ;AN000; | ||
| 434 | GOTO EXIT_DOS_CONT ;AN000; | ||
| 435 | .ENDIF ;AN000; EXIT | ||
| 436 | ; | ||
| 437 | .IF < N_SELECT_MODE eq E_SELECT_FDISK > and ;AN000; if SELECT mode is FDISK | ||
| 438 | .IF < N_FORMAT_MODE eq E_SELECT_INV > or ;AN000; and format and disk status | ||
| 439 | .IF < N_DISK1_MODE eq E_SELECT_INV > ;AN000; not available from SELECT.TMP | ||
| 440 | DISPLAY_MESSAGE 6 ;AN000; | ||
| 441 | GOTO EXIT_DOS_CONT ;AN000; | ||
| 442 | .ENDIF ;AN000; EXIT | ||
| 443 | RET ;AN000; | ||
| 444 | SCAN_INFO_CALL ENDP ;AN000; | ||
| 445 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 446 | SELECT ENDS ;AN000; | ||
| 447 | END ;AN000; | ||
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; | ||
diff --git a/v4.0/src/SELECT/SELECT2A.ASM b/v4.0/src/SELECT/SELECT2A.ASM new file mode 100644 index 0000000..f253a3f --- /dev/null +++ b/v4.0/src/SELECT/SELECT2A.ASM | |||
| @@ -0,0 +1,381 @@ | |||
| 1 | |||
| 2 | |||
| 3 | PAGE 55,132 ;AN000; | ||
| 4 | NAME SELECT ;AN000; | ||
| 5 | TITLE SELECT - DOS - SELECT.EXE ;AN000; | ||
| 6 | SUBTTL SELECT2A.asm ;AN000; | ||
| 7 | .ALPHA ;AN000; | ||
| 8 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 9 | ; | ||
| 10 | ; SELECT2A.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 | ; CHANGE HISTORY: | ||
| 26 | ; | ||
| 27 | ; mrw0 6/16/88 Added panel for shell selection... | ||
| 28 | ; | ||
| 29 | ; | ||
| 30 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 31 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; Dummy data segment | ||
| 32 | EXTRN SEG_LOC:WORD ;AN000; | ||
| 33 | EXTRN NAMES_OFF:WORD ;AN000; | ||
| 34 | EXTRN N_PRN_NAMES:WORD ;AN000; | ||
| 35 | EXTRN MAX_NAME:WORD ;AN000; | ||
| 36 | EXTRN SIZE_NAMES:ABS ;AN000; | ||
| 37 | DATA ENDS ;AN000; | ||
| 38 | ; | ||
| 39 | .XLIST ;AN000; | ||
| 40 | INCLUDE PANEL.MAC ;AN000; | ||
| 41 | INCLUDE SELECT.INC ;AN000; | ||
| 42 | INCLUDE PAN-LIST.INC ;AN000; | ||
| 43 | INCLUDE CASTRUC.INC ;AN000; | ||
| 44 | INCLUDE STRUC.INC ;AN000; | ||
| 45 | INCLUDE MACROS.INC ;AN000; | ||
| 46 | INCLUDE EXT.INC ;AN000; | ||
| 47 | INCLUDE VARSTRUC.INC ;AN000; | ||
| 48 | INCLUDE ROUT_EXT.INC ;AN000; | ||
| 49 | .LIST ;AN000; | ||
| 50 | PUBLIC DOS_LOC_SCREEN ;AN000; | ||
| 51 | PUBLIC PRINTER_SCREEN ;AN000; | ||
| 52 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 53 | ; | ||
| 54 | ; | ||
| 55 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 56 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000; | ||
| 57 | ASSUME CS:SELECT,DS:DATA ;AN000; | ||
| 58 | ; | ||
| 59 | INCLUDE CASEXTRN.INC ;AN000; | ||
| 60 | ; | ||
| 61 | EXTRN INSTALL_ERROR:NEAR ;AN000; | ||
| 62 | EXTRN EXIT_DOS:NEAR ;AN000; | ||
| 63 | EXTRN EXIT_SELECT:NEAR ;AN000; | ||
| 64 | ; | ||
| 65 | EXTRN PROCESS_ESC_F3:NEAR ;AN000; | ||
| 66 | EXTRN INTRO_SCREEN:NEAR ;AN000; | ||
| 67 | EXTRN choose_shell_screen:NEAR ;mrw0 ;AC020;SEH | ||
| 68 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 69 | ; | ||
| 70 | ; ������������������������������������Ŀ | ||
| 71 | ; �DOS_LOC_SCREEN � | ||
| 72 | ; � � | ||
| 73 | ; �������������������������������������� | ||
| 74 | ; | ||
| 75 | ; The DOS LOCATION screen is presented only if DOS is to be installed | ||
| 76 | ; on drive C:. | ||
| 77 | ; The maximum length of the install path will be limited to 40 characters. | ||
| 78 | ; This restriction is imposed so that when generating commands | ||
| 79 | ; for the CONFIG.SYS and AUTOEXEC.BAT files, the command line length will not | ||
| 80 | ; exceed 128 characters. | ||
| 81 | ; When the screen is presented for the first time, the default install | ||
| 82 | ; path displayed will be "DOS". On subsequent presentations, the user | ||
| 83 | ; selected path will be displayed. | ||
| 84 | ; Valid keys are ENTER, ESC, F1, F3 and ASCII characters A to Z. | ||
| 85 | ;?????????????????????????????update????????????????????????????????? | ||
| 86 | ; The Functional Specification dated 5 May 1987, states that the APPEND | ||
| 87 | ; and PATH commands will be generated if the user selected to minimize workspace | ||
| 88 | ; or maximize workspace but not if the user selected balance workspace. Since | ||
| 89 | ; this assumption does not seem logical, the check has been revised to | ||
| 90 | ; generate the commands if the install destination is drive C:. Also, the | ||
| 91 | ; PC/DOS parameters screen does not check for the workspace definition. | ||
| 92 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 93 | DOS_LOC_SCREEN: ;AN000; | ||
| 94 | .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C > ;AN111; if install destination is drive A: or B: JW | ||
| 95 | .THEN ;AN000; | ||
| 96 | INIT_VAR F_PROMPT, E_PROMPT_NO ;AN000; set prompt = no | ||
| 97 | INIT_VAR F_PATH, E_PATH_NO ;AN000; set path = no | ||
| 98 | INIT_VAR F_APPEND, E_APPEND_NO ;AN000; set append = no | ||
| 99 | GOTO PRINTER_SCREEN ;AN000; goto next screen (PRINTER) | ||
| 100 | .ENDIF ;AN000; | ||
| 101 | ; | ||
| 102 | INIT_PQUEUE PAN_DOS_LOC ;AN000; initialize queue | ||
| 103 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 104 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 105 | INIT_STRING STR_DOS_LOC,S_DOS_LOC,M_DOS_LOC ;AN000; | ||
| 106 | .IF < N_DISK1_MODE ne E_DISK1_INSTALL > ;AN000; if this is not a new fixed disk JW | ||
| 107 | .THEN ;AN000; then JW | ||
| 108 | INIT_SCROLL SCR_COPY_DEST,I_DESTINATION ;AN000; initialize destination choice JW | ||
| 109 | INIT_SCROLL_COLOUR SCR_COPY_DEST,2 ;AN026; set field to not active color | ||
| 110 | .ENDIF ;AN000; endif JW | ||
| 111 | DISPLAY_PANEL ;AN000; display DOS_LOC panel | ||
| 112 | ; | ||
| 113 | COPY_STRING S_STR120_1,M_STR120_1,S_DOS_LOC ;AN000; | ||
| 114 | ; | ||
| 115 | GET_DOS_LOCATION: ;AN000; | ||
| 116 | GET_STRING STR_DOS_LOC,S_STR120_1,M_DOS_LOC,FK_TAB ;AN000;get new install path | ||
| 117 | ; | ||
| 118 | PROCESS_F3 ;AN000; if user entered F3, exit to DOS | ||
| 119 | PROCESS_ESC ;AN000; if user entered ESC, goto previous screen | ||
| 120 | ; | ||
| 121 | COPY_STRING S_STR120_1,M_STR120_1,S_USER_STRING ;AN000; | ||
| 122 | CHECK_PATH S_STR120_1,0, 0 ;AN000; | ||
| 123 | .IF nc near ;AN000; if path is valid | ||
| 124 | .THEN ;AN000; | ||
| 125 | COPY_STRING S_DOS_LOC,M_DOS_LOC,S_USER_STRING ;AN000; save new DOS install path | ||
| 126 | COPY_STRING S_STR120_2, M_STR120_2, S_INSTALL_PATH;AN000;save old install path | ||
| 127 | MERGE_STRING S_INSTALL_PATH,M_INSTALL_PATH,S_DEST_DRIVE,S_DOS_LOC ;AN000; add 'C:\' to install path | ||
| 128 | COMPARE_STRINGS S_INSTALL_PATH, S_STR120_2 ;AN000; compare old and new paths | ||
| 129 | .IF c ;AN000; if paths different | ||
| 130 | .THEN ;AN000; | ||
| 131 | INIT_VAR F_APPEND, E_APPEND_YES ;AN000; set APPEND = yes | ||
| 132 | COPY_STRING S_APPEND,M_APPEND,S_INSTALL_PATH;AN000; set new APPEND path | ||
| 133 | INIT_VAR F_PATH, E_PATH_YES ;AN000; set PATH = yes | ||
| 134 | COPY_STRING S_PATH, M_PATH, S_INSTALL_PATH ;AN000; set new DOS path | ||
| 135 | .ELSEIF < S_APPEND eq 0 > ;AN000; | ||
| 136 | .THEN ;AN000; | ||
| 137 | COPY_STRING S_APPEND,M_APPEND,S_INSTALL_PATH;AN000; | ||
| 138 | INIT_VAR F_APPEND, E_APPEND_YES ;AN000; | ||
| 139 | .ENDIF ;AN000; | ||
| 140 | .IF < I_WORKSPACE eq E_WORKSPACE_MIN > ;AN000; if workspace option = minimize | ||
| 141 | .THEN ;AN000; | ||
| 142 | INIT_VAR S_APPEND, 0 ;AN000; set APPEND= null | ||
| 143 | .ENDIF ;AN000; | ||
| 144 | INIT_VAR F_PROMPT, E_PROMPT_YES ;AN000; set PROMPT = yes | ||
| 145 | .ELSE ;AN000; else | ||
| 146 | HANDLE_ERROR ERR_BAD_PATH, E_RETURN ;AN000; pop error message | ||
| 147 | GOTO GET_DOS_LOCATION ;AN000; goto get DOS location again | ||
| 148 | .ENDIF ;AN000; | ||
| 149 | ; | ||
| 150 | .IF < N_DISK1_MODE ne E_DISK1_INSTALL > AND ;AN000; if this is not a new fixed disk JW | ||
| 151 | .IF < N_USER_FUNC eq E_TAB > ;AN000; if user tabbed to the scroll field JW | ||
| 152 | .THEN ;AN000; JW | ||
| 153 | GET_SCROLL SCR_COPY_DEST,I_DESTINATION,FK_TAB ;AN000; JW | ||
| 154 | PROCESS_F3 ;AN000; if user entered F3, exit to DOS JW | ||
| 155 | PROCESS_ESC ;AN000; JW | ||
| 156 | COPY_WORD I_DESTINATION, I_USER_INDEX ;AN000; save new install destination drive JW | ||
| 157 | .IF < N_USER_FUNC eq E_TAB > ;AN000; if user entered ESC JW | ||
| 158 | .THEN ;AN000; JW | ||
| 159 | SET_SCROLL SCR_COPY_DEST,I_DESTINATION ;AN026; Set to not active | ||
| 160 | GOTO GET_DOS_LOCATION ;AC051;SEH ;AN000 Go get dos location JW | ||
| 161 | .ENDIF ;AN000; JW | ||
| 162 | .ENDIF ;AN000; JW | ||
| 163 | PUSH_HEADING DOS_LOC_SCREEN ;AC051;SEH ;AN000; save screen address on SELECT STACK | ||
| 164 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 165 | ; | ||
| 166 | ; ������������������������������������Ŀ | ||
| 167 | ; �PRINTER_SCREEN � | ||
| 168 | ; � � | ||
| 169 | ; �������������������������������������� | ||
| 170 | ; | ||
| 171 | ; The PRINTER SCREEN is always presented. | ||
| 172 | ; The screen allows the user to indicate the number of printers attached. | ||
| 173 | ; Valid keys are ENTER, ESC, F1, F3 and numeric 0 to 7. | ||
| 174 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 175 | PRINTER_SCREEN: ;AN000; | ||
| 176 | .IF < N_PARALLEL eq 0 > and ;AN000; if zero parallel and | ||
| 177 | .IF < N_SERIAL eq 0 > ;AN000; and zero serial printers | ||
| 178 | .THEN ;AN000; | ||
| 179 | INIT_VAR F_GRAPHICS, E_GRAPHICS_NO ;AN000; set GRAPHICS = no JW | ||
| 180 | GOTO choose_shell_screen ;mrw0 ;AC020;SEH goto next screen | ||
| 181 | .ENDIF ;AN000; | ||
| 182 | ; | ||
| 183 | ;;;display panel to get number of printers ; | ||
| 184 | INIT_PQUEUE PAN_PRINTER ;AN000; initialize queue | ||
| 185 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 186 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 187 | INIT_NUMERIC NUM_PRINTER,N_NUMPRINT,MAX_NUMPRINT,S_STR120_1;AN000; | ||
| 188 | DISPLAY_PANEL ;AN000; | ||
| 189 | ; | ||
| 190 | ;;;get number of printers ; | ||
| 191 | GET_NUMERIC NUM_PRINTER,N_NUMPRINT,MIN_NUMPRINT,MAX_NUMPRINT,FK_TEXT,S_STR120_1;AN000; | ||
| 192 | ; | ||
| 193 | ;;;save number of printers and goto next screen ; | ||
| 194 | .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key | ||
| 195 | .THEN ;AN000; | ||
| 196 | COPY_WORD N_NUMPRINT, N_USER_NUMERIC ;AN000; save number of printers | ||
| 197 | PUSH_HEADING PRINTER_SCREEN ;AN000; save screen address on SELECT STACK | ||
| 198 | .ELSE ;AN000; | ||
| 199 | GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action | ||
| 200 | .ENDIF ;AN000; | ||
| 201 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 202 | ; | ||
| 203 | ; ������������������������������������Ŀ | ||
| 204 | ; �PRINTER_TYPE_SCREEN � | ||
| 205 | ; � � | ||
| 206 | ; �������������������������������������� | ||
| 207 | ; | ||
| 208 | ; Get type of printer | ||
| 209 | ; | ||
| 210 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 211 | PRINTER_TYPE_SCREEN: ;AN000; | ||
| 212 | .IF < N_NUMPRINT eq MIN_NUMPRINT > ;AN000; if zero printers specified | ||
| 213 | .THEN ;AN000; | ||
| 214 | INIT_VAR F_GRAPHICS, E_GRAPHICS_NO ;AN000; set GRAPHICS = no JW | ||
| 215 | GOTO choose_shell_screen ;mrw0 ;AC020; SEH goto next screen | ||
| 216 | .ENDIF ;AN000; | ||
| 217 | ; | ||
| 218 | GET_PRINTER_TITLES S_PRINT_FILE ;AN000; read printer titles from SELECT.PRT | ||
| 219 | .IF c ;AN000; if error reading file | ||
| 220 | .THEN ;AN000; | ||
| 221 | INIT_VAR N_NUMPRINT, MIN_NUMPRINT ;AN000; set no of printers = 0 | ||
| 222 | HANDLE_ERROR ERR_BAD_PFILE, E_RETURN ;AN000; popup error message | ||
| 223 | GOTO choose_shell_screen ;mrw0 ;AC020; SEH goto next screen | ||
| 224 | .ENDIF ;AN000; | ||
| 225 | ; | ||
| 226 | INIT_VAR N_COUNTER, 1 ;AN000; set printer no = 1 | ||
| 227 | .IF < I_WORKSPACE ne E_WORKSPACE_MIN > ;AN014; SEH if not minimum DOS workspace | ||
| 228 | .THEN ;AN014; | ||
| 229 | INIT_VAR F_GRAPHICS, E_GRAPHICS_YES ;AN000; set GRAPHICS = yes SEH | ||
| 230 | .ENDIF ;AN014; SEH | ||
| 231 | ; | ||
| 232 | GET_PRINTER_TYPE: ;AN000; repeat loop to get printer info | ||
| 233 | ; | ||
| 234 | .IF < N_COUNTER eq 0 > ;AN000; if printer no = zero | ||
| 235 | .THEN ;AN000; | ||
| 236 | RELEASE_PRINTER_INFO ;AN000; release memory | ||
| 237 | .IF c ;AN000; | ||
| 238 | .THEN ;AN000; | ||
| 239 | GOTO INSTALL_ERROR ;AN000; | ||
| 240 | .ENDIF ;AN000; | ||
| 241 | POP_HEADING ;AN000; goto previous screen | ||
| 242 | .ENDIF ;AN000; | ||
| 243 | ; | ||
| 244 | .SELECT ;AN000; get printer no sub panel | ||
| 245 | ; | ||
| 246 | .WHEN < N_COUNTER eq 1 > ;AN000; | ||
| 247 | INIT_VAR N_BYTE_1, '1' ;AC025; | ||
| 248 | ; | ||
| 249 | .WHEN < N_COUNTER eq 2 > ;AN000; | ||
| 250 | INIT_VAR N_BYTE_1, '2' ;AC025; | ||
| 251 | ; | ||
| 252 | .WHEN < N_COUNTER eq 3 > ;AN000; | ||
| 253 | INIT_VAR N_BYTE_1, '3' ;AC025; | ||
| 254 | ; | ||
| 255 | .WHEN < N_COUNTER eq 4 > ;AN000; | ||
| 256 | INIT_VAR N_BYTE_1, '4' ;AC025; | ||
| 257 | ; | ||
| 258 | .WHEN < N_COUNTER eq 5 > ;AN000; | ||
| 259 | INIT_VAR N_BYTE_1, '5' ;AC025; | ||
| 260 | ; | ||
| 261 | .WHEN < N_COUNTER eq 6 > ;AN000; | ||
| 262 | INIT_VAR N_BYTE_1, '6' ;AC025; | ||
| 263 | ; | ||
| 264 | .OTHERWISE ;AN000; | ||
| 265 | INIT_VAR N_BYTE_1, '7' ;AC025; | ||
| 266 | ; | ||
| 267 | .ENDSELECT ;AN000; | ||
| 268 | ; | ||
| 269 | GET_PRINTER_PARAMS N_COUNTER, 0, N_RETCODE ;AN000; based on printer # | ||
| 270 | ; | ||
| 271 | ;;;N_BYTE_1 = printer number ; | ||
| 272 | INIT_CHAR N_BYTE_1, E_DISK_ROW, E_DISK_COL, SUB_PRINTER_1 ;AN025; display the printer number | ||
| 273 | INIT_PQUEUE PAN_PRT_TYPE ;AN000; initialize queue | ||
| 274 | PREPARE_PANEL SUB_PRINTER_1 ;AC025; printer no | ||
| 275 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 276 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 277 | INIT_SCROLL_W_LIST SCR_PRT_TYPE,SEG_LOC,NAMES_OFF,N_PRN_NAMES,SIZE_NAMES,MAX_NAME,I_PRINTER;AN000; | ||
| 278 | DISPLAY_PANEL ;AN000; | ||
| 279 | ; | ||
| 280 | GET_SCROLL SCR_PRT_TYPE,I_PRINTER,FK_SCROLL;AN000; get printer type | ||
| 281 | ; | ||
| 282 | PROCESS_F3 ;AN000; take action if F3 entered | ||
| 283 | ; | ||
| 284 | .IF < N_USER_FUNC eq E_ESCAPE > ;AN000; if user entered ESC | ||
| 285 | .THEN ;AN000; | ||
| 286 | DEC N_COUNTER ;AN000; dec printer number | ||
| 287 | GOTO GET_PRINTER_TYPE ;AN000; goto previous printer | ||
| 288 | .ENDIF ;AN000; | ||
| 289 | ; | ||
| 290 | COPY_WORD I_PRINTER, I_USER_INDEX ;AN000; save printer type | ||
| 291 | ; | ||
| 292 | GET_PRINTER_INFO I_PRINTER ;AN000; get printer info from SELECT.PRT | ||
| 293 | .IF c ;AN000; if error | ||
| 294 | .THEN ;AN000; | ||
| 295 | HANDLE_ERROR ERR_BAD_PPRO, E_RETURN ;AN000; popup error message | ||
| 296 | GOTO GET_PRINTER_TYPE ;AN000; goto get printer type | ||
| 297 | .ENDIF ;AN000; | ||
| 298 | ; | ||
| 299 | .IF < N_PRINTER_TYPE eq E_PARALLEL > and ;AN000; | ||
| 300 | .IF < N_PARALLEL eq 0 > ;AN000; | ||
| 301 | .THEN ;AN000; | ||
| 302 | HANDLE_ERROR ERR_PRT_NO_HDWR, E_RETURN ;AN000; | ||
| 303 | GOTO GET_PRINTER_TYPE ;AN000; | ||
| 304 | .ENDIF ;AN000; | ||
| 305 | ; | ||
| 306 | .IF < N_PRINTER_TYPE eq E_SERIAL > and ;AN000; | ||
| 307 | .IF < N_SERIAL eq 0 > ;AN000; | ||
| 308 | .THEN ;AN000; | ||
| 309 | HANDLE_ERROR ERR_PRT_NO_HDWR, E_RETURN ;AN000; | ||
| 310 | GOTO GET_PRINTER_TYPE ;AN000; | ||
| 311 | .ENDIF ;AN000; | ||
| 312 | ; | ||
| 313 | .SELECT ;AN000; | ||
| 314 | ; | ||
| 315 | .WHEN < N_PRINTER_TYPE eq E_PARALLEL > near ;AN000; if parallel printer | ||
| 316 | INIT_CHAR N_BYTE_1, E_DISK_ROW, E_DISK_COL, SUB_PRINTER_1 ;AN025; display the printer number | ||
| 317 | INIT_PQUEUE PAN_PARALLEL ;AN000; initialize queue | ||
| 318 | PREPARE_PANEL SUB_PRINTER_1 ;AC025; | ||
| 319 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 320 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 321 | INIT_SCROLL_W_LIST SCR_ACC_PRT,SEG_LOC,NAMES_OFF,N_PRN_NAMES,SIZE_NAMES,MAX_NAME,I_PRINTER;AN000; | ||
| 322 | INIT_SCROLL_W_NUM SCR_PARALLEL,N_PARALLEL,I_PORT ;AN000; | ||
| 323 | DISPLAY_PANEL ;AN000; display panel | ||
| 324 | ; | ||
| 325 | GET_SCROLL SCR_PARALLEL, I_PORT, FK_SCROLL ;AN000; | ||
| 326 | COPY_WORD I_PORT, I_USER_INDEX ;AN000; | ||
| 327 | ; | ||
| 328 | .OTHERWISE near ;AN000; if serial printer | ||
| 329 | ; | ||
| 330 | INIT_CHAR N_BYTE_1, E_DISK_ROW, E_DISK_COL, SUB_PRINTER_1 ;AN025; display the printer number | ||
| 331 | INIT_PQUEUE PAN_SERIAL ;AN000; initialize queue | ||
| 332 | PREPARE_PANEL SUB_PRINTER_1 ;AN025; | ||
| 333 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 334 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 335 | INIT_SCROLL_W_LIST SCR_ACC_PRT,SEG_LOC,NAMES_OFF,N_PRN_NAMES,SIZE_NAMES,MAX_NAME,I_PRINTER;AN000; | ||
| 336 | INIT_SCROLL_W_NUM SCR_SERIAL,N_SERIAL,I_PORT ;AN000; | ||
| 337 | INIT_SCROLL SCR_PRT_REDIR, I_REDIRECT ;AN000; | ||
| 338 | INIT_SCROLL_COLOUR SCR_PRT_REDIR, 2 ;AN000; | ||
| 339 | DISPLAY_PANEL ;AN000; | ||
| 340 | ; | ||
| 341 | .REPEAT ;AN000; | ||
| 342 | SET_SCROLL SCR_PRT_REDIR, I_REDIRECT ;AN000; | ||
| 343 | GET_SCROLL SCR_SERIAL, I_PORT, FK_TAB ;AN000; | ||
| 344 | COPY_WORD I_PORT, I_USER_INDEX ;AN000; | ||
| 345 | .IF < N_USER_FUNC eq E_TAB > near ;AN000; | ||
| 346 | .THEN ;AN000; | ||
| 347 | SET_SCROLL SCR_SERIAL, I_PORT ;AN000; | ||
| 348 | GET_SCROLL SCR_PRT_REDIR,I_REDIRECT,FK_TAB ;AN000; | ||
| 349 | COPY_WORD I_REDIRECT, I_USER_INDEX ;AN000; | ||
| 350 | .ENDIF ;AN000; | ||
| 351 | ; | ||
| 352 | .UNTIL < N_USER_FUNC eq E_ENTER > or near ;AN000; | ||
| 353 | .UNTIL < N_USER_FUNC eq E_ESCAPE > or near ;AN000; | ||
| 354 | .UNTIL < N_USER_FUNC eq E_F3 > ;AN000; | ||
| 355 | ; | ||
| 356 | .ENDSELECT ;AN000; | ||
| 357 | ; | ||
| 358 | PROCESS_F3 ;AN000; | ||
| 359 | ; | ||
| 360 | .IF < N_USER_FUNC eq E_ESCAPE > ;AN000; if user entered ESC | ||
| 361 | .THEN ;AN000; | ||
| 362 | GOTO GET_PRINTER_TYPE ;AN000; goto get printer type | ||
| 363 | .ENDIF ;AN000; | ||
| 364 | SAVE_PRINTER_PARAMS N_COUNTER ;AN000; save printer parameters | ||
| 365 | INC_VAR N_COUNTER ;AN000; inc printer number | ||
| 366 | COMP_WORDS N_COUNTER, N_NUMPRINT ;AN000; if printer no > no of printers | ||
| 367 | .IF nc and ;AN000; | ||
| 368 | .IF nz ;AN000; | ||
| 369 | .THEN ;AN000; | ||
| 370 | RELEASE_PRINTER_INFO ;AN000; release memory | ||
| 371 | .IF c ;AN000; if error | ||
| 372 | .THEN ;AN000; | ||
| 373 | GOTO INSTALL_ERROR ;AN000; ::::::: | ||
| 374 | .ENDIF ;AN000; | ||
| 375 | GOTO choose_shell_screen ;mrw0 ;AC020; SEH goto next screen | ||
| 376 | .ELSE ;AN000; | ||
| 377 | GOTO GET_PRINTER_TYPE ;AN000; | ||
| 378 | .ENDIF ;AN000; | ||
| 379 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 380 | SELECT ENDS ;AN000; | ||
| 381 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/SELECT3.ASM b/v4.0/src/SELECT/SELECT3.ASM new file mode 100644 index 0000000..64c46c5 --- /dev/null +++ b/v4.0/src/SELECT/SELECT3.ASM | |||
| @@ -0,0 +1,286 @@ | |||
| 1 | |||
| 2 | |||
| 3 | PAGE 60,132 ;AN000; | ||
| 4 | NAME SELECT ;AN000; | ||
| 5 | TITLE SELECT - DOS - SELECT.EXE ;AN000; | ||
| 6 | SUBTTL SELECT3.asm ;AN000; | ||
| 7 | .ALPHA ;AN000; | ||
| 8 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 9 | ; | ||
| 10 | ; SELECT3.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 | ; 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 | ||
| 31 | ; | ||
| 32 | ; | ||
| 33 | ; ;AN001; GHG changes for 0 Parallel/Serial printer ports | ||
| 34 | ; | ||
| 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; | ||
| 42 | DATA ENDS ;AN000; | ||
| 43 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 44 | ; | ||
| 45 | ; | ||
| 46 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 47 | .XLIST ;AN000; | ||
| 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; | ||
| 57 | .LIST ;AN000; | ||
| 58 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 59 | ; | ||
| 60 | ; Continuation of code ... | ||
| 61 | ; | ||
| 62 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 63 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000; | ||
| 64 | ASSUME CS:SELECT,DS:DATA ;AN000; | ||
| 65 | ; | ||
| 66 | INCLUDE CASEXTRN.INC ;AN000; | ||
| 67 | ; | ||
| 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 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 76 | ; | ||
| 77 | ; ������������������������������������Ŀ | ||
| 78 | ; �choose_shell_screen � | ||
| 79 | ; � � | ||
| 80 | ; �������������������������������������� | ||
| 81 | ; | ||
| 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. | ||
| 86 | ;---- | ||
| 87 | ; Note: This screen (and, hence, all shell support) can be eradicated | ||
| 88 | ; by defining the symbol NOSHELL. | ||
| 89 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 90 | choose_shell_screen: ;AN000; | ||
| 91 | IFNDEF NOSHELL | ||
| 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 | ||
| 97 | ; | ||
| 98 | GET_SCROLL SCR_choose_shell, f_shell, FK_SCROLL ;AN000; get new shell option | ||
| 99 | ; | ||
| 100 | .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key | ||
| 101 | .THEN ;AN000; | ||
| 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) | ||
| 105 | .ELSE ;AN000; | ||
| 106 | GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action | ||
| 107 | .ENDIF ;AN000; | ||
| 108 | ENDIF | ||
| 109 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 110 | ; | ||
| 111 | ; ������������������������������������Ŀ | ||
| 112 | ; �REVIEW_SELECTION_SCREEN � | ||
| 113 | ; � � | ||
| 114 | ; �������������������������������������� | ||
| 115 | ; | ||
| 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 | ||
| 126 | ; | ||
| 127 | GET_SCROLL SCR_REVIEW, F_REVIEW, FK_SCROLL ;AN000; get new review option | ||
| 128 | ; | ||
| 129 | .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key | ||
| 130 | .THEN ;AN000; | ||
| 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) | ||
| 134 | .ELSE ;AN000; | ||
| 135 | GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action | ||
| 136 | .ENDIF ;AN000; | ||
| 137 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 138 | ; | ||
| 139 | ; ������������������������������������Ŀ | ||
| 140 | ; �REVIEW_DISK_SCREEN � | ||
| 141 | ; � � | ||
| 142 | ; �������������������������������������� | ||
| 143 | ; | ||
| 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 | ||
| 170 | ; instead. | ||
| 171 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 172 | REVIEW_DISK_SCREEN: ;AN000; | ||
| 173 | .IF < F_REVIEW eq E_REVIEW_ACCEPT > ;AN000; if accept SELECT generated commands | ||
| 174 | .THEN ;AN000; | ||
| 175 | GOTO FIRST_DISK_SCREEN ;AN000; skip related screens | ||
| 176 | .ENDIF ;AN000; | ||
| 177 | ; | ||
| 178 | .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C > ;AC000; if install to drive B: or A: JW | ||
| 179 | .THEN ;AN000; | ||
| 180 | GOTO REVIEW_DISKETTE_SCREEN ;AN000; goto disket functions screen | ||
| 181 | .ENDIF ;AN000; | ||
| 182 | ; | ||
| 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 | ||
| 198 | ; | ||
| 199 | INIT_VAR I_USER_INDEX, 1 ;AN000; set counter = 1 | ||
| 200 | ; | ||
| 201 | .REPEAT ;AN000; repeat code block | ||
| 202 | ; | ||
| 203 | GET_SCROLL SCR_FUNC_DISK,I_USER_INDEX,FK_REVIEW ;AN000; get new value | ||
| 204 | ; | ||
| 205 | .IF < N_USER_FUNC eq E_SPACE > ;AN000; if user entered TAB | ||
| 206 | .THEN ;AN000; | ||
| 207 | TOGGLE_SUPPORT SUPPORT_STATUS, I_USER_INDEX ;AN000; toggle support of parameter | ||
| 208 | .ELSE ;AN000; else | ||
| 209 | .LEAVE ;AN000; break from repeat loop | ||
| 210 | .ENDIF ;AN000; | ||
| 211 | ; | ||
| 212 | .UNTIL ;AN000; end of repeat loop | ||
| 213 | ; | ||
| 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) | ||
| 227 | .ELSE ;AN000; | ||
| 228 | GOTO PROCESS_ESC_F3 ;AN000; user entered ESCAPE or F3, take action | ||
| 229 | .ENDIF ;AN000; | ||
| 230 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 231 | ; | ||
| 232 | ; ������������������������������������Ŀ | ||
| 233 | ; �REVIEW_DISKETTE_SCREEN � | ||
| 234 | ; � � | ||
| 235 | ; �������������������������������������� | ||
| 236 | ; | ||
| 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 | ||
| 255 | ; | ||
| 256 | INIT_VAR I_USER_INDEX, 1 ;AN000; set counter = 1 | ||
| 257 | ; | ||
| 258 | .REPEAT ;AN000; repeat code block | ||
| 259 | ; | ||
| 260 | GET_SCROLL SCR_FUNC_DISKET,I_USER_INDEX,FK_REVIEW;AN000; get new value | ||
| 261 | ; | ||
| 262 | .IF < N_USER_FUNC eq E_SPACE > ;AN000; if user entered TAB | ||
| 263 | .THEN ;AN000; | ||
| 264 | TOGGLE_SUPPORT SUPPORT_STATUS, I_USER_INDEX ;AN000; toggle support of parameter | ||
| 265 | .ELSE ;AN000; | ||
| 266 | .LEAVE ;AN000; else | ||
| 267 | .ENDIF ;AN000; break from loop | ||
| 268 | ; | ||
| 269 | .UNTIL ;AN000; end of repeat block | ||
| 270 | ; | ||
| 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) | ||
| 281 | .ELSE ;AN000; | ||
| 282 | GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or E3, take action | ||
| 283 | .ENDIF ;AN000; | ||
| 284 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 285 | SELECT ENDS ;AN000; | ||
| 286 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/SELECT4.ASM b/v4.0/src/SELECT/SELECT4.ASM new file mode 100644 index 0000000..bd56ddd --- /dev/null +++ b/v4.0/src/SELECT/SELECT4.ASM | |||
| @@ -0,0 +1,438 @@ | |||
| 1 | |||
| 2 | |||
| 3 | PAGE 55,132 ;AN000; | ||
| 4 | NAME SELECT ;AN000; | ||
| 5 | TITLE SELECT - DOS - SELECT.EXE ;AN000; | ||
| 6 | SUBTTL SELECT4.asm ;AN000; | ||
| 7 | .ALPHA ;AN000; | ||
| 8 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 9 | ; | ||
| 10 | ; SELECT4.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 | ; | ||
| 27 | ; Module contains code for : | ||
| 28 | ; - DOS parameters screen | ||
| 29 | ; - SHELL parameters screen | ||
| 30 | ; - FASTOPEN parameters screen | ||
| 31 | ; - SHARE screen | ||
| 32 | ; - GRAPHICS parameter screen | ||
| 33 | ; - EXPANDED MEMORY parameters screen | ||
| 34 | ; | ||
| 35 | ; | ||
| 36 | ; CHANGE HISTORY: | ||
| 37 | ; | ||
| 38 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 39 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 40 | DATA ENDS ;AN000; | ||
| 41 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 42 | ; | ||
| 43 | ; | ||
| 44 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 45 | .XLIST ;AN000; | ||
| 46 | INCLUDE PANEL.MAC ;AN000; | ||
| 47 | INCLUDE SELECT.INC ;AN000; | ||
| 48 | INCLUDE PAN-LIST.INC ;AN000; | ||
| 49 | INCLUDE CASTRUC.INC ;AN000; | ||
| 50 | INCLUDE STRUC.INC ;AN000; | ||
| 51 | INCLUDE MACROS.INC ;AN000; | ||
| 52 | INCLUDE EXT.INC ;AN000; | ||
| 53 | INCLUDE VARSTRUC.INC ;AN000; | ||
| 54 | INCLUDE ROUT_EXT.INC ;AN000; | ||
| 55 | .LIST ;AN000; | ||
| 56 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 57 | ; | ||
| 58 | ; | ||
| 59 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 60 | ; | ||
| 61 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000;segment for far routine | ||
| 62 | ASSUME CS:SELECT,DS:DATA ;AN000; | ||
| 63 | ; | ||
| 64 | INCLUDE CASEXTRN.INC ;AN000; | ||
| 65 | ; | ||
| 66 | HLP_OVER EQU 00010000B ;AN000; | ||
| 67 | ICB_OUT EQU 0000000100000000B ;AN000;display default and accept input | ||
| 68 | ; | ||
| 69 | PUBLIC DOS_PARAMETERS_SCREEN ;AN000; | ||
| 70 | EXTRN EXIT_SELECT:NEAR ;AN000; | ||
| 71 | EXTRN PROCESS_ESC_F3:NEAR ;AN000; | ||
| 72 | EXTRN FIRST_DISK_SCREEN:NEAR ;AN000; | ||
| 73 | EXTRN VDISK_SCREEN:NEAR ;AN000; | ||
| 74 | EXTRN EXIT_DOS:NEAR ;AN000; | ||
| 75 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 76 | ; | ||
| 77 | ; ������������������������������������Ŀ | ||
| 78 | ; �DOS_PARAMETERS_SCREENS � | ||
| 79 | ; � � | ||
| 80 | ; �������������������������������������� | ||
| 81 | ; | ||
| 82 | ; The DOS PARAMETERS SCREEN is presented if the user selected to | ||
| 83 | ; view/change the selections generated by SELECT ( F_REVIEW = 2 ). | ||
| 84 | ; The screen gets various DOS parameters (PATH, APPEND, PROMPT). | ||
| 85 | ; The TAB key is used to move to the next item on the parameter list. | ||
| 86 | ; If the cursor is on the last item in the parameter list, TAB key | ||
| 87 | ; will cause the cursor to wrap around to the first item of the parameter list. | ||
| 88 | ; When the TAB key is depressed, the current parameter value is saved in | ||
| 89 | ; a temporary location. The temporary parameter values are copied to actual | ||
| 90 | ; values only when the ENTER key is depressed. | ||
| 91 | ; Valid keys are ENTER, ESC, F1, F3, TAB and ASCII characters. | ||
| 92 | ; Since the DOS parameters APPEND and PATH are only useful for hard | ||
| 93 | ; disk based systems, an additional check of install to drive C: has been | ||
| 94 | ; included. This check is not specified in the Functional Specification. | ||
| 95 | ; PROMPT parameter values are not checked for validity. | ||
| 96 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 97 | DOS_PARAMETERS_SCREEN: ;AN000; if user accepts choices | ||
| 98 | .IF < F_REVIEW eq E_REVIEW_ACCEPT > ;AN000; | ||
| 99 | .THEN ;AN000; | ||
| 100 | GOTO FIRST_DISK_SCREEN ;AN000; goto FIRST_DISK_SCREEN | ||
| 101 | .ENDIF ;AN000; | ||
| 102 | ; | ||
| 103 | .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C > ;AC000; if install to drive B: or A: JW | ||
| 104 | .THEN ;AN000; | ||
| 105 | GOTO SHELL_SCREEN ;AN000; goto next screen | ||
| 106 | .ENDIF ;AN000; | ||
| 107 | ; | ||
| 108 | COPY_STRING S_STR120_1, M_STR120_1, S_PATH ;AN000; copy PATH to temp location | ||
| 109 | COPY_STRING S_STR40, M_STR40, S_APPEND_P ;AN000; copy APPEND parameters to temp location JW | ||
| 110 | COPY_STRING S_STR120_2, M_STR120_2,S_APPEND ;AN000; copy APPEND to temp location | ||
| 111 | COPY_STRING S_STR120_3, M_STR120_3,S_PROMPT ;AN000; copy PROMPT to temp location | ||
| 112 | ; | ||
| 113 | INIT_PQUEUE PAN_DOS_PARAM ;AN000; initialize queue | ||
| 114 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 115 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 116 | INIT_STRING STR_DOS_PATH,S_STR120_1, M_PATH ;AN000; display current PATH value | ||
| 117 | INIT_STRING STR_DOS_APPEND_P,S_STR40,M_APPEND_P ;AN000; display current APPEND parameters value JW | ||
| 118 | INIT_STRING STR_DOS_APPEND,S_STR120_2,M_APPEND ;AN000; display current APPEND value | ||
| 119 | INIT_STRING STR_DOS_PROMPT,S_STR120_3,M_PROMPT ;AN000; display current PROMPT value | ||
| 120 | DISPLAY_PANEL ;AN000; display PC/DOS parameters panel | ||
| 121 | ; | ||
| 122 | INIT_VAR N_COUNTER, 1 ;AN000; set counter = 1 | ||
| 123 | ; | ||
| 124 | GET_PARAMETERS: ;AN000; | ||
| 125 | ; | ||
| 126 | .REPEAT ;AN000; repeat code block | ||
| 127 | ; | ||
| 128 | .SELECT ;AN000; | ||
| 129 | ; | ||
| 130 | .WHEN < N_COUNTER eq 1 > ;AN000; | ||
| 131 | GET_STRING STR_DOS_PATH,S_STR120_1,M_PATH,FK_TAB ;AN000; get user parameters for PATH | ||
| 132 | COPY_STRING S_STR120_1,M_STR120_1,S_USER_STRING ;AN000; save parameter in temp location | ||
| 133 | ; | ||
| 134 | .WHEN < N_COUNTER eq 2 > ;AN000; JW | ||
| 135 | GET_STRING STR_DOS_APPEND_P,S_STR40,M_APPEND_P,FK_TAB ;AN000; get user parameters for APPEND JW | ||
| 136 | COPY_STRING S_STR40,M_STR40,S_USER_STRING ;AN000; save parameter in temp location JW | ||
| 137 | ; | ||
| 138 | .WHEN < N_COUNTER eq 3 > ;AN000; | ||
| 139 | GET_STRING STR_DOS_APPEND,S_STR120_2,M_APPEND,FK_TAB ;AN000; get user path for APPEND | ||
| 140 | COPY_STRING S_STR120_2,M_STR120_2,S_USER_STRING ;AN000; save parameter in temp location | ||
| 141 | ; | ||
| 142 | .OTHERWISE ;AN000; | ||
| 143 | GET_STRING STR_DOS_PROMPT,S_STR120_3,M_PROMPT,FK_TAB ;AN000; get user parameters for PROMPT | ||
| 144 | COPY_STRING S_STR120_3,M_STR120_3,S_USER_STRING ;AN000; save parameter in temp location | ||
| 145 | ; | ||
| 146 | .ENDSELECT ;AN000; | ||
| 147 | ; | ||
| 148 | INC_VAR N_COUNTER ;AN000; inc counter | ||
| 149 | ; | ||
| 150 | .IF < N_COUNTER a 4 > ;AN000; if counter > 3 | ||
| 151 | .THEN ;AN000; | ||
| 152 | INIT_VAR N_COUNTER, 1 ;AN000; set counter = 1 | ||
| 153 | .ENDIF ;AN000; | ||
| 154 | ; | ||
| 155 | .UNTIL < N_USER_FUNC eq E_ENTER > or near ;AN000; break loop if ENTER entered | ||
| 156 | .UNTIL < N_USER_FUNC eq E_ESCAPE > or near ;AN000; or ESCAPE entered | ||
| 157 | .UNTIL < N_USER_FUNC eq E_F3 > near ;AN000; or F3 entered | ||
| 158 | ; | ||
| 159 | PROCESS_ESC ;AN000; | ||
| 160 | PROCESS_F3 ;AN000; | ||
| 161 | ; | ||
| 162 | CHECK_DOS_PATH S_STR120_1 ;AN000; check PATH path | ||
| 163 | .IF c ;AN000; | ||
| 164 | .THEN ;AN000; | ||
| 165 | HANDLE_ERROR ERR_BAD_PATH, E_RETURN ;AN000; | ||
| 166 | INIT_VAR N_COUNTER, 1 ;AN000; | ||
| 167 | GOTO GET_PARAMETERS ;AN000; | ||
| 168 | .ENDIF ;AN000; | ||
| 169 | ; | ||
| 170 | CHECK_DOS_PATH S_STR120_2 ;AN000; check APPEND path | ||
| 171 | .IF c ;AN000; | ||
| 172 | .THEN ;AN000; | ||
| 173 | HANDLE_ERROR ERR_BAD_PATH, E_RETURN ;AN000; | ||
| 174 | INIT_VAR N_COUNTER,2 ;AN000; | ||
| 175 | GOTO GET_PARAMETERS ;AN000; | ||
| 176 | .ENDIF ;AN000; | ||
| 177 | ; | ||
| 178 | COPY_STRING S_PATH, M_PATH, S_STR120_1 ;AN000; save PATH parameter | ||
| 179 | COPY_STRING S_APPEND_P, M_APPEND_P, S_STR40 ;AN000; save APPEND parameter JW | ||
| 180 | COPY_STRING S_APPEND, M_APPEND, S_STR120_2 ;AN000; save APPEND path | ||
| 181 | COPY_STRING S_PROMPT, M_PROMPT, S_STR120_3 ;AN000; save PROMPT parameter | ||
| 182 | PUSH_HEADING DOS_PARAMETERS_SCREEN ;AN000; save screen address on SELECT STACK | ||
| 183 | GOTO SHELL_SCREEN ;AN000; goto the next screen (SHELL) | ||
| 184 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 185 | ; | ||
| 186 | ; ������������������������������������Ŀ | ||
| 187 | ; �SHELL_SCREEN � | ||
| 188 | ; � � | ||
| 189 | ; �������������������������������������� | ||
| 190 | ; | ||
| 191 | ; The SHELL PARAMETERS SCREEN is presented if the user selected to | ||
| 192 | ; install SHELL support and the user wants to view/change parameters. | ||
| 193 | ; Note.The view/change parameters condition is not specified in the May 5, 1987 | ||
| 194 | ; Functional Specification. | ||
| 195 | ; The screen gets the parameters for SHELL. | ||
| 196 | ; Valid keys are ENTER, ESC, F1, F3 and ASCII characters. | ||
| 197 | ; Note.User entered parameter values are not checked for validity. | ||
| 198 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 199 | SHELL_SCREEN: ;AN000; | ||
| 200 | .IF < F_SHELL eq E_SHELL_NO > ;AN000; if SHELL support is not required | ||
| 201 | .THEN ;AN000; | ||
| 202 | GOTO FASTOPEN_SCREEN ;AN000; goto the next screen (KSAM) | ||
| 203 | .ENDIF ;AN000; | ||
| 204 | ; | ||
| 205 | INIT_PQUEUE PAN_SHELL ;AN000; initialize queue | ||
| 206 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 207 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 208 | INIT_STRING STR_SHELL,S_SHELL,M_SHELL ;AN000; get SHELL parameters | ||
| 209 | DISPLAY_PANEL ;AN000; display SHELL panel | ||
| 210 | ; | ||
| 211 | GET_STRING STR_SHELL,S_SHELL,M_SHELL,FK_TEXT ;AN000; get SHELL parameters | ||
| 212 | ; | ||
| 213 | .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key | ||
| 214 | .THEN ;AN000; | ||
| 215 | COPY_STRING S_SHELL, M_SHELL, S_USER_STRING ;AN000; save new SHELL parameters | ||
| 216 | PUSH_HEADING SHELL_SCREEN ;AN000; save screen address on SELECT STACK | ||
| 217 | GOTO FASTOPEN_SCREEN ;AN000; goto the next screen (KSAM) | ||
| 218 | .ELSE ;AN000; | ||
| 219 | GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action | ||
| 220 | .ENDIF ;AN000; | ||
| 221 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 222 | ; | ||
| 223 | ; ������������������������������������Ŀ | ||
| 224 | ; �FASTOPEN_SCREEN � | ||
| 225 | ; � � | ||
| 226 | ; �������������������������������������� | ||
| 227 | ; | ||
| 228 | ; The FASTOPEN PARAMETERS SCREEN is presented if the user selected to | ||
| 229 | ; install FASTOPEN support and the user wants to view/change the parameters. | ||
| 230 | ; Note.The view/change parameters condition is not specified in the May 5, 1987 | ||
| 231 | ; Functional Specification. | ||
| 232 | ; The screen gets parameters for the FASTOPEN command. | ||
| 233 | ; Valid keys are ENTER, ESC, F1, F3 and ASCII characters. | ||
| 234 | ; Note.User entered parameter values are not checked for validity. | ||
| 235 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 236 | FASTOPEN_SCREEN: ;AN000; | ||
| 237 | .IF < F_FASTOPEN eq E_FASTOPEN_NO > or ;AN000; if FASTOPEN support not required | ||
| 238 | .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C > ;AC000;JW | ||
| 239 | .THEN ;AN000; | ||
| 240 | GOTO SHARE_SCREEN ;AN000; goto next screen (SHARE) | ||
| 241 | .ENDIF ;AN000; | ||
| 242 | ; | ||
| 243 | INIT_PQUEUE PAN_FASTOPEN ;AN000; initialize queue | ||
| 244 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 245 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 246 | INIT_STRING STR_FASTOPEN,S_FASTOPEN,M_FASTOPEN ;AN000; get new parameters for FASTOPEN | ||
| 247 | DISPLAY_PANEL ;AN000; display FASTOPEN panel | ||
| 248 | ; | ||
| 249 | GET_STRING STR_FASTOPEN,S_FASTOPEN,M_FASTOPEN,FK_TEXT ;AN000; get new parameters for FASTOPEN | ||
| 250 | ; | ||
| 251 | .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key | ||
| 252 | .THEN ;AN000; | ||
| 253 | COPY_STRING S_FASTOPEN,M_FASTOPEN,S_USER_STRING ;AN000;save new parameters for FASTOPEN | ||
| 254 | PUSH_HEADING FASTOPEN_SCREEN ;AN000; save screen address on SELECT STACK | ||
| 255 | GOTO SHARE_SCREEN ;AN000; goto the next screen (SHARE) | ||
| 256 | .ELSE ;AN000; | ||
| 257 | GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action | ||
| 258 | .ENDIF ;AN000; | ||
| 259 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 260 | ; | ||
| 261 | ; ������������������������������������Ŀ | ||
| 262 | ; �SHARE_SCREEN � | ||
| 263 | ; � � | ||
| 264 | ; �������������������������������������� | ||
| 265 | ; | ||
| 266 | ; The SHARE PARAMETERS SCREEN is presented if the user selected to | ||
| 267 | ; install SHARE support and the user wants to view/change parameters. | ||
| 268 | ; Note.The view/change parameters condition is not specified in the May 5, 1987 | ||
| 269 | ; Functional Specification. | ||
| 270 | ; The screen gets parameters for the SHARE command. | ||
| 271 | ; Valid keys are ENTER, ESC, F1, F3 and ASCII characters. | ||
| 272 | ; Note.User entered parameter values are not checked for validity. | ||
| 273 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 274 | SHARE_SCREEN: ;AN000; | ||
| 275 | .IF < F_SHARE eq E_SHARE_NO > or ;AN000; if SHARE support not required | ||
| 276 | .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C > ;AC000;JW | ||
| 277 | .THEN ;AN000; | ||
| 278 | ;; INIT_VAR F_SHARE, E_SHARE_NO ;AN021; | ||
| 279 | GOTO GRAPHICS_SCREEN ;AN000; goto the next screen (GRAPHICS) | ||
| 280 | .ENDIF ;AN000; | ||
| 281 | ; | ||
| 282 | INIT_PQUEUE PAN_SHARE ;AN000; initialize queue | ||
| 283 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 284 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 285 | INIT_STRING STR_SHARE,S_SHARE,M_SHARE ;AN000; get new parameters for SHARE | ||
| 286 | DISPLAY_PANEL ;AN000; display SHARE panel | ||
| 287 | ; | ||
| 288 | GET_STRING STR_SHARE,S_SHARE,M_SHARE,FK_TEXT ;AN000; get new parameters for SHARE | ||
| 289 | ; | ||
| 290 | .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key | ||
| 291 | .THEN ;AN000; | ||
| 292 | COPY_STRING S_SHARE, M_SHARE, S_USER_STRING ;AN000; save new parameters for SHARE | ||
| 293 | PUSH_HEADING SHARE_SCREEN ;AN000; save screen address on SELECT STACK | ||
| 294 | GOTO GRAPHICS_SCREEN ;AN000; goto the next screen (GRAPHICS) | ||
| 295 | .ELSE ;AN000; | ||
| 296 | GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action | ||
| 297 | .ENDIF ;AN000; | ||
| 298 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 299 | ; | ||
| 300 | ; ������������������������������������Ŀ | ||
| 301 | ; �GRAPHICS_SCREEN � | ||
| 302 | ; � � | ||
| 303 | ; �������������������������������������� | ||
| 304 | ; | ||
| 305 | ; The GRAPHICS PARAMETERS SCREEN is presented if the user selected to | ||
| 306 | ; install GRAPHICS support and the user wants to view/change parameters. | ||
| 307 | ; Note.The view/change parameters condition is not specified in the May 5, 1987 | ||
| 308 | ; Functional Specification. | ||
| 309 | ; The screen gets parameters for the GRAPHICS command. | ||
| 310 | ; Valid keys are ENTER, ESC, F1, F3 and ASCII characters. | ||
| 311 | ; Note.User entered parameter values are not checked for validity. | ||
| 312 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 313 | GRAPHICS_SCREEN: ;AN000; | ||
| 314 | .IF < F_GRAPHICS eq E_GRAPHICS_NO > ;AN000; if GRAPHICS support not required | ||
| 315 | .THEN ;AN000; | ||
| 316 | GOTO EXP_MEMORY_SCREEN ;AN000; goto the next screen (EXPANDED_MEM) | ||
| 317 | .ENDIF ;AN000; | ||
| 318 | ; | ||
| 319 | GET_PRINTER_PARAMS 0, 1, N_RETCODE ;AN000; | ||
| 320 | .IF < N_RETCODE eq 1 > ;AN000; | ||
| 321 | .THEN ;AN000; | ||
| 322 | COPY_STRING S_GRAPHICS,M_GRAPHICS,S_GRAPH_PARM ;AN000; | ||
| 323 | .ENDIF ;AN000; | ||
| 324 | ; | ||
| 325 | INIT_PQUEUE PAN_GRAPHICS ;AN000; initialize queue | ||
| 326 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 327 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 328 | INIT_STRING STR_GRAPHICS,S_GRAPHICS,M_GRAPHICS ;AN000; get new parameters for GRAPHICS | ||
| 329 | DISPLAY_PANEL ;AN000; display GRAPHICS panel | ||
| 330 | ; | ||
| 331 | GET_STRING STR_GRAPHICS,S_GRAPHICS,M_GRAPHICS,FK_TEXT ;AN000; get new parameters for GRAPHICS | ||
| 332 | ; | ||
| 333 | .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key | ||
| 334 | .THEN ;AN000; | ||
| 335 | COPY_STRING S_GRAPHICS, M_GRAPHICS, S_USER_STRING ;AN000;save new parameters for GRAPHICS | ||
| 336 | PUSH_HEADING GRAPHICS_SCREEN ;AN000; save screen address on SELECT STACK | ||
| 337 | GOTO EXP_MEMORY_SCREEN ;AN000; goto next screen (EXPANDED_MEMORY) | ||
| 338 | .ELSE ;AN000; | ||
| 339 | GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action | ||
| 340 | .ENDIF ;AN000; | ||
| 341 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 342 | ; | ||
| 343 | ; ������������������������������������Ŀ | ||
| 344 | ; �EXP_MEMORY_SCREEN � | ||
| 345 | ; � � | ||
| 346 | ; �������������������������������������� | ||
| 347 | ; | ||
| 348 | ; The EXPANDED MEMORY PARAMETERS SCREEN is presented if the user selected to | ||
| 349 | ; install expanded memory support and the user wants to view/change parameters. | ||
| 350 | ; Note.The view/change parameters condition is not specified in the May 5, 1987 | ||
| 351 | ; Functional Specification. | ||
| 352 | ; The screen gets parameters for the XMAEM and XMA2EMS commands. | ||
| 353 | ; The expanded memory commands are only supported if memory above 1000000H | ||
| 354 | ; is available. | ||
| 355 | ; The TAB key is used to move to the next item on the parameter list. | ||
| 356 | ; If the cursor is on the last item in the parameter list, TAB key | ||
| 357 | ; will cause the cursor to wrap around to the first item of the parameter list. | ||
| 358 | ; When the TAB key is depressed, the current parameter value is saved in | ||
| 359 | ; a temporary location. The temporary parameter values are copied to actual | ||
| 360 | ; values only when the ENTER key is depressed. | ||
| 361 | ; Valid keys are ENTER, ESC, F1, F3 and ASCII characters. | ||
| 362 | ; Note.User entered parameter values are not checked for validity. | ||
| 363 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 364 | EXP_MEMORY_SCREEN: ;AN000; | ||
| 365 | .IF < F_XMA eq E_XMA_NO > or ;AN000; if XMA support not required | ||
| 366 | .IF < F_XMA eq E_XMA_NA > or ;AN000; or if XMA not available | ||
| 367 | .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C > ;AC000; or if install to drive B: or A: JW | ||
| 368 | .THEN ;AN000; | ||
| 369 | GOTO VDISK_SCREEN ;AN000; goto the next screen (VDISK) | ||
| 370 | .ENDIF ;AN000; | ||
| 371 | ; | ||
| 372 | COPY_STRING S_STR120_1, M_STR120_1, S_XMAEM ;AN000; copy XMAEM to temp location | ||
| 373 | COPY_STRING S_STR120_2,M_STR120_2,S_XMA2EMS ;AN000; copy XMA2EMS to temp location | ||
| 374 | ; | ||
| 375 | .IF < N_MOD80 eq E_IS_MOD80 > ;AN000; JW | ||
| 376 | .THEN ;AN000; JW | ||
| 377 | INIT_PQUEUE PAN_EXP_MEMORY ;AN000; initialize queue | ||
| 378 | .ELSE ;AN000; JW | ||
| 379 | INIT_PQUEUE PAN_EXP_MEMORY2 ;AN000; initialize queue JW | ||
| 380 | .ENDIF ;AN000; JW | ||
| 381 | ; | ||
| 382 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 383 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 384 | ; | ||
| 385 | .IF < N_MOD80 eq E_IS_MOD80 > ;AN000; JW | ||
| 386 | .THEN ;AN000; JW | ||
| 387 | INIT_STRING STR_XMAEM,S_STR120_1,M_XMAEM ;AN000; display parameter for XMAEM | ||
| 388 | .ENDIF ;AN000; JW | ||
| 389 | ; | ||
| 390 | INIT_STRING STR_XMA2EMS,S_STR120_2,M_XMA2EMS ;AN000; display XMA2EMS parameters | ||
| 391 | DISPLAY_PANEL ;AN000; display EXPANDED_MEMORY panel | ||
| 392 | ; | ||
| 393 | ; | ||
| 394 | .IF < N_MOD80 eq E_IS_MOD80 > near ;AN000; JW | ||
| 395 | .THEN ;AN000; JW | ||
| 396 | INIT_VAR N_COUNTER,1 ;AN000; set counter = 1 | ||
| 397 | ; | ||
| 398 | .REPEAT ;AN000; repeat block of code | ||
| 399 | ; | ||
| 400 | .SELECT ;AN000; | ||
| 401 | ; | ||
| 402 | .WHEN < N_COUNTER eq 1 > near ;AN000; | ||
| 403 | GET_STRING STR_XMAEM,S_STR120_1,M_XMAEM,FK_TAB;AN000; get new parameter for XMAEM | ||
| 404 | COPY_STRING S_STR120_1,M_STR120_1,S_USER_STRING;AN000; save parameter in temp location | ||
| 405 | ; | ||
| 406 | .OTHERWISE ;AN000; | ||
| 407 | GET_STRING STR_XMA2EMS,S_STR120_2,M_XMA2EMS,FK_TAB ;AN000;get new parameter for XMA2EMS | ||
| 408 | COPY_STRING S_STR120_2,M_STR120_2,S_USER_STRING ;AN000; save parameter in temp location | ||
| 409 | ; | ||
| 410 | .ENDSELECT ;AN000; | ||
| 411 | ; | ||
| 412 | INC_VAR N_COUNTER ;AN000; | ||
| 413 | ; | ||
| 414 | .IF < N_COUNTER a 2 > ;AN000; | ||
| 415 | .THEN ;AN000; | ||
| 416 | INIT_VAR N_COUNTER,1 ;AN000; | ||
| 417 | .ENDIF ;AN000; | ||
| 418 | ; | ||
| 419 | .UNTIL < N_USER_FUNC eq E_ENTER > or near ;AN000; break loop if ENTER entered | ||
| 420 | .UNTIL < N_USER_FUNC eq E_ESCAPE > or near ;AN000; or ESCAPE entered | ||
| 421 | .UNTIL < N_USER_FUNC eq E_F3 > near ;AN000; or F3 entered | ||
| 422 | .ELSE ;AN000; JW | ||
| 423 | GET_STRING STR_XMA2EMS,S_STR120_2,M_XMA2EMS,FK_TEXT ;AN000;get new parameter for XMA2EMS JW | ||
| 424 | COPY_STRING S_STR120_2,M_STR120_2,S_USER_STRING ;AN000; save parameter in temp location JW | ||
| 425 | .ENDIF ;AN000; JW | ||
| 426 | ; | ||
| 427 | .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key | ||
| 428 | .THEN ;AN000; | ||
| 429 | COPY_STRING S_XMAEM, M_XMAEM, S_STR120_1 ;AN000; save new XMAEM parameter | ||
| 430 | COPY_STRING S_XMA2EMS, M_XMA2EMS,S_STR120_2 ;AN000; save new XMA2EMS parameter | ||
| 431 | PUSH_HEADING EXP_MEMORY_SCREEN ;AN000; save screen address on SELECT STACK | ||
| 432 | GOTO VDISK_SCREEN ;AN000; goto next screen (VDISK) | ||
| 433 | .ELSE ;AN000; | ||
| 434 | GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action | ||
| 435 | .ENDIF ;AN000; | ||
| 436 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 437 | SELECT ENDS ;AN000; | ||
| 438 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/SELECT5.ASM b/v4.0/src/SELECT/SELECT5.ASM new file mode 100644 index 0000000..68920be --- /dev/null +++ b/v4.0/src/SELECT/SELECT5.ASM | |||
| @@ -0,0 +1,576 @@ | |||
| 1 | |||
| 2 | |||
| 3 | PAGE 55,132 ;AN000; | ||
| 4 | NAME SELECT ;AN000; | ||
| 5 | TITLE SELECT - DOS - SELECT.EXE ;AN000; | ||
| 6 | SUBTTL SELECT5.asm ;AN000; | ||
| 7 | .ALPHA ;AN000; | ||
| 8 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 9 | ; | ||
| 10 | ; SELECT5.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 | ; Module contains code for : | ||
| 26 | ; - VDISK screen | ||
| 27 | ; - CONFIG.SYS screen | ||
| 28 | ; - Fixed disk partition screen | ||
| 29 | ; - Date/Time screen | ||
| 30 | ; | ||
| 31 | ; CHANGE HISTORY: | ||
| 32 | ; | ||
| 33 | ; ;AN002; for DCR225 by G.G. | ||
| 34 | ; | ||
| 35 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 36 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 37 | EXTRN SEL_FLG:BYTE ;AN000; | ||
| 38 | EXTRN EXEC_DEALLOC:BYTE ;AN000; | ||
| 39 | EXTRN EXEC_FDISK:BYTE ;AN000;DT | ||
| 40 | EXTRN EXEC_ERR:BYTE ;AN000;DT | ||
| 41 | EXTRN BCHAR:BYTE ;AN000;DT | ||
| 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 | ; | ||
| 57 | EXTRN DEALLOCATE_HELP:FAR ;AN000;DT | ||
| 58 | EXTRN ALLOCATE_HELP:FAR ;AN000;DT | ||
| 59 | EXTRN DEALLOCATE_BLOCK:FAR ;AN000;DT | ||
| 60 | EXTRN ALLOCATE_BLOCK:FAR ;AN000;DT | ||
| 61 | EXTRN DEALLOCATE_MEMORY_CALL:FAR ;AN000;DT | ||
| 62 | EXTRN ALLOCATE_MEMORY_CALL:FAR ;AN000;DT | ||
| 63 | EXTRN PM_BASECHAR:BYTE ;AN000; | ||
| 64 | EXTRN PM_BASEATTR:BYTE ;AN000; | ||
| 65 | EXTRN CRD_CCBVECOFF:WORD ;AN000; | ||
| 66 | EXTRN CRD_CCBVECSEG:WORD ;AN000; | ||
| 67 | ; | ||
| 68 | ; | ||
| 69 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 70 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000;segment for far routine | ||
| 71 | ASSUME CS:SELECT,DS:DATA ;AN000; | ||
| 72 | ; | ||
| 73 | INCLUDE CASEXTRN.INC ;AN000; | ||
| 74 | ; | ||
| 75 | EXTRN CREATE_AUTOEXEC_BAT:NEAR ;AN000; | ||
| 76 | EXTRN CREATE_CONFIG_SYS:NEAR ;AN000; | ||
| 77 | EXTRN CREATE_SHELL_BAT:NEAR ;AN000;DT | ||
| 78 | EXTRN SCAN_INFO_CALL:NEAR ;AN000;DT | ||
| 79 | EXTRN DATE_TIME_SCREEN:NEAR ;AN000;DT | ||
| 80 | ; | ||
| 81 | PUBLIC FIRST_DISK_SCREEN ;AN000; | ||
| 82 | PUBLIC VDISK_SCREEN ;AN000; | ||
| 83 | EXTRN PROCESS_ESC_F3:near ;AN000; | ||
| 84 | EXTRN FORMAT_DISK_SCREEN:near ;AN000; | ||
| 85 | EXTRN EXIT_DOS:near ;AN000; | ||
| 86 | EXTRN INSTALL_ERROR:near ;AN000; | ||
| 87 | EXTRN EXIT_SELECT:NEAR ;AN000; | ||
| 88 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 89 | ; | ||
| 90 | ; ������������������������������������Ŀ | ||
| 91 | ; �VDISK_SCREEN � | ||
| 92 | ; � � | ||
| 93 | ; �������������������������������������� | ||
| 94 | ; | ||
| 95 | ; The VDISK PARAMETERS SCREEN is presented if the user selected to | ||
| 96 | ; install virtual disk support and the user wants to view/change parameters. | ||
| 97 | ; Note.The view/change parameters condition is not specified in the May 5, 1987 | ||
| 98 | ; Functional Specification. | ||
| 99 | ; The screen gets parameters for the VDISK command. | ||
| 100 | ; Valid keys are ENTER, ESC, F1, F3 and ASCII characters. | ||
| 101 | ; Note.User entered parameter values are not checked for validity. | ||
| 102 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 103 | VDISK_SCREEN: ;AN000; | ||
| 104 | .IF < F_VDISK eq E_VDISK_NO > ;AN000; if VDISK support not required | ||
| 105 | GOTO CONFIG_SYS_SCREEN ;AN000; goto the next screen (CONFIG.SYS) | ||
| 106 | .ENDIF ;AN000; | ||
| 107 | ; | ||
| 108 | INIT_PQUEUE PAN_VDISK ;AN000; initialize queue | ||
| 109 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 110 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 111 | INIT_STRING STR_VDISK,S_VDISK,M_VDISK ;AN000; get new parameters for VDISK | ||
| 112 | DISPLAY_PANEL ;AN000; display VDISK panel | ||
| 113 | ; | ||
| 114 | GET_STRING STR_VDISK,S_VDISK,M_VDISK,FK_TEXT ;AN000; get new parameters for VDISK | ||
| 115 | ; | ||
| 116 | .IF < N_USER_FUNC eq E_ENTER > ;AN000; if user entered ENTER key | ||
| 117 | COPY_STRING S_VDISK, M_VDISK, S_USER_STRING ;AN000; save new parameters for VDISK | ||
| 118 | PUSH_HEADING VDISK_SCREEN ;AN000; save screen address on SELECT STACK | ||
| 119 | GOTO CONFIG_SYS_SCREEN ;AN000; goto the next screen (CONFIG.SYS) | ||
| 120 | .ELSE ;AN000; | ||
| 121 | GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action | ||
| 122 | .ENDIF ;AN000; | ||
| 123 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 124 | ; | ||
| 125 | ; ������������������������������������Ŀ | ||
| 126 | ; �CONFIG_SYS_SCREEN � | ||
| 127 | ; � � | ||
| 128 | ; �������������������������������������� | ||
| 129 | ; | ||
| 130 | ; The CONFIG.SYS PARAMETERS SCREEN is presented if the user selected to | ||
| 131 | ; view/change SELECT generated commands ( F_REVIEW = 2 ). | ||
| 132 | ; The screen gets parameters for CONFIG.SYS commands ( BREAK, BUFFERS, | ||
| 133 | ; FCBS, FILES, LASTDRIVE, STACKS, VERIFY ). | ||
| 134 | ; The TAB key is used to move to the next item on the parameter list. | ||
| 135 | ; If the cursor is on the last item in the parameter list, TAB key | ||
| 136 | ; will cause the cursor to wrap around to the first item of the parameter list. | ||
| 137 | ; When the TAB key is depressed, the current parameter value is saved in | ||
| 138 | ; a temporary location. The temporary parameter values are copied to actual | ||
| 139 | ; values only when the ENTER key is depressed. | ||
| 140 | ; Valid keys are ENTER, ESC, F1, F3, TAB and ASCII characters. | ||
| 141 | ; Note.User entered parameter values are not checked for validity. | ||
| 142 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 143 | CONFIG_SYS_SCREEN: ;AN000; | ||
| 144 | COPY_STRING ST_BREAK, MT_BREAK, S_BREAK ;AN000; copy BREAK par to temp location | ||
| 145 | COPY_STRING ST_BUFFERS,MT_BUFFERS,S_BUFFERS ;AN000; copy BUFFERS par to temp location | ||
| 146 | COPY_STRING ST_FCBS, MT_FCBS, S_FCBS ;AN000; copy FCBS par to temp location | ||
| 147 | COPY_STRING ST_FILES, MT_FILES, S_FILES ;AN000; copy FILES par to temp location | ||
| 148 | COPY_STRING ST_LASTDRIVE,MT_LASTDRIVE,S_LASTDRIVE ;AN000; copy LASTDRIVE par to temp location | ||
| 149 | COPY_STRING ST_STACKS, MT_STACKS, S_STACKS ;AN000; copy STACKS par to temp location | ||
| 150 | COPY_STRING ST_VERIFY, MT_VERIFY, S_VERIFY ;AN000; copy VERIFY par to temp location | ||
| 151 | ; | ||
| 152 | INIT_PQUEUE PAN_CONFIG_PARS ;AN000; initialize queue | ||
| 153 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 154 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 155 | INIT_STRING STR_BREAK, ST_BREAK, MT_BREAK ;AN000; display BREAK parameters | ||
| 156 | INIT_STRING STR_BUFFERS,ST_BUFFERS,MT_BUFFERS ;AN000; display BUFFERS parameters | ||
| 157 | INIT_STRING STR_FCBS, ST_FCBS, MT_FCBS ;AN000; display FCBS parameters | ||
| 158 | INIT_STRING STR_FILES, ST_FILES, MT_FILES ;AN000; display FILES parameters | ||
| 159 | INIT_STRING STR_LASTDRIVE,ST_LASTDRIVE,MT_LASTDRIVE ;AN000; display LASTDRIVE parameters | ||
| 160 | INIT_STRING STR_STACKS,ST_STACKS, MT_STACKS ;AN000; display STACKS parameters | ||
| 161 | INIT_STRING STR_VERIFY,ST_VERIFY, MT_VERIFY ;AN000; display VERIFY parameters | ||
| 162 | DISPLAY_PANEL ;AN000; display CONFIG.SYS parameters panel | ||
| 163 | ; | ||
| 164 | INIT_VAR N_COUNTER, 1 ;AN000; | ||
| 165 | ; | ||
| 166 | .REPEAT ;AN000; repeat code block | ||
| 167 | ; | ||
| 168 | .SELECT ;AN000; | ||
| 169 | ; | ||
| 170 | .WHEN < N_COUNTER eq 1 > ;AN000; | ||
| 171 | GET_STRING STR_BREAK,ST_BREAK,MT_BREAK,FK_TAB ;AN000; get new parameter for BREAK | ||
| 172 | COPY_STRING ST_BREAK,MT_BREAK,S_USER_STRING ;AN000; save new BREAK parameter | ||
| 173 | ; | ||
| 174 | .WHEN < N_COUNTER eq 2 > ;AN000; | ||
| 175 | GET_STRING STR_BUFFERS,ST_BUFFERS,MT_BUFFERS,FK_TAB ;AN000; get new parameter for BUFFERS | ||
| 176 | COPY_STRING ST_BUFFERS,MT_BUFFERS,S_USER_STRING ;AN000; save new BUFFERS parameter | ||
| 177 | ; | ||
| 178 | .WHEN < N_COUNTER eq 3 > ;AC000;JW | ||
| 179 | GET_STRING STR_FCBS,ST_FCBS,MT_FCBS,FK_TAB ;AN000; get new parameter for FCBS | ||
| 180 | COPY_STRING ST_FCBS, MT_FCBS, S_USER_STRING ;AN000; save new FCBS parameter | ||
| 181 | ; | ||
| 182 | .WHEN < N_COUNTER eq 4 > ;AC000;JW; | ||
| 183 | GET_STRING STR_FILES,ST_FILES,MT_FILES,FK_TAB ;AN000; get new parameter for FILES | ||
| 184 | COPY_STRING ST_FILES,MT_FILES,S_USER_STRING ;AN000; save new FILES parameter | ||
| 185 | ; | ||
| 186 | .WHEN < N_COUNTER eq 5 > ;AC000;JW; | ||
| 187 | GET_STRING STR_LASTDRIVE,ST_LASTDRIVE,MT_LASTDRIVE, FK_TAB ;AN000; get new parameter for LASTDRIVE | ||
| 188 | COPY_STRING ST_LASTDRIVE,MT_LASTDRIVE,S_USER_STRING ;AN000;save new LASTDRIVE parameter | ||
| 189 | ; | ||
| 190 | .WHEN < N_COUNTER eq 6 > ;AC000;JW; | ||
| 191 | GET_STRING STR_STACKS,ST_STACKS,MT_STACKS,FK_TAB ;AN000;get new parameter for STACKS | ||
| 192 | COPY_STRING ST_STACKS,MT_STACKS,S_USER_STRING ;AN000; save new STACKS parameter | ||
| 193 | ; | ||
| 194 | .OTHERWISE ;AN000; | ||
| 195 | GET_STRING STR_VERIFY,ST_VERIFY,MT_VERIFY,FK_TAB ;AN000;get new parameter for VERIFY | ||
| 196 | COPY_STRING ST_VERIFY,MT_VERIFY,S_USER_STRING ;AN000; save new VERIFY parameter | ||
| 197 | ; | ||
| 198 | .ENDSELECT ;AN000; | ||
| 199 | ; | ||
| 200 | INC_VAR N_COUNTER ;AN000; inc counter | ||
| 201 | ; | ||
| 202 | .IF < N_COUNTER a 7 > ;AC000;JW; if counter > 8 | ||
| 203 | INIT_VAR N_COUNTER, 1 ;AN000; set counter = 1 | ||
| 204 | .ENDIF ;AN000; | ||
| 205 | ; | ||
| 206 | .UNTIL < N_USER_FUNC eq E_ENTER > or near ;AN000; break if loop if ENTER entered | ||
| 207 | .UNTIL < N_USER_FUNC eq E_ESCAPE > or near ;AN000; or ESCAPE entered | ||
| 208 | .UNTIL < N_USER_FUNC eq E_F3 > near ;AN000; or F3 entered | ||
| 209 | ; | ||
| 210 | .IF < N_USER_FUNC eq E_ENTER > near ;AN000; if user entered ENTER key | ||
| 211 | COPY_STRING S_BREAK, M_BREAK, ST_BREAK ;AN000; save BREAK parameter | ||
| 212 | COPY_STRING S_BUFFERS,M_BUFFERS, ST_BUFFERS ;AN000; save BUFFERS parameter | ||
| 213 | COPY_STRING S_FCBS, M_FCBS, ST_FCBS ;AN000; save FCBS parameter | ||
| 214 | COPY_STRING S_FILES, M_FILES, ST_FILES ;AN000; save FILES parameter | ||
| 215 | COPY_STRING S_LASTDRIVE,M_LASTDRIVE,ST_LASTDRIVE ;AN000;save LASTDRIVE parameter | ||
| 216 | COPY_STRING S_STACKS, M_STACKS, ST_STACKS ;AN000; save STACKS parameter | ||
| 217 | COPY_STRING S_VERIFY, M_VERIFY, ST_VERIFY ;AN000; save VERIFY parameter | ||
| 218 | PUSH_HEADING CONFIG_SYS_SCREEN ;AN000; save screen address on SELECT STACK | ||
| 219 | GOTO FIRST_DISK_SCREEN ;AN000; goto the first fixed disk screen | ||
| 220 | .ELSE ;AN000; | ||
| 221 | GOTO PROCESS_ESC_F3 ;AN000; user entered ESC or F3, take action | ||
| 222 | .ENDIF ;AN000; | ||
| 223 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 224 | ; | ||
| 225 | ; ������������������������������������Ŀ | ||
| 226 | ; �FIRST_DISK_SCREEN � | ||
| 227 | ; � � | ||
| 228 | ; �������������������������������������� | ||
| 229 | ; | ||
| 230 | ; The PARTITION FIXED DISK SCREEN is presented if the first fixed drive | ||
| 231 | ; exists and is completely unused. | ||
| 232 | ; When SELECT is invoked, the system configuration is checked and if fixed | ||
| 233 | ; disks exist, the fixed disk status is obtained and variables are initialized. | ||
| 234 | ; The screen allows the user to create partitions for the fixed drive. | ||
| 235 | ; If the user chooses to let SELECT define partition sizes, the first fixed | ||
| 236 | ; disk will be partitioned as follows: | ||
| 237 | ; - A Primary DOS partition is created using the entire disk. | ||
| 238 | ; SELECT will partition the second fixed disk if it exists as follows: | ||
| 239 | ; - An Extended DOS partition is created using the entire disk space and a | ||
| 240 | ; logical drive is created using the entire Extended DOS partition. | ||
| 241 | ; Valid keys are ENTER, ESC, F1, F3, cursor up/down, 1/2. | ||
| 242 | ; Note.After FDISK, the partitions have to formatted. Since the system is going | ||
| 243 | ; to reboot, SELECT must know if the user had created his own partitions or not | ||
| 244 | ; so that the partitions can be automatically formatted. The MENU parameter | ||
| 245 | ; in the AUTOEXEC.BAT file is changed FDISK. | ||
| 246 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 247 | FIRST_DISK_SCREEN: ;AN000; | ||
| 248 | .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C > or ;AC111;JW | ||
| 249 | .IF < N_DISK_1 eq E_DISK_INV > ;AN000; if first fixed disk not present | ||
| 250 | GOTO DATE_TIME_SCREEN ;AN000; goto DATE_TIME screen | ||
| 251 | .ENDIF ;AN000; | ||
| 252 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 253 | ; | ||
| 254 | ; ������������������������������������Ŀ | ||
| 255 | ; �MAKE_BACKUP_DISKETTE � | ||
| 256 | ; � � | ||
| 257 | ; � � | ||
| 258 | ; �������������������������������������� | ||
| 259 | ; | ||
| 260 | ; WE NEED TO MAKE A DUPLICATE OF THE SELECT/SHELL DISKETTE | ||
| 261 | ; FOR R/W PURPOSES! | ||
| 262 | ; | ||
| 263 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 264 | MAKE_BACKUP_DISKETTE: ;AN000; | ||
| 265 | ; | ||
| 266 | .REPEAT ;AN000;JW | ||
| 267 | .REPEAT ;AN000; | ||
| 268 | ; | ||
| 269 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 270 | PREPARE_PANEL PAN_DISKCOPY ;AN000; | ||
| 271 | PREPARE_PANEL PAN_HBAR ;AN000; | ||
| 272 | PREPARE_CHILDREN ;AN000; | ||
| 273 | DISPLAY_PANEL ;AN000; | ||
| 274 | ; | ||
| 275 | GET_FUNCTION FK_ENT_ESC_F3 ;AN002;GHG get user entered function (ENTER or ESC ) | ||
| 276 | ; | ||
| 277 | .IF < N_USER_FUNC ne E_ENTER > ;AN002;GHG if user entered ENTER key | ||
| 278 | GOTO PROCESS_ESC_F3 ;AN002;GHG exit to DOS command line | ||
| 279 | .ENDIF ;AN002;GHG | ||
| 280 | ; | ||
| 281 | FIND_FILE S_AUTO_REBOOT, E_FILE_ATTR ;AN000;DT Look for AUTOEXEC.BAT (INSTALL diskette) | ||
| 282 | .LEAVE < nc > ;AN000;DT | ||
| 283 | HANDLE_ERROR ERR_DOS_DISK, E_RETURN ;AN000;DT | ||
| 284 | ; | ||
| 285 | .UNTIL ;AN000;DT | ||
| 286 | ; | ||
| 287 | .IF < MEM_SIZE ne 256 > near ;AN000;DT | ||
| 288 | CALL HOOK_INT_2F ;AN000;GHG | ||
| 289 | .ELSE ;AN000; | ||
| 290 | DEALLOCATE_MEMORY ;AN000; | ||
| 291 | CALL HOOK_INT_2F_256KB ;AN000; | ||
| 292 | .ENDIF ;AN000; | ||
| 293 | ; | ||
| 294 | INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK ;AN000;JW | ||
| 295 | EXEC_PROGRAM S_DISKCOPY,S_DISKCOPY_PARM,PARM_BLOCK,EXEC_NO_DIR;AN000; control will not return | ||
| 296 | .IF < c > ;AN000; | ||
| 297 | MOV EXEC_ERR,TRUE ;AN000; | ||
| 298 | .ENDIF ;AN000; | ||
| 299 | CALL RESTORE_INT_2F ;AN000;GHG | ||
| 300 | ; | ||
| 301 | .UNTIL < N_DSKCPY_ERR ne E_DSKCPY_RETRY > near ;AN000;JW | ||
| 302 | ; | ||
| 303 | .IF < MEM_SIZE eq 256 > near ;AN000;DT | ||
| 304 | CLEAR_SCREEN ;AN000; | ||
| 305 | DISPLAY_MESSAGE 12 ;AN000;DT Insert SELECT diskette | ||
| 306 | .REPEAT ;AN000; | ||
| 307 | CALL GET_ENTER_KEY ;AN000; get user entered function | ||
| 308 | FIND_FILE S_DOS_SEL_360, E_FILE_ATTR ;AN000; | ||
| 309 | .LEAVE < nc > ;AN000; | ||
| 310 | DISPLAY_MESSAGE 11 ;AN000;DT Beep | ||
| 311 | .UNTIL ;AN000; | ||
| 312 | ALLOCATE_MEMORY ;AN000; | ||
| 313 | CALL INITIALIZE ;AN000;DT and read them in | ||
| 314 | INITIALIZE_BCHAR BCHAR ;AN000;Initialize the background character | ||
| 315 | INSERT_DISK SUB_INSTALL_COPY, S_DOS_COM_360 ;AN000;JW | ||
| 316 | .ENDIF ;AN000; | ||
| 317 | .IF < EXEC_ERR eq TRUE > ;AN000; | ||
| 318 | HANDLE_ERROR ERR_GENERAL, E_RETURN ;AN000; | ||
| 319 | GOTO MAKE_BACKUP_DISKETTE ;AN000; | ||
| 320 | .ENDIF ;AN000; | ||
| 321 | CALL CURSOROFF ;AN000; set cursor off | ||
| 322 | ; | ||
| 323 | OR SEL_FLG,INSTALLRW ;AN000; indicate INSTALL diskette is R/W | ||
| 324 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 325 | ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
| 326 | ; � Create the CONFIG.340, AUTOEXEC.340, and SHELL.BAT on the � | ||
| 327 | ; � INSTALL COPY diskette in drive A: � | ||
| 328 | ; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - | ||
| 329 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 330 | CREATE_CONFIG S_CONFIG_NEW, N_RETCODE ;AN000; | ||
| 331 | .IF c ;AN000; | ||
| 332 | GOTO INSTALL_ERROR ;AN000; | ||
| 333 | .ENDIF ;AN000; | ||
| 334 | ; | ||
| 335 | INIT_VAR N_HOUSE_CLEAN,E_CLEAN_YES ;AN000; set to perform cleanup on exit | ||
| 336 | ; | ||
| 337 | CREATE_AUTOEXEC S_AUTO_NEW,E_DEST_SHELL,N_RETCODE ;AN000; create autoexec with SHELL commands | ||
| 338 | .IF c ;AN000; | ||
| 339 | GOTO INSTALL_ERROR ;AN000; | ||
| 340 | .ENDIF ;AN000; | ||
| 341 | ; | ||
| 342 | CREATE_SHELL S_SHELL_NEW, N_RETCODE ;AN000;DT | ||
| 343 | .IF c ;AN000;DT | ||
| 344 | GOTO INSTALL_ERROR ;AN000;DT | ||
| 345 | .ENDIF ;AN000;DT | ||
| 346 | ; | ||
| 347 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 348 | ; ������������������������������������Ŀ | ||
| 349 | ; �DISK_PARTITION_OPTION � | ||
| 350 | ; � � | ||
| 351 | ; � � | ||
| 352 | ; �������������������������������������� | ||
| 353 | ; | ||
| 354 | ; If the first fixed disk is not new (existing partition) | ||
| 355 | ; goto different screen. Else present screen with partition | ||
| 356 | ; options. | ||
| 357 | ; | ||
| 358 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 359 | .IF < N_DISK_1 eq E_DISK_VAL_PART > ;AN000; if first disk has partitions | ||
| 360 | GOTO BOTH_DISK_SCREEN ;AN000; goto next screen (BOTH_DISK) | ||
| 361 | .ENDIF ;AN000; | ||
| 362 | ; | ||
| 363 | DISK_PARTITION_OPTION: ;AN000; | ||
| 364 | INIT_VAR N_DISK_NUM, '1' ;AN000;JW | ||
| 365 | INIT_CHAR N_DISK_NUM, E_DISK_ROW, E_DISK_COL, SUB_FIXED_1 ;AN000; display the disk number JW | ||
| 366 | ; | ||
| 367 | INIT_PQUEUE PAN_FIXED_FIRST ;AN000; initialize queue | ||
| 368 | PREPARE_PANEL SUB_FIXED_1 ;AN000; prepare fixed disk 1 message | ||
| 369 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 370 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 371 | INIT_SCROLL SCR_FIXED_FIRST, F_PARTITION ;AN000; | ||
| 372 | DISPLAY_PANEL ;AN000; display first fixed disk partition screen | ||
| 373 | ; | ||
| 374 | GET_SCROLL SCR_FIXED_FIRST,F_PARTITION,FK_SCROLL ;AN000; get user selected option for creating partitions | ||
| 375 | ; | ||
| 376 | PROCESS_F3 ;AN000; | ||
| 377 | PROCESS_ESC ;AN000; | ||
| 378 | ; | ||
| 379 | COPY_WORD F_PARTITION, I_USER_INDEX ;AN000; | ||
| 380 | .IF < F_PARTITION eq E_PART_DEFAULT > ;AN000; | ||
| 381 | INIT_VAR N_FORMAT_MODE, E_FORMAT_SELECT ;AN000; | ||
| 382 | .ELSE ;AN000; | ||
| 383 | INIT_VAR N_FORMAT_MODE, E_FORMAT_NEW ;AN000; | ||
| 384 | .ENDIF ;AN000; | ||
| 385 | ; | ||
| 386 | SAVE_PARAMETERS S_SELECT_TMP, N_RETCODE ;AN000; | ||
| 387 | .IF c ;AN000; | ||
| 388 | GOTO INSTALL_ERROR ;AN000; | ||
| 389 | .ENDIF ;AN000; | ||
| 390 | ; | ||
| 391 | CHANGE_AUTOEXEC S_AUTO_REBOOT, S_AUTO_FDISK ;AN000; | ||
| 392 | .IF c ;AN000; | ||
| 393 | GOTO INSTALL_ERROR ;AN000; | ||
| 394 | .ENDIF ;AN000; | ||
| 395 | ; | ||
| 396 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 397 | DEALLOCATE_MEMORY ;AN000; | ||
| 398 | .ENDIF ;AN000;DT | ||
| 399 | ; | ||
| 400 | .IF < F_PARTITION eq E_PART_USER > near ;AN000; if user selected to define his own partition sizes | ||
| 401 | ; | ||
| 402 | SAVE_PANEL_LIST ;AN000; save panel list for test team | ||
| 403 | INIT_VAR S_STR120_1, 0 ;AN000; | ||
| 404 | APPEND_STRING S_STR120_1,M_STR120_1,S_SLASH_Q ;AN000;DT add /Q parameter (no insert disk at end) | ||
| 405 | CALL CURSORON ;AN000; set cursor to show | ||
| 406 | EXEC_PROGRAM S_FDISK,S_STR120_1,PARM_BLOCK,EXEC_NO_DIR ;AN000; control will not return | ||
| 407 | .IF c ;AN000; | ||
| 408 | GOTO FDISK_ERROR ;AN000; | ||
| 409 | .ENDIF ;AN000; | ||
| 410 | ; | ||
| 411 | GOTO FDISK_REBOOT ;AN000;DT | ||
| 412 | .ENDIF ;AN000; | ||
| 413 | ; | ||
| 414 | INIT_VAR N_WORD_1, 1 ;AN000; | ||
| 415 | SCAN_DISK_TABLE E_DISK_1, N_WORD_1, N_RETCODE ;AN000; | ||
| 416 | .IF < N_RETCODE eq 0 > and ;AN000; | ||
| 417 | .IF < N_NAME_PART eq E_FREE_MEM_DISK > ;AN000; | ||
| 418 | WORD_TO_CHAR N_SIZE_PART, S_STR120_2 ;AN000; | ||
| 419 | MERGE_STRING S_STR120_1,M_STR120_1,SC_1,SC_PRI ;AN000; | ||
| 420 | APPEND_STRING S_STR120_1,M_STR120_1,S_STR120_2;AN000; | ||
| 421 | APPEND_STRING S_STR120_1,M_STR120_1,S_SLASH_Q ;AN000;DT add /Q parameter (no insert disk at end) | ||
| 422 | EXEC_PROGRAM S_FDISK,S_STR120_1,PARM_BLOCK,EXEC_NO_DIR ;AN000; | ||
| 423 | .IF c ;AN000; | ||
| 424 | GOTO FDISK_ERROR ;AN000; | ||
| 425 | .ENDIF ;AN000; | ||
| 426 | .ENDIF ;AN000; | ||
| 427 | ; | ||
| 428 | .IF < N_DISK_2 eq E_DISK_NO_PART > near ;AN000; | ||
| 429 | INIT_VAR N_WORD_1, 1 ;AN000; | ||
| 430 | SCAN_DISK_TABLE E_DISK_2, N_WORD_1, N_RETCODE ;AN000; | ||
| 431 | .IF < N_RETCODE eq 0 > and near ;AN000; | ||
| 432 | .IF < N_NAME_PART eq E_FREE_MEM_DISK > near ;AN000; | ||
| 433 | WORD_TO_CHAR N_SIZE_PART, S_STR120_2 ;AN000; | ||
| 434 | MERGE_STRING S_STR120_1,M_STR120_1,SC_2,SC_EXT ;AN000; | ||
| 435 | APPEND_STRING S_STR120_1,M_STR120_1,S_STR120_2;AN000; | ||
| 436 | APPEND_STRING S_STR120_1,M_STR120_1,SC_LOG ;AN000; | ||
| 437 | APPEND_STRING S_STR120_1,M_STR120_1,S_STR120_2;AN000; | ||
| 438 | APPEND_STRING S_STR120_1,M_STR120_1,S_SLASH_Q ;AN000;DT add /Q parameter (no insert disk at end) | ||
| 439 | EXEC_PROGRAM S_FDISK,S_STR120_1,PARM_BLOCK,EXEC_NO_DIR ;AN000; | ||
| 440 | .IF c ;AN000; | ||
| 441 | GOTO FDISK_ERROR ;AN000; | ||
| 442 | .ENDIF ;AN000; | ||
| 443 | .ENDIF ;AN000; | ||
| 444 | .ENDIF ;AN000; | ||
| 445 | ; | ||
| 446 | FDISK_REBOOT: ;AN000; | ||
| 447 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 448 | CLEAR_SCREEN ;AN000; | ||
| 449 | DISPLAY_MESSAGE 9 ;AN000; | ||
| 450 | .ELSE ;AN000; | ||
| 451 | CALL CURSOROFF ;AN000; set to hide cursor | ||
| 452 | INIT_PQUEUE PAN_REBOOT ;AN000; initialize queue | ||
| 453 | PREPARE_PANEL SUB_REBOOT_KEYS ;AN000; | ||
| 454 | DISPLAY_PANEL ;AN000; | ||
| 455 | SAVE_PANEL_LIST ;AN000; save panel list for test team | ||
| 456 | .ENDIF ;AN000; | ||
| 457 | ; | ||
| 458 | GET_FUNCTION FK_REBOOT ;AN000; Reboot | ||
| 459 | ; | ||
| 460 | FDISK_ERROR: ;AN000; | ||
| 461 | .IF < MEM_SIZE eq 256 > near ;AN000;DT | ||
| 462 | CLEAR_SCREEN ;AN000; | ||
| 463 | DISPLAY_MESSAGE 12 ;AN000;DT Insert SELECT diskette | ||
| 464 | ; | ||
| 465 | .REPEAT ;AN000; | ||
| 466 | GET_FUNCTION FK_ENT ;AN000; get user entered function | ||
| 467 | FIND_FILE S_DOS_SEL_360, E_FILE_ATTR ;AN000; | ||
| 468 | .LEAVE < nc > ;AN000; | ||
| 469 | DISPLAY_MESSAGE 11 ;AN000;DT Beep | ||
| 470 | .UNTIL ;AN000; | ||
| 471 | ; | ||
| 472 | ALLOCATE_MEMORY ;AN000; | ||
| 473 | CALL INITIALIZE ;AN000;DT and read them in | ||
| 474 | .ENDIF ;AN000; | ||
| 475 | .IF < SUB_ERROR eq 1 > ;AN023; If error is because no Primary DOS partition | ||
| 476 | CALL CURSOROFF ;AN023; set cursor off | ||
| 477 | GOTO DISK_PARTITION_OPTION ;AN023; return to partition options | ||
| 478 | .ENDIF ;AN023; | ||
| 479 | GOTO INSTALL_ERROR ;AN000; | ||
| 480 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 481 | ; | ||
| 482 | ; ������������������������������������Ŀ | ||
| 483 | ; �BOTH_DISK_SCREEN � | ||
| 484 | ; � � | ||
| 485 | ; � � | ||
| 486 | ; �������������������������������������� | ||
| 487 | ; | ||
| 488 | ; Ask user if they want to change the existing partition | ||
| 489 | ; layout or leave it the same (for both disks if 2nd exists). | ||
| 490 | ; | ||
| 491 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 492 | BOTH_DISK_SCREEN: ;AN000; | ||
| 493 | BOTH_DISK_PART_OPTION: ;AN000; | ||
| 494 | ; | ||
| 495 | .IF < N_DISK_1_S2 eq E_SPACE_EDOS > or ;AN000; | ||
| 496 | .IF < N_DISK_1_S2 eq E_SPACE_DISK > ;AN000; | ||
| 497 | INIT_VAR N_DISK_NUM, '1' ;AN000;JW | ||
| 498 | .ELSEIF < N_DISK_2_S2 eq E_SPACE_EDOS > or ;AN000; | ||
| 499 | .IF < N_DISK_2_S2 eq E_SPACE_DISK > ;AN000; | ||
| 500 | INIT_VAR N_DISK_NUM, '2' ;AN000;JW | ||
| 501 | .ELSE ;AN000; | ||
| 502 | GOTO DATE_TIME_SCREEN ;AN000; no more partitions to be created | ||
| 503 | .ENDIF ;AN000; | ||
| 504 | ; | ||
| 505 | INIT_CHAR N_DISK_NUM, E_DISK_ROW, E_DISK_COL, SUB_FIXED_1 ;AN000; display the disk number JW | ||
| 506 | INIT_PQUEUE PAN_FIXED_BOTH ;AN000; initialize queue | ||
| 507 | PREPARE_PANEL SUB_FIXED_1 ;AN000; prepare fixed disk message JW | ||
| 508 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 509 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 510 | INIT_SCROLL SCR_FIXED_BOTH, F_PARTITION ;AN000; | ||
| 511 | DISPLAY_PANEL ;AN000; display first fixed disk partition screen | ||
| 512 | ; | ||
| 513 | GET_SCROLL SCR_FIXED_BOTH,F_PARTITION,FK_SCROLL ;AN000; get user selected option for creating partitions | ||
| 514 | ; | ||
| 515 | PROCESS_ESC ;AN000; | ||
| 516 | PROCESS_F3 ;AN000; | ||
| 517 | ; | ||
| 518 | COPY_WORD F_PARTITION, I_USER_INDEX ;AN000; | ||
| 519 | CHANGE_AUTOEXEC S_AUTO_REBOOT, S_AUTO_FDISK ;AN000; | ||
| 520 | .IF c ;AN000; | ||
| 521 | GOTO INSTALL_ERROR ;AN000; | ||
| 522 | .ENDIF ;AN000; | ||
| 523 | ; | ||
| 524 | .IF < F_PARTITION eq E_PART_USER > near ;AN000; if user will define his own partition | ||
| 525 | ; | ||
| 526 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 527 | DEALLOCATE_MEMORY ;AN000; | ||
| 528 | .ENDIF ;AN000;DT | ||
| 529 | ; | ||
| 530 | INIT_VAR N_FORMAT_MODE, E_FORMAT_USED ;AN000; | ||
| 531 | SAVE_PARAMETERS S_SELECT_TMP, N_RETCODE ;AN000; | ||
| 532 | SAVE_PANEL_LIST ;AN000; save panel list for test team | ||
| 533 | INIT_VAR S_STR120_1, 0 ;AN000; | ||
| 534 | APPEND_STRING S_STR120_1,M_STR120_1,S_SLASH_Q ;AN000;DT add /Q parameter (no insert disk at end) | ||
| 535 | CALL CURSORON ;AN000; set to show cursor | ||
| 536 | EXEC_PROGRAM S_FDISK,S_STR120_1,PARM_BLOCK,EXEC_NO_DIR ;AN000; control will not return | ||
| 537 | .IF c ;AN000; | ||
| 538 | .IF < SUB_ERROR eq 2 > ;AN034; SEH If user made no changes to partition | ||
| 539 | CALL CURSOROFF ;AN034; SEH Set cursor off | ||
| 540 | GOTO BOTH_DISK_SCREEN ;AN034; SEH Go to previous screen | ||
| 541 | .ELSE ;AN034; SEH | ||
| 542 | GOTO FDISK_ERROR ;AN000; | ||
| 543 | .ENDIF ;AN034; SEH | ||
| 544 | .ENDIF ;AN000; | ||
| 545 | ; | ||
| 546 | GOTO FDISK_REBOOT ;AN000;DT | ||
| 547 | .ELSE ;AN000; | ||
| 548 | GOTO DATE_TIME_SCREEN ;AN000; no more partitions to be created | ||
| 549 | .ENDIF ;AN000; | ||
| 550 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 551 | ; | ||
| 552 | ; GET KEY ROUTINE (256KB) | ||
| 553 | ; | ||
| 554 | ; Input: none | ||
| 555 | ; | ||
| 556 | ; Output: none | ||
| 557 | ; | ||
| 558 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 559 | PUBLIC GET_ENTER_KEY ;AN063;SEH | ||
| 560 | GET_ENTER_KEY PROC NEAR ;AN000;DT | ||
| 561 | GEKEY_AGN: ;AN000;DT | ||
| 562 | MOV AH,0 ;AN000;DT | ||
| 563 | INT 16H ;AN000;DT get keystroke | ||
| 564 | CMP AL,13 ;AN000;DT If ENTER the continue | ||
| 565 | JE GEKEY_EXIT ;AN000;DT | ||
| 566 | DISPLAY_MESSAGE 11 ;AN000;DT BEEP | ||
| 567 | JMP GEKEY_AGN ;AN000;DT | ||
| 568 | ; | ||
| 569 | GEKEY_EXIT: ;AN000;DT | ||
| 570 | RET ;AN000;DT | ||
| 571 | GET_ENTER_KEY ENDP ;AN000;DT | ||
| 572 | ; | ||
| 573 | ; | ||
| 574 | SELECT ENDS ;AN000; | ||
| 575 | END ;AN000; | ||
| 576 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/SELECT5A.ASM b/v4.0/src/SELECT/SELECT5A.ASM new file mode 100644 index 0000000..1a7d29e --- /dev/null +++ b/v4.0/src/SELECT/SELECT5A.ASM | |||
| @@ -0,0 +1,186 @@ | |||
| 1 | |||
| 2 | |||
| 3 | PAGE 55,132 ;AN000; | ||
| 4 | NAME SELECT ;AN000; | ||
| 5 | TITLE SELECT - DOS - SELECT.EXE ;AN000; | ||
| 6 | SUBTTL SELECT5A.asm ;AN000; | ||
| 7 | .ALPHA ;AN000; | ||
| 8 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 9 | ; | ||
| 10 | ; SELECT5A.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 | ; Module contains code for : | ||
| 26 | ; - Date/Time screen | ||
| 27 | ; | ||
| 28 | ; CHANGE HISTORY: | ||
| 29 | ; | ||
| 30 | ; ;AN002; for DCR225 | ||
| 31 | ; | ||
| 32 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 33 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 34 | EXTRN SEL_FLG:BYTE ;AN000; | ||
| 35 | DATA ENDS ;AN000; | ||
| 36 | ; | ||
| 37 | .XLIST ;AN000; | ||
| 38 | INCLUDE PANEL.MAC ;AN000; | ||
| 39 | INCLUDE SELECT.INC ;AN000; | ||
| 40 | INCLUDE CASTRUC.INC ;AN000; | ||
| 41 | INCLUDE STRUC.INC ;AN000; | ||
| 42 | INCLUDE MACROS.INC ;AN000; | ||
| 43 | INCLUDE EXT.INC ;AN000; | ||
| 44 | INCLUDE VARSTRUC.INC ;AN000; | ||
| 45 | INCLUDE ROUT_EXT.INC ;AN000; | ||
| 46 | INCLUDE PAN-LIST.INC ;AN000; | ||
| 47 | .LIST ;AN000; | ||
| 48 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 49 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000;segment for far routine | ||
| 50 | ASSUME CS:SELECT,DS:DATA ;AN000; | ||
| 51 | ; | ||
| 52 | INCLUDE CASEXTRN.INC ;AN000; | ||
| 53 | ; | ||
| 54 | EXTRN CREATE_AUTOEXEC_BAT:NEAR ;AN000; | ||
| 55 | EXTRN CREATE_CONFIG_SYS:NEAR ;AN000; | ||
| 56 | EXTRN CREATE_SHELL_BAT:NEAR ;AN000;DT | ||
| 57 | EXTRN SCAN_INFO_CALL:NEAR ;AN000;DT | ||
| 58 | ; | ||
| 59 | PUBLIC DATE_TIME_SCREEN ;AN000; | ||
| 60 | EXTRN PROCESS_ESC_F3:near ;AN000; | ||
| 61 | EXTRN FORMAT_DISK_SCREEN:near ;AN000; | ||
| 62 | EXTRN EXIT_DOS:near ;AN000; | ||
| 63 | EXTRN INSTALL_ERROR:near ;AN000; | ||
| 64 | EXTRN EXIT_SELECT:NEAR ;AN000; | ||
| 65 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 66 | ; | ||
| 67 | ; ������������������������������������Ŀ | ||
| 68 | ; �DATE_TIME_SCREEN � | ||
| 69 | ; � � | ||
| 70 | ; �������������������������������������� | ||
| 71 | ; | ||
| 72 | ; The INSTALL DATE and TIME SCREEN is presented if the active date is 1/1/80. | ||
| 73 | ; If the user is installing to drive C: , this is the first screen presented | ||
| 74 | ; after the system is reboot due to the execution of FDISK. | ||
| 75 | ; The user cannot go back to the previous screen or terminate the | ||
| 76 | ; install process from this screen. | ||
| 77 | ; If the user did not change the date or time presented on the screen, | ||
| 78 | ; no action is taken. | ||
| 79 | ; Valid keys are ENTER, F1, and numeric characters. | ||
| 80 | ; If installing from 360KB diskettes, must prompt for INSTALL diskette | ||
| 81 | ; | ||
| 82 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 83 | DATE_TIME_SCREEN: ;AN000; | ||
| 84 | ; | ||
| 85 | .IF < N_SELECT_MODE eq E_SELECT_FDISK > and ;AN000;DT | ||
| 86 | .IF < N_DISKETTE_A eq E_DISKETTE_360 > ;AN000;DT | ||
| 87 | CALL CURSOROFF ;AN082;SEH | ||
| 88 | INSERT_DISK SUB_INSTALL_COPY, S_SELECT_TMP ;AN000;JW | ||
| 89 | CALL SCAN_INFO_CALL ;AN000;DT | ||
| 90 | .ENDIF ;AN000;DT | ||
| 91 | ; | ||
| 92 | INIT_VAR STACK_INDEX, 0 ;AN000; clear SELECT STACK | ||
| 93 | ; | ||
| 94 | CHECK_WRITE_PROTECT DRIVE_A, N_RETCODE ;AC000;JW | ||
| 95 | .IF c ;AN000; | ||
| 96 | GOTO INSTALL_ERROR ;AN000; | ||
| 97 | .ELSE ;AN000; | ||
| 98 | OR SEL_FLG,INSTALLRW ;AN000; indicate INSTALL diskette is R/W | ||
| 99 | .ENDIF ;AN000; | ||
| 100 | ; | ||
| 101 | GET_DATE N_YEAR, N_MONTH, N_DAY ;AN000; get system date | ||
| 102 | .IF c ;AN000; if system date is 1/1/1980 | ||
| 103 | GOTO FORMAT_DISK_SCREEN ;AN000; goto next screen (FORMAT_DISK) | ||
| 104 | .ENDIF ;AN000; | ||
| 105 | ; | ||
| 106 | GET_TIME N_HOUR, N_MINUTE, N_SECOND ;AN000; get system time | ||
| 107 | ; | ||
| 108 | COPY_WORD N_WORD_1, N_YEAR ;AN000; copy year to temp var | ||
| 109 | COPY_WORD N_WORD_2, N_MONTH ;AN000; copy month to temp var | ||
| 110 | COPY_WORD N_WORD_3, N_DAY ;AN000; copy day to temp var | ||
| 111 | COPY_WORD N_WORD_4, N_HOUR ;AN000; copy hour to temp var | ||
| 112 | COPY_WORD N_WORD_5, N_MINUTE ;AN000; copy minute to temp var | ||
| 113 | COPY_WORD N_WORD_6, N_SECOND ;AN000; copy second to temp var | ||
| 114 | ; | ||
| 115 | INIT_PQUEUE PAN_DATE_TIME ;AN000; initialize queue | ||
| 116 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 117 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 118 | INIT_NUMERIC NUM_YEAR,N_WORD_1,MAX_YEAR,S_STR120_1 ;AN000; display current year | ||
| 119 | INIT_NUMERIC NUM_MONTH,N_WORD_2,MAX_MONTH,S_STR120_2 ;AN000; display current month | ||
| 120 | INIT_NUMERIC NUM_DAY,N_WORD_3,MAX_DAY,S_STR120_3 ;AN000; display current day | ||
| 121 | INIT_NUMERIC NUM_HOUR,N_WORD_4,MAX_HOUR,SC_LINE ;AN000; display current hour | ||
| 122 | INIT_NUMERIC NUM_MINUTE,N_WORD_5,MAX_MINUTE,S_MODE_PARM ;AN000; display current minute | ||
| 123 | INIT_NUMERIC NUM_SECOND,N_WORD_6,MAX_SECOND,S_CP_DRIVER ;AN000; display current second | ||
| 124 | CALL CURSORON ;AN082;SEH | ||
| 125 | DISPLAY_PANEL ;AN000; | ||
| 126 | ; | ||
| 127 | INIT_VAR N_COUNTER, 1 ;AN000; set counter = 1 | ||
| 128 | ; | ||
| 129 | DATE_TIME_LOOP: ;AN000; | ||
| 130 | ; | ||
| 131 | .REPEAT ;AN000; repeat code block | ||
| 132 | ; | ||
| 133 | .SELECT ;AN000; | ||
| 134 | ; | ||
| 135 | .WHEN < N_COUNTER eq 1 > ;AN000; counter = 1 | ||
| 136 | GET_NUMERIC NUM_YEAR,N_WORD_1,MIN_YEAR,MAX_YEAR,FK_DATE,S_STR120_1 ;AN000; get new year value | ||
| 137 | COPY_WORD N_WORD_1, N_USER_NUMERIC ;AN000; save new year value | ||
| 138 | ; | ||
| 139 | .WHEN < N_COUNTER eq 2 > ;AN000; counter = 2 | ||
| 140 | GET_NUMERIC NUM_MONTH,N_WORD_2,MIN_MONTH,MAX_MONTH,FK_DATE,S_STR120_2 ;AN000; get new month value | ||
| 141 | COPY_WORD N_WORD_2, N_USER_NUMERIC ;AN000; save new month value | ||
| 142 | ; | ||
| 143 | .WHEN < N_COUNTER eq 3 > ;AN000; counter = 3 | ||
| 144 | GET_NUMERIC NUM_DAY,N_WORD_3,MIN_DAY,MAX_DAY,FK_DATE,S_STR120_3 ;AN000; get new day value | ||
| 145 | COPY_WORD N_WORD_3, N_USER_NUMERIC ;AN000; save new day value | ||
| 146 | ; | ||
| 147 | .WHEN < N_COUNTER eq 4 > ;AN000; counter = 4 | ||
| 148 | GET_NUMERIC NUM_HOUR,N_WORD_4,MIN_HOUR,MAX_HOUR,FK_DATE,SC_LINE ;AN000; get new hour value | ||
| 149 | COPY_WORD N_WORD_4, N_USER_NUMERIC ;AN000; save new hour value | ||
| 150 | ; | ||
| 151 | .WHEN < N_COUNTER eq 5 > ;AN000; counter = 5 | ||
| 152 | GET_NUMERIC NUM_MINUTE,N_WORD_5,MIN_MINUTE,MAX_MINUTE,FK_DATE,S_MODE_PARM ;AN000; get new minute value | ||
| 153 | COPY_WORD N_WORD_5, N_USER_NUMERIC ;AN000; save new minute value | ||
| 154 | ; | ||
| 155 | .OTHERWISE ;AN000; counter = 6 | ||
| 156 | GET_NUMERIC NUM_SECOND,N_WORD_6,MIN_SECOND,MAX_SECOND,FK_DATE,S_CP_DRIVER ;AN000; get new second value | ||
| 157 | COPY_WORD N_WORD_6, N_USER_NUMERIC ;AN000; save new second value | ||
| 158 | ; | ||
| 159 | .ENDSELECT ;AN000; | ||
| 160 | ; | ||
| 161 | INC_VAR N_COUNTER ;AN000; inc counter | ||
| 162 | ; | ||
| 163 | .IF < N_COUNTER a 6 > ;AN000; if counter > 6 | ||
| 164 | INIT_VAR N_COUNTER, 1 ;AN000; set counter = 1 | ||
| 165 | .ENDIF ;AN000; | ||
| 166 | ; | ||
| 167 | .UNTIL < N_USER_FUNC eq E_ENTER > near ;AN000; break loop if user entered ENTER | ||
| 168 | ; | ||
| 169 | CHECK_DATE_CHANGE N_WORD_1,N_WORD_2,N_WORD_3,N_YEAR,N_MONTH,N_DAY ;AN000; check if new date is different | ||
| 170 | .IF c ;AN000; if new date different | ||
| 171 | SET_DATE N_WORD_1, N_WORD_2, N_WORD_3 ;AN000; set new system date | ||
| 172 | .IF c ;AN000; if new date invalid | ||
| 173 | INIT_VAR N_COUNTER, 3 ;AN000; set counter = 3 | ||
| 174 | GOTO DATE_TIME_LOOP ;AN000; goto get day again | ||
| 175 | .ENDIF ;AN000; | ||
| 176 | .ENDIF ;AN000; | ||
| 177 | ; | ||
| 178 | CHECK_TIME_CHANGE N_WORD_4,N_WORD_5,N_WORD_6,N_HOUR,N_MINUTE,N_SECOND ;AN000; check if new time is different | ||
| 179 | .IF c ;AN000; if new time is different | ||
| 180 | SET_TIME N_WORD_4, N_WORD_5, N_WORD_6 ;AN000; set new system time | ||
| 181 | .ENDIF ;AN000; | ||
| 182 | ; | ||
| 183 | GOTO FORMAT_DISK_SCREEN ;AN000; goto next screen (FORMAT_DISK) | ||
| 184 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 185 | SELECT ENDS ;AN000; | ||
| 186 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/SELECT6.ASM b/v4.0/src/SELECT/SELECT6.ASM new file mode 100644 index 0000000..863aecc --- /dev/null +++ b/v4.0/src/SELECT/SELECT6.ASM | |||
| @@ -0,0 +1,561 @@ | |||
| 1 | |||
| 2 | |||
| 3 | PAGE 55,132 ;AN000; | ||
| 4 | NAME SELECT ;AN000; | ||
| 5 | TITLE SELECT - DOS - SELECT.EXE ;AN000; | ||
| 6 | SUBTTL SELECT6.asm ;AN000; | ||
| 7 | .ALPHA ;AN000; | ||
| 8 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 9 | ; | ||
| 10 | ; SELECT6.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 | ; ;AN000; SELECT2.ASM | ||
| 20 | ; ;AN000; SELECT3.ASM | ||
| 21 | ; ;AN000; SELECT4.ASM | ||
| 22 | ; ;AN000; SELECT5.ASM | ||
| 23 | ; ;AN000; SELECT6.ASM | ||
| 24 | ; | ||
| 25 | ; | ||
| 26 | ; Module contains code for : | ||
| 27 | ; - Format the drives | ||
| 28 | ; - Copy files | ||
| 29 | ; | ||
| 30 | ; CHANGE HISTORY: | ||
| 31 | ; | ||
| 32 | ; ;AN009; DT added support for creation of the DOSSHELL.BAT as a | ||
| 33 | ; separately installed file. (D233) | ||
| 34 | ; ;AN002; GHG for P1146 | ||
| 35 | ; ;AN003; GHG for D234 | ||
| 36 | ; ;AN004; GHG for P65 | ||
| 37 | ; ;AN005; DT for single drive support | ||
| 38 | ; ;AN006; JW for dos location choice (global or path only) | ||
| 39 | ; ;AN007; JW for D239 - display drive letter to format | ||
| 40 | ; | ||
| 41 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 42 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 43 | EXTRN SEL_FLG:BYTE ;AN000; | ||
| 44 | EXTRN EXEC_FDISK:BYTE ;AN000;DT | ||
| 45 | EXTRN EXEC_ERR:BYTE ;AN000;DT | ||
| 46 | DATA ENDS ;AN000; | ||
| 47 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 48 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 49 | ; | ||
| 50 | ; Define dummy segment to calculate end of program | ||
| 51 | ; | ||
| 52 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 53 | PARSER SEGMENT PARA PUBLIC 'PARSER' ;AN072; | ||
| 54 | PARSER ENDS ;AN072; | ||
| 55 | |||
| 56 | SET_BLOCK equ 4AH ;AN072; | ||
| 57 | ; | ||
| 58 | ; | ||
| 59 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 60 | .XLIST ;AN000; | ||
| 61 | INCLUDE PANEL.MAC ;AN000; | ||
| 62 | INCLUDE SELECT.INC ;AN000; | ||
| 63 | INCLUDE CASTRUC.INC ;AN000; | ||
| 64 | INCLUDE STRUC.INC ;AN000; | ||
| 65 | INCLUDE MACROS.INC ;AN000; | ||
| 66 | INCLUDE MACROS7.INC ;AN009;DT | ||
| 67 | INCLUDE EXT.INC ;AN000; | ||
| 68 | INCLUDE VARSTRUC.INC ;AN000; | ||
| 69 | INCLUDE ROUT_EXT.INC ;AN000; | ||
| 70 | INCLUDE PAN-LIST.INC ;AN000; | ||
| 71 | .LIST ;AN000; | ||
| 72 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 73 | ; | ||
| 74 | EXTRN DEALLOCATE_HELP:FAR ;AN000;DT | ||
| 75 | EXTRN DEALLOCATE_BLOCK:FAR ;AN000;DT | ||
| 76 | EXTRN ALLOCATE_BLOCK:FAR ;AN000;DT | ||
| 77 | EXTRN DEALLOCATE_MEMORY_CALL:FAR ;AN000;DT | ||
| 78 | EXTRN ALLOCATE_MEMORY_CALL:FAR ;AN000;DT | ||
| 79 | EXTRN GET_OVERLAY:NEAR ;AN048;SEH | ||
| 80 | ; | ||
| 81 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 82 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000; | ||
| 83 | ASSUME CS:SELECT,DS:DATA ;AN000; | ||
| 84 | ; | ||
| 85 | INCLUDE CASEXTRN.INC ;AN000; | ||
| 86 | ; | ||
| 87 | EXTRN EXIT_SELECT:near ;AN000; | ||
| 88 | EXTRN CREATE_CONFIG_SYS:NEAR ;AN000; | ||
| 89 | EXTRN CREATE_AUTOEXEC_BAT:NEAR ;AN000; | ||
| 90 | EXTRN CREATE_SHELL_BAT:NEAR ;AN009;DT | ||
| 91 | ; EXTRN DO_PREP_FOR_ONE:NEAR ;AN009;DT | ||
| 92 | ; EXTRN DO_HOOK15:NEAR ;AN009;DT | ||
| 93 | ; EXTRN DO_UNHOOK15:NEAR ;AN009;DT | ||
| 94 | ; | ||
| 95 | EXTRN EXIT_DOS:near ;AN004;GHG | ||
| 96 | EXTRN INSTALL_ERROR:near ;AN004;GHG | ||
| 97 | EXTRN EXIT_SELECT:NEAR ;AN004;GHG | ||
| 98 | EXTRN PROCESS_ESC_F3:near ;AN004;GHG | ||
| 99 | EXTRN DISKETTE_INSTALL:NEAR ;AN111;JW | ||
| 100 | EXTRN EXIT_DOS_CONT:NEAR ;AN004;GHG | ||
| 101 | EXTRN CONTINUE_360:NEAR ;AN004;GHG | ||
| 102 | ; | ||
| 103 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 104 | ; | ||
| 105 | ; CODE CONTINUES..... | ||
| 106 | ; | ||
| 107 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 108 | PUBLIC FORMAT_DISK_SCREEN ;AN000; | ||
| 109 | FORMAT_DISK_SCREEN: ;AN000; | ||
| 110 | ; | ||
| 111 | CALL DEALLOCATE_HELP ;AN072;Help no longer needed | ||
| 112 | POS_CURSOR ;AN085;SEH position cursor at top left corner so that future "% formatted" msg appears in correct spot | ||
| 113 | CALL CURSOROFF ;AN082;SEH | ||
| 114 | ; | ||
| 115 | .IF < I_DEST_DRIVE ne E_DEST_DRIVE_C > ;AN111;JW | ||
| 116 | GOTO DISKETTE_INSTALL ;AN111;JW | ||
| 117 | .ENDIF ;AN000; | ||
| 118 | ; | ||
| 119 | ; N_WORD_1 : disk number ; | ||
| 120 | ; N_WORD_2 : index into disk table ; | ||
| 121 | ; N_WORD_3 : sub panel number for specified disk ; | ||
| 122 | ; | ||
| 123 | INIT_VAR N_WORD_1, 1 ;AN000; set disk no = 1 | ||
| 124 | .REPEAT ;AN000; repeat code block | ||
| 125 | INIT_VAR N_WORD_2, 1 ;AN000; set index into table = 1 | ||
| 126 | .IF < N_WORD_1 eq E_DISK_1 > ;AN000; if disk = 1 | ||
| 127 | INIT_VAR N_DISK_NUM, '1' ;AN007; sub panel = fixed disk 1 JW | ||
| 128 | .ELSE ;AN000; else | ||
| 129 | INIT_VAR N_DISK_NUM, '2' ;AN007; sub panel = fixed disk 2 JW | ||
| 130 | .ENDIF ;AN000; | ||
| 131 | ; | ||
| 132 | .REPEAT ;AN000; repeat code block | ||
| 133 | SCAN_DISK_TABLE N_WORD_1,N_WORD_2,N_RETCODE ;AN000; scan disk table | ||
| 134 | .LEAVE < N_RETCODE ne 0 > near ;AN000; break loop if no more entries | ||
| 135 | ; | ||
| 136 | .IF < N_NAME_PART eq E_PART_PRI_DOS > and ;AN000; if pri part & unformatted | ||
| 137 | .IF < N_STATUS_PART eq E_PART_UNFORMAT > ;AN000; | ||
| 138 | INIT_VAR N_TYPE_PART, E_PART_FAT ;AN000; set to format as FAT | ||
| 139 | .ELSEIF < N_NAME_PART eq E_PART_LOG_DRI > near and;AN000; if log drive & unformatted | ||
| 140 | .IF < N_STATUS_PART eq E_PART_UNFORMAT > near ;AN000; | ||
| 141 | .IF < N_FORMAT_MODE eq E_FORMAT_SELECT > ;AN000; if select to format partition | ||
| 142 | INIT_VAR N_TYPE_PART, E_PART_FAT ;AN000; set to format as FAT | ||
| 143 | .ELSE near ;AN000; else | ||
| 144 | INIT_CHAR N_DISK_NUM, E_DISK_ROW, E_DISK_COL,SUB_FIXED_1 ;AN007; display the disk number JW | ||
| 145 | INIT_CHAR P_DRIVE_PART, E_DRIVE_ROW, E_DRIVE_COL,SUB_LOG_DRIVE ;AN000; display the drive letter JW | ||
| 146 | INIT_PQUEUE PAN_FORMAT ;AN000; init format panel | ||
| 147 | PREPARE_PANEL PAN_HBAR ;AN000; prepare hor. bar panel | ||
| 148 | PREPARE_PANEL SUB_FIXED_1 ;AC007; prepare disk no panel JW | ||
| 149 | PREPARE_PANEL SUB_LOG_DRIVE ;AN000;JW | ||
| 150 | PREPARE_CHILDREN ;AN000; prepare children | ||
| 151 | INIT_VAR F_FORMAT, E_FORMAT_FAT ;AN000; set option=format as FAT | ||
| 152 | INIT_SCROLL SCR_FORMAT, F_FORMAT ;AN000; init scroll list | ||
| 153 | DISPLAY_PANEL ;AN000; display panel | ||
| 154 | GET_SCROLL SCR_FORMAT,F_FORMAT,FK_FORMAT ;AN000; get option | ||
| 155 | COPY_WORD F_FORMAT, I_USER_INDEX ;AN000; save option | ||
| 156 | .IF < F_FORMAT eq E_FORMAT_FAT > ;AN000; if option=format | ||
| 157 | INIT_VAR N_TYPE_PART, E_PART_FAT ;AN000; set to format as FAT | ||
| 158 | .ENDIF ;AN000; | ||
| 159 | .ENDIF ;AN000; | ||
| 160 | .ENDIF ;AN000; | ||
| 161 | UPDATE_DISK_TABLE N_WORD_1,N_WORD_2,N_RETCODE ;AN000; update disk table | ||
| 162 | INC_VAR N_WORD_2 ;AN000; inc index into table | ||
| 163 | .UNTIL ;AN000; end of repeat block | ||
| 164 | INC_VAR N_WORD_1 ;AN000; inc disk no | ||
| 165 | .UNTIL < N_WORD_1 gt 2> near ;AN000; end of repeat block | ||
| 166 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 167 | ; | ||
| 168 | ; Format the logical drives and primary partition | ||
| 169 | ; N_WORD_1 : disk number | ||
| 170 | ; N_WORD_2 : index into disk table | ||
| 171 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 172 | INIT_VAR N_WORD_1, 1 ;AN000; set disk no = 1 | ||
| 173 | .REPEAT ;AN000; repeat code block | ||
| 174 | INIT_VAR N_WORD_2, 1 ;AN000; set index into disk table = 1 | ||
| 175 | .REPEAT ;AN000; repeat code block | ||
| 176 | SCAN_DISK_TABLE N_WORD_1,N_WORD_2,N_RETCODE ;AN000; scan disk table | ||
| 177 | .LEAVE < N_RETCODE ne 0 > near ;AN000; break loop in index not valid | ||
| 178 | .IF < N_STATUS_PART eq E_PART_UNFORMAT > and near ;AN000; if partition not unformatted and | ||
| 179 | .IF < N_TYPE_PART eq E_PART_FAT > near ;AN000; format set to FAT | ||
| 180 | COPY_BYTE P_STR120_1, P_DRIVE_PART ;AN000; save drive letter in buffer | ||
| 181 | INIT_VAR S_STR120_1, 1 ;AN000; set length of string | ||
| 182 | APPEND_STRING S_STR120_1, M_STR120_1, S_COLON ;AN000; append colon to drive | ||
| 183 | .IF < N_NAME_PART eq E_PART_PRI_DOS > and ;AN111; if primary partition and JW | ||
| 184 | .IF < N_WORD_1 eq 1 > ;AN111; first drive JW | ||
| 185 | APPEND_STRING S_STR120_1,M_STR120_1,S_SLASH_S ;AN000; append ' /s' to drive | ||
| 186 | INIT_VAR I_DESTINATION, E_ENTIRE_DISK ;AN033; SEH install to entire disk if formatting | ||
| 187 | .ENDIF ;AN000; | ||
| 188 | APPEND_STRING S_STR120_1,M_STR120_1,S_VOL_SEL ;AN000; append "/V:DOS340 /SELECT" | ||
| 189 | CLEAR_SCREEN ;AN000; pos cursor at top of screen | ||
| 190 | INIT_PQUEUE FORMAT_DISK ;AN000; initialize queue | ||
| 191 | DISPLAY_PANEL ;AN000; | ||
| 192 | ; | ||
| 193 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 194 | DEALLOCATE_MEMORY ;AN000;DT | ||
| 195 | .ENDIF ;AN000;DT | ||
| 196 | ; | ||
| 197 | EXEC_PROGRAM S_FORMAT,S_STR120_1,PARM_BLOCK,EXEC_NO_DIR ;AN000; format partition as FAT | ||
| 198 | .IF < c > ;AN000; | ||
| 199 | MOV EXEC_ERR,TRUE ;AN000; | ||
| 200 | .ENDIF ;AN000; | ||
| 201 | ; | ||
| 202 | .IF < MEM_SIZE eq 256 > near ;AN000;DT | ||
| 203 | CLEAR_SCREEN ;AN000; | ||
| 204 | DISPLAY_MESSAGE 12 ;AN000;DT Insert SELECT diskette | ||
| 205 | .REPEAT ;AN000; | ||
| 206 | GET_FUNCTION FK_ENT ;AN000; get user entered function | ||
| 207 | FIND_FILE S_DOS_SEL_360, E_FILE_ATTR;AN000; | ||
| 208 | .LEAVE < nc > ;AN000; | ||
| 209 | DISPLAY_MESSAGE 11 ;AN000;DT Beep | ||
| 210 | .UNTIL ;AN000; | ||
| 211 | ALLOCATE_MEMORY ;AN000;DT | ||
| 212 | CALL INITIALIZE ;AN000;DT and read them in | ||
| 213 | CALL DEALLOCATE_HELP ;AN072;Help no longer needed | ||
| 214 | ; | ||
| 215 | INSERT_DISK SUB_INSTALL_COPY, S_AUTO_NEW ;AN000;JW Insert INSTALL COPY diskette | ||
| 216 | ; | ||
| 217 | .ENDIF ;AN000; | ||
| 218 | ; | ||
| 219 | .IF < EXEC_ERR eq TRUE > ;AN000; | ||
| 220 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 221 | .ENDIF ;AN000; | ||
| 222 | .ENDIF ;AN000; | ||
| 223 | INC_VAR N_WORD_2 ;AN000; | ||
| 224 | .UNTIL ;AN000; | ||
| 225 | INC_VAR N_WORD_1 ;AN000; | ||
| 226 | .UNTIL < N_WORD_1 gt 2> near ;AN000; | ||
| 227 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 228 | ; | ||
| 229 | ; | ||
| 230 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 231 | GET_TIME N_HOUR, N_MINUTE, N_SECOND ;AN000; get system time | ||
| 232 | GET_DATE N_YEAR, N_MONTH, N_DAY ;AN000; get system date | ||
| 233 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 234 | ; | ||
| 235 | ; Update date/time of CONFIG.340 | ||
| 236 | ; AUTOEXEC.340 | ||
| 237 | ; DOSSHELL.BAT in drive A: ; | ||
| 238 | ; | ||
| 239 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 240 | OPEN_FILE S_CONFIG_NEW, 2, N_HANDLE ;AN000; | ||
| 241 | SET_FILE_DATE_TIME N_HANDLE,N_HOUR,N_MINUTE,N_SECOND,N_YEAR,N_MONTH,N_DAY ;AN000; | ||
| 242 | CLOSE_FILE N_HANDLE ;AN000; | ||
| 243 | .IF c ;AN000; | ||
| 244 | GOTO INSTALL_ERROR ;AN000; | ||
| 245 | .ENDIF ;AN000; | ||
| 246 | ; | ||
| 247 | OPEN_FILE S_AUTO_NEW, 2, N_HANDLE ;AN000; | ||
| 248 | SET_FILE_DATE_TIME N_HANDLE,N_HOUR,N_MINUTE,N_SECOND,N_YEAR,N_MONTH,N_DAY ;AN000; | ||
| 249 | CLOSE_FILE N_HANDLE ;AN000; | ||
| 250 | .IF c ;AN000; | ||
| 251 | GOTO INSTALL_ERROR ;AN000; | ||
| 252 | .ENDIF ;AN000; | ||
| 253 | ; | ||
| 254 | OPEN_FILE S_SHELL_NEW, 2, N_HANDLE ;AN009;DT | ||
| 255 | SET_FILE_DATE_TIME N_HANDLE,N_HOUR,N_MINUTE,N_SECOND,N_YEAR,N_MONTH,N_DAY ;AN009;DT | ||
| 256 | CLOSE_FILE N_HANDLE ;AN009;DT | ||
| 257 | .IF < c > ;AN009;DT | ||
| 258 | GOTO INSTALL_ERROR ;AN009;DT | ||
| 259 | .ENDIF ;AN009;DT | ||
| 260 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 261 | ; | ||
| 262 | ; Make sure any previous AUTOEXEC.340 or CONFIG.340 | ||
| 263 | ; are not READ-ONLY ! | ||
| 264 | ; Copy CONFIG.340 & AUTOEXEC.340 from A: to root of C: | ||
| 265 | ; | ||
| 266 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 267 | CHMOD_FILE S_AUTO_REN ;AN017; | ||
| 268 | CHMOD_FILE S_CONFIG_REN ;AN017; | ||
| 269 | COPY_FILES2 I_DEST_DRIVE,S_CONFIG_AUTO,E_FILES,S_DEST_DRIVE ;AC111;JW | ||
| 270 | .IF < c > ;AN000; | ||
| 271 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 272 | .ENDIF ;AN000; | ||
| 273 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 274 | ; | ||
| 275 | ; If the user selected to replace files throughout the fixed disk: | ||
| 276 | ; 1) Copy COMMAND.COM to root of C: | ||
| 277 | ; 2) Check if OS/2 is installed. If it is, rename CONFIG.SYS and | ||
| 278 | ; AUTOEXEC.BAT (OS2'S) to CONFIG.OS2 and AUTOEXEC.OS2. Then | ||
| 279 | ; rename CONFIG.400 and AUTOEXEC.400 to CONFIG.SYS and | ||
| 280 | ; AUTOEXEC.BAT. | ||
| 281 | ; 3) Try to locate C:\CONFIG.SYS & C:\AUTOEXEC.BAT (if OS/2 not installed) | ||
| 282 | ; If either one is already present, then leave the names | ||
| 283 | ; of the new files as CONFIG.400 and AUTOEXEC.400! | ||
| 284 | ; Otherwise, the CONFIG.400 and AUTOEXEC.400 become the | ||
| 285 | ; new user's SYS and BAT files. | ||
| 286 | ; | ||
| 287 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 288 | .IF < I_DESTINATION eq E_ENTIRE_DISK > near ;AN010;JW | ||
| 289 | ; | ||
| 290 | .IF < MEM_SIZE eq 256 > ;AN048;SEH memory must be freed up | ||
| 291 | DEALLOCATE_MEMORY ;AN048;SEH before reading COMMAND.COM | ||
| 292 | .ENDIF ;AN048;SEH | ||
| 293 | CHMOD_FILE S_COMMAND_COM ;AN017; | ||
| 294 | COPY_FILES2 I_DEST_DRIVE,COPY_SEL_SHEL,E_SEL_SHEL,S_DEST_DRIVE ;AC010;JW | ||
| 295 | .IF < c > ;AN000; | ||
| 296 | MOV EXEC_ERR,TRUE ;AN000; | ||
| 297 | .ENDIF ;AN000; | ||
| 298 | .IF < MEM_SIZE eq 256 > near ;AN000;DT | ||
| 299 | CALL GET_OVERLAY ;AC048;SEH replaced code with this proc call | ||
| 300 | INSERT_DISK SUB_INSTALL_COPY, S_DOS_COM_360 ;AN000;JW Insert INSTALL COPY diskette | ||
| 301 | CALL DEALLOCATE_HELP ;AN072;Help no longer needed | ||
| 302 | .ENDIF ;AN000;DT | ||
| 303 | .IF < EXEC_ERR eq TRUE > ;AN000; | ||
| 304 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 305 | .ENDIF ;AN000; | ||
| 306 | INIT_VAR N_WORD_1,1 ;AN065;SEH set disk no. = 1 | ||
| 307 | INIT_VAR N_WORD_2,1 ;AN065;SEH set index into disk table = 1 | ||
| 308 | SCAN_DISK_TABLE N_WORD_1,N_WORD_2,N_RETCODE ;AN065;SEH get version number | ||
| 309 | .IF < N_RETCODE eq 0 > near and ;AN065;SEH | ||
| 310 | .IF < N_LEVEL2_PART ne '4' > near ;AN065;SEH is it OS/2? 1st byte of DOS version number = blank; for OS/2 it's 1 | ||
| 311 | RENAME_FILE S_CONFIG_C, S_OS2_CONFIG_C ;AN065;SEH rename OS/2's CONFIG.SYS to CONFIG.OS2 | ||
| 312 | RENAME_FILE S_AUTO_C, S_OS2_AUTO_C ;AN065;SEH rename OS/2's AUTOEXEC.BAT to AUTOEXEC.OS2 | ||
| 313 | RENAME_FILE S_CONFIG_REN, S_CONFIG_NEW_C ;AN065;SEH rename CONFIG.400 to CONFIG.SYS | ||
| 314 | .IF < c > ;AN065;SEH | ||
| 315 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN065;SEH | ||
| 316 | .ENDIF ;AN065;SEH | ||
| 317 | RENAME_FILE S_AUTO_REN, S_AUTO_NEW_C ;AN065;SEH rename AUTOEXEC.400 to AUTOEXEC.BAT | ||
| 318 | .IF < c > near ;AN065;SEH | ||
| 319 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN065;SEH | ||
| 320 | .ENDIF ;AN065;SEH | ||
| 321 | .ELSE near ;AN065;SEH | ||
| 322 | FIND_FILE S_CONFIG_C, E_FILE_ATTR ;AN000;GHG | ||
| 323 | .IF < c > ;AN000;GHG | ||
| 324 | FIND_FILE S_AUTO_C, E_FILE_ATTR ;AN000;GHG | ||
| 325 | .IF < c > ;AN000;GHG | ||
| 326 | RENAME_FILE S_CONFIG_REN, S_CONFIG_NEW_C;AN000;GHG new CONFIG ******* | ||
| 327 | .IF < c > ;AN000;GHG | ||
| 328 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN;AN000;GHG | ||
| 329 | .ENDIF ;AN000;GHG | ||
| 330 | RENAME_FILE S_AUTO_REN, S_AUTO_NEW_C ;AN000;GHG new AUTOEXEC ******* | ||
| 331 | .IF < c > ;AN000;GHG | ||
| 332 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN;AN000;GHG | ||
| 333 | .ENDIF ;AN000;GHG | ||
| 334 | .ENDIF ;AN000;GHG | ||
| 335 | .ENDIF ;AN000;GHG | ||
| 336 | .ENDIF ;AN065;SEH | ||
| 337 | .ENDIF ;AN010;JW | ||
| 338 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 339 | ; | ||
| 340 | ; Create install path directory always ! | ||
| 341 | ; | ||
| 342 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 343 | MAKE_DIR_PATHS S_INSTALL_PATH ;AN000; | ||
| 344 | .IF c ;AN000; | ||
| 345 | GOTO INSTALL_ERROR ;AN000; | ||
| 346 | .ENDIF ;AN000; | ||
| 347 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 348 | ; | ||
| 349 | ; Make sure any previous DOSSHELL.BAT is not READ-ONLY ! | ||
| 350 | ; Copy DOSSHELL.BAT from A: to subdirectory of C: | ||
| 351 | ; | ||
| 352 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 353 | .IF < S_DOS_LOC eq 0 > ;AN058;SEH | ||
| 354 | MERGE_STRING S_STR120_1,M_STR120_1,S_DEST_DRIVE,S_SHELL_NEW ;AN058;SEH | ||
| 355 | .ELSE ;AN058;SEH | ||
| 356 | MERGE_STRING S_STR120_1,M_STR120_1,S_INSTALL_PATH,S_SLASH ;AN017; | ||
| 357 | APPEND_STRING S_STR120_1,M_STR120_1,S_SHELL_NEW ;AN017; | ||
| 358 | .ENDIF ;AN058;SEH | ||
| 359 | CHMOD_FILE S_STR120_1 ;AN017; | ||
| 360 | COPY_FILES2 I_DEST_DRIVE,S_SHELL2,SH_FILES,S_INSTALL_PATH ;AC111;JW | ||
| 361 | .IF c ;AN009; | ||
| 362 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN009; | ||
| 363 | .ENDIF ;AN009; | ||
| 364 | ; | ||
| 365 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 366 | ; | ||
| 367 | ; Erase: AUTOEXEC.340 CONFIG.340 | ||
| 368 | ; DOSSHELL.BAT SELECT.TMP from drive A: | ||
| 369 | ; | ||
| 370 | ; Then perform cleanup of AUTOEXEC.BAT on INSTALL (source) | ||
| 371 | ; diskette - ie. change to SELECT MENU!!! | ||
| 372 | ; | ||
| 373 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 374 | ERASE_FILE S_AUTO_NEW ;AN000; | ||
| 375 | ERASE_FILE S_CONFIG_NEW ;AN000; | ||
| 376 | ERASE_FILE S_SHELL_NEW ;AN000; | ||
| 377 | ERASE_FILE S_SELECT_TMP ;AN000; only present if reboot after FDISK | ||
| 378 | ; | ||
| 379 | CHANGE_AUTOEXEC S_AUTO_REBOOT, S_AUTO_MENU ;AN000; | ||
| 380 | .IF c ;AN000; | ||
| 381 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 382 | .ENDIF ;AN000; | ||
| 383 | |||
| 384 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 385 | ; | ||
| 386 | ; If 256KB machine, shrink SELECT memory below the parser | ||
| 387 | ; and pcinput code. This frees about another 11KB. | ||
| 388 | ; | ||
| 389 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 390 | |||
| 391 | .IF < MEM_SIZE eq 256 > ;AN072; | ||
| 392 | ; | ||
| 393 | DEALLOCATE_MEMORY ;AN072; | ||
| 394 | MOV AH,62H ;AN072;Get the PSP segment | ||
| 395 | INT 21H ;AN072; | ||
| 396 | MOV AX,BX ;AN072;save the PSP segment of SELECT | ||
| 397 | MOV BX,PARSER ;AN072;get last address of code | ||
| 398 | MOV ES,AX ;AN072;set PSP segment in ES | ||
| 399 | SUB BX,AX ;AN072;calc # of paragraphs in the program | ||
| 400 | MOV AH,SET_BLOCK ;AN072;setblock function number | ||
| 401 | DOSCALL ;AN072;free used memory | ||
| 402 | |||
| 403 | .IF < c > ;AN000; | ||
| 404 | CALL GET_OVERLAY ;AC048;SEH replaced code with this proc call | ||
| 405 | INSERT_DISK SUB_INSTALL_COPY, S_DOS_COM_360 ;AN000;JW Insert INSTALL COPY diskette | ||
| 406 | GOTO INSTALL_ERROR ;AN072;If error, exit | ||
| 407 | .ENDIF ;AN000; | ||
| 408 | |||
| 409 | .ENDIF | ||
| 410 | |||
| 411 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 412 | ; | ||
| 413 | ; If install is to entire disk, Exec SYS to the drive C: | ||
| 414 | ; | ||
| 415 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 416 | |||
| 417 | .IF < I_DESTINATION eq E_ENTIRE_DISK > near ;AN010; | ||
| 418 | ; | ||
| 419 | ;;;copy system files from Startup diskette to drive C: | ||
| 420 | |||
| 421 | EXEC_PROGRAM S_SYS_C,S_DRIVE_C,PARM_BLOCK,EXEC_DIR ;AN000; | ||
| 422 | .IF < c > ;AN000; | ||
| 423 | MOV EXEC_ERR,TRUE ;AN000; | ||
| 424 | .ENDIF ;AN000; | ||
| 425 | |||
| 426 | .ENDIF ;AN010;JW | ||
| 427 | |||
| 428 | .IF < MEM_SIZE eq 256 > near ;AN000;DT | ||
| 429 | CALL GET_OVERLAY ;AC048;SEH replaced code with this proc call | ||
| 430 | INSERT_DISK SUB_INSTALL_COPY, S_DOS_COM_360 ;AN000;JW Insert INSTALL COPY diskette | ||
| 431 | CALL DEALLOCATE_HELP ;AN072;DT | ||
| 432 | .ENDIF ;AN000;DT | ||
| 433 | .IF < EXEC_ERR eq TRUE > ;AN000; | ||
| 434 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 435 | .ENDIF ;AN000; | ||
| 436 | ; | ||
| 437 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 438 | ;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;; | ||
| 439 | ; | ||
| 440 | ; Display copying files from INSTALL diskette | ||
| 441 | ; | ||
| 442 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 443 | .IF < N_DISKETTE_A eq E_DISKETTE_720 > near or ;AN000;GHG | ||
| 444 | .IF < N_DISKETTE_A eq E_DISKETTE_1440 > near ;AN000;GHG | ||
| 445 | ; | ||
| 446 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 447 | PREPARE_PANEL PAN_DSKCPY_CPY ;AN000; prepare copying | ||
| 448 | DISPLAY_PANEL ;AN000; from diskette 2 msg | ||
| 449 | ; | ||
| 450 | ;;;S_STR120_1 = "a:*.* c:\path /a parameter for REPLACE | ||
| 451 | MERGE_STRING S_STR120_1,M_STR120_1,S_A_STARS,S_INSTALL_PATH ;AN000; | ||
| 452 | APPEND_STRING S_STR120_1,M_STR120_1,S_SLASH_A ;AN000; | ||
| 453 | ; | ||
| 454 | ; .IF < I_DESTINATION eq E_ENTIRE_DISK > ;AN006;JW | ||
| 455 | ; .THEN ;AN006; | ||
| 456 | ; ;;;S_STR120_3 = "a:*.* c:\ /s parameter for REPLACE | ||
| 457 | ; COPY_STRING S_STR120_3,M_STR120_3,S_REPLACE_PAR1 ;AN006;JW | ||
| 458 | ; .ELSE ;AN006; | ||
| 459 | ;;;S_STR120_3 = "a:*.* c:\<path> /r parameter for REPLACE | ||
| 460 | MERGE_STRING S_STR120_3,M_STR120_3,S_A_STARS,S_INSTALL_PATH ;AN006;JW | ||
| 461 | APPEND_STRING S_STR120_3,M_STR120_3,S_SLASH_R ;AN000;JW | ||
| 462 | ; .ENDIF ;AN006; | ||
| 463 | ; | ||
| 464 | ;;;change attributes of some files so they are not copied | ||
| 465 | CHANGE_ATTRIBUTE HIDE_SEL, E_HIDE_SEL ;AN000; | ||
| 466 | ; | ||
| 467 | ;;;replace files in drive C: with new files on INSTALL diskette | ||
| 468 | EXEC_PROGRAM S_REPLACE,S_STR120_3,PARM_BLOCK,EXEC_DIR ;AN006;JW | ||
| 469 | .IF c ;AN000; | ||
| 470 | RESTORE_ATTRIBUTE HIDE_SEL,E_HIDE_SEL ;AN000; | ||
| 471 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 472 | .ENDIF ;AN000; | ||
| 473 | ; | ||
| 474 | ;;;S_STR120_1 = "a:*.* C:\<path> /A" ; | ||
| 475 | ;;;copy new files on SELECT diskette to install path ; | ||
| 476 | EXEC_PROGRAM S_REPLACE,S_STR120_1,PARM_BLOCK,EXEC_DIR ;AN000; copy new files | ||
| 477 | .IF c ;AN000; | ||
| 478 | RESTORE_ATTRIBUTE HIDE_SEL,E_HIDE_SEL ;AN000; | ||
| 479 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 480 | .ENDIF ;AN000; | ||
| 481 | ; | ||
| 482 | ;;;restore attributes of files ; | ||
| 483 | RESTORE_ATTRIBUTE HIDE_SEL,E_HIDE_SEL ;AN000; | ||
| 484 | ; | ||
| 485 | |||
| 486 | ;------------------------------------------------------------- | ||
| 487 | ; copy files from 720k Operate diskette | ||
| 488 | ;------------------------------------------------------------- | ||
| 489 | ; NOTE: The REPLACE command is now issued from the hard disk | ||
| 490 | ; (since it is not found on any other disk) | ||
| 491 | |||
| 492 | COMPARE_STRINGS S_INSTALL_PATH, S_DEST_DRIVE ;AN000; compare to C:\ | ||
| 493 | .IF < nc > ;AN000; if the same | ||
| 494 | MERGE_STRING S_STR120_2,M_STR120_2,S_INSTALL_PATH,S_REPLACE ;AN000; | ||
| 495 | .ELSE ;AN000; | ||
| 496 | MERGE_STRING S_STR120_2,M_STR120_2,S_INSTALL_PATH,S_SLASH ;AN000; | ||
| 497 | APPEND_STRING S_STR120_2,M_STR120_2,S_REPLACE;AN000; | ||
| 498 | .ENDIF ;AN000; | ||
| 499 | |||
| 500 | INSERT_DISK SUB_REM_SEL_A, S_DOS_UTIL1_DISK ;AN000;JW Insert Operating diskette | ||
| 501 | ; | ||
| 502 | ;;;display copying files from diskette 1 screen ; | ||
| 503 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 504 | PREPARE_PANEL PAN_DSKCPY_CPY ;AN000; prepare copying from diskette 1 message | ||
| 505 | DISPLAY_PANEL ;AN000; | ||
| 506 | ; | ||
| 507 | ;;;replace files in drive C: with new files on DOS diskette | ||
| 508 | EXEC_PROGRAM S_STR120_2,S_STR120_3,PARM_BLOCK,EXEC_DIR ;AN006;JW | ||
| 509 | .IF c ;AN000; | ||
| 510 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 511 | .ENDIF ;AN000; | ||
| 512 | ; | ||
| 513 | ;;;S_STR120_1 = "a:*.* C:\<path> /A " ; | ||
| 514 | ;;;copy new files on DOS diskette to install path ; | ||
| 515 | EXEC_PROGRAM S_STR120_2,S_STR120_1,PARM_BLOCK,EXEC_DIR ;AN000; copy new files | ||
| 516 | .IF c ;AN000; | ||
| 517 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 518 | .ENDIF ;AN000; | ||
| 519 | ;------------------------------------------------------------- | ||
| 520 | ; copy files from 720k Shell diskette | ||
| 521 | ;------------------------------------------------------------- | ||
| 522 | |||
| 523 | .IF < f_shell eq e_shell_yes > near | ||
| 524 | ; | ||
| 525 | INSERT_DISK SUB_INS_MSSHELL_A, S_DOS_SHEL_DISK ;AN000;JW Insert Operating diskette | ||
| 526 | ; | ||
| 527 | ;;;display copying files from diskette 1 screen ; | ||
| 528 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 529 | PREPARE_PANEL PAN_DSKCPY_CPY ;AN000; prepare copying from diskette 1 message | ||
| 530 | DISPLAY_PANEL ;AN000; | ||
| 531 | ; | ||
| 532 | ;;;replace files in drive C: with new files on DOS diskette | ||
| 533 | EXEC_PROGRAM S_STR120_2,S_STR120_3,PARM_BLOCK,EXEC_DIR ;AN006;JW | ||
| 534 | .IF c ;AN000; | ||
| 535 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 536 | .ENDIF ;AN000; | ||
| 537 | ; | ||
| 538 | ;;;S_STR120_1 = "a:*.* C:\<path> /A " ; | ||
| 539 | ;;;copy new files on DOS diskette to install path ; | ||
| 540 | EXEC_PROGRAM S_STR120_2,S_STR120_1,PARM_BLOCK,EXEC_DIR ;AN000; copy new files | ||
| 541 | .IF c ;AN000; | ||
| 542 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 543 | .ENDIF ;AN000; | ||
| 544 | |||
| 545 | .ENDIF ; IF shell supported | ||
| 546 | |||
| 547 | |||
| 548 | .ENDIF ;AN000;GHG | ||
| 549 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 550 | ;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;;;;720KB;; | ||
| 551 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 552 | ; End of 720KB support | ||
| 553 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 554 | GOTO CONTINUE_360 ;AN000; | ||
| 555 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 556 | ; | ||
| 557 | ; | ||
| 558 | ; | ||
| 559 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 560 | SELECT ENDS ;AN000; | ||
| 561 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/SELECT7.ASM b/v4.0/src/SELECT/SELECT7.ASM new file mode 100644 index 0000000..5882cd0 --- /dev/null +++ b/v4.0/src/SELECT/SELECT7.ASM | |||
| @@ -0,0 +1,464 @@ | |||
| 1 | |||
| 2 | |||
| 3 | PAGE 55,132 ;AN000; | ||
| 4 | NAME SELECT ;AN000; | ||
| 5 | TITLE SELECT - DOS - SELECT.EXE ;AN000; | ||
| 6 | SUBTTL SELECT7.asm ;AN000; | ||
| 7 | .ALPHA ;AN000; | ||
| 8 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 9 | ; | ||
| 10 | ; SELECT7.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 | ; ;AN000; SELECT2.ASM | ||
| 20 | ; ;AN000; SELECT3.ASM | ||
| 21 | ; ;AN000; SELECT4.ASM | ||
| 22 | ; ;AN000; SELECT5.ASM | ||
| 23 | ; ;AN000; SELECT6.ASM | ||
| 24 | ; | ||
| 25 | ; | ||
| 26 | ; Module contains code for : | ||
| 27 | ; - Format the drives | ||
| 28 | ; - Copy files | ||
| 29 | ; | ||
| 30 | ; CHANGE HISTORY: | ||
| 31 | ; | ||
| 32 | ; ;AN009; DT added support for creation of the DOSSHELL.BAT as a | ||
| 33 | ; separately installed file. (D233) | ||
| 34 | ; ;AN002; GHG for P1146 | ||
| 35 | ; ;AN003; GHG for D234 | ||
| 36 | ; ;AN004; GHG for P65 | ||
| 37 | ; ;AN005; DT for single drive support | ||
| 38 | ; ;AN006; JW for dos location choice (global or path only) | ||
| 39 | ; ;AN007; JW fixed deletion of select.* when installation is to the root | ||
| 40 | ; ;AN072; DT Overlay parser and pcinput if memory = 256KB | ||
| 41 | ; | ||
| 42 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 43 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 44 | DATA ENDS ;AN000; | ||
| 45 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 46 | ; | ||
| 47 | ; | ||
| 48 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 49 | .XLIST ;AN000; | ||
| 50 | INCLUDE PANEL.MAC ;AN000; | ||
| 51 | INCLUDE SELECT.INC ;AN000; | ||
| 52 | INCLUDE PAN-LIST.INC ;AN000; | ||
| 53 | INCLUDE CASTRUC.INC ;AN000; | ||
| 54 | INCLUDE STRUC.INC ;AN000; | ||
| 55 | INCLUDE MACROS.INC ;AN000; | ||
| 56 | INCLUDE MACROS7.INC ;AN009;DT | ||
| 57 | INCLUDE EXT.INC ;AN000; | ||
| 58 | INCLUDE VARSTRUC.INC ;AN000; | ||
| 59 | INCLUDE ROUT_EXT.INC ;AN000; | ||
| 60 | .LIST ;AN000; | ||
| 61 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 62 | ; | ||
| 63 | EXTRN DEALLOCATE_HELP:FAR ;AN000;DT | ||
| 64 | EXTRN DEALLOCATE_BLOCK:FAR ;AN000;DT | ||
| 65 | EXTRN ALLOCATE_BLOCK:FAR ;AN000;DT | ||
| 66 | EXTRN DEALLOCATE_MEMORY_CALL:FAR ;AN000;DT | ||
| 67 | EXTRN ALLOCATE_MEMORY_CALL:FAR ;AN000;DT | ||
| 68 | ; | ||
| 69 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 70 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000; | ||
| 71 | ASSUME CS:SELECT,DS:DATA ;AN000; | ||
| 72 | ; | ||
| 73 | INCLUDE CASEXTRN.INC ;AN000; | ||
| 74 | ; | ||
| 75 | EXTRN EXIT_SELECT:near ;AN000; | ||
| 76 | EXTRN CREATE_CONFIG_SYS:NEAR ;AN000; | ||
| 77 | EXTRN CREATE_AUTOEXEC_BAT:NEAR ;AN000; | ||
| 78 | EXTRN CREATE_SHELL_BAT:NEAR ;AN009;DT | ||
| 79 | ; | ||
| 80 | EXTRN EXIT_DOS:near ;AN004;GHG | ||
| 81 | EXTRN INSTALL_ERROR:near ;AN004;GHG | ||
| 82 | EXTRN EXIT_SELECT:NEAR ;AN004;GHG | ||
| 83 | EXTRN PROCESS_ESC_F3:near ;AN004;GHG | ||
| 84 | EXTRN EXIT_DOS_CONT:NEAR ;AN004;GHG | ||
| 85 | ; | ||
| 86 | PUBLIC CONTINUE_360 ;AN000; | ||
| 87 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 88 | ; | ||
| 89 | ; CODE CONTINUES..... | ||
| 90 | ; | ||
| 91 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 92 | ;;;;;;;;;;INSTALL 360KB DISKETTE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 93 | ; | ||
| 94 | ; Display copying files from INSTALL diskette | ||
| 95 | ; | ||
| 96 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 97 | CONTINUE_360: ;AN000; | ||
| 98 | ;;; | ||
| 99 | ;;; | ||
| 100 | .IF < N_DISKETTE_A eq E_DISKETTE_360 > near ;AN000; | ||
| 101 | ; | ||
| 102 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 103 | PREPARE_PANEL SUB_COPYING ;AN000; prepare copying from diskette 2 message | ||
| 104 | DISPLAY_PANEL ;AN000; | ||
| 105 | ; | ||
| 106 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 107 | DEALLOCATE_MEMORY ;AN000;DT | ||
| 108 | .ENDIF ;AN000;DT | ||
| 109 | ; | ||
| 110 | ;;;S_STR120_1 = "a:*.* c:\path /a parameter for REPLACE | ||
| 111 | MERGE_STRING S_STR120_1,M_STR120_1,S_A_STARS,S_INSTALL_PATH ;AN000; | ||
| 112 | APPEND_STRING S_STR120_1,M_STR120_1,S_SLASH_A ;AN000; | ||
| 113 | ; | ||
| 114 | ; .IF < I_DESTINATION eq E_ENTIRE_DISK > ;AN006;JW | ||
| 115 | ; .THEN ;AN006; | ||
| 116 | ; ;;;S_STR120_3 = "a:*.* c:\ /s /r parameter for REPLACE | ||
| 117 | ; COPY_STRING S_STR120_3,M_STR120_3,S_REPLACE_PAR1 ;AN006;JW | ||
| 118 | ; .ELSE ;AN006; | ||
| 119 | ;;;S_STR120_3 = "a:*.* c:\<path> parameter for REPLACE | ||
| 120 | MERGE_STRING S_STR120_3,M_STR120_3,S_A_STARS,S_INSTALL_PATH ;AN006;JW | ||
| 121 | APPEND_STRING S_STR120_3,M_STR120_3,S_SLASH_R ;AN000;JW | ||
| 122 | ; .ENDIF ;AN006; | ||
| 123 | ; | ||
| 124 | ;;;change attributes of some files so they are not copied | ||
| 125 | CHANGE_ATTRIBUTE HIDE_STARTUP, E_HIDE_STARTUP ;AN000; | ||
| 126 | ; | ||
| 127 | ;;;replace files in drive C: with new files on INSTALL diskette | ||
| 128 | EXEC_PROGRAM S_REPLACE,S_STR120_3,PARM_BLOCK,EXEC_DIR ;AN006;JW | ||
| 129 | .IF c ;AN000; | ||
| 130 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 131 | CALL GET_OVERLAY ;AN000;DT Get panels | ||
| 132 | .ENDIF ;AN000; | ||
| 133 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 134 | RESTORE_ATTRIBUTE HIDE_STARTUP,E_HIDE_STARTUP ;AN000; | ||
| 135 | .ENDIF ;AN000; | ||
| 136 | ; | ||
| 137 | ;;;S_STR120_1 = "a:*.* C:\<path> /A" ; | ||
| 138 | ;;;copy NEW files on INSTALL diskette to install path ; | ||
| 139 | EXEC_PROGRAM S_REPLACE,S_STR120_1,PARM_BLOCK,EXEC_DIR ;AN000; copy new files | ||
| 140 | .IF c ;AN000; | ||
| 141 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 142 | CALL GET_OVERLAY ;AN000;DT Get panels | ||
| 143 | .ENDIF ;AN000; | ||
| 144 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 145 | RESTORE_ATTRIBUTE HIDE_STARTUP,E_HIDE_STARTUP ;AN000; | ||
| 146 | .ENDIF ;AN000; | ||
| 147 | ; | ||
| 148 | RESTORE_ATTRIBUTE HIDE_STARTUP,E_HIDE_STARTUP ;AN000; | ||
| 149 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 150 | ; | ||
| 151 | ; Prompt the user to remove the INSTALL (source) diskette | ||
| 152 | ; and insert the OPERATING 1 (source) diskette. | ||
| 153 | ; | ||
| 154 | ;;;;;;;;;;SHELL 360KB DISKETTE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 155 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 156 | ; | ||
| 157 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 158 | CALL GET_OVERLAY ;AN000;DT Get panels | ||
| 159 | .ENDIF ;AN000; | ||
| 160 | ; | ||
| 161 | ;;;insert OPERATING 1 diskette in drive A: ; | ||
| 162 | INSERT_DISK SUB_REM_SELECT_360, S_DOS_UTIL1_DISK ;AN000;JW | ||
| 163 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 164 | ; | ||
| 165 | ; Display copying files | ||
| 166 | ; | ||
| 167 | ; NOTE: The REPLACE command is now issued from the hard disk | ||
| 168 | ; (since it is not found on any other disk) | ||
| 169 | ; | ||
| 170 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 171 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 172 | PREPARE_PANEL SUB_COPYING ;AN000; prepare copying from diskette 2 message | ||
| 173 | DISPLAY_PANEL ;AN000; | ||
| 174 | ; | ||
| 175 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 176 | DEALLOCATE_MEMORY ;AN000;DT | ||
| 177 | .ENDIF ;AN000;DT | ||
| 178 | ; | ||
| 179 | ;;;S_STR120_1 = "a:*.* c:\path /a parameter for REPLACE | ||
| 180 | MERGE_STRING S_STR120_1,M_STR120_1,S_A_STARS,S_INSTALL_PATH ;AN000; | ||
| 181 | APPEND_STRING S_STR120_1,M_STR120_1,S_SLASH_A ;AN000; | ||
| 182 | ; | ||
| 183 | COMPARE_STRINGS S_INSTALL_PATH, S_DEST_DRIVE ;AN000; compare to C:\ | ||
| 184 | .IF < nc > ;AN000; if the same | ||
| 185 | MERGE_STRING S_STR120_2,M_STR120_2,S_INSTALL_PATH,S_REPLACE ;AN000; | ||
| 186 | .ELSE ;AN000; | ||
| 187 | MERGE_STRING S_STR120_2,M_STR120_2,S_INSTALL_PATH,S_SLASH ;AN000; | ||
| 188 | APPEND_STRING S_STR120_2,M_STR120_2,S_REPLACE;AN000; | ||
| 189 | .ENDIF ;AN000; | ||
| 190 | ; | ||
| 191 | ;;;replace files in drive C: with new files on OPERATING 1 diskette | ||
| 192 | EXEC_PROGRAM S_STR120_2,S_STR120_3,PARM_BLOCK,EXEC_DIR ;AN006;JW | ||
| 193 | .IF c ;AN000; | ||
| 194 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 195 | CALL GET_OVERLAY ;AN000;DT Get panels | ||
| 196 | .ENDIF ;AN000; | ||
| 197 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 198 | .ENDIF ;AN000; | ||
| 199 | ; | ||
| 200 | ;;;S_STR120_1 = "a:*.* C:\<path> /A" ; | ||
| 201 | ;;;copy NEW files on OPERATING 1 diskette to install path | ||
| 202 | EXEC_PROGRAM S_STR120_2,S_STR120_1,PARM_BLOCK,EXEC_DIR ;AN000; copy new files | ||
| 203 | .IF c ;AN000; | ||
| 204 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 205 | CALL GET_OVERLAY ;AN000;DT Get panels | ||
| 206 | .ENDIF ;AN000; | ||
| 207 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 208 | .ENDIF ;AN000; | ||
| 209 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 210 | ; | ||
| 211 | ; insert the OPERATING #2 diskette. | ||
| 212 | ; | ||
| 213 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 214 | ; | ||
| 215 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 216 | CALL GET_OVERLAY ;AN000;DT Get panels | ||
| 217 | .ENDIF ;AN000;DT | ||
| 218 | ; | ||
| 219 | ;;; insert OPERATING #2 diskette in drive A: ; | ||
| 220 | INSERT_DISK SUB_INS_OPER2, S_DOS_UTIL2_DISK ;AN000;JW | ||
| 221 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 222 | ; | ||
| 223 | ; Display copying files from OPERATING #2 | ||
| 224 | ; | ||
| 225 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 226 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 227 | PREPARE_PANEL SUB_COPYING ;AN000; prepare copying from diskette 1 message | ||
| 228 | DISPLAY_PANEL ;AN000; | ||
| 229 | ; | ||
| 230 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 231 | DEALLOCATE_MEMORY ;AN000;DT | ||
| 232 | .ENDIF ;AN000;DT | ||
| 233 | ; | ||
| 234 | ;;;replace files in drive C: with new files on OPERATING 2 diskette | ||
| 235 | EXEC_PROGRAM S_STR120_2,S_STR120_3,PARM_BLOCK,EXEC_DIR ;AN006;JW | ||
| 236 | .IF c ;AN000; | ||
| 237 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 238 | CALL GET_OVERLAY ;AN000;DT Get panels | ||
| 239 | .ENDIF ;AN000; | ||
| 240 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 241 | .ENDIF ;AN000; | ||
| 242 | ; | ||
| 243 | ;;;S_STR120_1 = "a:*.* C:\<path> /A " ; | ||
| 244 | ;;;copy NEW files on OPERATING 2 diskette to install path | ||
| 245 | EXEC_PROGRAM S_STR120_2,S_STR120_1,PARM_BLOCK,EXEC_DIR ;AN000; copy new files | ||
| 246 | .IF c ;AN000; | ||
| 247 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 248 | CALL GET_OVERLAY ;AN000;DT Get panels | ||
| 249 | .ENDIF ;AN000; | ||
| 250 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 251 | .ENDIF ;AN000; | ||
| 252 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 253 | ; | ||
| 254 | ; insert the OPERATING #3 diskette. | ||
| 255 | ; | ||
| 256 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 257 | ; | ||
| 258 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 259 | CALL GET_OVERLAY ;AN000;DT Get panels | ||
| 260 | .ENDIF ;AN000;DT | ||
| 261 | ; | ||
| 262 | ;;; insert OPERATING #3 diskette in drive A: ; | ||
| 263 | INSERT_DISK SUB_REM_UTIL1_360, S_DOS_UTIL3_DISK ;AN000;JW | ||
| 264 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 265 | ; | ||
| 266 | ; Display copying files from OPERATING #3 | ||
| 267 | ; | ||
| 268 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 269 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 270 | PREPARE_PANEL SUB_COPYING ;AN000; prepare copying from diskette 1 message | ||
| 271 | DISPLAY_PANEL ;AN000; | ||
| 272 | ; | ||
| 273 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 274 | DEALLOCATE_MEMORY ;AN000;DT | ||
| 275 | .ENDIF ;AN000;DT | ||
| 276 | ; | ||
| 277 | ;;;replace files in drive C: with new files on OPERATING 2 diskette | ||
| 278 | EXEC_PROGRAM S_STR120_2,S_STR120_3,PARM_BLOCK,EXEC_DIR ;AN006;JW | ||
| 279 | .IF c ;AN000; | ||
| 280 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 281 | CALL GET_OVERLAY ;AN000;DT Get panels | ||
| 282 | .ENDIF ;AN000; | ||
| 283 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 284 | .ENDIF ;AN000; | ||
| 285 | ; | ||
| 286 | ;;;S_STR120_1 = "a:*.* C:\<path> /A " ; | ||
| 287 | ;;;copy NEW files on OPERATING 2 diskette to install path | ||
| 288 | EXEC_PROGRAM S_STR120_2,S_STR120_1,PARM_BLOCK,EXEC_DIR ;AN000; copy new files | ||
| 289 | .IF c ;AN000; | ||
| 290 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 291 | CALL GET_OVERLAY ;AN000;DT Get panels | ||
| 292 | .ENDIF ;AN000; | ||
| 293 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 294 | .ENDIF ;AN000; | ||
| 295 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 296 | ; | ||
| 297 | ; insert the SELECT diskette. | ||
| 298 | ; | ||
| 299 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 300 | ; | ||
| 301 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 302 | CALL GET_OVERLAY ;AN000;DT Get panels | ||
| 303 | .ELSE ;AN000;DT | ||
| 304 | ;;; insert the SELECT diskette in drive A ; | ||
| 305 | INSERT_DISK SUB_REM_SHELL_360, S_DOS_SEL_360 ;AN000;JW | ||
| 306 | .ENDIF ;AN000;DT | ||
| 307 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 308 | ; | ||
| 309 | ; Display copying files from SELECT diskette | ||
| 310 | ; | ||
| 311 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 312 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 313 | PREPARE_PANEL SUB_COPYING ;AN000; prepare copying from diskette 1 message | ||
| 314 | DISPLAY_PANEL ;AN000; | ||
| 315 | ; | ||
| 316 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 317 | DEALLOCATE_MEMORY ;AN000;DT | ||
| 318 | .ENDIF ;AN000;DT | ||
| 319 | ; | ||
| 320 | ;;;replace files in drive C: with new files on SELECT diskette | ||
| 321 | EXEC_PROGRAM S_STR120_2,S_STR120_3,PARM_BLOCK,EXEC_DIR ;AN006;JW | ||
| 322 | .IF c ;AN000; | ||
| 323 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 324 | CALL GET_OVERLAY ;AN000;DT Get panels | ||
| 325 | .ENDIF ;AN000; | ||
| 326 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 327 | .ENDIF ;AN000; | ||
| 328 | ; | ||
| 329 | ;;;S_STR120_1 = "a:*.* C:\<path> /A " ; | ||
| 330 | ;;;copy new files on SELECT diskette to install path ; | ||
| 331 | EXEC_PROGRAM S_STR120_2,S_STR120_1,PARM_BLOCK,EXEC_DIR;AN000; copy new files | ||
| 332 | .IF c ;AN000; | ||
| 333 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 334 | CALL GET_OVERLAY ;AN000;DT Get panels | ||
| 335 | .ENDIF ;AN000; | ||
| 336 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 337 | .ENDIF ;AN000; | ||
| 338 | ; | ||
| 339 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 340 | ; | ||
| 341 | ; maybe insert the SHELL diskette. | ||
| 342 | ; | ||
| 343 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 344 | |||
| 345 | .IF < f_shell eq e_shell_yes > near | ||
| 346 | ; | ||
| 347 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 348 | CALL GET_OVERLAY ;AN000;DT Get panels | ||
| 349 | .ENDIF ;AN000;DT | ||
| 350 | ; | ||
| 351 | INSERT_DISK SUB_INS_MSSHELL_A, S_DOS_SHEL_DISK ;AN000;JW | ||
| 352 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 353 | ; | ||
| 354 | ; Display copying files from SHELL diskette | ||
| 355 | ; | ||
| 356 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 357 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 358 | PREPARE_PANEL SUB_COPYING ;AN000; prepare copying from diskette 1 message | ||
| 359 | DISPLAY_PANEL ;AN000; | ||
| 360 | ; | ||
| 361 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 362 | DEALLOCATE_MEMORY ;AN000;DT | ||
| 363 | .ENDIF ;AN000;DT | ||
| 364 | ; | ||
| 365 | ;;;replace files in drive C: with new files on SHELL diskette | ||
| 366 | EXEC_PROGRAM S_STR120_2,S_STR120_3,PARM_BLOCK,EXEC_DIR ;AN006;JW | ||
| 367 | .IF c ;AN000; | ||
| 368 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 369 | CALL GET_OVERLAY ;AN000;DT Get panels | ||
| 370 | .ENDIF ;AN000; | ||
| 371 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 372 | .ENDIF ;AN000; | ||
| 373 | ; | ||
| 374 | ;;;S_STR120_1 = "a:*.* C:\<path> /A " ; | ||
| 375 | ;;;copy NEW files on SHELL diskette to install path | ||
| 376 | EXEC_PROGRAM S_STR120_2,S_STR120_1,PARM_BLOCK,EXEC_DIR;AN000; copy new files | ||
| 377 | .IF c ;AN000; | ||
| 378 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 379 | CALL GET_OVERLAY ;AN000;DT Get panels | ||
| 380 | .ENDIF ;AN000; | ||
| 381 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN ;AN000; | ||
| 382 | .ENDIF ;AN000; | ||
| 383 | |||
| 384 | .endif ; optional shell support | ||
| 385 | |||
| 386 | |||
| 387 | ;Delete select files from C: drive ; | ||
| 388 | COMPARE_STRINGS S_INSTALL_PATH, S_DEST_DRIVE ;AN007; compare to C:\ | ||
| 389 | .IF < nc > ;AN007; if installed to the root | ||
| 390 | MERGE_STRING S_STR120_1,M_STR120_1,S_C_DRIVE,S_SELDAT_C ;AN000; | ||
| 391 | ERASE_FILE S_STR120_1 ;AN000;DT | ||
| 392 | MERGE_STRING S_STR120_1,M_STR120_1,S_C_DRIVE,S_SELEXE_C ;AN000; | ||
| 393 | ERASE_FILE S_STR120_1 ;AN000;DT | ||
| 394 | .ELSE near ;AN007; else installed to a directory | ||
| 395 | MERGE_STRING S_STR120_1,M_STR120_1,S_INSTALL_PATH,S_SELDAT_C ;AN000; | ||
| 396 | ERASE_FILE S_STR120_1 ;AN000;DT | ||
| 397 | MERGE_STRING S_STR120_1,M_STR120_1,S_INSTALL_PATH,S_SELEXE_C ;AN000; | ||
| 398 | ERASE_FILE S_STR120_1 ;AN000;DT | ||
| 399 | MERGE_STRING S_STR120_1,M_STR120_1,S_INSTALL_PATH,S_AUTOEX_C ;AN000; | ||
| 400 | ERASE_FILE S_STR120_1 ;AN000;DT | ||
| 401 | MERGE_STRING S_STR120_1,M_STR120_1,S_INSTALL_PATH,S_CONSYS_C ;AN000; | ||
| 402 | ERASE_FILE S_STR120_1 ;AN000;DT | ||
| 403 | .ENDIF ;AN007; | ||
| 404 | ; | ||
| 405 | .ENDIF ;AN000; | ||
| 406 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 407 | ;;;;360KB;;;;360KB;;;;360KB;;;;360KB;;;;360KB;;;;360KB;;;;360KB;; | ||
| 408 | ; | ||
| 409 | ; End of 360KB support | ||
| 410 | ; | ||
| 411 | ; Installation completed. inform user to reboot | ||
| 412 | ; | ||
| 413 | ; Search for the installed CONFIG.340 , and | ||
| 414 | ; we issue a different panel to describe the '.340' files. | ||
| 415 | ; | ||
| 416 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 417 | ; | ||
| 418 | .IF < MEM_SIZE eq 256 > ;AN000;DT | ||
| 419 | ALLOCATE_MEMORY ;AN000;DT | ||
| 420 | CALL INITIALIZE ;AN000;DT and read them in | ||
| 421 | .ENDIF ;AN000;DT | ||
| 422 | ; | ||
| 423 | INIT_PQUEUE PAN_COMPLETE1 ;AN000; initialize queue | ||
| 424 | .IF < I_DESTINATION ne E_ENTIRE_DISK > ;AN010;JW | ||
| 425 | PREPARE_PANEL PAN_PARTIAL ;AN010;JW | ||
| 426 | .ELSE ;AN010;JW | ||
| 427 | FIND_FILE S_CONFIG_REN, E_FILE_ATTR ;AN003;GHG Look for '.340' files | ||
| 428 | .IF < c > ;AN003;GHG | ||
| 429 | PREPARE_PANEL SUB_COMP_VER ;AN003;GHG prepare DOS install message | ||
| 430 | .ELSE ;AN003;GHG | ||
| 431 | PREPARE_PANEL SUB_COMP_REP ;AN003;GHG prepare DOS Replace message | ||
| 432 | .ENDIF ;AN003;GHG | ||
| 433 | .ENDIF ;AN010; | ||
| 434 | ; | ||
| 435 | PREPARE_PANEL SUB_COMP_KYS_1 ;AN000; | ||
| 436 | DISPLAY_PANEL ;AN000; | ||
| 437 | SAVE_PANEL_LIST ;AN000; | ||
| 438 | ; | ||
| 439 | GET_FUNCTION FK_REBOOT ;AN000; User has to reboot | ||
| 440 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 441 | ; | ||
| 442 | ; | ||
| 443 | ; | ||
| 444 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 445 | PUBLIC GET_OVERLAY ;AN000; | ||
| 446 | GET_OVERLAY PROC NEAR ;AN000; | ||
| 447 | .IF < N_DISKETTE_A ne E_DISKETTE_720 > ;AN063;SEH | ||
| 448 | CLEAR_SCREEN ;AN000; | ||
| 449 | DISPLAY_MESSAGE 12 ;AN000;DT Insert SELECT diskette | ||
| 450 | .REPEAT ;AN000; | ||
| 451 | GET_FUNCTION FK_ENT ;AN000; get user entered function | ||
| 452 | FIND_FILE S_DOS_SEL_360, E_FILE_ATTR ;AN000; | ||
| 453 | .LEAVE < nc > ;AN000; | ||
| 454 | DISPLAY_MESSAGE 11 ;AN000;DT Beep | ||
| 455 | .UNTIL ;AN000; | ||
| 456 | .ENDIF ;AN063;SEH | ||
| 457 | ALLOCATE_MEMORY ;AN000;DT | ||
| 458 | CALL INITIALIZE ;AN000;DT and read them in | ||
| 459 | RET ;AN000; | ||
| 460 | GET_OVERLAY ENDP ;AN000; | ||
| 461 | ; | ||
| 462 | SELECT ENDS ;AN000; | ||
| 463 | END ;AN000; | ||
| 464 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/SELECT8.ASM b/v4.0/src/SELECT/SELECT8.ASM new file mode 100644 index 0000000..effac33 --- /dev/null +++ b/v4.0/src/SELECT/SELECT8.ASM | |||
| @@ -0,0 +1,453 @@ | |||
| 1 | |||
| 2 | |||
| 3 | PAGE 55,132 ;AN000; | ||
| 4 | NAME SELECT ;AN000; | ||
| 5 | TITLE SELECT - DOS - SELECT.EXE ;AN000; | ||
| 6 | SUBTTL SELECT8.asm ;AN000; | ||
| 7 | .ALPHA ;AN000; | ||
| 8 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 9 | ; | ||
| 10 | ; SELECT8.ASM : Copyright 1988 Microsoft | ||
| 11 | ; | ||
| 12 | ; DATE: August 8/87 | ||
| 13 | ; | ||
| 14 | ; COMMENTS: Assemble with MASM 3.0 (using the /A option) | ||
| 15 | ; | ||
| 16 | ; | ||
| 17 | ; CHANGE HISTORY: | ||
| 18 | ; | ||
| 19 | ; ;AN000; DT added support for creation of the DOSSHELL.BAT as a | ||
| 20 | ; separately installed file. (D233) | ||
| 21 | ; ;AN002; GHG for P1146 | ||
| 22 | ; ;AN003; GHG for D234 | ||
| 23 | ; ;AN004; GHG for P65 | ||
| 24 | ; ;AN005; DT for single drive support | ||
| 25 | ; ;AN006; JW correct critical error problems during format/copy | ||
| 26 | ; | ||
| 27 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 28 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 29 | EXTRN EXEC_ERR:BYTE ;AN063;SEH | ||
| 30 | EXTRN BCHAR:BYTE ;AN000;DT | ||
| 31 | EXTRN DSKCPY_ERR:BYTE ;AN000;DT | ||
| 32 | EXTRN DSKCPY_WHICH:BYTE ;AN000;DT | ||
| 33 | EXTRN DSKCPY_OPTION:BYTE ;AN000;DT | ||
| 34 | EXTRN DSKCPY_PAN1:WORD ;AN000;DT | ||
| 35 | EXTRN DSKCPY_PAN2:WORD ;AN000;DT | ||
| 36 | EXTRN DSKCPY_PAN3:WORD ;AN000;DT | ||
| 37 | EXTRN DSKCPY_SOURCE:WORD ;AN000;DT | ||
| 38 | DATA ENDS ;AN000; | ||
| 39 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 40 | ; | ||
| 41 | ; | ||
| 42 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 43 | .XLIST ;AN000; | ||
| 44 | INCLUDE PANEL.MAC ;AN000; | ||
| 45 | INCLUDE SELECT.INC ;AN000; | ||
| 46 | INCLUDE PAN-LIST.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 | .LIST ;AN000; | ||
| 54 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 55 | ; | ||
| 56 | ; | ||
| 57 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 58 | EXTRN ALLOCATE_MEMORY_CALL:FAR ;AN063;SEH | ||
| 59 | EXTRN DEALLOCATE_MEMORY_CALL:FAR ;AN063;SEH | ||
| 60 | EXTRN ALLOCATE_BLOCK:FAR ;AN000;DT | ||
| 61 | EXTRN PM_BASECHAR:BYTE ;AN000; | ||
| 62 | EXTRN PM_BASEATTR:BYTE ;AN000; | ||
| 63 | EXTRN CRD_CCBVECOFF:WORD ;AN000; | ||
| 64 | EXTRN CRD_CCBVECSEG:WORD ;AN000; | ||
| 65 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000; | ||
| 66 | ASSUME CS:SELECT,DS:DATA ;AN000; | ||
| 67 | ; | ||
| 68 | INCLUDE CASEXTRN.INC ;AN000; | ||
| 69 | ; | ||
| 70 | EXTRN EXIT_SELECT:near ;AN000; | ||
| 71 | EXTRN CREATE_CONFIG_SYS:NEAR ;AN000; | ||
| 72 | EXTRN CREATE_AUTOEXEC_BAT:NEAR ;AN000; | ||
| 73 | EXTRN CREATE_SHELL_BAT:NEAR ;AN000;DT | ||
| 74 | EXTRN DEALLOCATE_HELP:FAR ;AN007;JW | ||
| 75 | ; | ||
| 76 | EXTRN INSTALL_TO_360_DRIVE:NEAR ;AN000;DT | ||
| 77 | EXTRN INSTALL_ERROR:NEAR ;AN000; | ||
| 78 | EXTRN EXIT_DOS:NEAR ;AN000; | ||
| 79 | EXTRN PROCESS_ESC_F3:NEAR ;AN000; | ||
| 80 | EXTRN EXIT_DOS_CONT:NEAR ;AN000; | ||
| 81 | EXTRN GET_ENTER_KEY:NEAR ;AN063;SEH | ||
| 82 | EXTRN GET_OVERLAY:NEAR ;AN063;SEH | ||
| 83 | extrn Free_Parser:near | ||
| 84 | PUBLIC DISKETTE_INSTALL ;AN111;JW | ||
| 85 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 86 | ; | ||
| 87 | ; Install is to drive B: or drive A: | ||
| 88 | ; | ||
| 89 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 90 | DISKETTE_INSTALL: ;AC111;JW | ||
| 91 | ; | ||
| 92 | INIT_VAR F_PATH, E_PATH_NO ;AN000; | ||
| 93 | INIT_VAR F_APPEND, E_APPEND_NO ;AN000; | ||
| 94 | INIT_VAR F_PROMPT, E_PROMPT_NO ;AN000; | ||
| 95 | INIT_VAR F_XMA, E_XMA_NO ;AN000; | ||
| 96 | INIT_VAR F_FASTOPEN, E_FASTOPEN_NO ;AN000; | ||
| 97 | INIT_VAR F_SHARE, E_SHARE_NO ;AN000; | ||
| 98 | INIT_VAR S_INSTALL_PATH,0 ;AN000;set install path field = 0 | ||
| 99 | ; | ||
| 100 | .IF < N_DISKETTE_A eq E_DISKETTE_360 > ;AN111;JW | ||
| 101 | GOTO INSTALL_TO_360_DRIVE ;AN111;JW | ||
| 102 | .ENDIF ;AN111;JW | ||
| 103 | ; | ||
| 104 | .IF < N_DISKETTE_A eq E_DISKETTE_720 > ;AN111;JW | ||
| 105 | GOTO INSTALL_TO_720_DRIVE ;AN111;JW | ||
| 106 | .ENDIF ;AN111;JW | ||
| 107 | ; | ||
| 108 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 109 | ; | ||
| 110 | ; install is to 1.44M drives | ||
| 111 | ; | ||
| 112 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 113 | ;;;Introduction to 1440KB install ; | ||
| 114 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 115 | PREPARE_PANEL PAN_START1440 ;AN000; | ||
| 116 | PREPARE_PANEL PAN_HBAR ;AN000; | ||
| 117 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 118 | DISPLAY_PANEL ;AN000; | ||
| 119 | ; | ||
| 120 | GET_FUNCTION FK_ENT ;AN000; | ||
| 121 | ; | ||
| 122 | .IF < I_DEST_DRIVE eq E_DEST_DRIVE_B > near ;AN111;JW | ||
| 123 | ;;;insert startup diskette in drive B: ; | ||
| 124 | INIT_PQUEUE PAN_INST_PROMPT ;AN000; initialize queue | ||
| 125 | PREPARE_PANEL SUB_INS_START_B ;AN000; insert startup diskette in drive B: | ||
| 126 | PREPARE_PANEL PAN_HBAR ;AN000; prepare horizontal bar | ||
| 127 | PREPARE_CHILDREN ;AN000; prepare child panels | ||
| 128 | DISPLAY_PANEL ;AN000; display panel | ||
| 129 | ; | ||
| 130 | GET_FUNCTION FK_ENT ;AN000; | ||
| 131 | ; | ||
| 132 | ;;;formatting disk screen ; | ||
| 133 | INIT_PQUEUE FORMAT_DISKET ;AN000; initialize queue | ||
| 134 | DISPLAY_PANEL ;AN000; | ||
| 135 | ; | ||
| 136 | ;;;format startup diskette in drive B: ; | ||
| 137 | .REPEAT ;AN006;JW | ||
| 138 | EXEC_PROGRAM S_FORMAT,S_FORMAT_B,PARM_BLOCK,EXEC_NO_DIR;AN000; format startup disket & copy system files | ||
| 139 | .LEAVE nc ;AN006;JW | ||
| 140 | HANDLE_FORMAT_ERROR ;AN000;JW | ||
| 141 | .UNTIL ;AN006;JW | ||
| 142 | ; | ||
| 143 | ;;;create config and autoexec files on startup diskette ; | ||
| 144 | CREATE_CONFIG S_CONFIG_NEW_B, N_RETCODE ;AN000; create CONFIG.SYS file | ||
| 145 | .IF c ;AN000; | ||
| 146 | GOTO INSTALL_ERROR ;AN000; | ||
| 147 | .ENDIF ;AN000; | ||
| 148 | CREATE_AUTOEXEC S_AUTO_NEW_B,E_DEST_SHELL,N_RETCODE;AN000; create AUTOEXEC.BAT file with SHELL pars | ||
| 149 | .IF < c > near ;AN000; | ||
| 150 | GOTO INSTALL_ERROR ;AN000; | ||
| 151 | .ENDIF ;AN000; | ||
| 152 | ; | ||
| 153 | .ELSE near ;AN111; install is to 1.44 meg A: drive JW | ||
| 154 | ; | ||
| 155 | ;;;format startup diskette in drive A: ; | ||
| 156 | ;;;use format int2f call to display panels ; | ||
| 157 | INIT_VAR FORMAT_WHICH,STARTUP ;AN111;JW | ||
| 158 | .REPEAT ;AN006;JW | ||
| 159 | HOOK_2F_FORMAT ;AN111;JW | ||
| 160 | EXEC_PROGRAM S_FORMAT,S_FORMAT_A,PARM_BLOCK,EXEC_NO_DIR ;AN000; format startup disket & copy system files | ||
| 161 | .LEAVE nc ;AN006;JW | ||
| 162 | UNHOOK_2F ;AN111;JW | ||
| 163 | HANDLE_FORMAT_ERROR ;AN000;JW | ||
| 164 | INSERT_DISK SUB_REM_DOS_A, S_DOS_SEL_360 ;AN000; | ||
| 165 | .UNTIL ;AN006;JW | ||
| 166 | UNHOOK_2F ;AN111;JW | ||
| 167 | ; | ||
| 168 | ;;;create config and autoexec files on startup diskette ; | ||
| 169 | CREATE_CONFIG S_CONSYS_C, N_RETCODE ;AN000; create CONFIG.SYS file | ||
| 170 | .IF c ;AN000; | ||
| 171 | GOTO INSTALL_ERROR ;AN000; | ||
| 172 | .ENDIF ;AN000; | ||
| 173 | CREATE_AUTOEXEC S_AUTOEX_C,E_DEST_SHELL,N_RETCODE ;AN000; create AUTOEXEC.BAT file with SHELL pars | ||
| 174 | .IF c ;AN000; | ||
| 175 | GOTO INSTALL_ERROR ;AN000; | ||
| 176 | .ENDIF ;AN000; | ||
| 177 | ; | ||
| 178 | ;;; insert the INSTALL diskette in drive A: ; | ||
| 179 | INSERT_DISK SUB_REM_DOS_A, S_DOS_SEL_360 ;AN000; | ||
| 180 | ; | ||
| 181 | .ENDIF ;AN000; | ||
| 182 | ; | ||
| 183 | ;;;copying files screen ; | ||
| 184 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 185 | PREPARE_PANEL SUB_COPYING ;AN111; prepare copying files message JW | ||
| 186 | DISPLAY_PANEL ;AN000; | ||
| 187 | ; | ||
| 188 | .IF < I_DEST_DRIVE eq E_DEST_DRIVE_A > ;AN111;JW | ||
| 189 | INIT_VAR SOURCE_PANEL, SUB_REM_DOS_A ;AN000; | ||
| 190 | INIT_VAR DEST_PANEL, SUB_INS_STARTT_S360 ;AN000; | ||
| 191 | .ENDIF ;AN000; | ||
| 192 | ; | ||
| 193 | ;;;copy all files from INSTALL diskette to STARTUP diskette | ||
| 194 | COPY_FILES I_DEST_DRIVE,COPY_INST_1200_1440,E_INST_1200_1440;AN000; | ||
| 195 | .IF c ;AN000; | ||
| 196 | GOTO INSTALL_ERROR ;AN000; | ||
| 197 | .ENDIF ;AN000; | ||
| 198 | ; | ||
| 199 | ;;; insert OPERATING diskette in A: ; | ||
| 200 | INSERT_DISK SUB_REM_SEL_A, S_DOS_UTIL1_DISK ;AN000; | ||
| 201 | ; | ||
| 202 | ;;;copying files screen ; | ||
| 203 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 204 | PREPARE_PANEL SUB_COPYING ;AN000; prepare copying files message | ||
| 205 | DISPLAY_PANEL ;AN000; | ||
| 206 | ; | ||
| 207 | .IF < I_DEST_DRIVE eq E_DEST_DRIVE_A > ;AN111;JW | ||
| 208 | INIT_VAR SOURCE_PANEL, SUB_REM_SEL_A ;AN111;JW | ||
| 209 | INIT_VAR DEST_PANEL, SUB_INS_STARTT_S360 ;AN111;JW | ||
| 210 | .ENDIF ;AN000; | ||
| 211 | ; | ||
| 212 | ;;;copy all files from OPERATING diskette to STARTUP diskette; | ||
| 213 | COPY_FILES I_DEST_DRIVE,COPY_OPER_1200_1440,E_OPER_1200_1440;AN000; | ||
| 214 | .IF c ;AN000; | ||
| 215 | GOTO INSTALL_ERROR ;AN000; | ||
| 216 | .ENDIF ;AN000; | ||
| 217 | |||
| 218 | .if < f_shell eq e_shell_yes > near ; install the shell? | ||
| 219 | |||
| 220 | ;;; insert MS-SHELL diskette in A: ; | ||
| 221 | INSERT_DISK SUB_INS_MSSHELL_A, S_DOS_SHEL_DISK ;AN000; | ||
| 222 | ; | ||
| 223 | ;;;copying files screen ; | ||
| 224 | INIT_PQUEUE PAN_INSTALL_DOS ;AN000; initialize queue | ||
| 225 | PREPARE_PANEL SUB_COPYING ;AN000; prepare copying files message | ||
| 226 | DISPLAY_PANEL ;AN000; | ||
| 227 | ; | ||
| 228 | .IF < I_DEST_DRIVE eq E_DEST_DRIVE_A > ;AN111;JW | ||
| 229 | INIT_VAR SOURCE_PANEL, SUB_INS_MSSHELL_A ;AN111;JW | ||
| 230 | INIT_VAR DEST_PANEL, SUB_INS_STARTT_S360 ;AN111;JW | ||
| 231 | .ENDIF ;AN000; | ||
| 232 | ; | ||
| 233 | ;;;copy all files from OPERATING diskette to STARTUP diskette; | ||
| 234 | COPY_FILES I_DEST_DRIVE,COPY_SHELL_1200_1440,E_SHELL_1200_1440;AN000; | ||
| 235 | .IF c ;AN000; | ||
| 236 | GOTO INSTALL_ERROR ;AN000; | ||
| 237 | .ENDIF ;AN000; | ||
| 238 | |||
| 239 | .endif ; installing the shell | ||
| 240 | ; | ||
| 241 | .IF < I_DEST_DRIVE eq E_DEST_DRIVE_B > ;AN111;JW | ||
| 242 | CREATE_SHELL S_SHELL_NEW_B, N_RETCODE ;AN000;DT | ||
| 243 | .IF c ;AN000;DT | ||
| 244 | GOTO INSTALL_ERROR ;AN000;DT | ||
| 245 | .ENDIF ;AN000;DT | ||
| 246 | .ELSE ;AN000; | ||
| 247 | CREATE_SHELL S_SHELL_NEW, N_RETCODE ;AN000;DT | ||
| 248 | .IF c ;AN000;DT | ||
| 249 | GOTO INSTALL_ERROR ;AN000;DT | ||
| 250 | .ENDIF ;AN000;DT | ||
| 251 | .ENDIF ;AN000; | ||
| 252 | ; | ||
| 253 | ;;;installation complete screen ; | ||
| 254 | INIT_PQUEUE PAN_COMPLETE2 ;AN000; initialize queue | ||
| 255 | PREPARE_PANEL SUB_COMP_KYS_1C ;AN000; | ||
| 256 | DISPLAY_PANEL ;AN000; | ||
| 257 | SAVE_PANEL_LIST ;AN000; | ||
| 258 | ; | ||
| 259 | GET_FUNCTION FK_REBOOT ;AN000; | ||
| 260 | ;;;;;;;;control will not return here. user has to reboot;;;;;;;;; end of install to 1.44M drive | ||
| 261 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 262 | ; | ||
| 263 | ; Install to 720K drive | ||
| 264 | ; | ||
| 265 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 266 | INSTALL_TO_720_DRIVE: | ||
| 267 | .IF < MEM_SIZE eq 256 > | ||
| 268 | DEALLOCATE_MEMORY | ||
| 269 | call Free_Parser | ||
| 270 | .IF < C > | ||
| 271 | GOTO INSTALL_ERROR | ||
| 272 | .ENDIF | ||
| 273 | CALL GET_OVERLAY | ||
| 274 | INSERT_DISK SUB_REM_DOS_A, S_DOS_COM_360 | ||
| 275 | .ENDIF | ||
| 276 | |||
| 277 | ;;;Introduction to 720KB install | ||
| 278 | INIT_PQUEUE PAN_INSTALL_DOS | ||
| 279 | PREPARE_PANEL PAN_START720 | ||
| 280 | PREPARE_PANEL PAN_HBAR | ||
| 281 | PREPARE_CHILDREN | ||
| 282 | DISPLAY_PANEL | ||
| 283 | |||
| 284 | GET_FUNCTION FK_ENT | ||
| 285 | |||
| 286 | CALL DEALLOCATE_HELP | ||
| 287 | |||
| 288 | .IF < I_DEST_DRIVE eq E_DEST_DRIVE_A > near | ||
| 289 | |||
| 290 | ;;;diskcopy INSTALL diskette to STARTUP diskette | ||
| 291 | DISKCOPY_TO DSKCPY_TO_A_360,NO_SOURCE1,S_DOS_SEL_360 | ||
| 292 | DISKCOPY_PANELS SUB_REM_DOS_A,SUB_COPYING,SUB_INS_STARTT_S360 | ||
| 293 | .REPEAT | ||
| 294 | INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK | ||
| 295 | CALL HOOK_INT_2F | ||
| 296 | EXEC_PROGRAM S_DISKCOPY,S_DISKCOPY_PARM,PARM_BLOCK,EXEC_NO_DIR | ||
| 297 | CALL RESTORE_INT_2F | ||
| 298 | .IF < c > | ||
| 299 | GOTO INSTALL_ERROR | ||
| 300 | .ENDIF | ||
| 301 | .UNTIL < N_DSKCPY_ERR ne E_DSKCPY_RETRY > | ||
| 302 | ; delete unneeded files | ||
| 303 | ERASE_FILE S_AUTOEX_C | ||
| 304 | ERASE_FILE S_CONSYS_C | ||
| 305 | ERASE_FILE S_SELEXE_C | ||
| 306 | ERASE_FILE S_SELHLP_C | ||
| 307 | ERASE_FILE S_SELPRT_C | ||
| 308 | ERASE_FILE S_SELDAT_C | ||
| 309 | ; make config.sys and autoexec.bat | ||
| 310 | create_config s_consys_c, n_retcode | ||
| 311 | .if c | ||
| 312 | goto install_error | ||
| 313 | .endif | ||
| 314 | create_autoexec s_autoex_c, e_dest_dos, n_retcode | ||
| 315 | .if c | ||
| 316 | goto install_error | ||
| 317 | .endif | ||
| 318 | |||
| 319 | ;;; diskcopy OPERATE diskette to WORKING diskette | ||
| 320 | .REPEAT | ||
| 321 | DISKCOPY_TO DSKCPY_TO_A_360,SOURCE1,S_DOS_UTIL1_DISK | ||
| 322 | DISKCOPY_PANELS SUB_REM_SEL_A,SUB_COPYING,SUB_INS_WORKING_A | ||
| 323 | INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK | ||
| 324 | CALL HOOK_INT_2F | ||
| 325 | EXEC_PROGRAM S_DISKCOPY,S_DISKCOPY_PARM,PARM_BLOCK,EXEC_NO_DIR | ||
| 326 | CALL RESTORE_INT_2F | ||
| 327 | .IF < c > | ||
| 328 | GOTO INSTALL_ERROR | ||
| 329 | .ENDIF | ||
| 330 | .LEAVE < N_DSKCPY_ERR ne E_DSKCPY_RETRY > | ||
| 331 | INSERT_DISK SUB_REM_DOS_A, S_DOS_SEL_360 | ||
| 332 | .UNTIL | ||
| 333 | |||
| 334 | ;;;perhaps diskcopy MS-SHELL to SHELL | ||
| 335 | .IF < f_shell eq e_shell_yes > near | ||
| 336 | .REPEAT | ||
| 337 | INSERT_DISK SUB_REM_DOS_A, S_DOS_SEL_360 | ||
| 338 | DISKCOPY_TO DSKCPY_TO_A_360,SOURCE1,S_DOS_SHEL_DISK | ||
| 339 | DISKCOPY_PANELS SUB_INS_MSSHELL_A,SUB_COPYING,SUB_INS_SHELL_S360 | ||
| 340 | INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK | ||
| 341 | CALL HOOK_INT_2F | ||
| 342 | EXEC_PROGRAM S_DISKCOPY,S_DISKCOPY_PARM,PARM_BLOCK,EXEC_NO_DIR | ||
| 343 | CALL RESTORE_INT_2F | ||
| 344 | .IF < c > | ||
| 345 | GOTO INSTALL_ERROR | ||
| 346 | .ENDIF | ||
| 347 | .UNTIL < N_DSKCPY_ERR ne E_DSKCPY_RETRY > | ||
| 348 | ; make config.sys and autoexec.bat | ||
| 349 | create_config s_consys_c, n_retcode | ||
| 350 | .if c | ||
| 351 | goto install_error | ||
| 352 | .endif | ||
| 353 | create_autoexec s_autoex_c, e_dest_shell, n_retcode | ||
| 354 | .if c | ||
| 355 | goto install_error | ||
| 356 | .endif | ||
| 357 | create_shell s_shell_new, n_retcode | ||
| 358 | .IF c near | ||
| 359 | goto install_error | ||
| 360 | .ENDIF | ||
| 361 | .ENDIF | ||
| 362 | |||
| 363 | .ELSE near ; This is a two floppy system. Install from A to B. | ||
| 364 | |||
| 365 | ;;;diskcopy INSTALL diskette to STARTUP diskette | ||
| 366 | DISKCOPY_TO DSKCPY_TO_B,SOURCE1,S_DOS_SEL_360 | ||
| 367 | DISKCOPY_PANELS SUB_INS_START_B,SUB_COPYING,NOPANEL | ||
| 368 | .REPEAT | ||
| 369 | INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK | ||
| 370 | CALL HOOK_INT_2F | ||
| 371 | EXEC_PROGRAM S_DISKCOPY,S_DSKCPY_TO_B,PARM_BLOCK,EXEC_NO_DIR | ||
| 372 | CALL RESTORE_INT_2F | ||
| 373 | .IF < c > | ||
| 374 | GOTO INSTALL_ERROR | ||
| 375 | .ENDIF | ||
| 376 | .UNTIL < N_DSKCPY_ERR ne E_DSKCPY_RETRY > | ||
| 377 | ; delete unneeded files | ||
| 378 | ERASE_FILE S_AUTO_NEW_B | ||
| 379 | ERASE_FILE S_CONFIG_NEW_B | ||
| 380 | ERASE_FILE S_SELEXE_NEW_B | ||
| 381 | ERASE_FILE S_SELHLP_NEW_B | ||
| 382 | ERASE_FILE S_SELPRT_NEW_B | ||
| 383 | ERASE_FILE S_SELDAT_NEW_B | ||
| 384 | ; make config.sys and autoexec.bat | ||
| 385 | create_config s_config_new_b, n_retcode | ||
| 386 | .if c | ||
| 387 | goto install_error | ||
| 388 | .endif | ||
| 389 | create_autoexec s_auto_new_b, e_dest_dos, n_retcode | ||
| 390 | .if c | ||
| 391 | goto install_error | ||
| 392 | .endif | ||
| 393 | |||
| 394 | ;;; diskcopy OPERATE diskette to WORKING diskette | ||
| 395 | .REPEAT | ||
| 396 | DISKCOPY_TO DSKCPY_TO_B,SOURCE1,S_DOS_UTIL1_DISK | ||
| 397 | DISKCOPY_PANELS SUB_INS_OP_WORK,SUB_COPYING,NOPANEL | ||
| 398 | INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK | ||
| 399 | CALL HOOK_INT_2F | ||
| 400 | EXEC_PROGRAM S_DISKCOPY,S_DSKCPY_TO_B,PARM_BLOCK,EXEC_NO_DIR | ||
| 401 | CALL RESTORE_INT_2F | ||
| 402 | .IF < c > | ||
| 403 | GOTO INSTALL_ERROR | ||
| 404 | .ENDIF | ||
| 405 | .LEAVE < N_DSKCPY_ERR ne E_DSKCPY_RETRY > | ||
| 406 | INSERT_DISK SUB_REM_DOS_A, S_DOS_SEL_360 | ||
| 407 | .UNTIL | ||
| 408 | |||
| 409 | ;;;perhaps diskcopy MS-SHELL to SHELL | ||
| 410 | .IF < f_shell eq e_shell_yes > near | ||
| 411 | .REPEAT | ||
| 412 | INSERT_DISK SUB_REM_DOS_A, S_DOS_SEL_360 | ||
| 413 | DISKCOPY_TO DSKCPY_TO_B,SOURCE1,S_DOS_SHEL_DISK | ||
| 414 | DISKCOPY_PANELS SUB_INS_SHELL_DISKS,SUB_COPYING,NOPANEL | ||
| 415 | INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK | ||
| 416 | CALL HOOK_INT_2F | ||
| 417 | EXEC_PROGRAM S_DISKCOPY,S_DSKCPY_TO_B,PARM_BLOCK,EXEC_NO_DIR | ||
| 418 | CALL RESTORE_INT_2F | ||
| 419 | .IF < c > | ||
| 420 | GOTO INSTALL_ERROR | ||
| 421 | .ENDIF | ||
| 422 | .UNTIL < N_DSKCPY_ERR ne E_DSKCPY_RETRY > | ||
| 423 | ; make config.sys and autoexec.bat | ||
| 424 | create_config s_config_new_b, n_retcode | ||
| 425 | .if c | ||
| 426 | goto install_error | ||
| 427 | .endif | ||
| 428 | create_autoexec s_auto_new_b, e_dest_shell, n_retcode | ||
| 429 | .if c | ||
| 430 | goto install_error | ||
| 431 | .endif | ||
| 432 | create_shell s_shell_new_b, n_retcode | ||
| 433 | .if c | ||
| 434 | goto install_error | ||
| 435 | .endif | ||
| 436 | .ENDIF | ||
| 437 | .ENDIF ; end if two drive 720 installation | ||
| 438 | |||
| 439 | |||
| 440 | ;;;installation complete and change diskettes screen | ||
| 441 | INIT_PQUEUE PAN_COMPLETE2 | ||
| 442 | PREPARE_PANEL SUB_COMP_KYS_2 | ||
| 443 | DISPLAY_PANEL | ||
| 444 | SAVE_PANEL_LIST | ||
| 445 | GET_FUNCTION FK_REBOOT | ||
| 446 | ;;;;;;;;control will not return here. user has to reboot | ||
| 447 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 448 | ; | ||
| 449 | ; | ||
| 450 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 451 | SELECT ENDS | ||
| 452 | END | ||
| 453 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/SELECT9.ASM b/v4.0/src/SELECT/SELECT9.ASM new file mode 100644 index 0000000..e294c6c --- /dev/null +++ b/v4.0/src/SELECT/SELECT9.ASM | |||
| @@ -0,0 +1,518 @@ | |||
| 1 | |||
| 2 | |||
| 3 | PAGE 55,132 | ||
| 4 | NAME SELECT | ||
| 5 | TITLE SELECT - DOS - SELECT.EXE | ||
| 6 | SUBTTL SELECT9.asm | ||
| 7 | .ALPHA | ||
| 8 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 9 | ; | ||
| 10 | ; SELECT9.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 | ; - Format the drives | ||
| 28 | ; - Copy files | ||
| 29 | ; | ||
| 30 | ; CHANGE HISTORY: | ||
| 31 | ; | ||
| 32 | ; | ||
| 33 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 34 | DATA SEGMENT BYTE PUBLIC 'DATA' | ||
| 35 | EXTRN DSKCPY_ERR:BYTE | ||
| 36 | EXTRN DSKCPY_WHICH:BYTE | ||
| 37 | EXTRN DSKCPY_OPTION:BYTE | ||
| 38 | EXTRN DSKCPY_PAN1:WORD | ||
| 39 | EXTRN DSKCPY_PAN2:WORD | ||
| 40 | EXTRN DSKCPY_PAN3:WORD | ||
| 41 | EXTRN DSKCPY_SOURCE:WORD | ||
| 42 | DATA ENDS | ||
| 43 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 44 | ; | ||
| 45 | ; Define dummy segment to calculate end of program | ||
| 46 | ; | ||
| 47 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 48 | PARSER SEGMENT PARA PUBLIC 'PARSER' | ||
| 49 | PARSER ENDS | ||
| 50 | |||
| 51 | SET_BLOCK equ 4AH | ||
| 52 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 53 | ; | ||
| 54 | ; | ||
| 55 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 56 | .XLIST | ||
| 57 | INCLUDE PANEL.MAC | ||
| 58 | INCLUDE SELECT.INC | ||
| 59 | INCLUDE PAN-LIST.INC | ||
| 60 | INCLUDE CASTRUC.INC | ||
| 61 | INCLUDE STRUC.INC | ||
| 62 | INCLUDE MACROS.INC | ||
| 63 | INCLUDE MACROS7.INC | ||
| 64 | INCLUDE MACROS8.INC | ||
| 65 | INCLUDE EXT.INC | ||
| 66 | INCLUDE VARSTRUC.INC | ||
| 67 | INCLUDE ROUT_EXT.INC | ||
| 68 | .LIST | ||
| 69 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 70 | ; | ||
| 71 | ; | ||
| 72 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 73 | SELECT SEGMENT PARA PUBLIC 'SELECT' | ||
| 74 | ASSUME CS:SELECT,DS:DATA | ||
| 75 | |||
| 76 | INCLUDE CASEXTRN.INC | ||
| 77 | |||
| 78 | EXTRN EXIT_SELECT:near | ||
| 79 | EXTRN CREATE_CONFIG_SYS:NEAR | ||
| 80 | EXTRN CREATE_AUTOEXEC_BAT:NEAR | ||
| 81 | EXTRN CREATE_SHELL_BAT:NEAR | ||
| 82 | EXTRN DEALLOCATE_HELP:FAR | ||
| 83 | EXTRN DEALLOCATE_MEMORY_CALL:FAR | ||
| 84 | EXTRN ALLOCATE_BLOCK:FAR | ||
| 85 | EXTRN ALLOCATE_LVB:FAR | ||
| 86 | EXTRN GET_OVERLAY:NEAR | ||
| 87 | EXTRN ALLOCATE_MEMORY_CALL:FAR | ||
| 88 | |||
| 89 | PUBLIC INSTALL_TO_360_DRIVE | ||
| 90 | PUBLIC INSTALL_ERROR | ||
| 91 | PUBLIC EXIT_DOS,PROCESS_ESC_F3 | ||
| 92 | PUBLIC EXIT_DOS_CONT | ||
| 93 | public Free_Parser | ||
| 94 | |||
| 95 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 96 | |||
| 97 | INSTALL_TO_360_DRIVE: | ||
| 98 | .IF < MEM_SIZE eq 256 > | ||
| 99 | DEALLOCATE_MEMORY | ||
| 100 | call Free_Parser | ||
| 101 | .IF < C > | ||
| 102 | GOTO INSTALL_ERROR | ||
| 103 | .ENDIF | ||
| 104 | CALL GET_OVERLAY | ||
| 105 | INSERT_DISK SUB_REM_DOS_A, S_DOS_COM_360 | ||
| 106 | .ENDIF | ||
| 107 | |||
| 108 | ;;;Introduction to 360KB install | ||
| 109 | INIT_PQUEUE PAN_INSTALL_DOS | ||
| 110 | PREPARE_PANEL PAN_START360 | ||
| 111 | PREPARE_PANEL PAN_HBAR | ||
| 112 | PREPARE_CHILDREN | ||
| 113 | DISPLAY_PANEL | ||
| 114 | |||
| 115 | GET_FUNCTION FK_ENT | ||
| 116 | |||
| 117 | CALL DEALLOCATE_HELP | ||
| 118 | |||
| 119 | .IF < I_DEST_DRIVE eq E_DEST_DRIVE_A > near | ||
| 120 | |||
| 121 | ;;;diskcopy INSTALL diskette to WORKING1 | ||
| 122 | DISKCOPY_TO DSKCPY_TO_A_360,NO_SOURCE1,S_DOS_COM_360 | ||
| 123 | DISKCOPY_PANELS SUB_REM_DOS_A,SUB_COPYING,SUB_INS_WORK1_S360 | ||
| 124 | .REPEAT | ||
| 125 | INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK | ||
| 126 | CALL HOOK_INT_2F | ||
| 127 | EXEC_PROGRAM S_DISKCOPY,S_DISKCOPY_PARM,PARM_BLOCK,EXEC_NO_DIR | ||
| 128 | CALL RESTORE_INT_2F | ||
| 129 | .IF < c > | ||
| 130 | GOTO INSTALL_ERROR | ||
| 131 | .ENDIF | ||
| 132 | .UNTIL < N_DSKCPY_ERR ne E_DSKCPY_RETRY > | ||
| 133 | ERASE_FILE S_AUTOEX_C | ||
| 134 | ERASE_FILE S_CONSYS_C | ||
| 135 | ERASE_FILE S_SELCOM_C | ||
| 136 | ERASE_FILE S_SELHLP_C | ||
| 137 | ERASE_FILE S_SELPRT_C | ||
| 138 | |||
| 139 | ;;;diskcopy OPERATING1 diskette to WORKING2 | ||
| 140 | DISKCOPY_TO DSKCPY_TO_A_360,SOURCE1,S_DOS_UTIL1_DISK | ||
| 141 | DISKCOPY_PANELS SUB_REM_SELECT_360,SUB_COPYING,SUB_INS_WORK2_S360 | ||
| 142 | .REPEAT | ||
| 143 | INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK | ||
| 144 | CALL HOOK_INT_2F | ||
| 145 | EXEC_PROGRAM S_DISKCOPY,S_DISKCOPY_PARM,PARM_BLOCK,EXEC_NO_DIR | ||
| 146 | CALL RESTORE_INT_2F | ||
| 147 | .IF c | ||
| 148 | .THEN | ||
| 149 | GOTO INSTALL_ERROR | ||
| 150 | .ENDIF | ||
| 151 | .LEAVE < N_DSKCPY_ERR ne E_DSKCPY_RETRY > | ||
| 152 | INSERT_DISK SUB_REM_DOS_A, S_DOS_COM_360 | ||
| 153 | .UNTIL | ||
| 154 | |||
| 155 | ;;;diskcopy OPERATING 2 diskette to WORKING3 | ||
| 156 | .REPEAT | ||
| 157 | INSERT_DISK SUB_REM_DOS_A, S_DOS_COM_360 | ||
| 158 | DISKCOPY_TO DSKCPY_TO_A_360,NO_SOURCE1,S_DOS_UTIL2_DISK | ||
| 159 | DISKCOPY_PANELS SUB_INS_OPER2,SUB_COPYING,SUB_INS_WORK3_A | ||
| 160 | INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK | ||
| 161 | CALL HOOK_INT_2F | ||
| 162 | EXEC_PROGRAM S_DISKCOPY,S_DISKCOPY_PARM,PARM_BLOCK,EXEC_NO_DIR | ||
| 163 | CALL RESTORE_INT_2F | ||
| 164 | .IF c | ||
| 165 | .THEN | ||
| 166 | GOTO INSTALL_ERROR | ||
| 167 | .ENDIF | ||
| 168 | .UNTIL < N_DSKCPY_ERR ne E_DSKCPY_RETRY > near | ||
| 169 | |||
| 170 | ;;;diskcopy OPERATING 3 diskette to STARTUP | ||
| 171 | .REPEAT | ||
| 172 | INSERT_DISK SUB_REM_DOS_A, S_DOS_COM_360 | ||
| 173 | DISKCOPY_TO DSKCPY_TO_A_360,SOURCE1,S_DOS_UTIL3_DISK | ||
| 174 | DISKCOPY_PANELS SUB_REM_UTIL1_360,SUB_COPYING,SUB_INS_STARTT_S360 | ||
| 175 | INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK | ||
| 176 | CALL HOOK_INT_2F | ||
| 177 | EXEC_PROGRAM S_DISKCOPY,S_DISKCOPY_PARM,PARM_BLOCK,EXEC_NO_DIR | ||
| 178 | CALL RESTORE_INT_2F | ||
| 179 | .IF c | ||
| 180 | .THEN | ||
| 181 | GOTO INSTALL_ERROR | ||
| 182 | .ENDIF | ||
| 183 | .UNTIL < N_DSKCPY_ERR ne E_DSKCPY_RETRY > near | ||
| 184 | ERASE_FILE S_RECOVER_C | ||
| 185 | ERASE_FILE S_FASTOPEN_C | ||
| 186 | ;;;create config and autoexec files on startup diskette | ||
| 187 | CREATE_CONFIG S_CONSYS_C, N_RETCODE | ||
| 188 | .IF c | ||
| 189 | GOTO INSTALL_ERROR | ||
| 190 | .ENDIF | ||
| 191 | CREATE_AUTOEXEC S_AUTOEX_C,E_DEST_DOS,N_RETCODE | ||
| 192 | .IF c near | ||
| 193 | GOTO INSTALL_ERROR | ||
| 194 | .ENDIF | ||
| 195 | |||
| 196 | .IF < ACTIVE eq EGA > or | ||
| 197 | .IF < ALTERNATE eq EGA > or | ||
| 198 | .IF < ACTIVE eq LCD > or | ||
| 199 | .IF < ALTERNATE eq LCD > near | ||
| 200 | .THEN | ||
| 201 | .IF < F_VDISK eq E_VDISK_NO > | ||
| 202 | ERASE_FILE S_VDISK_C | ||
| 203 | .IF c | ||
| 204 | GOTO INSTALL_ERROR | ||
| 205 | .ENDIF | ||
| 206 | .ENDIF | ||
| 207 | .IF < F_ANSI eq E_ANSI_NO > | ||
| 208 | ERASE_FILE S_ANSI_C | ||
| 209 | .IF c | ||
| 210 | GOTO INSTALL_ERROR | ||
| 211 | .ENDIF | ||
| 212 | .ENDIF | ||
| 213 | .IF < F_APPEND eq E_APPEND_NO > | ||
| 214 | ERASE_FILE S_APPEND_C | ||
| 215 | .IF c | ||
| 216 | GOTO INSTALL_ERROR | ||
| 217 | .ENDIF | ||
| 218 | .ENDIF | ||
| 219 | .IF < F_GRAFTABL eq E_GRAFTABL_NO > or | ||
| 220 | .IF < F_GRAFTABL eq E_GRAFTABL_NA > | ||
| 221 | ERASE_FILE S_GRAFTABL_C | ||
| 222 | .IF c | ||
| 223 | GOTO INSTALL_ERROR | ||
| 224 | .ENDIF | ||
| 225 | .ENDIF | ||
| 226 | .IF < F_GRAPHICS eq E_GRAPHICS_NO > | ||
| 227 | ERASE_FILE S_GRAPHICS_C | ||
| 228 | ERASE_FILE S_GRAPHPRO_C | ||
| 229 | .IF c | ||
| 230 | GOTO INSTALL_ERROR | ||
| 231 | .ENDIF | ||
| 232 | .ENDIF | ||
| 233 | ;;;Insert SELECT diskette in drive A: | ||
| 234 | INSERT_DISK SUB_REM_SHELL_360, S_DOS_SEL_360 | ||
| 235 | |||
| 236 | ;;;copying files from INSTALL diskette screen | ||
| 237 | INIT_PQUEUE PAN_INSTALL_DOS | ||
| 238 | PREPARE_PANEL SUB_COPYING | ||
| 239 | DISPLAY_PANEL | ||
| 240 | |||
| 241 | INIT_VAR SOURCE_PANEL, SUB_REM_SHELL_360 | ||
| 242 | INIT_VAR DEST_PANEL, SUB_INS_STARTT_S360 | ||
| 243 | |||
| 244 | .IF < ACTIVE eq EGA > or | ||
| 245 | .IF < ALTERNATE eq EGA > near | ||
| 246 | .THEN | ||
| 247 | .IF < MEM_SIZE eq 256 > | ||
| 248 | DEALLOCATE_MEMORY | ||
| 249 | .ENDIF | ||
| 250 | COPY_FILES2 I_DEST_DRIVE,COPY_SEL_EGA,E_SEL_EGA,S_INSTALL_PATH | ||
| 251 | .IF c near | ||
| 252 | .IF < MEM_SIZE eq 256 > | ||
| 253 | ALLOCATE_MEMORY | ||
| 254 | CALL INITIALIZE | ||
| 255 | .ENDIF | ||
| 256 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN | ||
| 257 | .ENDIF | ||
| 258 | .IF < MEM_SIZE eq 256 > near | ||
| 259 | ALLOCATE_MEMORY | ||
| 260 | CALL INITIALIZE | ||
| 261 | .ENDIF | ||
| 262 | .ELSE near | ||
| 263 | COPY_FILES2 I_DEST_DRIVE,COPY_SEL_LCD,E_SEL_LCD,S_INSTALL_PATH ;AC111; copy files to f-disk JW | ||
| 264 | .IF c near | ||
| 265 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN | ||
| 266 | .ENDIF | ||
| 267 | .ENDIF | ||
| 268 | .ENDIF | ||
| 269 | |||
| 270 | ;;;diskcopy MS-SHELL diskette to SHELL | ||
| 271 | .if <f_shell eq e_shell_yes > near | ||
| 272 | .REPEAT | ||
| 273 | INSERT_DISK SUB_REM_DOS_A, S_DOS_COM_360 | ||
| 274 | DISKCOPY_TO DSKCPY_TO_A_360,SOURCE1,S_DOS_SHEL_DISK | ||
| 275 | DISKCOPY_PANELS SUB_INS_MSSHELL_A,SUB_COPYING,SUB_INS_SHELL_S360 | ||
| 276 | INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK | ||
| 277 | CALL HOOK_INT_2F | ||
| 278 | EXEC_PROGRAM S_DISKCOPY,S_DISKCOPY_PARM,PARM_BLOCK,EXEC_NO_DIR | ||
| 279 | CALL RESTORE_INT_2F | ||
| 280 | .IF c | ||
| 281 | .THEN | ||
| 282 | GOTO INSTALL_ERROR | ||
| 283 | .ENDIF | ||
| 284 | .UNTIL < N_DSKCPY_ERR ne E_DSKCPY_RETRY > near | ||
| 285 | CREATE_SHELL S_SHELL_NEW, N_RETCODE | ||
| 286 | .IF c near | ||
| 287 | GOTO INSTALL_ERROR | ||
| 288 | .ENDIF | ||
| 289 | .endif | ||
| 290 | |||
| 291 | .ELSE near | ||
| 292 | |||
| 293 | ;;;diskcopy INSTALL diskette to WORKING 1 | ||
| 294 | DISKCOPY_TO DSKCPY_TO_B,SOURCE1,S_DOS_COM_360 | ||
| 295 | DISKCOPY_PANELS SUB_INS_WORK1_360,SUB_COPYING,NOPANEL | ||
| 296 | .REPEAT | ||
| 297 | INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK | ||
| 298 | CALL HOOK_INT_2F | ||
| 299 | EXEC_PROGRAM S_DISKCOPY,S_DSKCPY_TO_B,PARM_BLOCK,EXEC_NO_DIR | ||
| 300 | CALL RESTORE_INT_2F | ||
| 301 | .IF c | ||
| 302 | .THEN | ||
| 303 | GOTO INSTALL_ERROR | ||
| 304 | .ENDIF | ||
| 305 | .UNTIL < N_DSKCPY_ERR ne E_DSKCPY_RETRY > | ||
| 306 | ERASE_FILE S_AUTO_NEW_B | ||
| 307 | ERASE_FILE S_CONFIG_NEW_B | ||
| 308 | ERASE_FILE S_SELCOM_NEW_B | ||
| 309 | ERASE_FILE S_SELHLP_NEW_B | ||
| 310 | ERASE_FILE S_SELPRT_NEW_B | ||
| 311 | |||
| 312 | ;;;diskcopy OPERATING 1 diskette to WORKING 2 | ||
| 313 | DISKCOPY_TO DSKCPY_TO_B,SOURCE1,S_DOS_UTIL1_DISK | ||
| 314 | DISKCOPY_PANELS SUB_INS_WORK2_360,SUB_COPYING,NOPANEL | ||
| 315 | .REPEAT | ||
| 316 | INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK | ||
| 317 | CALL HOOK_INT_2F | ||
| 318 | EXEC_PROGRAM S_DISKCOPY,S_DSKCPY_TO_B,PARM_BLOCK,EXEC_NO_DIR | ||
| 319 | CALL RESTORE_INT_2F | ||
| 320 | .IF c | ||
| 321 | .THEN | ||
| 322 | GOTO INSTALL_ERROR | ||
| 323 | .ENDIF | ||
| 324 | .LEAVE < N_DSKCPY_ERR ne E_DSKCPY_RETRY > | ||
| 325 | INSERT_DISK SUB_REM_DOS_A, S_DOS_COM_360 | ||
| 326 | .UNTIL | ||
| 327 | |||
| 328 | ;;;diskcopy OPERATING 2 diskette to WORKING3 | ||
| 329 | .REPEAT | ||
| 330 | INSERT_DISK SUB_REM_DOS_A, S_DOS_COM_360 | ||
| 331 | DISKCOPY_TO DSKCPY_TO_B,SOURCE1,S_DOS_UTIL2_DISK | ||
| 332 | DISKCOPY_PANELS SUB_INS_WORK3_360,SUB_COPYING,NOPANEL | ||
| 333 | INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK | ||
| 334 | CALL HOOK_INT_2F | ||
| 335 | EXEC_PROGRAM S_DISKCOPY,S_DSKCPY_TO_B,PARM_BLOCK,EXEC_NO_DIR | ||
| 336 | CALL RESTORE_INT_2F | ||
| 337 | .IF c | ||
| 338 | .THEN | ||
| 339 | GOTO INSTALL_ERROR | ||
| 340 | .ENDIF | ||
| 341 | .UNTIL < N_DSKCPY_ERR ne E_DSKCPY_RETRY > near | ||
| 342 | |||
| 343 | ;;;diskcopy OPERATING 3 diskette to STARTUP | ||
| 344 | .REPEAT | ||
| 345 | INSERT_DISK SUB_REM_DOS_A, S_DOS_COM_360 | ||
| 346 | DISKCOPY_TO DSKCPY_TO_B,SOURCE1,S_DOS_UTIL3_DISK | ||
| 347 | DISKCOPY_PANELS SUB_INS_START_360,SUB_COPYING,NOPANEL | ||
| 348 | INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK | ||
| 349 | CALL HOOK_INT_2F | ||
| 350 | EXEC_PROGRAM S_DISKCOPY,S_DSKCPY_TO_B,PARM_BLOCK,EXEC_NO_DIR | ||
| 351 | CALL RESTORE_INT_2F | ||
| 352 | .IF c | ||
| 353 | .THEN | ||
| 354 | GOTO INSTALL_ERROR | ||
| 355 | .ENDIF | ||
| 356 | .UNTIL < N_DSKCPY_ERR ne E_DSKCPY_RETRY > near | ||
| 357 | ERASE_FILE S_RECOVER_B | ||
| 358 | ERASE_FILE S_FASTOPEN_B | ||
| 359 | ;;;create config and autoexec files on startup diskette | ||
| 360 | CREATE_CONFIG S_CONFIG_NEW_B, N_RETCODE | ||
| 361 | .IF c | ||
| 362 | GOTO INSTALL_ERROR | ||
| 363 | .ENDIF | ||
| 364 | CREATE_AUTOEXEC S_AUTO_NEW_B,E_DEST_DOS,N_RETCODE | ||
| 365 | .IF c | ||
| 366 | GOTO INSTALL_ERROR | ||
| 367 | .ENDIF | ||
| 368 | .IF < ACTIVE eq EGA > or | ||
| 369 | .IF < ALTERNATE eq EGA > or | ||
| 370 | .IF < ACTIVE eq LCD > or | ||
| 371 | .IF < ALTERNATE eq LCD > near | ||
| 372 | .THEN | ||
| 373 | .IF < F_VDISK eq E_VDISK_NO > | ||
| 374 | ERASE_FILE S_VDISK_B | ||
| 375 | .IF c | ||
| 376 | GOTO INSTALL_ERROR | ||
| 377 | .ENDIF | ||
| 378 | .ENDIF | ||
| 379 | .IF < F_ANSI eq E_ANSI_NO > | ||
| 380 | ERASE_FILE S_ANSI_B | ||
| 381 | .IF c | ||
| 382 | GOTO INSTALL_ERROR | ||
| 383 | .ENDIF | ||
| 384 | .ENDIF | ||
| 385 | .IF < F_APPEND eq E_APPEND_NO > | ||
| 386 | ERASE_FILE S_APPEND_B | ||
| 387 | .IF c | ||
| 388 | GOTO INSTALL_ERROR | ||
| 389 | .ENDIF | ||
| 390 | .ENDIF | ||
| 391 | .IF < F_GRAFTABL eq E_GRAFTABL_NO > or | ||
| 392 | .IF < F_GRAFTABL eq E_GRAFTABL_NA > | ||
| 393 | ERASE_FILE S_GRAFTABL_B | ||
| 394 | .IF c | ||
| 395 | GOTO INSTALL_ERROR | ||
| 396 | .ENDIF | ||
| 397 | .ENDIF | ||
| 398 | .IF < F_GRAPHICS eq E_GRAPHICS_NO > | ||
| 399 | ERASE_FILE S_GRAPHICS_B | ||
| 400 | ERASE_FILE S_GRAPHPRO_B | ||
| 401 | .IF c | ||
| 402 | GOTO INSTALL_ERROR | ||
| 403 | .ENDIF | ||
| 404 | .ENDIF | ||
| 405 | ;;;Insert SELECT diskette in drive A: | ||
| 406 | INSERT_DISK SUB_INS_INSTALL_360, S_DOS_SEL_360 | ||
| 407 | ;;;copying files from INSTALL diskette screen | ||
| 408 | INIT_PQUEUE PAN_INSTALL_DOS | ||
| 409 | PREPARE_PANEL SUB_COPYING | ||
| 410 | DISPLAY_PANEL | ||
| 411 | .IF < ACTIVE eq EGA > or | ||
| 412 | .IF < ALTERNATE eq EGA > near | ||
| 413 | .IF < MEM_SIZE eq 256 > | ||
| 414 | DEALLOCATE_MEMORY | ||
| 415 | .ENDIF | ||
| 416 | COPY_FILES2 I_DEST_DRIVE,COPY_SEL_EGA,E_SEL_EGA,S_INSTALL_PATH ;AC111; copy files to f-disk JW | ||
| 417 | .IF c near | ||
| 418 | .IF < MEM_SIZE eq 256 > | ||
| 419 | ALLOCATE_MEMORY | ||
| 420 | CALL INITIALIZE | ||
| 421 | .ENDIF | ||
| 422 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN | ||
| 423 | .ENDIF | ||
| 424 | .IF < MEM_SIZE eq 256 > | ||
| 425 | ALLOCATE_MEMORY | ||
| 426 | CALL INITIALIZE | ||
| 427 | .ENDIF | ||
| 428 | .ELSEIF < ACTIVE eq LCD > or | ||
| 429 | .IF < ALTERNATE eq LCD > | ||
| 430 | COPY_FILES2 I_DEST_DRIVE,COPY_SEL_LCD,E_SEL_LCD,S_INSTALL_PATH ;AC111; copy files to f-disk JW | ||
| 431 | .IF c near | ||
| 432 | HANDLE_ERROR ERR_COPY_DISK, E_RETURN | ||
| 433 | .ENDIF | ||
| 434 | .ENDIF | ||
| 435 | .ENDIF | ||
| 436 | |||
| 437 | .if <f_shell eq e_shell_yes > near | ||
| 438 | ;;;diskcopy MS-SHELL to SHELL | ||
| 439 | .REPEAT | ||
| 440 | INSERT_DISK SUB_REM_DOS_A, S_DOS_COM_360 | ||
| 441 | DISKCOPY_TO DSKCPY_TO_B,SOURCE1,S_DOS_SHEL_DISK | ||
| 442 | DISKCOPY_PANELS SUB_INS_SHELL_DISKS,SUB_COPYING,NOPANEL | ||
| 443 | INIT_VAR N_DSKCPY_ERR,E_DSKCPY_OK | ||
| 444 | CALL HOOK_INT_2F | ||
| 445 | EXEC_PROGRAM S_DISKCOPY,S_DSKCPY_TO_B,PARM_BLOCK,EXEC_NO_DIR | ||
| 446 | CALL RESTORE_INT_2F | ||
| 447 | .IF c | ||
| 448 | .THEN | ||
| 449 | GOTO INSTALL_ERROR | ||
| 450 | .ENDIF | ||
| 451 | .UNTIL < N_DSKCPY_ERR ne E_DSKCPY_RETRY > near | ||
| 452 | CREATE_SHELL S_SHELL_NEW_B, N_RETCODE | ||
| 453 | .IF c | ||
| 454 | GOTO INSTALL_ERROR | ||
| 455 | .ENDIF | ||
| 456 | .endif ; copy to shell | ||
| 457 | |||
| 458 | .ENDIF | ||
| 459 | |||
| 460 | ;;;installation complete and change diskettes screen | ||
| 461 | INIT_PQUEUE PAN_COMPLETE3 | ||
| 462 | PREPARE_PANEL SUB_COMP_KYS_3 | ||
| 463 | DISPLAY_PANEL | ||
| 464 | SAVE_PANEL_LIST | ||
| 465 | GET_FUNCTION FK_REBOOT | ||
| 466 | |||
| 467 | ;;;;;;;;control will not return here. user has to reboot;;;;;;;;; end of install to 1.2M or 1.44M drive | ||
| 468 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 469 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 470 | ; | ||
| 471 | ; Process the ESC/F3 keys. | ||
| 472 | ; | ||
| 473 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 474 | PROCESS_ESC_F3: | ||
| 475 | .IF < N_USER_FUNC eq E_ESCAPE > | ||
| 476 | POP_HEADING | ||
| 477 | .ENDIF | ||
| 478 | EXIT_DOS: | ||
| 479 | CLEAR_SCREEN2 | ||
| 480 | EXIT_DOS_CONT: | ||
| 481 | .IF < I_DEST_DRIVE eq E_DEST_DRIVE_C > and | ||
| 482 | .IF < N_HOUSE_CLEAN eq E_CLEAN_YES > | ||
| 483 | ERASE_FILE S_AUTO_NEW | ||
| 484 | ERASE_FILE S_CONFIG_NEW | ||
| 485 | ERASE_FILE S_SHELL_NEW | ||
| 486 | ERASE_FILE S_SELECT_TMP | ||
| 487 | CHANGE_AUTOEXEC S_AUTO_REBOOT, S_AUTO_MENU | ||
| 488 | .ENDIF | ||
| 489 | |||
| 490 | GOTO EXIT_SELECT | ||
| 491 | |||
| 492 | INSTALL_ERROR: | ||
| 493 | |||
| 494 | .IF < DSKCPY_ERR ne DSKCPY_EXIT > | ||
| 495 | HANDLE_ERROR ERR_EXIT, E_QUIT | ||
| 496 | .ENDIF | ||
| 497 | |||
| 498 | GOTO EXIT_DOS | ||
| 499 | |||
| 500 | Free_Parser: | ||
| 501 | MOV AH,62H | ||
| 502 | INT 21H | ||
| 503 | MOV AX,BX | ||
| 504 | MOV BX,PARSER | ||
| 505 | MOV ES,AX | ||
| 506 | SUB BX,AX | ||
| 507 | MOV AH,SET_BLOCK | ||
| 508 | DOSCALL | ||
| 509 | ret | ||
| 510 | |||
| 511 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 512 | ; | ||
| 513 | ; | ||
| 514 | ; | ||
| 515 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 516 | SELECT ENDS | ||
| 517 | END | ||
| 518 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/SELQUIT.ASM b/v4.0/src/SELECT/SELQUIT.ASM new file mode 100644 index 0000000..e92a619 --- /dev/null +++ b/v4.0/src/SELECT/SELQUIT.ASM | |||
| @@ -0,0 +1,313 @@ | |||
| 1 | |||
| 2 | |||
| 3 | PAGE 55,132 ;AN000; | ||
| 4 | NAME SELQUIT ;AN000; | ||
| 5 | TITLE SELQUIT - Exit Panel support for SELECT.EXE;AN000; | ||
| 6 | SUBTTL selquit.asm ;AN000; | ||
| 7 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 8 | ; | ||
| 9 | ; | ||
| 10 | ; SELQUIT.ASM | ||
| 11 | ; | ||
| 12 | ; DATE: July 6/87 | ||
| 13 | ; | ||
| 14 | ; COMMENTS: | ||
| 15 | ; | ||
| 16 | ; This files must be compiled with MASM 3.0 (using /A option) | ||
| 17 | ; | ||
| 18 | ; Copyright 1988 Microsoft | ||
| 19 | ; | ||
| 20 | ; ;AN001; Added flag to indicate error processing was in effect. | ||
| 21 | ; | ||
| 22 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 23 | .LFCOND ;AN000; | ||
| 24 | .XLIST ;AN000; | ||
| 25 | INCLUDE PANEL.MAC ;AN000; | ||
| 26 | INCLUDE PCEQUATE.INC ;AN000; | ||
| 27 | INCLUDE PAN-LIST.INC ;AN000; | ||
| 28 | INCLUDE CASTRUC.INC ;AN000; | ||
| 29 | INCLUDE EXT.INC ;AN000; | ||
| 30 | INCLUDE STRUC.INC ;AN000; | ||
| 31 | INCLUDE MACROS.INC ;AN000; | ||
| 32 | .LIST ;AN000; | ||
| 33 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 34 | ; | ||
| 35 | ; Setup Environment | ||
| 36 | ; | ||
| 37 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 38 | EXTRN QM_ACTIVEPAN:WORD ;AN000; | ||
| 39 | ; | ||
| 40 | EXTRN GET_KEY:NEAR ;AN000; | ||
| 41 | EXTRN CURSOROFF:NEAR ;AN000; | ||
| 42 | EXTRN PCINPUT_CALL:NEAR ;AN000; | ||
| 43 | EXTRN PCDISPQ_CALL:NEAR ;AN000; | ||
| 44 | ; | ||
| 45 | EXTRN WR_DRETLEN:WORD ;AN000; | ||
| 46 | EXTRN WR_DRETOFF:WORD ;AN000; | ||
| 47 | EXTRN WR_DRETSEG:WORD ;AN000; | ||
| 48 | EXTRN GET_PCB:NEAR ;AN000; | ||
| 49 | EXTRN QM_OPT1:WORD ;AN000; | ||
| 50 | EXTRN QM_ID:WORD ;AN000; | ||
| 51 | EXTRN INC_KS:WORD ;AN000; | ||
| 52 | ; | ||
| 53 | EXTRN HANDLE_CHILDREN:NEAR ;AN000; | ||
| 54 | EXTRN ADJUST_UP:NEAR ;AN000; | ||
| 55 | EXTRN ADJUST_DOWN:NEAR ;AN000; | ||
| 56 | EXTRN INIT_PQUEUE_CALL:NEAR ;AN000; | ||
| 57 | EXTRN PREPARE_PANEL_CALL:NEAR ;AN000; | ||
| 58 | EXTRN DISPLAY_PANEL_CALL:NEAR ;AN000; | ||
| 59 | EXTRN GET_FUNCTION_CALL:NEAR ;AN000; | ||
| 60 | EXTRN QM_OPT2:WORD ;AN000; | ||
| 61 | EXTRN WR_REFIELDCNT:WORD ;AN000; | ||
| 62 | EXTRN ERROR_KEYS:BYTE ;AN000; | ||
| 63 | EXTRN ERROR_KEYS_LEN:ABS ;AN000; | ||
| 64 | EXTRN PCMBEEP_CALL:NEAR ;AN000; | ||
| 65 | EXTRN BIN_TO_CHAR_ROUTINE:FAR ;AN000; | ||
| 66 | ; | ||
| 67 | TRUE EQU 1 ;AN000; | ||
| 68 | FALSE EQU 0 ;AN000; | ||
| 69 | ; | ||
| 70 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000;segment for far routine | ||
| 71 | ASSUME CS:SELECT ;AN000; | ||
| 72 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 73 | ; | ||
| 74 | ; HANDLE_F3 | ||
| 75 | ; | ||
| 76 | ; | ||
| 77 | ; CLC = return to SELECT | ||
| 78 | ; STC = quit SELECT..... | ||
| 79 | ; | ||
| 80 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 81 | F3_ACTIVE DB FALSE ;AN001;DT | ||
| 82 | ; | ||
| 83 | PUBLIC HANDLE_F3 ;AN000; | ||
| 84 | HANDLE_F3 PROC ;AN000; | ||
| 85 | PUSHH <AX,BX,DI,ES,WR_DRETLEN> ;AN000; | ||
| 86 | PUSHH <WR_DRETOFF,WR_DRETSEG> ;AN000; | ||
| 87 | PUSHH <WR_REFIELDCNT> ;AN000; | ||
| 88 | ; | ||
| 89 | .IF < F3_ACTIVE eq FALSE > near ;AN000; | ||
| 90 | CALL CURSOROFF ;;AN000;;; | ||
| 91 | ; | ||
| 92 | MOV AX,QM_PUSHPQU ;AN000;save parent queue | ||
| 93 | OR AX,QM_PUSHCQU ;AN000;save child queue | ||
| 94 | MOV QM_OPT1,AX ;AN000; | ||
| 95 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 96 | ; | ||
| 97 | MOV QM_OPT1,QM_CLSPAN ;AN000;clear parent panel queue | ||
| 98 | OR QM_OPT1,QM_CLSCHD ;AN000;clear parent panel queue | ||
| 99 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 100 | MOV QM_ACTIVEPAN,PAN_CONFIRM;AN000;current active parent panel | ||
| 101 | MOV AX,PAN_CONFIRM ;AN000; | ||
| 102 | MOV QM_OPT1,QM_PUSHPAN ;AN000;push parent panels | ||
| 103 | CALL PREPARE_PANEL_CALL ;AN000;add panel to display queue | ||
| 104 | |||
| 105 | MOV WR_REFIELDCNT,0 ;AN000;set for break = off | ||
| 106 | PREPARE_PANEL PAN_HBAR ;AN000; | ||
| 107 | PREPARE_CHILDREN ;AN000; | ||
| 108 | DISPLAY_PANEL ;AN000;push parent panels | ||
| 109 | ; | ||
| 110 | MOV CX,FK_ENT_F3_LEN ;AN000; | ||
| 111 | LEA DX,FK_ENT_F3 ;AN000; | ||
| 112 | MOV WR_DRETLEN,CX ;AN000;get return string length | ||
| 113 | MOV AX,DX ;AN000;get return string offset | ||
| 114 | MOV WR_DRETOFF,AX ;AN000; | ||
| 115 | MOV AX,DS ;AN000;get return string segment | ||
| 116 | MOV WR_DRETSEG,AX ;AN000; | ||
| 117 | CALL GET_KEY ;AN000; | ||
| 118 | MOV AX,INC_KS ;AN003;GHG | ||
| 119 | MOV N_USER_FUNC,AX ;AN003;GHG | ||
| 120 | ; | ||
| 121 | MOV AX,QM_POPPQU ;AN000; | ||
| 122 | OR AX,QM_POPCQU ;AN000; | ||
| 123 | MOV QM_OPT1,AX ;AN000; | ||
| 124 | CALL PCDISPQ_CALL ;AN000; | ||
| 125 | MOV AX,I_USER_INDEX ;AN000;get last current element | ||
| 126 | ; | ||
| 127 | .IF < N_USER_FUNC eq F3*256 > ;AN000; | ||
| 128 | .THEN ;AN000; | ||
| 129 | STC ;AN000; | ||
| 130 | MOV F3_ACTIVE,TRUE ;AN000;DT Indicate exit selected | ||
| 131 | .ELSE ;AN000; | ||
| 132 | POP WR_REFIELDCNT ;AN000; | ||
| 133 | PUSH WR_REFIELDCNT ;AN000; | ||
| 134 | DISPLAY_PANEL ;AN000; | ||
| 135 | CLC ;AN000; | ||
| 136 | .ENDIF ;AN000;;; | ||
| 137 | ; | ||
| 138 | .ELSE ;AN027;SEH Set carry flag to avoid | ||
| 139 | STC ;AN027;SEH endless loop in Get_Function_call | ||
| 140 | .ENDIF ;AN000; | ||
| 141 | ; | ||
| 142 | POPP <WR_REFIELDCNT,WR_DRETSEG> ;AN000; | ||
| 143 | POPP <WR_DRETOFF,WR_DRETLEN,ES> ;AN000; | ||
| 144 | POPP <DI,BX,AX> ;AN000; | ||
| 145 | RET ;AN000; | ||
| 146 | HANDLE_F3 ENDP ;AN000; | ||
| 147 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 148 | ; | ||
| 149 | ; AX,input | ||
| 150 | ; BX,action | ||
| 151 | ; | ||
| 152 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 153 | ERROR_PANEL DW ? ;AN000; | ||
| 154 | ERROR_TYPE DW ? ;AN000; | ||
| 155 | ERROR_CODE DW ? ;AN000; | ||
| 156 | ERROR_STRING DB 5 DUP(0) ;AN000; | ||
| 157 | ; | ||
| 158 | PUBLIC ERROR_ACTIVE ;AN001;JW | ||
| 159 | ERROR_ACTIVE DB 0 ;AN001;JW | ||
| 160 | ; | ||
| 161 | PUBLIC HANDLE_ERROR_CALL ;AN000; | ||
| 162 | HANDLE_ERROR_CALL PROC FAR ;AN000; | ||
| 163 | PUSHH <AX,BX,DI,ES,WR_DRETLEN> ;AN000; | ||
| 164 | PUSHH <WR_DRETOFF,WR_DRETSEG> ;AN000; | ||
| 165 | PUSHH <WR_REFIELDCNT> ;AN000; | ||
| 166 | ; | ||
| 167 | MOV ERROR_CODE,AX ;AN000; | ||
| 168 | MOV ERROR_PANEL,BX ;AN000; | ||
| 169 | MOV ERROR_TYPE,CX ;AN000; | ||
| 170 | MOV ERROR_ACTIVE,1 ;AN001;JW | ||
| 171 | ; | ||
| 172 | MOV BX,ERR_BORDER ;AN000;DT current active parent panel | ||
| 173 | CALL GET_PCB ;AN000;DT get the PCB for this | ||
| 174 | MOV ES:[DI].PCB_CHILDNUM,CX ;AN000;DT set the number of children | ||
| 175 | ; | ||
| 176 | CALL CURSOROFF ;AN000; | ||
| 177 | ; | ||
| 178 | MOV QM_OPT1,QM_PUSHPQU ;AN000;save parent queue | ||
| 179 | OR QM_OPT1,QM_PUSHCQU ;AN000;save child queue | ||
| 180 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 181 | ; | ||
| 182 | .IF < F3_ACTIVE eq TRUE > ;AN000; | ||
| 183 | MOV QM_OPT1,QM_CLSPAN ;AN000;clear parent panel queue | ||
| 184 | OR QM_OPT1,QM_CLSCHD ;AN000;clear parent panel queue | ||
| 185 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 186 | .ENDIF ;AN000; | ||
| 187 | |||
| 188 | MOV QM_OPT1,QM_PUSHPAN ;AN000;push parent panels | ||
| 189 | OR QM_OPT2,QM_BREAKON ;AN000;break on | ||
| 190 | |||
| 191 | MOV BX,ERR_BORDER ;AN000;current active parent panel | ||
| 192 | MOV QM_ID,BX ;AN000;current active parent panel | ||
| 193 | MOV QM_ACTIVEPAN,BX ;AN000;current active parent panel | ||
| 194 | MOV AX,BX ;AN000; | ||
| 195 | CALL PREPARE_PANEL_CALL ;AN000;add panel to display queue | ||
| 196 | ; | ||
| 197 | MOV QM_OPT2,0 ;AN000; | ||
| 198 | ; | ||
| 199 | ;;;;;;;;MOV WR_REFIELDCNT,0 ;set for break = off | ||
| 200 | PREPARE_PANEL ERROR_PANEL ;AN000; | ||
| 201 | PREPARE_CHILDREN ;AN000; | ||
| 202 | DISPLAY_PANEL ;AN000;push parent panels | ||
| 203 | ; | ||
| 204 | CALL PCMBEEP_CALL ;AN000; | ||
| 205 | ; | ||
| 206 | MOV CX,ERROR_TYPE ;AN000; | ||
| 207 | INC CX ;AN000;JW | ||
| 208 | LEA DX,ERROR_KEYS ;AN000; | ||
| 209 | CALL GET_FUNCTION_CALL ;AN000; | ||
| 210 | MOV ERROR_ACTIVE,0 ;AN001;JW | ||
| 211 | ; | ||
| 212 | MOV QM_OPT1,QM_POPPQU ;AN000; | ||
| 213 | OR QM_OPT1,QM_POPCQU ;AN000; | ||
| 214 | CALL PCDISPQ_CALL ;AN000; | ||
| 215 | MOV AX,I_USER_INDEX ;AN000;get last current element | ||
| 216 | ; | ||
| 217 | .IF < N_USER_FUNC eq F3*256 > or ;AC000;DT F3 to exit SELECT | ||
| 218 | .IF < F3_ACTIVE eq TRUE > ;AN000;DT or already selected | ||
| 219 | .THEN ;AN000; | ||
| 220 | STC ;AN000; | ||
| 221 | .ELSE ;AN000; | ||
| 222 | POP WR_REFIELDCNT ;AN000; | ||
| 223 | PUSH WR_REFIELDCNT ;AN000; | ||
| 224 | DISPLAY_PANEL ;AN000; | ||
| 225 | CLC ;AN000; | ||
| 226 | .ENDIF ;AN000; | ||
| 227 | ; | ||
| 228 | POPP <WR_REFIELDCNT,WR_DRETSEG>;AN000; | ||
| 229 | POPP <WR_DRETOFF,WR_DRETLEN,ES>;AN000; | ||
| 230 | POPP <DI,BX,AX> ;AN000; | ||
| 231 | RET ;AN000; | ||
| 232 | HANDLE_ERROR_CALL ENDP ;AN000; | ||
| 233 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 234 | ; | ||
| 235 | ; AX,input | ||
| 236 | ; BX,action | ||
| 237 | ; | ||
| 238 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 239 | PUBLIC HANDLE_PANEL_CALL ;AN000; | ||
| 240 | HANDLE_PANEL_CALL PROC FAR ;AN000; | ||
| 241 | PUSH AX ;AN000; | ||
| 242 | PUSH AX ;AN000; | ||
| 243 | PUSH AX ;AN000; | ||
| 244 | MOV AX,PAN_INSTALL_DOS ;AN000; | ||
| 245 | CALL INIT_PQUEUE_CALL ;AN000; | ||
| 246 | POP AX ;AN000; | ||
| 247 | CALL PREPARE_PANEL_CALL ;AN000; | ||
| 248 | POP AX ;AN000; | ||
| 249 | .IF < AX ne PAN_DSKCPY_CPY > ;AN000; | ||
| 250 | MOV AX,PAN_HBAR ;AN000; | ||
| 251 | CALL PREPARE_PANEL_CALL ;AN000; | ||
| 252 | CALL HANDLE_CHILDREN ;AN000; | ||
| 253 | .ENDIF ;AN000; | ||
| 254 | CALL DISPLAY_PANEL_CALL ;AN000; | ||
| 255 | POP AX ;AN000; | ||
| 256 | RET ;AN000; | ||
| 257 | HANDLE_PANEL_CALL ENDP ;AN000; | ||
| 258 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 259 | ; | ||
| 260 | ; AX,input | ||
| 261 | ; BX,action | ||
| 262 | ; | ||
| 263 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 264 | PUBLIC HANDLE_PANEL_CALL2 ;AN000; | ||
| 265 | HANDLE_PANEL_CALL2 PROC FAR ;AN000; | ||
| 266 | PUSH AX ;AN000; | ||
| 267 | PUSH AX ;AN000; | ||
| 268 | MOV AX,BX ;AN000;DT | ||
| 269 | CALL INIT_PQUEUE_CALL ;AN000;DT | ||
| 270 | POP AX ;AN000; | ||
| 271 | CALL PREPARE_PANEL_CALL ;AN000; | ||
| 272 | POP AX ;AN000; | ||
| 273 | PUSH AX ;AN000;DT | ||
| 274 | .IF < AX ne SUB_COPYING > ;AN000; | ||
| 275 | MOV AX,PAN_HBAR ;AN000; | ||
| 276 | CALL PREPARE_PANEL_CALL ;AN000; | ||
| 277 | CALL HANDLE_CHILDREN ;AN000; | ||
| 278 | .ENDIF ;AN000; | ||
| 279 | CALL DISPLAY_PANEL_CALL ;AN000; | ||
| 280 | POP AX ;AN000; | ||
| 281 | RET ;AN000; | ||
| 282 | HANDLE_PANEL_CALL2 ENDP ;AN000; | ||
| 283 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 284 | ; | ||
| 285 | ; AX,input | ||
| 286 | ; | ||
| 287 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 288 | PUBLIC HANDLE_PANEL_CALL3 ;AN111;JW | ||
| 289 | HANDLE_PANEL_CALL3 PROC FAR ;AN111;JW | ||
| 290 | CALL INIT_PQUEUE_CALL ;AN111;JW | ||
| 291 | CALL DISPLAY_PANEL_CALL ;AN111;JW | ||
| 292 | RET ;AN111;JW | ||
| 293 | HANDLE_PANEL_CALL3 ENDP ;AN111;JW | ||
| 294 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 295 | ; | ||
| 296 | ; AX,input | ||
| 297 | ; BX,action | ||
| 298 | ; | ||
| 299 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 300 | PUBLIC HANDLE_KEYSTROKE ;AN000; | ||
| 301 | HANDLE_KEYSTROKE PROC FAR ;AN000; | ||
| 302 | MOV CX,FK_ENT_LEN ;AN000; | ||
| 303 | LEA DX,FK_ENT ;AN000; | ||
| 304 | CALL GET_FUNCTION_CALL ;AN000; | ||
| 305 | RET ;AN000; | ||
| 306 | HANDLE_KEYSTROKE ENDP ;AN000; | ||
| 307 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 308 | ; | ||
| 309 | ; End of program code | ||
| 310 | ; | ||
| 311 | ;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 312 | SELECT ENDS ;AN000; | ||
| 313 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/SELSERV.ASM b/v4.0/src/SELECT/SELSERV.ASM new file mode 100644 index 0000000..db547ba --- /dev/null +++ b/v4.0/src/SELECT/SELSERV.ASM | |||
| @@ -0,0 +1,108 @@ | |||
| 1 | |||
| 2 | |||
| 3 | PAGE 55,132 ;AN000; | ||
| 4 | NAME SELSERV ;AN000; | ||
| 5 | TITLE SELSERV - SELECT Services ;AN000; | ||
| 6 | SUBTTL selserv.asm ;AN000; | ||
| 7 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 8 | ; | ||
| 9 | ; ADJUST_CURELE | ||
| 10 | ; | ||
| 11 | ; | ||
| 12 | ; Entry: | ||
| 13 | ; AX = index on entry | ||
| 14 | ; | ||
| 15 | ; Exit: | ||
| 16 | ; AX = adjusted index | ||
| 17 | ; | ||
| 18 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 19 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000;segment for far routine | ||
| 20 | ASSUME CS:SELECT ;AN000; | ||
| 21 | ; | ||
| 22 | EXTRN WR_SCBID:WORD ;AN000; | ||
| 23 | ; | ||
| 24 | SCROLL_ADJUST LABEL BYTE ;AN000; | ||
| 25 | DB 1 ;AN000;SCR_DOS_SUPPORT | ||
| 26 | DB 1 ;AN000;SCR_CTY_KYB | ||
| 27 | DB 0 ;AN000;SCR_CTY_1 | ||
| 28 | DB 0 ;AN000;SCR_CTY_2 | ||
| 29 | DB 0 ;AN000;SCR_KYB_1 | ||
| 30 | DB 0 ;AN000;SCR_KYB_2 | ||
| 31 | DB 1 ;AN000;SCR_FR_KYB | ||
| 32 | DB 1 ;AN000;SCR_IT_KYB | ||
| 33 | DB 1 ;AN000;SCR_UK_KYB | ||
| 34 | DB 1 ;AN000;SCR_DEST_DRIVE | ||
| 35 | DB 0 ;AN000;SCR_PRT_TYPE | ||
| 36 | DB 1 ;AN000;SCR_PARALLEL | ||
| 37 | DB 0 ;AN000;SCR_SERIAL | ||
| 38 | DB 0 ;AN000;SCR_PRT_REDIR | ||
| 39 | DB 1 ;AN000;SCR_REVIEW | ||
| 40 | DB 0 ;AN000;SCR_FUNC_DISK | ||
| 41 | DB 0 ;AN000;SCR_FUNC_DISKET | ||
| 42 | DB 1 ;AN000;SCR_FIXED_FIRST | ||
| 43 | DB 1 ;AN000;SCR_FIXED_BOTH | ||
| 44 | DB 1 ;AN000;SCR_FORMAT | ||
| 45 | DB 0 ;AC000;SCR_CONTEXT_HLP / SCR_INDEX_HLP JW | ||
| 46 | DB 0 ;AN000;SCR_TITLE_HLP | ||
| 47 | DB 0 ;AN000;SCR_ACC_CTY JW | ||
| 48 | DB 0 ;AN000;SCR_ACC_KYB JW | ||
| 49 | DB 0 ;AN000;SCR_ACC_PRT JW | ||
| 50 | DB 1 ;AC035;SCR_COPY_DEST SEH | ||
| 51 | DB 0 ;AN035;SCR_DEST_A_C; SEH | ||
| 52 | DB 1 ;mrw ;scr_choose_shell | ||
| 53 | SCROLL_ADJUST_LEN EQU ($-SCROLL_ADJUST);AN000; | ||
| 54 | ADJUST_ON EQU 1 ;AN000; | ||
| 55 | ADJUST_OFF EQU 0 ;AN000; | ||
| 56 | ; | ||
| 57 | PUBLIC ADJUST_UP,ADJUST_DOWN ;AN000; | ||
| 58 | ; | ||
| 59 | ADJUST_UP PROC ;AN000; | ||
| 60 | PUSH BX ;AN000; | ||
| 61 | PUSH CX ;AN000; | ||
| 62 | OR AX,AX ;AN000; | ||
| 63 | JZ AC_1 ;AN000; | ||
| 64 | ; | ||
| 65 | MOV CL,ADJUST_ON ;AN000; | ||
| 66 | CMP CS:[BX-1]+SCROLL_ADJUST,CL;AN000; | ||
| 67 | JNE AC_1 ;AN000; | ||
| 68 | ; | ||
| 69 | SHL AX,1 ;AN000; | ||
| 70 | DEC AX ;AN000; | ||
| 71 | AC_1: POP CX ;AN000; | ||
| 72 | POP BX ;AN000; | ||
| 73 | RET ;AN000; | ||
| 74 | ADJUST_UP ENDP ;AN000; | ||
| 75 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 76 | ; | ||
| 77 | ; ADJUST_INDEX | ||
| 78 | ; | ||
| 79 | ; AX = index on entry | ||
| 80 | ; | ||
| 81 | ; AX = adjusted index | ||
| 82 | ; | ||
| 83 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 84 | ADJUST_DOWN PROC ;AN000; | ||
| 85 | PUSH BX ;AN000; | ||
| 86 | PUSH CX ;AN000; | ||
| 87 | OR AX,AX ;AN000; | ||
| 88 | JZ AI_1 ;AN000; | ||
| 89 | ; | ||
| 90 | MOV CL,ADJUST_ON ;AN000; | ||
| 91 | CMP CS:[BX-1]+SCROLL_ADJUST,CL;AN000; | ||
| 92 | JNE AC_1 ;AN000; | ||
| 93 | ; | ||
| 94 | SHR AX,1 ;AN000; | ||
| 95 | INC AX ;AN000; | ||
| 96 | AI_1: POP CX ;AN000; | ||
| 97 | POP BX ;AN000; | ||
| 98 | RET ;AN000; | ||
| 99 | ADJUST_DOWN ENDP ;AN000; | ||
| 100 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 101 | ; | ||
| 102 | ; | ||
| 103 | ; | ||
| 104 | ; | ||
| 105 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 106 | SELECT ENDS ;AN000; | ||
| 107 | END ;AN000; | ||
| 108 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
diff --git a/v4.0/src/SELECT/SEL_FILE.INC b/v4.0/src/SELECT/SEL_FILE.INC new file mode 100644 index 0000000..b52b586 --- /dev/null +++ b/v4.0/src/SELECT/SEL_FILE.INC | |||
| @@ -0,0 +1,578 @@ | |||
| 1 | |||
| 2 | |||
| 3 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4 | |||
| 5 | ; | ||
| 6 | ; SEL_FILE.INC : Copyright 1988 Microsoft | ||
| 7 | ; | ||
| 8 | ; DATE: August 8/87 | ||
| 9 | ; | ||
| 10 | ; COMMENT: Module contains variables used by SELECT. | ||
| 11 | ; | ||
| 12 | ; CHANGE HISTORY: | ||
| 13 | ; | ||
| 14 | ; ;AN002; Removal of SHELL.BAT from copying from SHELL (Source) | ||
| 15 | ; diskette (D233)! | ||
| 16 | ; | ||
| 17 | ; ;AN004; 360KB support (D65) | ||
| 18 | ; | ||
| 19 | ; ;AN005;JW - P2145, Had to move chkdsk to shell due to growth of dos files | ||
| 20 | ; | ||
| 21 | ; ;AN006;JW - P2261, Removal of unused utilities on startup disk | ||
| 22 | ; | ||
| 23 | ; ;AN007;JW - D354, Removal of FASTOPEN and RECOVER from startup disk | ||
| 24 | ; | ||
| 25 | ; ;AN008;JW - P , SELECT.HLP was not being hidden before copy | ||
| 26 | ; | ||
| 27 | ; | ||
| 28 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 29 | ; | ||
| 30 | ; Files found on INSTALL diskette | ||
| 31 | ; | ||
| 32 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 33 | ; | ||
| 34 | PUBLIC COPY_SEL_EGA,E_SEL_EGA ;AN000; | ||
| 35 | COPY_SEL_EGA LABEL BYTE ;AN000; | ||
| 36 | DB 'EGA.CPI ' ;AN000; | ||
| 37 | E_SEL_EGA EQU ( $ - COPY_SEL_EGA ) / 12 ;AN000; | ||
| 38 | ; | ||
| 39 | PUBLIC COPY_SEL_LCD,E_SEL_LCD ;AN000; | ||
| 40 | COPY_SEL_LCD LABEL BYTE ;AN000; | ||
| 41 | DB 'LCD.CPI ' ;AN000; | ||
| 42 | E_SEL_LCD EQU ( $ - COPY_SEL_LCD ) / 12 ;AN000; | ||
| 43 | ; | ||
| 44 | PUBLIC COPY_SEL_SHEL,E_SEL_SHEL ;AN000; | ||
| 45 | COPY_SEL_SHEL LABEL BYTE ;AN000; | ||
| 46 | DB 'COMMAND.COM ' ;AN000; | ||
| 47 | E_SEL_SHEL EQU ( $ - COPY_SEL_SHEL) / 12 ;AN000; | ||
| 48 | ; | ||
| 49 | PUBLIC COPY_INST_1200_1440,E_INST_1200_1440 ;AN000; | ||
| 50 | COPY_INST_1200_1440 LABEL BYTE ;AN000; this will copy files for 1.44M diskettes | ||
| 51 | ; | ||
| 52 | DB 'ANSI.SYS ' ;AN000; | ||
| 53 | DB 'COMMAND.COM ' ;AN000; | ||
| 54 | DB 'COUNTRY.SYS ' ;AN000; | ||
| 55 | DB 'DISKCOPY.COM' ;AN001;GHG | ||
| 56 | DB 'DISPLAY.SYS ' ;AN000; | ||
| 57 | DB 'DRIVER.SYS ' ;AN000; | ||
| 58 | DB 'EGA.CPI ' | ||
| 59 | DB 'FORMAT.COM ' ;AN000; | ||
| 60 | DB 'GRAFTABL.COM' | ||
| 61 | DB 'GRAPHICS.COM' | ||
| 62 | DB 'GRAPHICS.PRO' | ||
| 63 | DB 'KEYB.COM ' ;AN000; | ||
| 64 | DB 'KEYBOARD.SYS' ;AN000; | ||
| 65 | DB 'LCD.CPI ' | ||
| 66 | DB 'MODE.COM ' ;AN000; | ||
| 67 | DB 'NLSFUNC.EXE ' | ||
| 68 | DB 'PRINT.COM ' | ||
| 69 | DB 'PRINTER.SYS ' ;AN000; | ||
| 70 | DB 'RAMDRIVE.SYS' ;AN000; | ||
| 71 | DB '4201.CPI ' ;AN000; | ||
| 72 | DB '5202.CPI ' ;AN000; | ||
| 73 | DB '4208.CPI ' ;AN000 | ||
| 74 | DB 'REPLACE.EXE ' | ||
| 75 | DB 'SHARE.EXE ' ;AC055 | ||
| 76 | DB 'SYS.COM ' ;AN000; | ||
| 77 | ; | ||
| 78 | E_INST_1200_1440 EQU ( $ - COPY_INST_1200_1440 ) / 12 ;AN000; end of list for 1.44M diskettes | ||
| 79 | ; | ||
| 80 | ; | ||
| 81 | PUBLIC HIDE_SEL,E_HIDE_SEL ;AN000; | ||
| 82 | HIDE_SEL DB 'AUTOEXEC.BAT',?,? ;AN000; | ||
| 83 | DB 'CONFIG.SYS ',?,? ;AN000; | ||
| 84 | DB 'SELECT.PRT ',?,? ;AN000; | ||
| 85 | DB 'SELECT.EXE ',?,? ;AN000; | ||
| 86 | DB 'SELECT.DAT ',?,? ;AN000; | ||
| 87 | DB 'SELECT.HLP ',?,? ;AN008;JW | ||
| 88 | E_HIDE_SEL EQU ($ - HIDE_SEL) / 14 ;AN000; | ||
| 89 | ; | ||
| 90 | PUBLIC HIDE_STARTUP,E_HIDE_STARTUP ;AN000; | ||
| 91 | HIDE_STARTUP DB 'AUTOEXEC.BAT',?,? ;AN000; | ||
| 92 | DB 'CONFIG.SYS ',?,? ;AN000; | ||
| 93 | DB 'SELECT.COM ',?,? ;AN000; | ||
| 94 | DB 'SELECT.HLP ',?,? ;AN000; | ||
| 95 | DB 'SELECT.PRT ',?,? ;AN000; | ||
| 96 | E_HIDE_STARTUP EQU ($ - HIDE_STARTUP) / 14 ;AN000; | ||
| 97 | ; | ||
| 98 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 99 | ; | ||
| 100 | ; Files found on OPERATE diskette | ||
| 101 | ; | ||
| 102 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 103 | ; | ||
| 104 | PUBLIC COPY_OPER_1200_1440,E_OPER_1200_1440 ;AN000; | ||
| 105 | COPY_OPER_1200_1440 LABEL BYTE ;AN000; this will copy files to 1.2M $ 1.44M diskettes | ||
| 106 | ; | ||
| 107 | DB 'APPEND.EXE ' ;AN000; | ||
| 108 | DB 'ASSIGN.COM ' ;AN000; | ||
| 109 | DB 'ATTRIB.EXE ' ;AN000; | ||
| 110 | DB 'BACKUP.COM ' | ||
| 111 | DB 'CHKDSK.COM ' | ||
| 112 | DB 'COMP.COM ' ;AN000; | ||
| 113 | DB 'DEBUG.COM ' ;AN000; | ||
| 114 | DB 'DISKCOMP.COM' ;AN000; | ||
| 115 | DB 'EDLIN.COM ' ;AN000; | ||
| 116 | DB 'EXE2BIN.EXE ' | ||
| 117 | DB 'FC.EXE ' | ||
| 118 | DB 'FILESYS.EXE ' | ||
| 119 | DB 'FIND.EXE ' ;AN000; | ||
| 120 | DB 'GWBASIC.EXE ' | ||
| 121 | DB 'IFSFUNC.EXE ' | ||
| 122 | DB 'JOIN.EXE ' ;AN000; | ||
| 123 | DB 'LABEL.COM ' ;AN000; | ||
| 124 | DB 'LINK.EXE ' | ||
| 125 | DB 'MEM.EXE ' ;AN000; | ||
| 126 | DB 'MODE.COM ' ;AN000; | ||
| 127 | DB 'MORE.COM ' ;AN000; | ||
| 128 | DB 'RECOVER.COM ' ;AN000; | ||
| 129 | DB 'RESTORE.COM ' | ||
| 130 | DB 'SORT.EXE ' ;AN000; | ||
| 131 | DB 'SUBST.EXE ' ;AN000; | ||
| 132 | DB 'TREE.COM ' ;AN000; | ||
| 133 | DB 'XCOPY.EXE ' | ||
| 134 | E_OPER_1200_1440 EQU ( $ - COPY_OPER_1200_1440 ) / 12 ;AN000; | ||
| 135 | |||
| 136 | |||
| 137 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 138 | ; | ||
| 139 | ; Files found on MS-SHELL diskette | ||
| 140 | ; | ||
| 141 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 142 | ; | ||
| 143 | PUBLIC COPY_SHELL_1200_1440,E_SHELL_1200_1440 ;AN000; | ||
| 144 | COPY_SHELL_1200_1440 LABEL BYTE ;AN000; this will copy files to 1.2M $ 1.44M diskettes | ||
| 145 | ; | ||
| 146 | DB 'SHELL.CLR ' ;AN000; | ||
| 147 | DB 'SHELL.HLP ' ;AN000; | ||
| 148 | DB 'SHELL.MEU ' ;AN000; | ||
| 149 | DB 'SHELLB.COM ' ;AN000; | ||
| 150 | DB 'SHELLC.EXE ' ;AN000; | ||
| 151 | DB 'DOSUTIL.MEU ' ;AN000;DT | ||
| 152 | E_SHELL_1200_1440 EQU ( $ - COPY_SHELL_1200_1440 ) / 12 ;AN000; | ||
| 153 | ; | ||
| 154 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 155 | ; | ||
| 156 | ; Files which will be unique on ship/install diskettes | ||
| 157 | ; | ||
| 158 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 159 | PUBLIC S_DOS_SHEL_DISK ;AN000; | ||
| 160 | S_DOS_SHEL_DISK DW M_DOS_SHEL_DISK ;AN000; | ||
| 161 | P_DOS_SHEL_DISK DB 'SHELLC.EXE ' ;AN000; | ||
| 162 | M_DOS_SHEL_DISK EQU $ - P_DOS_SHEL_DISK - 1 ;AN000; | ||
| 163 | ; | ||
| 164 | PUBLIC S_DOS_SEL_360 ;AN000;GHG | ||
| 165 | S_DOS_SEL_360 DW M_DOS_SEL_360 ;AN000;GHG | ||
| 166 | P_DOS_SEL_360 DB 'SELECT.EXE ' ;AN000;GHG | ||
| 167 | M_DOS_SEL_360 EQU $ - P_DOS_SEL_360 - 1 ;AN000;GHG | ||
| 168 | ;GHG | ||
| 169 | PUBLIC S_DOS_UTIL1_DISK ;AN000;GHG | ||
| 170 | S_DOS_UTIL1_DISK DW M_DOS_UTIL1_DISK ;AN000;GHG | ||
| 171 | P_DOS_UTIL1_DISK DB 'ATTRIB.EXE ' ;AN000;GHG | ||
| 172 | M_DOS_UTIL1_DISK EQU $ - P_DOS_UTIL1_DISK - 1 ;AN000;GHG | ||
| 173 | ;GHG | ||
| 174 | PUBLIC S_DOS_UTIL2_DISK ;AN000;GHG | ||
| 175 | S_DOS_UTIL2_DISK DW M_DOS_UTIL2_DISK ;AN000;GHG | ||
| 176 | P_DOS_UTIL2_DISK DB 'GWBASIC.EXE ' ;AN000;GHG | ||
| 177 | M_DOS_UTIL2_DISK EQU $ - P_DOS_UTIL2_DISK - 1 ;AN000;GHG | ||
| 178 | ;GHG | ||
| 179 | PUBLIC S_DOS_UTIL3_DISK ;AN000;GHG | ||
| 180 | S_DOS_UTIL3_DISK DW M_DOS_UTIL3_DISK ;AN000;GHG | ||
| 181 | P_DOS_UTIL3_DISK DB 'DRIVER.SYS ' ;AN000;GHG | ||
| 182 | M_DOS_UTIL3_DISK EQU $ - P_DOS_UTIL3_DISK - 1 ;AN000;GHG | ||
| 183 | |||
| 184 | PUBLIC S_DOS_COM_360 ;AN000;GHG | ||
| 185 | S_DOS_COM_360 DW M_DOS_COM_360 ;AN000;GHG | ||
| 186 | P_DOS_COM_360 DB 'SELECT.COM ' ;AN000;GHG | ||
| 187 | M_DOS_COM_360 EQU $ - P_DOS_COM_360 - 1 ;AN000;GHG | ||
| 188 | ;GHG | ||
| 189 | PUBLIC E_FILE_ATTR ;AN000; | ||
| 190 | E_FILE_ATTR EQU 00H ;AN000; attribute not important | ||
| 191 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 192 | ; | ||
| 193 | ; | ||
| 194 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 195 | PUBLIC S_COMMAND_COM ;AN017; | ||
| 196 | S_COMMAND_COM DW M_COMMAND_COM ;AN017; | ||
| 197 | P_COMMAND_COM DB 'C:\COMMAND.COM ' ;AN017; | ||
| 198 | M_COMMAND_COM EQU $ - P_COMMAND_COM - 1 ;AN017; | ||
| 199 | ; | ||
| 200 | PUBLIC S_SELECT_TMP ;AN000; | ||
| 201 | S_SELECT_TMP DW M_SELECT_TMP ;AN000; | ||
| 202 | P_SELECT_TMP DB 'SELECT.TMP ' ;AN000; | ||
| 203 | M_SELECT_TMP EQU $ - P_SELECT_TMP - 1 ;AN000; space for ASCII-Z conversion | ||
| 204 | ; | ||
| 205 | PUBLIC S_PRINT_FILE,M_PRINT_FILE ;AN000; | ||
| 206 | S_PRINT_FILE DW M_PRINT_FILE ;AN000;GHG NAME OF THE SELECT PRINTER | ||
| 207 | P_PRINT_FILE DB 'SELECT.PRT ' ;AN000;GHG PROFILE. - space for ASCII-Z conversion | ||
| 208 | M_PRINT_FILE EQU $-P_PRINT_FILE-1 ;AN000;GHG | ||
| 209 | ; | ||
| 210 | PUBLIC S_AUTO_NEW, S_CONFIG_NEW ;AN000; | ||
| 211 | S_AUTO_NEW DW M_AUTO_NEW ;AN000; | ||
| 212 | P_AUTO_NEW DB 'AUTOEXEC.400 ' ;AN003;GHG Temporary | ||
| 213 | M_AUTO_NEW EQU $ - P_AUTO_NEW - 1 ;AN003;GHG AUTOEXEC.BAT | ||
| 214 | ; | ||
| 215 | S_CONFIG_NEW DW M_CONFIG_NEW ;AN000; | ||
| 216 | P_CONFIG_NEW DB 'CONFIG.400 ' ;AN003;GHG Temporary | ||
| 217 | M_CONFIG_NEW EQU $ - P_CONFIG_NEW - 1 ;AN003;GHG CONFIG | ||
| 218 | ; | ||
| 219 | PUBLIC S_OS2_CONFIG_C, S_OS2_AUTO_C ;AN065;SEH | ||
| 220 | S_OS2_CONFIG_C DW M_OS2_CONFIG_C ;AN065;SEH rename OS2's config.sys | ||
| 221 | P_OS2_CONFIG_C DB 'C:\CONFIG.OS2 ' ;AN065;SEH | ||
| 222 | M_OS2_CONFIG_C EQU $ - P_OS2_CONFIG_C - 1 ;AN065;SEH | ||
| 223 | ; | ||
| 224 | S_OS2_AUTO_C DW M_OS2_AUTO_C ;AN065;SEH rename OS2's autoexec.bat | ||
| 225 | P_OS2_AUTO_C DB 'C:\AUTOEXEC.OS2 ' ;AN065;SEH | ||
| 226 | M_OS2_AUTO_C EQU $ - P_OS2_AUTO_C - 1 ;AN065;SEH | ||
| 227 | ; | ||
| 228 | PUBLIC S_SHELL_NEW ;AN000;DT | ||
| 229 | S_SHELL_NEW DW M_SHELL_NEW ;AN000;DT | ||
| 230 | P_SHELL_NEW DB 'DOSSHELL.BAT ' ;AC019;SEH ;AN000;DT space for ASCII-Z conversion | ||
| 231 | M_SHELL_NEW EQU $ - P_SHELL_NEW - 1 ;AN000;DT | ||
| 232 | ; | ||
| 233 | PUBLIC S_SHELL_NEW_B ;AN000;DT | ||
| 234 | S_SHELL_NEW_B DW M_SHELL_NEW_B ;AN000;DT | ||
| 235 | P_SHELL_NEW_B DB 'B:\DOSSHELL.BAT ' ;AC019;SEH ;AN000;DT space for ASCII-Z conversion | ||
| 236 | M_SHELL_NEW_B EQU $ - P_SHELL_NEW_B - 1 ;AN000;DT | ||
| 237 | ; | ||
| 238 | PUBLIC S_AUTO_NEW_B, S_CONFIG_NEW_B ;AN000; | ||
| 239 | S_AUTO_NEW_B DW M_AUTO_NEW_B ;AN000; | ||
| 240 | P_AUTO_NEW_B DB 'B:\AUTOEXEC.BAT ' ;AN000; space for ASCII-Z conversion | ||
| 241 | M_AUTO_NEW_B EQU $ - P_AUTO_NEW_B - 1 ;AN000; | ||
| 242 | ; | ||
| 243 | S_CONFIG_NEW_B DW M_CONFIG_NEW_B ;AN000; | ||
| 244 | P_CONFIG_NEW_B DB 'B:\CONFIG.SYS ' ;AN000; space for ASCII-Z conversion | ||
| 245 | M_CONFIG_NEW_B EQU $ - P_CONFIG_NEW_B - 1 ;AN000; | ||
| 246 | ; | ||
| 247 | PUBLIC S_AUTO_REN, S_CONFIG_REN ;AN000; | ||
| 248 | S_AUTO_REN DW M_AUTO_REN ;AN000; | ||
| 249 | P_AUTO_REN DB 'C:\AUTOEXEC.400 ' ;AN003;GHG | ||
| 250 | M_AUTO_REN EQU $ - P_AUTO_REN - 1 ;AN000; | ||
| 251 | ; | ||
| 252 | S_CONFIG_REN DW M_CONFIG_REN ;AN000; | ||
| 253 | P_CONFIG_REN DB 'C:\CONFIG.400 ' ;AN003;GHG | ||
| 254 | M_CONFIG_REN EQU $ - P_CONFIG_REN - 1 ;AN000; | ||
| 255 | ; | ||
| 256 | PUBLIC S_AUTO_C, S_CONFIG_C ;AN000; | ||
| 257 | S_AUTO_C DW M_AUTO_C ;AN000; | ||
| 258 | P_AUTO_C DB 'C:\AUTOEXEC.BAT ' ;AN000; space for ASCII-Z conversion | ||
| 259 | M_AUTO_C EQU $ - P_AUTO_C - 1 ;AN000; | ||
| 260 | ; | ||
| 261 | S_CONFIG_C DW M_CONFIG_C ;AN000; | ||
| 262 | P_CONFIG_C DB 'C:\CONFIG.SYS ' ;AN000; space for ASCII-Z conversion | ||
| 263 | M_CONFIG_C EQU $ - P_CONFIG_C - 1 ;AN000; | ||
| 264 | ; | ||
| 265 | PUBLIC S_AUTO_NEW_C, S_CONFIG_NEW_C ;AN000; | ||
| 266 | S_AUTO_NEW_C DW M_AUTO_NEW_C ;AN000; | ||
| 267 | P_AUTO_NEW_C DB 'C:AUTOEXEC.BAT ' ;AN000; space for ASCII-Z conversion | ||
| 268 | M_AUTO_NEW_C EQU $ - P_AUTO_NEW_C - 1 ;AN000; | ||
| 269 | ; | ||
| 270 | S_CONFIG_NEW_C DW M_CONFIG_NEW_C ;AN000; | ||
| 271 | P_CONFIG_NEW_C DB 'C:CONFIG.SYS ' ;AN000; space for ASCII-Z conversion | ||
| 272 | M_CONFIG_NEW_C EQU $ - P_CONFIG_NEW_C - 1 ;AN000; | ||
| 273 | ; | ||
| 274 | PUBLIC S_AUTO_REBOOT ;AN000; | ||
| 275 | S_AUTO_REBOOT DW M_AUTO_REBOOT ;AN000; | ||
| 276 | P_AUTO_REBOOT DB 'AUTOEXEC.BAT ' ;AN000; | ||
| 277 | M_AUTO_REBOOT EQU $ - P_AUTO_REBOOT - 1 ;AN000; | ||
| 278 | ; | ||
| 279 | PUBLIC S_AUTO_MENU ;AN000; | ||
| 280 | S_AUTO_MENU DW M_AUTO_MENU ;AN000; | ||
| 281 | P_AUTO_MENU DB 'MENU' ;AN000; | ||
| 282 | M_AUTO_MENU EQU $ - P_AUTO_MENU ;AN000; | ||
| 283 | ; | ||
| 284 | PUBLIC S_AUTO_FDISK ;AN000; | ||
| 285 | S_AUTO_FDISK DW M_AUTO_FDISK ;AN000; | ||
| 286 | P_AUTO_FDISK DB 'FDISK' ;AN000; | ||
| 287 | M_AUTO_FDISK EQU $ - P_AUTO_FDISK ;AN000; | ||
| 288 | ; | ||
| 289 | PUBLIC S_CONFIG_AUTO, E_FILES ;AN000; | ||
| 290 | S_CONFIG_AUTO DB 'CONFIG.400 ' ;AN000; | ||
| 291 | DB 'AUTOEXEC.400' ;AN000; | ||
| 292 | E_FILES EQU ($ - S_CONFIG_AUTO) / 12 ;AN000; | ||
| 293 | ; | ||
| 294 | PUBLIC S_SHELL2, SH_FILES ;AN000; | ||
| 295 | S_SHELL2 DB 'DOSSHELL.BAT' ;AC019;SEH ;AN000; | ||
| 296 | SH_FILES EQU ($ - S_SHELL2) / 12 ;AN000; | ||
| 297 | ; | ||
| 298 | PUBLIC S_KEYB ;AN000; | ||
| 299 | S_KEYB DW M_KEYB ;AN000; | ||
| 300 | P_KEYB DB 'KEYB.COM ' ;AN000; KEYB command - space at end for ASCII-Z | ||
| 301 | M_KEYB EQU $ - P_KEYB - 1 ;AN000; | ||
| 302 | ; | ||
| 303 | PUBLIC S_FDISK ;AN000; | ||
| 304 | S_FDISK DW M_FDISK ;AN000; | ||
| 305 | P_FDISK DB 'FDISK.EXE ' ;AC042;SEH ;AN000; FDISK command - space at end for ASCII-Z | ||
| 306 | M_FDISK EQU $ - P_FDISK - 1 ;AN000; | ||
| 307 | ; | ||
| 308 | PUBLIC S_DISKCOPY ;AN000; | ||
| 309 | S_DISKCOPY DW M_DISKCOPY ;AN000; | ||
| 310 | P_DISKCOPY DB 'DISKCOPY.COM ' ;AN000; DISKCOPY command - space at end for ASCII-Z | ||
| 311 | M_DISKCOPY EQU $ - P_DISKCOPY - 1 ;AN000; | ||
| 312 | ; | ||
| 313 | PUBLIC S_DISKCOPY_PARM ;AN000; | ||
| 314 | S_DISKCOPY_PARM DW M_DISKCOPY_PARM ;AN000; | ||
| 315 | P_DISKCOPY_PARM DB ' A: A:' ;AN000; | ||
| 316 | M_DISKCOPY_PARM EQU $ - P_DISKCOPY_PARM ;AN000; | ||
| 317 | ; | ||
| 318 | PUBLIC SC_1, SC_2 ;AN000; | ||
| 319 | SC_1 DW MC_1 ;AN000; disk number 1 | ||
| 320 | PC_1 DB '1 ' ;AN000; | ||
| 321 | MC_1 EQU $ - PC_1 ;AN000; | ||
| 322 | SC_2 DW MC_2 ;AN000; disk number 2 | ||
| 323 | PC_2 DB '2 ' ;AN000; | ||
| 324 | MC_2 EQU $ - PC_2 ;AN000; | ||
| 325 | ; | ||
| 326 | PUBLIC SC_PRI,SC_EXT,SC_LOG ;AN000; | ||
| 327 | SC_PRI DW MC_PRI ;AN000; DOS parameter for FDSIK command | ||
| 328 | PC_PRI DB ' /PRI:' ;AN000; | ||
| 329 | MC_PRI EQU $ - PC_PRI ;AN000; | ||
| 330 | SC_EXT DW MC_EXT ;AN000; | ||
| 331 | PC_EXT DB ' /EXT:' ;AN000; | ||
| 332 | MC_EXT EQU $ - PC_EXT ;AN000; | ||
| 333 | SC_LOG DW MC_LOG ;AN000; | ||
| 334 | PC_LOG DB ' /LOG:' ;AN000; | ||
| 335 | MC_LOG EQU $ - PC_LOG ;AN000; | ||
| 336 | ; | ||
| 337 | PUBLIC S_FORMAT ;AN000; | ||
| 338 | S_FORMAT DW M_FORMAT ;AN000; | ||
| 339 | P_FORMAT DB 'FORMAT.COM ' ;AN000; FORMAT command - space at end for ASCII-Z | ||
| 340 | M_FORMAT EQU $ - P_FORMAT - 1 ;AN000; | ||
| 341 | ; | ||
| 342 | PUBLIC S_DRIVE_C ;AN000; | ||
| 343 | S_DRIVE_C DW M_DRIVE_C ;AN000; | ||
| 344 | P_DRIVE_C DB 'C:' ;AN000; | ||
| 345 | M_DRIVE_C EQU $ - P_DRIVE_C ;AN000; | ||
| 346 | ; | ||
| 347 | PUBLIC S_FORMAT_B ;AN000; | ||
| 348 | S_FORMAT_B DW M_FORMAT_B ;AN000; | ||
| 349 | P_FORMAT_B DB 'B: /S /V:DOS400 /SELECT ' ;AN000; | ||
| 350 | M_FORMAT_B EQU $ - P_FORMAT_B ;AN000; | ||
| 351 | ; | ||
| 352 | PUBLIC S_FORMAT_A ;AN111;JW | ||
| 353 | S_FORMAT_A DW M_FORMAT_A ;AN111;JW | ||
| 354 | P_FORMAT_A DB 'A: /S /V:DOS400 /SELECT ' ;AN111;JW | ||
| 355 | M_FORMAT_A EQU $ - P_FORMAT_A ;AN111;JW | ||
| 356 | ; | ||
| 357 | PUBLIC S_REPLACE ;AN000; | ||
| 358 | S_REPLACE DW M_REPLACE ;AN000; | ||
| 359 | P_REPLACE DB 'REPLACE.EXE ' ;AN000; space at end for ASCIII-Z string | ||
| 360 | M_REPLACE EQU $ - P_REPLACE - 1 ;AN000; | ||
| 361 | ; | ||
| 362 | PUBLIC S_REPLACE_PAR1 ;AN000; | ||
| 363 | S_REPLACE_PAR1 DW M_REPLACE_PAR1 ;AN000; | ||
| 364 | P_REPLACE_PAR1 DB 'A:*.* C:\ /S /R ' ;AC000;JW | ||
| 365 | M_REPLACE_PAR1 EQU $ - P_REPLACE_PAR1 ;AN000; | ||
| 366 | ; | ||
| 367 | PUBLIC S_SLASH_R ;AN000;JW | ||
| 368 | S_SLASH_R DW M_SLASH_R ;AN000;JW | ||
| 369 | P_SLASH_R DB ' /R' ;AN000;JW | ||
| 370 | M_SLASH_R EQU $ - P_SLASH_R ;AN000;JW | ||
| 371 | ; | ||
| 372 | PUBLIC S_A_STARS ;AN000; | ||
| 373 | S_A_STARS DW M_A_STARS ;AN000; | ||
| 374 | P_A_STARS DB 'A:*.* ' ;AN000; | ||
| 375 | M_A_STARS EQU $ - P_A_STARS ;AN000; | ||
| 376 | ; | ||
| 377 | PUBLIC S_SLASH_A ;AN000; | ||
| 378 | S_SLASH_A DW M_SLASH_A ;AN000; | ||
| 379 | P_SLASH_A DB ' /A' ;AN000; | ||
| 380 | M_SLASH_A EQU $ - P_SLASH_A ;AN000; | ||
| 381 | ; | ||
| 382 | PUBLIC S_SLASH_S ;AN000; | ||
| 383 | S_SLASH_S DW M_SLASH_S ;AN000; | ||
| 384 | P_SLASH_S DB ' /S' ;AN000; | ||
| 385 | M_SLASH_S EQU $ - P_SLASH_S ;AN000; | ||
| 386 | ; | ||
| 387 | PUBLIC S_SLASH_Q ;AN000; | ||
| 388 | S_SLASH_Q DW M_SLASH_Q ;AN000; | ||
| 389 | P_SLASH_Q DB ' /Q' ;AN000; | ||
| 390 | M_SLASH_Q EQU $ - P_SLASH_Q ;AN000; | ||
| 391 | ; | ||
| 392 | PUBLIC S_COLON ;AN000; | ||
| 393 | S_COLON DW M_COLON ;AN000; | ||
| 394 | P_COLON DB ':' ;AN000; | ||
| 395 | M_COLON EQU $ - P_COLON ;AN000; | ||
| 396 | ; | ||
| 397 | PUBLIC S_SYS_C ;AN000; | ||
| 398 | S_SYS_C DW M_SYS_C ;AN000; | ||
| 399 | P_SYS_C DB 'SYS.COM ' ;AN000; space dor ASCII-Z conversion | ||
| 400 | M_SYS_C EQU $ - P_SYS_C - 1 ;AN000; | ||
| 401 | ; | ||
| 402 | PUBLIC S_VOL_SEL ;AN000; | ||
| 403 | S_VOL_SEL DW M_VOL_SEL ;AN000; | ||
| 404 | P_VOL_SEL DB ' /V:DOS400 /SELECT ' ;AN000; | ||
| 405 | M_VOL_SEL EQU $ - P_VOL_SEL ;AN000; | ||
| 406 | ; | ||
| 407 | PUBLIC S_PREP_EGA ;AN000; | ||
| 408 | S_PREP_EGA DW M_PREP_EGA ;AN000; | ||
| 409 | P_PREP_EGA DB 'CON CP PREP=((850) EGA.CPI)' ;AN000; | ||
| 410 | M_PREP_EGA EQU $ - P_PREP_EGA ;AN000; | ||
| 411 | ; | ||
| 412 | PUBLIC S_PREP_LCD ;AN000; | ||
| 413 | S_PREP_LCD DW M_PREP_LCD ;AN000; | ||
| 414 | P_PREP_LCD DB 'CON CP PREP=((850) LCD.CPI)' ;AN000; | ||
| 415 | M_PREP_LCD EQU $ - P_PREP_LCD ;AN000; | ||
| 416 | ; | ||
| 417 | PUBLIC S_CP_SEL ;AN000; | ||
| 418 | S_CP_SEL DW M_CP_SEL ;AN000; | ||
| 419 | P_CP_SEL DB 'CON CP SEL=850' ;AN000; | ||
| 420 | M_CP_SEL EQU $ - P_CP_SEL ;AN000; | ||
| 421 | ; | ||
| 422 | PUBLIC S_MODE ;AN000; | ||
| 423 | S_MODE DW M_MODE ;AN000; | ||
| 424 | P_MODE DB 'MODE.COM ' ;AN000; Space at end of ASCII-Z conversion | ||
| 425 | M_MODE EQU $ - P_MODE-1 ;AN000; | ||
| 426 | ; | ||
| 427 | PUBLIC S_SLASH ;AN000;DT | ||
| 428 | S_SLASH DW M_SLASH ;AN000;DT | ||
| 429 | P_SLASH DB '\' ;AN000;DT | ||
| 430 | M_SLASH EQU $ - P_SLASH ;AN000;DT | ||
| 431 | ;AN000;DT | ||
| 432 | PUBLIC S_DSKCPY_TO_B ;AN000; | ||
| 433 | S_DSKCPY_TO_B DW M_DSKCPY_TO_B ;AN000; | ||
| 434 | P_DSKCPY_TO_B DB ' A: B:' ;AN000; | ||
| 435 | M_DSKCPY_TO_B EQU $ - P_DSKCPY_TO_B ;AN000; | ||
| 436 | ; | ||
| 437 | PUBLIC S_SELCOM_NEW_B ;AN004;DT | ||
| 438 | S_SELCOM_NEW_B DW M_SELCOM_NEW_B ;AN004;DT | ||
| 439 | P_SELCOM_NEW_B DB 'B:\SELECT.COM ' ;AN004;DT space for ASCII-Z conversion | ||
| 440 | M_SELCOM_NEW_B EQU $ - P_SELCOM_NEW_B - 1 ;AN004;DT | ||
| 441 | ;AN004;DT | ||
| 442 | PUBLIC S_SELHLP_NEW_B ;AN004;DT | ||
| 443 | S_SELHLP_NEW_B DW M_SELHLP_NEW_B ;AN004;DT | ||
| 444 | P_SELHLP_NEW_B DB 'B:\SELECT.HLP ' ;AN004;DT space for ASCII-Z conversion | ||
| 445 | M_SELHLP_NEW_B EQU $ - P_SELHLP_NEW_B - 1 ;AN004;DT | ||
| 446 | ;AN004;DT | ||
| 447 | PUBLIC S_SELPRT_NEW_B ;AN004;DT | ||
| 448 | S_SELPRT_NEW_B DW M_SELPRT_NEW_B ;AN004;DT | ||
| 449 | P_SELPRT_NEW_B DB 'B:\SELECT.PRT ' ;AN004;DT space for ASCII-Z conversion | ||
| 450 | M_SELPRT_NEW_B EQU $ - P_SELPRT_NEW_B - 1 ;AN004;DT | ||
| 451 | ; | ||
| 452 | PUBLIC S_SELEXE_NEW_B ;AN004;DT | ||
| 453 | S_SELEXE_NEW_B DW M_SELEXE_NEW_B ;AN004;DT | ||
| 454 | P_SELEXE_NEW_B DB 'B:\SELECT.EXE ' ;AN004;DT space for ASCII-Z conversion | ||
| 455 | M_SELEXE_NEW_B EQU $ - P_SELEXE_NEW_B - 1 ;AN004;DT | ||
| 456 | ; | ||
| 457 | PUBLIC S_SELDAT_NEW_B ;AN004;DT | ||
| 458 | S_SELDAT_NEW_B DW M_SELDAT_NEW_B ;AN004;DT | ||
| 459 | P_SELDAT_NEW_B DB 'B:\SELECT.DAT ' ;AN004;DT space for ASCII-Z conversion | ||
| 460 | M_SELDAT_NEW_B EQU $ - P_SELDAT_NEW_B - 1 ;AN004;DT | ||
| 461 | ; | ||
| 462 | PUBLIC S_SELDAT_C ;AN004;DT Used to erase from C: after 360KB install | ||
| 463 | S_SELDAT_C DW M_SELDAT_C ;AN004;DT | ||
| 464 | P_SELDAT_C DB '\SELECT.DAT ' ;AN004;DT space for ASCII-Z conversion | ||
| 465 | M_SELDAT_C EQU $ - P_SELDAT_C - 1 ;AN004;DT | ||
| 466 | ; | ||
| 467 | PUBLIC S_SELCOM_C ;AN004;DT | ||
| 468 | S_SELCOM_C DW M_SELCOM_C ;AN004;DT | ||
| 469 | P_SELCOM_C DB '\SELECT.COM ' ;AN004;DT space for ASCII-Z conversion | ||
| 470 | M_SELCOM_C EQU $ - P_SELCOM_C - 1 ;AN004;DT | ||
| 471 | ; | ||
| 472 | PUBLIC S_SELHLP_C ;AN004;DT | ||
| 473 | S_SELHLP_C DW M_SELHLP_C ;AN004;DT | ||
| 474 | P_SELHLP_C DB '\SELECT.HLP ' ;AN004;DT space for ASCII-Z conversion | ||
| 475 | M_SELHLP_C EQU $ - P_SELHLP_C - 1 ;AN004;DT | ||
| 476 | ; | ||
| 477 | PUBLIC S_SELPRT_C ;AN004;DT | ||
| 478 | S_SELPRT_C DW M_SELPRT_C ;AN004;DT | ||
| 479 | P_SELPRT_C DB '\SELECT.PRT ' ;AN004;DT space for ASCII-Z conversion | ||
| 480 | M_SELPRT_C EQU $ - P_SELPRT_C - 1 ;AN004;DT | ||
| 481 | ; | ||
| 482 | PUBLIC S_SELEXE_C ;AN004;DT | ||
| 483 | S_SELEXE_C DW M_SELEXE_C ;AN004;DT | ||
| 484 | P_SELEXE_C DB '\SELECT.EXE ' ;AN004;DT space for ASCII-Z conversion | ||
| 485 | M_SELEXE_C EQU $ - P_SELEXE_C - 1 ;AN004;DT | ||
| 486 | ; | ||
| 487 | PUBLIC S_AUTOEX_C ;AN004;DT | ||
| 488 | S_AUTOEX_C DW M_AUTOEX_C ;AN004;DT | ||
| 489 | P_AUTOEX_C DB '\AUTOEXEC.BAT ' ;AN004;DT space for ASCII-Z conversion | ||
| 490 | M_AUTOEX_C EQU $ - P_AUTOEX_C - 1 ;AN004;DT | ||
| 491 | ; | ||
| 492 | PUBLIC S_CONSYS_C ;AN004;DT | ||
| 493 | S_CONSYS_C DW M_CONSYS_C ;AN004;DT | ||
| 494 | P_CONSYS_C DB '\CONFIG.SYS ' ;AN004;DT space for ASCII-Z conversion | ||
| 495 | M_CONSYS_C EQU $ - P_CONSYS_C - 1 ;AN004;DT | ||
| 496 | ; | ||
| 497 | PUBLIC S_VDISK_B ;AN006;JW | ||
| 498 | S_VDISK_B DW M_VDISK_B ;AN006;JW | ||
| 499 | P_VDISK_B DB 'B:\RAMDRIVE.SYS ' ;AN006;JW space for ASCII-Z conversion | ||
| 500 | M_VDISK_B EQU $ - P_VDISK_B - 1 ;AN006;JW | ||
| 501 | ; | ||
| 502 | PUBLIC S_ANSI_B ;AN006;JW | ||
| 503 | S_ANSI_B DW M_ANSI_B ;AN006;JW | ||
| 504 | P_ANSI_B DB 'B:\ANSI.SYS ' ;AN006;JW space for ASCII-Z conversion | ||
| 505 | M_ANSI_B EQU $ - P_ANSI_B - 1 ;AN006;JW | ||
| 506 | ; | ||
| 507 | PUBLIC S_APPEND_B ;AN006;JW | ||
| 508 | S_APPEND_B DW M_APPEND_B ;AN006;JW | ||
| 509 | P_APPEND_B DB 'B:\APPEND.EXE ' ;AN006;JW space for ASCII-Z conversion | ||
| 510 | M_APPEND_B EQU $ - P_APPEND_B - 1 ;AN006;JW | ||
| 511 | ; | ||
| 512 | PUBLIC S_GRAFTABL_B ;AN006;JW | ||
| 513 | S_GRAFTABL_B DW M_GRAFTABL_B ;AN006;JW | ||
| 514 | P_GRAFTABL_B DB 'B:\GRAFTABL.COM ' ;AN006;JW space for ASCII-Z conversion | ||
| 515 | M_GRAFTABL_B EQU $ - P_GRAFTABL_B - 1 ;AN006;JW | ||
| 516 | ; | ||
| 517 | PUBLIC S_GRAPHICS_B ;AN006;JW | ||
| 518 | S_GRAPHICS_B DW M_GRAPHICS_B ;AN006;JW | ||
| 519 | P_GRAPHICS_B DB 'B:\GRAPHICS.COM ' ;AN006;JW space for ASCII-Z conversion | ||
| 520 | M_GRAPHICS_B EQU $ - P_GRAPHICS_B - 1 ;AN006;JW | ||
| 521 | ; | ||
| 522 | PUBLIC S_GRAPHPRO_B ;AN006;JW | ||
| 523 | S_GRAPHPRO_B DW M_GRAPHPRO_B ;AN006;JW | ||
| 524 | P_GRAPHPRO_B DB 'B:\GRAPHICS.PRO ' ;AN006;JW space for ASCII-Z conversion | ||
| 525 | M_GRAPHPRO_B EQU $ - P_GRAPHPRO_B - 1 ;AN006;JW | ||
| 526 | ; | ||
| 527 | PUBLIC S_RECOVER_B ;AN007;JW | ||
| 528 | S_RECOVER_B DW M_RECOVER_B ;AN007;JW | ||
| 529 | P_RECOVER_B DB 'B:\RECOVER.COM ' ;AN007;JW space for ASCII-Z conversion | ||
| 530 | M_RECOVER_B EQU $ - P_RECOVER_B - 1 ;AN007;JW | ||
| 531 | ; | ||
| 532 | PUBLIC S_FASTOPEN_B ;AN007;JW | ||
| 533 | S_FASTOPEN_B DW M_FASTOPEN_B ;AN007;JW | ||
| 534 | P_FASTOPEN_B DB 'B:\FASTOPEN.EXE ' ;AN007;JW space for ASCII-Z conversion | ||
| 535 | M_FASTOPEN_B EQU $ - P_FASTOPEN_B - 1 ;AN007;JW | ||
| 536 | ; | ||
| 537 | PUBLIC S_VDISK_C ;AN006;JW | ||
| 538 | S_VDISK_C DW M_VDISK_C ;AN006;JW | ||
| 539 | P_VDISK_C DB '\RAMDRIVE.SYS ' ;AN006;JW space for ASCII-Z conversion | ||
| 540 | M_VDISK_C EQU $ - P_VDISK_C - 1 ;AN006;JW | ||
| 541 | ; | ||
| 542 | PUBLIC S_ANSI_C ;AN006;JW | ||
| 543 | S_ANSI_C DW M_ANSI_C ;AN006;JW | ||
| 544 | P_ANSI_C DB '\ANSI.SYS ' ;AN006;JW space for ASCII-Z conversion | ||
| 545 | M_ANSI_C EQU $ - P_ANSI_C - 1 ;AN006;JW | ||
| 546 | ; | ||
| 547 | PUBLIC S_APPEND_C ;AN006;JW | ||
| 548 | S_APPEND_C DW M_APPEND_C ;AN006;JW | ||
| 549 | P_APPEND_C DB '\APPEND.EXE ' ;AN006;JW space for ASCII-Z conversion | ||
| 550 | M_APPEND_C EQU $ - P_APPEND_C - 1 ;AN006;JW | ||
| 551 | ; | ||
| 552 | PUBLIC S_GRAFTABL_C ;AN006;JW | ||
| 553 | S_GRAFTABL_C DW M_GRAFTABL_C ;AN006;JW | ||
| 554 | P_GRAFTABL_C DB '\GRAFTABL.COM ' ;AN006;JW space for ASCII-Z conversion | ||
| 555 | M_GRAFTABL_C EQU $ - P_GRAFTABL_C - 1 ;AN006;JW | ||
| 556 | ; | ||
| 557 | PUBLIC S_GRAPHICS_C ;AN006;JW | ||
| 558 | S_GRAPHICS_C DW M_GRAPHICS_C ;AN006;JW | ||
| 559 | P_GRAPHICS_C DB '\GRAPHICS.COM ' ;AN006;JW space for ASCII-Z conversion | ||
| 560 | M_GRAPHICS_C EQU $ - P_GRAPHICS_C - 1 ;AN006;JW | ||
| 561 | ; | ||
| 562 | PUBLIC S_GRAPHPRO_C ;AN006;JW | ||
| 563 | S_GRAPHPRO_C DW M_GRAPHPRO_C ;AN006;JW | ||
| 564 | P_GRAPHPRO_C DB '\GRAPHICS.PRO ' ;AN006;JW space for ASCII-Z conversion | ||
| 565 | M_GRAPHPRO_C EQU $ - P_GRAPHPRO_C - 1 ;AN006;JW | ||
| 566 | ; | ||
| 567 | PUBLIC S_RECOVER_C ;AN007;JW | ||
| 568 | S_RECOVER_C DW M_RECOVER_C ;AN007;JW | ||
| 569 | P_RECOVER_C DB '\RECOVER.COM ' ;AN007;JW space for ASCII-Z conversion | ||
| 570 | M_RECOVER_C EQU $ - P_RECOVER_C - 1 ;AN007;JW | ||
| 571 | ; | ||
| 572 | PUBLIC S_FASTOPEN_C ;AN007;JW | ||
| 573 | S_FASTOPEN_C DW M_FASTOPEN_C ;AN007;JW | ||
| 574 | P_FASTOPEN_C DB '\FASTOPEN.EXE ' ;AN007;JW space for ASCII-Z conversion | ||
| 575 | M_FASTOPEN_C EQU $ - P_FASTOPEN_C - 1 ;AN007;JW | ||
| 576 | ; | ||
| 577 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 578 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/SERVICES.ASM b/v4.0/src/SELECT/SERVICES.ASM new file mode 100644 index 0000000..851c1bd --- /dev/null +++ b/v4.0/src/SELECT/SERVICES.ASM | |||
| @@ -0,0 +1,899 @@ | |||
| 1 | |||
| 2 | |||
| 3 | PAGE 60,132 ;AN000; | ||
| 4 | NAME SERVICES ;AN000; | ||
| 5 | TITLE SERVICES - DOS - SELECT.EXE ;AN000; | ||
| 6 | SUBTTL services.asm ;AN000; | ||
| 7 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 8 | ; | ||
| 9 | ; | ||
| 10 | ; SERVICES.ASM: Copyright 1988 Microsoft | ||
| 11 | ; | ||
| 12 | ; | ||
| 13 | ; CHANGE HISTORY: | ||
| 14 | ; | ||
| 15 | ; AN000 | ||
| 16 | ; AN003 - DCR 225 | ||
| 17 | ; | ||
| 18 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 19 | EXTRN INC_KS:WORD ;AN000; | ||
| 20 | EXTRN IN_ICBID:WORD ;AN000; | ||
| 21 | EXTRN CRD_CCBVECOFF:WORD ;AN000; | ||
| 22 | EXTRN CRD_CCBVECSEG:WORD ;AN000; | ||
| 23 | EXTRN IN_CCBVECSEG:WORD ;AN000; | ||
| 24 | EXTRN IN_CCBVECOFF:WORD ;AN000; | ||
| 25 | EXTRN WR_HLPOPT:WORD ;AN000; | ||
| 26 | EXTRN WR_HLPROW:WORD ;AN000; | ||
| 27 | EXTRN WR_HCBCONT:WORD ;AN000; | ||
| 28 | EXTRN WR_SCBID:WORD ;AN000; | ||
| 29 | EXTRN WR_DRETLEN:WORD ;AN000; | ||
| 30 | EXTRN WR_DRETOFF:WORD ;AN000; | ||
| 31 | EXTRN WR_DRETSEG:WORD ;AN000; | ||
| 32 | EXTRN QM_ID:WORD ;AN000; | ||
| 33 | EXTRN QM_OPT1:WORD ;AN000; | ||
| 34 | EXTRN QM_ACTIVEPAN:WORD ;AN000; | ||
| 35 | EXTRN S_USER_STRING:WORD ;AN000; | ||
| 36 | EXTRN P_USER_STRING:BYTE ;AN000; | ||
| 37 | EXTRN I_USER_INDEX:WORD ;AN000; | ||
| 38 | EXTRN N_USER_FUNC:WORD ;AN000; | ||
| 39 | EXTRN WR_REFBUF:WORD ;AN000; | ||
| 40 | EXTRN WR_REFIELDCNT:WORD ;AN000; | ||
| 41 | EXTRN WR_REFID:WORD ;AN000; | ||
| 42 | EXTRN QM_OPT2:WORD ;AN000; | ||
| 43 | EXTRN WR_MAXREFID:ABS ;AN000; | ||
| 44 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 45 | ; | ||
| 46 | ; | ||
| 47 | ; | ||
| 48 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 49 | SELECT SEGMENT PARA PUBLIC 'SELECT' ;AN000;segment for far routine | ||
| 50 | ASSUME CS:SELECT ;AN000; | ||
| 51 | ; | ||
| 52 | INCLUDE MACROS.INC ;AN000; | ||
| 53 | INCLUDE PCEQUATE.INC ;AN000; | ||
| 54 | INCLUDE CASTRUC.INC ;AN000; | ||
| 55 | INCLUDE CASVAR.INC ;AN000; | ||
| 56 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 57 | ; | ||
| 58 | ; INIT_PQUEUE_CALL | ||
| 59 | ; | ||
| 60 | ; Entry: | ||
| 61 | ; AX = panel id | ||
| 62 | ; | ||
| 63 | ; | ||
| 64 | ; Exit: | ||
| 65 | ; none | ||
| 66 | ; | ||
| 67 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 68 | EXTRN PCDISPQ_CALL:NEAR ;AN000; | ||
| 69 | ; | ||
| 70 | PUBLIC INIT_PQUEUE_CALL ;AN000; | ||
| 71 | INIT_PQUEUE_CALL PROC ;AN000; | ||
| 72 | MOV QM_OPT1,QM_CLSPAN ;AN000;clear parent panel queue | ||
| 73 | OR QM_OPT1,QM_CLSCHD ;AN000;clear parent panel queue | ||
| 74 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 75 | MOV QM_ACTIVEPAN,AX ;AN000;current active parent panel | ||
| 76 | MOV QM_OPT1,QM_PUSHPAN ;AN000;push parent panels | ||
| 77 | OR QM_OPT2,QM_BREAKON ;AN000;break on | ||
| 78 | CALL PREPARE_PANEL_CALL ;AN000;add panel to display queue | ||
| 79 | MOV WR_REFBUF,AX ;AN000;update the field refresh buffer! | ||
| 80 | XOR AX,AX ;AN000; | ||
| 81 | MOV WR_REFIELDCNT,AX ;AN000; | ||
| 82 | MOV QM_OPT2,AX ;AN000;set options back off... | ||
| 83 | RET ;AN000; | ||
| 84 | INIT_PQUEUE_CALL ENDP ;AN000; | ||
| 85 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 86 | ; | ||
| 87 | ; AX=panel | ||
| 88 | ; | ||
| 89 | ; | ||
| 90 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 91 | ; | ||
| 92 | PUBLIC PREPARE_PANEL_CALL ;AN000; | ||
| 93 | PREPARE_PANEL_CALL PROC ;AN000; | ||
| 94 | PUSH AX ;AN000; | ||
| 95 | PUSH BX ;AN000; | ||
| 96 | MOV BX,AX ;AN000; | ||
| 97 | MOV QM_ID,AX ;AN000;parent PCB number | ||
| 98 | MOV AX, 0ADC0H ;AN000; SELECT PANEL INTERFACE | ||
| 99 | INT 2FH ;AN000; | ||
| 100 | CALL PCDISPQ_CALL ;AN000;update display queue | ||
| 101 | POP BX ;AN000; | ||
| 102 | POP AX ;AN000; | ||
| 103 | RET ;AN000; | ||
| 104 | PREPARE_PANEL_CALL ENDP ;AN000; | ||
| 105 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 106 | ; | ||
| 107 | ; AX=input | ||
| 108 | ; BX=index | ||
| 109 | ; CX=f_keys&_LEN | ||
| 110 | ; DX=offset f_keys | ||
| 111 | ; | ||
| 112 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 113 | ; | ||
| 114 | EXTRN GET_SCB:NEAR ;AN000; | ||
| 115 | EXTRN ADJUST_UP:NEAR ;AN000; | ||
| 116 | EXTRN ADJUST_DOWN:NEAR ;AN000; | ||
| 117 | EXTRN GET_SCROLL_CALL:NEAR ;AN000; | ||
| 118 | EXTRN HANDLE_F3:NEAR ;AN000; | ||
| 119 | ; | ||
| 120 | PUBLIC EXEC_SCROLL_CALL ;AN000; | ||
| 121 | EXEC_SCROLL_CALL PROC ;AN000; | ||
| 122 | PUSH ES ;AN000; | ||
| 123 | MOV WR_SCBID,AX ;AN000;get current scrolling field ID | ||
| 124 | ; | ||
| 125 | MOV WR_DRETLEN,CX ;AN000;get dynamic return string length | ||
| 126 | MOV WR_DRETOFF,DX ;AN000; | ||
| 127 | MOV CX,DS ;AN000;*********;get dynamic return string segment | ||
| 128 | MOV WR_DRETSEG,CX ;AN000; | ||
| 129 | ; | ||
| 130 | PUSH BX ;AN000; | ||
| 131 | MOV BX,WR_SCBID ;AN000; | ||
| 132 | CALL GET_SCB ;AN000; | ||
| 133 | POP BX ;AN000; | ||
| 134 | ; | ||
| 135 | MOV AX,BX ;AN000;initialize at list top | ||
| 136 | PUSH BX ;AN000; | ||
| 137 | MOV BX,WR_SCBID ;AN000; | ||
| 138 | CALL ADJUST_UP ;AN000; | ||
| 139 | POP BX ;AN000; | ||
| 140 | ; | ||
| 141 | ESC_0: PUSH ES:[DI]+SCB_OPT1 ;AN000; | ||
| 142 | PUSH ES:[DI]+SCB_OPT2 ;AN000; | ||
| 143 | PUSH ES:[DI]+SCB_OPT3 ;AN000; | ||
| 144 | PUSH ES:[DI]+SCB_NUMLINE ;AN000; | ||
| 145 | ; | ||
| 146 | CALL GET_SCROLL_CALL ;AN000;display and process scroll field | ||
| 147 | ; | ||
| 148 | POP ES:[DI]+SCB_NUMLINE ;AN000;GHG CAS BUG............. | ||
| 149 | POP ES:[DI]+SCB_OPT3 ;AN000; | ||
| 150 | POP ES:[DI]+SCB_OPT2 ;AN000; | ||
| 151 | POP ES:[DI]+SCB_OPT1 ;AN000; | ||
| 152 | MOV AX,ES:[DI]+SCB_CURELE ;AN000; | ||
| 153 | ; | ||
| 154 | CMP ES:[DI]+SCB_KS,F3*256 ;AN000;get last keystroke | ||
| 155 | JNE ESC_1 ;AN000; | ||
| 156 | ; | ||
| 157 | CALL HANDLE_F3 ;AN000; | ||
| 158 | JNC ESC_0 ;AN000; | ||
| 159 | ; | ||
| 160 | ESC_1: PUSH BX ;AN000; | ||
| 161 | MOV BX,WR_SCBID ;AN000; | ||
| 162 | CALL ADJUST_DOWN ;AN000; | ||
| 163 | POP BX ;AN000; | ||
| 164 | MOV I_USER_INDEX,AX ;AN000; | ||
| 165 | ; | ||
| 166 | MOV AX,ES:[DI]+SCB_KS ;AN000;get last keystroke | ||
| 167 | MOV N_USER_FUNC,AX ;AN000; | ||
| 168 | POP ES ;AN000; | ||
| 169 | RET ;AN000; | ||
| 170 | EXEC_SCROLL_CALL ENDP ;AN000; | ||
| 171 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 172 | ; | ||
| 173 | ; | ||
| 174 | ; AX=input | ||
| 175 | ; BX=index | ||
| 176 | ; | ||
| 177 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 178 | EXTRN PCSLCTP_CALL:NEAR ;AN000; | ||
| 179 | EXTRN GET_PCB:NEAR ;AN000; | ||
| 180 | ; | ||
| 181 | PUBLIC INIT_SCROLL_CALL ;AN000; | ||
| 182 | INIT_SCROLL_CALL PROC ;AN000; | ||
| 183 | PUSH ES ;AN000; | ||
| 184 | MOV WR_SCBID,AX ;AN000;get current scrolling field ID | ||
| 185 | ; | ||
| 186 | PUSH BX ;AN000; | ||
| 187 | MOV BX,AX ;AN000; | ||
| 188 | CALL GET_SCB ;AN000; | ||
| 189 | POP BX ;AN000; | ||
| 190 | ; | ||
| 191 | MOV AX,BX ;AN000; | ||
| 192 | OR AX,AX ;AN000; | ||
| 193 | JNZ ISC_0 ;AN000; | ||
| 194 | OR ES:[DI]+SCB_OPT2,SCB_ROTN ;AN000; | ||
| 195 | ; | ||
| 196 | ISC_0: PUSH BX ;AN000; | ||
| 197 | MOV BX,WR_SCBID ;AN000; | ||
| 198 | CALL ADJUST_UP ;AN000; | ||
| 199 | POP BX ;AN000; | ||
| 200 | MOV ES:[DI]+SCB_TOPELE,1 ;AN000;intialize parameters | ||
| 201 | MOV ES:[DI]+SCB_CURELE,AX ;AN000; | ||
| 202 | MOV BX,QM_ACTIVEPAN ;AN000;get the active panel number | ||
| 203 | CALL GET_PCB ;AN000;ES:DI address of panel PCB | ||
| 204 | ; | ||
| 205 | PUSH ES:[DI]+PCB_UROW ;AN000; ;get active panel row | ||
| 206 | PUSH ES:[DI]+PCB_UCOL ;AN000; ;get active panel column | ||
| 207 | PUSH ES:[DI]+PCB_CCBID ;AN000;get active panel color index | ||
| 208 | ; | ||
| 209 | MOV BX,WR_SCBID ;AN000;get PCSLCTP field | ||
| 210 | CALL GET_SCB ;AN000;ES:DI points to SCB | ||
| 211 | ; | ||
| 212 | POP ES:[DI]+SCB_CCBID ;AN000;get the panel's current color ind | ||
| 213 | POP ES:[DI]+SCB_RELCOL ;AN000;set the panel's relative column | ||
| 214 | POP ES:[DI]+SCB_RELROW ;AN000;set the panel's relative row | ||
| 215 | ; | ||
| 216 | MOV AX,SCROLLOBJID ;AN000; scroll_object type | ||
| 217 | MOV BX,WR_SCBID ;AN000; scroll_id | ||
| 218 | CALL ADD_REFRESH ;AN000; | ||
| 219 | POP ES ;AN000; | ||
| 220 | RET ;AN000; | ||
| 221 | INIT_SCROLL_CALL ENDP ;AN000; | ||
| 222 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 223 | ; | ||
| 224 | ; | ||
| 225 | ; AX=input | ||
| 226 | ; BX=index | ||
| 227 | ; | ||
| 228 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 229 | PUBLIC INIT_SCROLL_W_LIST_CALL ;AN000; | ||
| 230 | INIT_SCROLL_W_LIST_CALL PROC ;AN000; | ||
| 231 | PUSH ES ;AN000; | ||
| 232 | PUSH BX ;AN000; | ||
| 233 | PUSH CX ;AN000; | ||
| 234 | PUSH DX ;AN000; | ||
| 235 | PUSH SI ;AN000; | ||
| 236 | PUSH DI ;AN000; | ||
| 237 | ; | ||
| 238 | MOV WR_SCBID,AX ;AN000;get current scrolling field ID | ||
| 239 | MOV BX,AX ;AN000; | ||
| 240 | CALL GET_SCB ;AN000; | ||
| 241 | ; | ||
| 242 | POP ES:[DI]+SCB_OAPOFF ;AN000; | ||
| 243 | POP ES:[DI]+SCB_OAPSEG ;AN000; | ||
| 244 | POP ES:[DI]+SCB_OASLEN ;AN000; | ||
| 245 | POP ES:[DI]+SCB_NUMELE ;AN000; | ||
| 246 | POP ES:[DI]+SCB_WIDTH ;AN000; | ||
| 247 | ; | ||
| 248 | PUSH ES:[DI]+SCB_OAPSEG ;AN000; | ||
| 249 | POP ES:[DI]+SCB_OASSEG ;AN000; | ||
| 250 | POP ES ;AN000; | ||
| 251 | RET ;AN000; | ||
| 252 | INIT_SCROLL_W_LIST_CALL ENDP ;AN000; | ||
| 253 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 254 | ; | ||
| 255 | ; | ||
| 256 | ; AX=input | ||
| 257 | ; CX=num_ele | ||
| 258 | ; | ||
| 259 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 260 | PUBLIC INIT_SCROLL_W_NUM_CALL ;AN000; | ||
| 261 | INIT_SCROLL_W_NUM_CALL PROC ;AN000; | ||
| 262 | PUSH ES ;AN000; | ||
| 263 | PUSH AX ;AN000;save current scroll field ID | ||
| 264 | MOV BX,AX ;AN000; | ||
| 265 | MOV AX,CX ;AN000;initialize at list top | ||
| 266 | CALL ADJUST_UP ;AN000; | ||
| 267 | ; | ||
| 268 | POP BX ;AN000;restore scroll field ID | ||
| 269 | PUSH AX ;AN000; | ||
| 270 | CALL GET_SCB ;AN000; | ||
| 271 | POP ES:[DI]+SCB_NUMELE ;AN000; | ||
| 272 | POP ES ;AN000; | ||
| 273 | RET ;AN000; | ||
| 274 | INIT_SCROLL_W_NUM_CALL ENDP ;AN000; | ||
| 275 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 276 | ; | ||
| 277 | ; | ||
| 278 | ; AX=input | ||
| 279 | ; BX=index | ||
| 280 | ; | ||
| 281 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 282 | PUBLIC SET_SCROLL_COLOUR ;AN000; | ||
| 283 | SET_SCROLL_COLOUR PROC ;AN000; | ||
| 284 | PUSH ES ;AN000; | ||
| 285 | CALL GET_SCB ;AN000;ES:DI points to SCB | ||
| 286 | MOV ES:[DI]+SCB_CCBID,AX ;AN000;set the panel's current color ind | ||
| 287 | POP ES ;AN000; | ||
| 288 | RET ;AN000; | ||
| 289 | SET_SCROLL_COLOUR ENDP ;AN000; | ||
| 290 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 291 | ; | ||
| 292 | ; | ||
| 293 | ; AX=input | ||
| 294 | ; BX=index | ||
| 295 | ; | ||
| 296 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 297 | ; | ||
| 298 | PUBLIC SET_SCROLL_CALL ;AN000; | ||
| 299 | SET_SCROLL_CALL PROC ;AN000; | ||
| 300 | PUSH ES ;AN000; | ||
| 301 | MOV WR_SCBID,AX ;AN000;get current scrolling field ID | ||
| 302 | ; | ||
| 303 | PUSH BX ;AN000; | ||
| 304 | MOV BX,AX ;AN000; | ||
| 305 | CALL GET_SCB ;AN000; | ||
| 306 | POP BX ;AN000; | ||
| 307 | ; | ||
| 308 | PUSH ES:[DI]+SCB_OPT1 ;AN000; | ||
| 309 | PUSH ES:[DI]+SCB_OPT2 ;AN000; | ||
| 310 | ; | ||
| 311 | OR ES:[DI]+SCB_OPT1,SCB_RD ;AN000; | ||
| 312 | MOV AX,BX ;AN000; | ||
| 313 | OR AX,AX ;AN000; | ||
| 314 | JNZ SSC_0 ;AN000; | ||
| 315 | OR ES:[DI]+SCB_OPT2,SCB_ROTN ;AN000; | ||
| 316 | ; | ||
| 317 | SSC_0: PUSH BX ;AN000; | ||
| 318 | MOV BX,WR_SCBID ;AN000; | ||
| 319 | CALL ADJUST_UP ;AN000; | ||
| 320 | POP BX ;AN000; | ||
| 321 | MOV ES:[DI]+SCB_TOPELE,1 ;AN000;intialize parameters | ||
| 322 | MOV ES:[DI]+SCB_CURELE,AX ;AN000; | ||
| 323 | MOV BX,QM_ACTIVEPAN ;AN000;get the active panel number | ||
| 324 | CALL GET_PCB ;AN000;ES:DI address of panel PCB | ||
| 325 | ; | ||
| 326 | PUSH ES:[DI]+PCB_UROW ;AN000; ;get active panel row | ||
| 327 | PUSH ES:[DI]+PCB_UCOL ;AN000; ;get active panel column | ||
| 328 | PUSH ES:[DI]+PCB_CCBID ;AN000;get active panel color index | ||
| 329 | ; | ||
| 330 | MOV BX,WR_SCBID ;AN000;get PCSLCTP field | ||
| 331 | CALL GET_SCB ;AN000;ES:DI points to SCB | ||
| 332 | ; | ||
| 333 | POP ES:[DI]+SCB_CCBID ;AN000;get the panel's current color ind | ||
| 334 | POP ES:[DI]+SCB_RELCOL ;AN000;set the panel's relative column | ||
| 335 | POP ES:[DI]+SCB_RELROW ;AN000;set the panel's relative row | ||
| 336 | INC ES:[DI]+SCB_CCBID ;AN000;INCREMENT COLOUR INDEX TO MAKE IT DIFFERENT ************** | ||
| 337 | ; | ||
| 338 | AND ES:[DI]+SCB_OPT1,NOT SCB_UKS;AN000; | ||
| 339 | CALL PCSLCTP_CALL ;AN000;display scroll field | ||
| 340 | ; | ||
| 341 | POP ES:[DI]+SCB_OPT2 ;AN000; | ||
| 342 | POP ES:[DI]+SCB_OPT1 ;AN000; | ||
| 343 | POP ES ;AN000; | ||
| 344 | RET ;AN000; | ||
| 345 | SET_SCROLL_CALL ENDP ;AN000; | ||
| 346 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 347 | ; | ||
| 348 | ; | ||
| 349 | ; | ||
| 350 | ; | ||
| 351 | ; | ||
| 352 | ; | ||
| 353 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 354 | EXTRN PCPANEL_CALL:NEAR ;AN000; | ||
| 355 | ; | ||
| 356 | PUBLIC DISPLAY_PANEL_CALL ;AN000; | ||
| 357 | DISPLAY_PANEL_CALL PROC ;AN000; | ||
| 358 | MOV BX,0 ;AN000; | ||
| 359 | MOV AX,0ADC0H ;AN000; | ||
| 360 | INT 2FH ;AN000; | ||
| 361 | XOR AX,AX ;AN000;turn break option OFF | ||
| 362 | CMP WR_REFIELDCNT,0 ;AN000; | ||
| 363 | JE DP_10 ;AN000; | ||
| 364 | INC AX ;AN000;turn break option ON | ||
| 365 | DP_10: CALL PCPANEL_CALL ;AN000;display panel | ||
| 366 | RET ;AN000; | ||
| 367 | DISPLAY_PANEL_CALL ENDP ;AN000; | ||
| 368 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 369 | ; | ||
| 370 | ; | ||
| 371 | ; | ||
| 372 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 373 | EXTRN GET_KEY:NEAR ;AN000; | ||
| 374 | ; | ||
| 375 | PUBLIC GET_FUNCTION_CALL ;AN000; | ||
| 376 | GET_FUNCTION_CALL PROC ;AN000; | ||
| 377 | MOV WR_DRETLEN,CX ;AN000;get return string length | ||
| 378 | MOV AX,DX ;AN000;get return string offset | ||
| 379 | MOV WR_DRETOFF,AX ;AN000; | ||
| 380 | MOV AX,DS ;AN000;get return string segment | ||
| 381 | MOV WR_DRETSEG,AX ;AN000; | ||
| 382 | GFC_0: CALL GET_KEY ;AN000; | ||
| 383 | ; | ||
| 384 | MOV AX,INC_KS ;AN003;GHG | ||
| 385 | MOV N_USER_FUNC,AX ;AN003;GHG | ||
| 386 | ;GHG ;AN003; | ||
| 387 | CMP AX,F3*256 ;AN003;GHG | ||
| 388 | JNE GFC_1 ;AN003;GHG | ||
| 389 | ;GHG ;AN003; | ||
| 390 | CALL HANDLE_F3 ;AN003;GHG | ||
| 391 | JNC GFC_0 ;AN003;GHG | ||
| 392 | MOV N_USER_FUNC,F3*256 ;AN003;GHG set last keystroke to exit! | ||
| 393 | ; | ||
| 394 | GFC_1: RET ;AN000; | ||
| 395 | GET_FUNCTION_CALL ENDP ;AN000; | ||
| 396 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 397 | ; | ||
| 398 | ; AX,input | ||
| 399 | ; BX,string | ||
| 400 | ; CX,fkeys&_LEN | ||
| 401 | ; DX,fkeys | ||
| 402 | ; SI,field_length | ||
| 403 | ; | ||
| 404 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 405 | EXTRN CURSOROFF:NEAR ;AN000; | ||
| 406 | EXTRN GET_ICB:NEAR ;AN000; | ||
| 407 | EXTRN GET_INPUT_CALL:NEAR ;AN000; | ||
| 408 | ; | ||
| 409 | PUBLIC GET_STRING_CALL ;AN000; | ||
| 410 | GET_STRING_CALL PROC ;AN000; | ||
| 411 | PUSH ES ;AN000; | ||
| 412 | CALL CLEAR_USER_STRING ;AN000; | ||
| 413 | ; | ||
| 414 | MOV IN_ICBID,AX ;AN000; process input field x | ||
| 415 | ; | ||
| 416 | PUSH BX ;AN000; | ||
| 417 | MOV BX,AX ;AN000; | ||
| 418 | CALL GET_ICB ;AN000; | ||
| 419 | POP BX ;AN000; | ||
| 420 | ; | ||
| 421 | MOV WR_DRETLEN,CX ;AN000; SET RETURN KEYS | ||
| 422 | MOV WR_DRETOFF,DX ;AN000; | ||
| 423 | MOV AX,DS ;AN000; | ||
| 424 | MOV WR_DRETSEG,AX ;AN000; | ||
| 425 | ; | ||
| 426 | MOV ES:[DI]+ICB_WIDTH,SI ;AN000;GHG | ||
| 427 | MOV AX,SI ;AN000;GHG | ||
| 428 | ADD AX,ES:[DI]+ICB_COL ;AN000;GHG | ||
| 429 | CMP AX,75 ;AN000;GHG | ||
| 430 | JB GSC_10 ;AN000;GHG | ||
| 431 | MOV AX,70 ;AN000;GHG | ||
| 432 | SUB AX,ES:[DI]+ICB_COL ;AN000;GHG | ||
| 433 | MOV ES:[DI]+ICB_WIDTH,AX ;AN000;GHG | ||
| 434 | GSC_10: ;AN000; | ||
| 435 | MOV ES:[DI]+ICB_FIELDLEN,SI ;AN000; size specified by si | ||
| 436 | MOV AX,[BX] ;AN000; | ||
| 437 | MOV ES:[DI]+ICB_DEFLEN,AX ;AN000; | ||
| 438 | INC AX ;AN000; | ||
| 439 | MOV ES:[DI]+ICB_CURCHAR,AX ;AN000; | ||
| 440 | MOV AX,BX ;AN000; | ||
| 441 | INC AX ;AN000; | ||
| 442 | INC AX ;AN000; | ||
| 443 | MOV ES:[DI]+ICB_DEFOFF,AX ;AN000; | ||
| 444 | MOV AX,DS ;AN000; | ||
| 445 | MOV ES:[DI]+ICB_DEFSEG,AX ;AN000; | ||
| 446 | ; | ||
| 447 | LEA AX,P_USER_STRING ;AN000; | ||
| 448 | MOV ES:[DI]+ICB_FIELDOFF,AX ;AN000; | ||
| 449 | MOV AX,DS ;AN000; | ||
| 450 | MOV ES:[DI]+ICB_FIELDSEG,AX ;AN000; | ||
| 451 | ; | ||
| 452 | PUSH CRD_CCBVECOFF ;AN000; | ||
| 453 | PUSH CRD_CCBVECSEG ;AN000; | ||
| 454 | POP IN_CCBVECSEG ;AN000; | ||
| 455 | POP IN_CCBVECOFF ;AN000; | ||
| 456 | ; | ||
| 457 | GSC_0: CALL GET_INPUT_CALL ;AN000; | ||
| 458 | MOV AX,ES:[DI]+ICB_KEYRET ;AN000; | ||
| 459 | MOV N_USER_FUNC,AX ;AN000; | ||
| 460 | ; | ||
| 461 | CMP AX,F3*256 ;AN000;get last keystroke | ||
| 462 | JNE GSC_1 ;AN000; | ||
| 463 | ; | ||
| 464 | CALL HANDLE_F3 ;AN000; | ||
| 465 | JNC GSC_0 ;AN000; | ||
| 466 | MOV N_USER_FUNC,F3*256 ;AN000;set last keystroke to exit! | ||
| 467 | ; | ||
| 468 | GSC_1:;;AN000;MOV AX,ES:[DI]+ICB_ENDBYTE ; | ||
| 469 | ; | ||
| 470 | MOV ax,ES:[DI]+ICB_FIELDLEN ;AN000; size specified by si | ||
| 471 | MOV S_USER_STRING,AX ;AN000; | ||
| 472 | call unpad_user_string ;AN000; | ||
| 473 | ; | ||
| 474 | CALL CURSOROFF ;AN000; | ||
| 475 | POP ES ;AN000; | ||
| 476 | RET ;AN000; | ||
| 477 | GET_STRING_CALL ENDP ;AN000; | ||
| 478 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 479 | ; | ||
| 480 | ; | ||
| 481 | ; AX,input | ||
| 482 | ; BX,string | ||
| 483 | ; | ||
| 484 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 485 | PUBLIC INIT_STRING_CALL ;AN000; | ||
| 486 | INIT_STRING_CALL PROC ;AN000; | ||
| 487 | PUSH ES ;AN000; | ||
| 488 | CALL CLEAR_USER_STRING ;AN000; | ||
| 489 | ; | ||
| 490 | MOV IN_ICBID,AX ;AN000; process input field x | ||
| 491 | ; | ||
| 492 | PUSH BX ;AN000; | ||
| 493 | MOV BX,AX ;AN000; | ||
| 494 | CALL GET_ICB ;AN000; | ||
| 495 | POP BX ;AN000; | ||
| 496 | ; | ||
| 497 | MOV ES:[DI]+ICB_WIDTH,SI ;AN000;GHG | ||
| 498 | MOV AX,SI ;AN000;GHG | ||
| 499 | ADD AX,ES:[DI]+ICB_COL ;AN000;GHG | ||
| 500 | CMP AX,75 ;AN000;GHG | ||
| 501 | JB ISC_10 ;AN000;GHG | ||
| 502 | MOV AX,70 ;AN000;GHG | ||
| 503 | SUB AX,ES:[DI]+ICB_COL ;AN000;GHG | ||
| 504 | MOV ES:[DI]+ICB_WIDTH,AX ;AN000;GHG | ||
| 505 | ; | ||
| 506 | ISC_10: MOV ES:[DI]+ICB_FIELDLEN,SI ;AN000; size specified by si | ||
| 507 | MOV AX,[BX] ;AN000; SETUP TO DISPLAY DEFAULT STRING | ||
| 508 | MOV ES:[DI]+ICB_DEFLEN,AX ;AN000; | ||
| 509 | INC AX ;AN000; | ||
| 510 | MOV ES:[DI]+ICB_CURCHAR,AX ;AN000; | ||
| 511 | MOV AX,BX ;AN000; | ||
| 512 | INC AX ;AN000; | ||
| 513 | INC AX ;AN000; | ||
| 514 | MOV ES:[DI]+ICB_DEFOFF,AX ;AN000; | ||
| 515 | MOV AX,DS ;AN000; | ||
| 516 | MOV ES:[DI]+ICB_DEFSEG,AX ;AN000; | ||
| 517 | ; | ||
| 518 | LEA AX,P_USER_STRING ;AN000; SETUP RETURN STRING ADDRESS | ||
| 519 | MOV ES:[DI]+ICB_FIELDOFF,AX ;AN000; | ||
| 520 | MOV AX,DS ;AN000; | ||
| 521 | MOV ES:[DI]+ICB_FIELDSEG,AX ;AN000; | ||
| 522 | ; | ||
| 523 | PUSH CRD_CCBVECOFF ;AN000; | ||
| 524 | PUSH CRD_CCBVECSEG ;AN000; | ||
| 525 | POP IN_CCBVECSEG ;AN000; | ||
| 526 | POP IN_CCBVECOFF ;AN000; | ||
| 527 | ; | ||
| 528 | MOV AX,INPUTOBJID ;AN000; input_object type | ||
| 529 | MOV BX,IN_ICBID ;AN000; scroll_id | ||
| 530 | CALL ADD_REFRESH ;AN000; | ||
| 531 | POP ES ;AN000; | ||
| 532 | RET ;AN000; | ||
| 533 | INIT_STRING_CALL ENDP ;AN000; | ||
| 534 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 535 | ; | ||
| 536 | ; | ||
| 537 | ; AX,input | ||
| 538 | ; BX,string | ||
| 539 | ; | ||
| 540 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 541 | ENTER_KEY DB 13 ;AN000; | ||
| 542 | ENTER_KEY_LEN EQU ($-ENTER_KEY) ;AN000; | ||
| 543 | ; | ||
| 544 | PUBLIC SET_STRING_CALL ;AN000; | ||
| 545 | SET_STRING_CALL PROC ;AN000; | ||
| 546 | PUSH ES ;AN000; | ||
| 547 | CALL CLEAR_USER_STRING ;AN000; | ||
| 548 | ; | ||
| 549 | MOV IN_ICBID,AX ;AN000; process input field x | ||
| 550 | ; | ||
| 551 | PUSH BX ;AN000; | ||
| 552 | MOV BX,AX ;AN000; | ||
| 553 | CALL GET_ICB ;AN000; | ||
| 554 | POP BX ;AN000; | ||
| 555 | ; | ||
| 556 | MOV ES:[DI]+ICB_WIDTH,SI ;AN000;GHG | ||
| 557 | MOV AX,SI ;AN000;GHG | ||
| 558 | ADD AX,ES:[DI]+ICB_COL ;AN000;GHG | ||
| 559 | CMP AX,75 ;AN000;GHG | ||
| 560 | JB SSC_10 ;AN000;GHG | ||
| 561 | MOV AX,70 ;AN000;GHG | ||
| 562 | SUB AX,ES:[DI]+ICB_COL ;AN000;GHG | ||
| 563 | MOV ES:[DI]+ICB_WIDTH,AX ;AN000;GHG | ||
| 564 | ; | ||
| 565 | SSC_10: MOV ES:[DI]+ICB_FIELDLEN,SI ;AN000; size specified by si | ||
| 566 | MOV AX,[BX] ;AN000; SETUP TO DISPLAY DEFAULT STRING | ||
| 567 | MOV ES:[DI]+ICB_DEFLEN,AX ;AN000; | ||
| 568 | INC AX ;AN000; | ||
| 569 | MOV ES:[DI]+ICB_CURCHAR,AX ;AN000; | ||
| 570 | MOV AX,BX ;AN000; | ||
| 571 | INC AX ;AN000; | ||
| 572 | INC AX ;AN000; | ||
| 573 | MOV ES:[DI]+ICB_DEFOFF,AX ;AN000; | ||
| 574 | MOV AX,DS ;AN000; | ||
| 575 | MOV ES:[DI]+ICB_DEFSEG,AX ;AN000; | ||
| 576 | ; | ||
| 577 | LEA AX,P_USER_STRING ;AN000; SETUP RETURN STRING ADDRESS | ||
| 578 | MOV ES:[DI]+ICB_FIELDOFF,AX ;AN000; | ||
| 579 | MOV AX,DS ;AN000; | ||
| 580 | MOV ES:[DI]+ICB_FIELDSEG,AX ;AN000; | ||
| 581 | ; | ||
| 582 | MOV WR_DRETLEN,ENTER_KEY_LEN;AN000; SET AUTO RETURN KEYS | ||
| 583 | LEA AX,ENTER_KEY ;AN000; | ||
| 584 | MOV WR_DRETOFF,AX ;AN000; | ||
| 585 | MOV AX,CS ;AN000; | ||
| 586 | MOV WR_DRETSEG,AX ;AN000; | ||
| 587 | ; | ||
| 588 | PUSH CRD_CCBVECOFF ;AN000; | ||
| 589 | PUSH CRD_CCBVECSEG ;AN000; | ||
| 590 | POP IN_CCBVECSEG ;AN000; | ||
| 591 | POP IN_CCBVECOFF ;AN000; | ||
| 592 | ; | ||
| 593 | PUSH ES:[DI]+ICB_OPT2 ;AN000; | ||
| 594 | OR ES:[DI]+ICB_OPT2,ICB_UFK;AN000; | ||
| 595 | MOV ES:[DI]+ICB_KEYRET,ENTER;AN000; | ||
| 596 | ; | ||
| 597 | CALL GET_INPUT_CALL ;AN000; | ||
| 598 | ; | ||
| 599 | POP ES:[DI]+ICB_OPT2 ;AN000; | ||
| 600 | ; | ||
| 601 | CALL CURSOROFF ;AN000; | ||
| 602 | POP ES ;AN000; | ||
| 603 | RET ;AN000; | ||
| 604 | SET_STRING_CALL ENDP ;AN000; | ||
| 605 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 606 | ; | ||
| 607 | ; | ||
| 608 | ; AX,input | ||
| 609 | ; SI,status_id | ||
| 610 | ; | ||
| 611 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 612 | PUBLIC INIT_SCROLL_STATUS_CALL ;AN000; | ||
| 613 | INIT_SCROLL_STATUS_cALL PROC ;AN000; | ||
| 614 | PUSH ES ;AN000; | ||
| 615 | MOV BX,AX ;AN000; | ||
| 616 | CALL GET_SCB ;AN000; | ||
| 617 | ; | ||
| 618 | MOV ES:[DI]+SCB_SELOFF,SI ;AN000; | ||
| 619 | MOV AX,DS ;AN000; | ||
| 620 | MOV ES:[DI]+SCB_SELSEG,AX ;AN000; | ||
| 621 | POP ES ;AN000; | ||
| 622 | RET ;AN000; | ||
| 623 | INIT_SCROLL_STATUS_CALL ENDP ;AN000; | ||
| 624 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 625 | ; | ||
| 626 | ; BX,index | ||
| 627 | ; DX,table | ||
| 628 | ; | ||
| 629 | ; | ||
| 630 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 631 | EXTRN PCMBEEP_CALL:NEAR ;AN000; | ||
| 632 | ; | ||
| 633 | PUBLIC TOGGLE_SUPPORT_CALL ;AN000; | ||
| 634 | TOGGLE_SUPPORT_CALL PROC ;AN000; | ||
| 635 | PUSH SI ;AN000; | ||
| 636 | DEC BX ;AN000; | ||
| 637 | SHL BX,1 ;AN000; | ||
| 638 | MOV SI,DX ;AN000; | ||
| 639 | MOV AX,[SI+BX] ;AN000; | ||
| 640 | CMP AX,SCB_ACTIVEON ;AN000; | ||
| 641 | JNE TS_1 ;AN000; | ||
| 642 | MOV AX,SCB_SELECTON ;AN000; | ||
| 643 | MOV [SI+BX],AX ;AN000; | ||
| 644 | JMP TS_4 ;AN000; | ||
| 645 | ; | ||
| 646 | TS_1: CMP AX,SCB_SELECTON ;AN000; | ||
| 647 | JNE TS_3 ;AN000; | ||
| 648 | MOV AX,SCB_ACTIVEON ;AN000; | ||
| 649 | MOV [SI+BX],AX ;AN000; | ||
| 650 | JMP TS_4 ;AN000; | ||
| 651 | ; | ||
| 652 | TS_3: CALL PCMBEEP_CALL ;AN000; | ||
| 653 | TS_4: POP SI ;AN000; | ||
| 654 | RET ;AN000; | ||
| 655 | TOGGLE_SUPPORT_CALL ENDP ;AN000; | ||
| 656 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 657 | ; | ||
| 658 | ; | ||
| 659 | ; | ||
| 660 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 661 | PUBLIC UNPAD_USER_STRING ;AN000; | ||
| 662 | UNPAD_USER_STRING PROC ;AN000; | ||
| 663 | PUSH SI ;AN000; | ||
| 664 | PUSH CX ;AN000; | ||
| 665 | LEA SI,P_USER_STRING ;AN000; | ||
| 666 | MOV CX,S_USER_STRING ;AN000; | ||
| 667 | ADD SI,CX ;AN000; | ||
| 668 | DEC SI ;AN000; | ||
| 669 | MOV AL,20H ;AN000; | ||
| 670 | ; | ||
| 671 | UUS_1: CMP [SI],AL ;AN000; | ||
| 672 | JA UUS_3 ;AN000; | ||
| 673 | DEC SI ;AN000; | ||
| 674 | LOOP UUS_1 ;AN000; | ||
| 675 | ; | ||
| 676 | UUS_3: MOV S_USER_STRING,CX ;AN000; | ||
| 677 | POP CX ;AN000; | ||
| 678 | POP SI ;AN000; | ||
| 679 | RET ;AN000; | ||
| 680 | UNPAD_USER_STRING ENDP ;AN000; | ||
| 681 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 682 | ; | ||
| 683 | ; | ||
| 684 | ; | ||
| 685 | ; | ||
| 686 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 687 | PUBLIC CLEAR_USER_STRING ;AN000; | ||
| 688 | CLEAR_USER_STRING PROC ;AN000; | ||
| 689 | PUSH SI ;AN000; | ||
| 690 | PUSH CX ;AN000; | ||
| 691 | PUSH AX ;AN000; | ||
| 692 | LEA SI,P_USER_STRING ;AN000; | ||
| 693 | MOV CX,110 ;AN000; | ||
| 694 | MOV AL,20H ;AN000; | ||
| 695 | ; | ||
| 696 | CUS_1: MOV [SI],AL ;AN000; | ||
| 697 | INC SI ;AN000; | ||
| 698 | LOOP CUS_1 ;AN000; | ||
| 699 | ; | ||
| 700 | POP AX ;AN000; | ||
| 701 | POP CX ;AN000; | ||
| 702 | POP SI ;AN000; | ||
| 703 | RET ;AN000; | ||
| 704 | CLEAR_USER_STRING ENDP ;AN000; | ||
| 705 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 706 | ; | ||
| 707 | ; BX,minimum | ||
| 708 | ; CX,maximum | ||
| 709 | ; AX=input | ||
| 710 | ; | ||
| 711 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 712 | PUBLIC CHECK_MIN_MAX ;AN000; | ||
| 713 | CHECK_MIN_MAX PROC ;AN000; | ||
| 714 | CMP AX,BX ;AN000; | ||
| 715 | JB CMM_3 ;AN000; | ||
| 716 | CMP AX,CX ;AN000; | ||
| 717 | JA CMM_3 ;AN000; | ||
| 718 | CLC ;AN000; | ||
| 719 | JMP CMM_5 ;AN000; | ||
| 720 | CMM_3: CALL PCMBEEP_CALL ;AN000; | ||
| 721 | STC ;AN000; | ||
| 722 | CMM_5: RET ;AN000; | ||
| 723 | CHECK_MIN_MAX ENDP ;AN000; | ||
| 724 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 725 | ; | ||
| 726 | ; | ||
| 727 | ; MOV AX,value | ||
| 728 | ; LEA BX,P_USER_STRING | ||
| 729 | ; CALL CONVERT_ASCII | ||
| 730 | ; MOV S_USER_STRING,AX | ||
| 731 | ; | ||
| 732 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 733 | TEN DW 10 ;AN000; | ||
| 734 | ; | ||
| 735 | PUBLIC CONVERT_ASCII ;AN000; | ||
| 736 | CONVERT_ASCII PROC ;AN000; | ||
| 737 | PUSH BX ;AN000; | ||
| 738 | PUSH CX ;AN000; | ||
| 739 | XOR CX,CX ;AN000; | ||
| 740 | ; | ||
| 741 | OR AX,AX ;AN000;test if input value is 0 | ||
| 742 | JNE CA_1 ;AN000; | ||
| 743 | ; | ||
| 744 | MOV CX,1 ;AN000; | ||
| 745 | MOV AX,1 ;AN000; | ||
| 746 | MOV DX,'0' ;AN000;if input=0, then put '0' on stack | ||
| 747 | PUSH DX ;AN000; | ||
| 748 | JMP CA_6 ;AN000; | ||
| 749 | ; | ||
| 750 | CA_1: OR AX,AX ;AN000; | ||
| 751 | JE CA_5 ;AN000; | ||
| 752 | ; | ||
| 753 | XOR DX,DX ;AN000; | ||
| 754 | DIV TEN ;AN000; | ||
| 755 | ADD DX,'0' ;AN000; | ||
| 756 | PUSH DX ;AN000; | ||
| 757 | INC CX ;AN000; | ||
| 758 | JMP CA_1 ;AN000; | ||
| 759 | ; | ||
| 760 | CA_5: MOV AX,CX ;AN000; | ||
| 761 | OR AX,AX ;AN000; | ||
| 762 | JZ CA_8 ;AN000; | ||
| 763 | ; | ||
| 764 | CA_6: POP [BX] ;AN000; | ||
| 765 | INC BX ;AN000; | ||
| 766 | LOOP CA_6 ;AN000; | ||
| 767 | ; | ||
| 768 | CA_8: POP CX ;AN000; | ||
| 769 | POP BX ;AN000; | ||
| 770 | RET ;AN000; | ||
| 771 | CONVERT_ASCII ENDP ;AN000; | ||
| 772 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 773 | ; | ||
| 774 | ; LEA BX,P_USER_STRING | ||
| 775 | ; MOV CX,S_USER_STRING | ||
| 776 | ; CALL CONVERT_NUMERIC | ||
| 777 | ; | ||
| 778 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 779 | PUBLIC CONVERT_NUMERIC ;AN000; | ||
| 780 | CONVERT_NUMERIC PROC ;AN000; | ||
| 781 | PUSH SI ;AN000; | ||
| 782 | PUSH CX ;AN000; | ||
| 783 | PUSH DX ;AN000; | ||
| 784 | XOR DX,DX ;AN000; | ||
| 785 | XOR AX,AX ;AN000; | ||
| 786 | ; | ||
| 787 | OR CX,CX ;AN000; | ||
| 788 | JZ CN_8 ;AN000; | ||
| 789 | ; | ||
| 790 | CN_3: MUL TEN ;AN000; | ||
| 791 | PUSH CX ;AN000; | ||
| 792 | MOV CL,[BX] ;AN000; | ||
| 793 | CMP CL,'0' ;AN000; | ||
| 794 | JB CN_4 ;AN000; | ||
| 795 | CMP CL,'9' ;AN000; | ||
| 796 | JA CN_4 ;AN000; | ||
| 797 | JMP CN_5 ;AN000; | ||
| 798 | CN_4: MOV CL,'0' ;AN000; | ||
| 799 | CN_5: SUB CL,'0' ;AN000; | ||
| 800 | XOR CH,CH ;AN000; | ||
| 801 | ADD AX,CX ;AN000; | ||
| 802 | POP CX ;AN000; | ||
| 803 | INC BX ;AN000; | ||
| 804 | LOOP CN_3 ;AN000; | ||
| 805 | ; | ||
| 806 | CN_8: POP DX ;AN000; | ||
| 807 | POP CX ;AN000; | ||
| 808 | POP SI ;AN000; | ||
| 809 | RET ;AN000; | ||
| 810 | CONVERT_NUMERIC ENDP ;AN000; | ||
| 811 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 812 | ; | ||
| 813 | ; AX = OBJECT ID | ||
| 814 | ; BX = FIELD ID | ||
| 815 | ; | ||
| 816 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 817 | PUBLIC ADD_REFRESH ;AN000; | ||
| 818 | ADD_REFRESH PROC ;AN000; | ||
| 819 | PUSH SI ;AN000; | ||
| 820 | LEA SI,WR_REFID ;AN000; | ||
| 821 | ADD SI,WR_REFIELDCNT ;AN000; | ||
| 822 | ADD SI,WR_REFIELDCNT ;AN000; | ||
| 823 | ADD SI,WR_REFIELDCNT ;AN000; | ||
| 824 | ADD SI,WR_REFIELDCNT ;AN000; | ||
| 825 | MOV [SI],AX ;AN000; | ||
| 826 | MOV [SI+2],BX ;AN000; | ||
| 827 | CMP WR_REFIELDCNT,WR_MAXREFID;AN000; | ||
| 828 | JAE AD_10 ;AN000; | ||
| 829 | INC WR_REFIELDCNT ;AN000; | ||
| 830 | AD_10: POP SI ;AN000; | ||
| 831 | RET ;AN000; | ||
| 832 | ADD_REFRESH ENDP ;AN000; | ||
| 833 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 834 | ; | ||
| 835 | ; AX,input | ||
| 836 | ; DX,maximum DESTINATION buffer size | ||
| 837 | ; SI,field_length | ||
| 838 | ; | ||
| 839 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 840 | PUBLIC RETURN_STRING_CALL ;AN000; | ||
| 841 | RETURN_STRING_CALL PROC ;AN000; | ||
| 842 | PUSHH <ES,DI,DS,SI,BX,CX> ;AN000; | ||
| 843 | ; | ||
| 844 | MOV BX,AX ;AN000; | ||
| 845 | CALL GET_ICB ;AN000; | ||
| 846 | ; | ||
| 847 | PUSH ES:[DI]+ICB_DEFSEG ;AN000; | ||
| 848 | MOV CX,ES:[DI]+ICB_DEFLEN ;AN000; | ||
| 849 | CMP DX,CX ;AN000;check if DEFAULT string > buffer | ||
| 850 | JAE RS_10 ;AN000; | ||
| 851 | MOV CX,DX ;AN000;only copy as much as possible | ||
| 852 | RS_10: MOV DI,ES:[DI]+ICB_DEFOFF ;AN000; | ||
| 853 | POP ES ;AN000; | ||
| 854 | ; | ||
| 855 | PUSH DS ;AN000; | ||
| 856 | PUSH SI ;AN000; | ||
| 857 | PUSH ES ;AN000; | ||
| 858 | PUSH DI ;AN000; | ||
| 859 | POP SI ;AN000; | ||
| 860 | POP DS ;AN000; | ||
| 861 | POP DI ;AN000; | ||
| 862 | POP ES ;AN000; | ||
| 863 | CLD ;AN000; | ||
| 864 | REP MOVSB ;AN000; | ||
| 865 | ; | ||
| 866 | POPP <CX,BX,SI,DS,DI,ES> ;AN000; | ||
| 867 | RET ;AN000; | ||
| 868 | RETURN_STRING_CALL ENDP ;AN000; | ||
| 869 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 870 | ; | ||
| 871 | ; AX,row | ||
| 872 | ; BX,panid | ||
| 873 | ; CX,col | ||
| 874 | ; DL,character | ||
| 875 | ; | ||
| 876 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 877 | PUBLIC INIT_CHAR_CALL ;AN000;JW | ||
| 878 | INIT_CHAR_CALL PROC ;AN000;JW | ||
| 879 | ; ;AN000;JW | ||
| 880 | PUSH DX ;AN000;JW | ||
| 881 | CALL GET_PCB ;AN000;JW | ||
| 882 | MUL ES:[DI]+PCB_WIDTH ;AN000;JW | ||
| 883 | ADD AX,CX ;AN000;JW | ||
| 884 | MOV SI,ES:[DI]+PCB_EXPANDOFF ;AN000;JW | ||
| 885 | ADD SI,AX ;AN000;JW | ||
| 886 | PUSH ES:[DI]+PCB_EXPANDSEG ;AN000;JW | ||
| 887 | POP ES ;AN000;JW | ||
| 888 | POP DX ;AN000;JW | ||
| 889 | MOV ES: BYTE PTR [SI],DL ;AN000;JW | ||
| 890 | ; ;AN000;JW | ||
| 891 | RET ;AN000;JW | ||
| 892 | INIT_CHAR_CALL ENDP ;AN000;JW | ||
| 893 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 894 | ; | ||
| 895 | ; | ||
| 896 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 897 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 898 | SELECT ENDS ;AN000; | ||
| 899 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/SSTUB.ASM b/v4.0/src/SELECT/SSTUB.ASM new file mode 100644 index 0000000..b62fdbc --- /dev/null +++ b/v4.0/src/SELECT/SSTUB.ASM | |||
| @@ -0,0 +1,209 @@ | |||
| 1 | |||
| 2 | |||
| 3 | TITLE SELECT Stub ;AN000; | ||
| 4 | SUBTTL SELSTUB.ASM ;AN000; | ||
| 5 | |||
| 6 | PAGE 60,132 ;AN000; | ||
| 7 | |||
| 8 | INCLUDE SYSMSG.INC ;AN000; | ||
| 9 | MSG_UTILNAME <SELECT> ;AN000; | ||
| 10 | |||
| 11 | CODE SEGMENT PARA PUBLIC 'CODE' ;AN000; | ||
| 12 | ASSUME CS:code ;AN000; | ||
| 13 | ASSUME DS:code ;AN000; | ||
| 14 | ASSUME ES:NOTHING ;AN000; | ||
| 15 | ASSUME SS:NOTHING ;AN000; | ||
| 16 | |||
| 17 | ORG 100H ;AN000; | ||
| 18 | MAIN PROC FAR ;AN000; | ||
| 19 | BEGIN: JMP A0 ;AN000; | ||
| 20 | |||
| 21 | prognm DB "SELECT.EXE",0 ;AN000; EXEC this program | ||
| 22 | |||
| 23 | execparm DW 0 ;AN000; environment string | ||
| 24 | DW 80H ;AN000; command string offset | ||
| 25 | comseg DW (?) ;AN000; command string segment | ||
| 26 | DW 5CH ;AN000; use the FCB's from this program | ||
| 27 | seg1 DW (?) ;AN000; . | ||
| 28 | DW 6CH ;AN000; use the FCB's from this program | ||
| 29 | seg2 DW (?) ;AN000; . | ||
| 30 | |||
| 31 | enter equ 13 ;AN000;ENTER key | ||
| 32 | escape equ 27 ;AN000;ESC key | ||
| 33 | |||
| 34 | EVEN ;AN000; | ||
| 35 | stck DB 255 DUP(0) ;AN000;stack | ||
| 36 | stck_beg DB 0 ;AN000; | ||
| 37 | |||
| 38 | A0: ;AN000; | ||
| 39 | MOV SP,OFFSET stck_beg ;AN000;setup local stack | ||
| 40 | |||
| 41 | CALL LOAD_MSG ;AN000; | ||
| 42 | MOV AX,10 ;AN000;insert SELECT diskette in drive A: | ||
| 43 | CALL DISPLAY_MSG ;AN000; | ||
| 44 | |||
| 45 | AGN: ;AN000; | ||
| 46 | XOR AH,AH ;AN000;get ENTER key | ||
| 47 | INT 16H ;AN000; | ||
| 48 | CMP AL,ESCAPE ;AN000;if ESC, then exit | ||
| 49 | JE EXIT ;AN000; | ||
| 50 | CMP AL,ENTER ;AN000;if ENTER | ||
| 51 | JE INPOK ;AN000; then continue | ||
| 52 | MOV AX,11 ;AN000;else, sound BELL | ||
| 53 | CALL DISPLAY_MSG ;AN000; | ||
| 54 | JMP AGN ;AN000;try again | ||
| 55 | INPOK: ;AN000; | ||
| 56 | CALL CHECK_DISKETTE ;AN000;ensure INSTALL diskette in drive | ||
| 57 | JNC DSKTOK ;AN000;if so, continue | ||
| 58 | CALL CLEAR_SCREEN ;AN032;SEH | ||
| 59 | MOV AX,11 ;AN000;else, sound BELL | ||
| 60 | CALL DISPLAY_MSG ;AN000; | ||
| 61 | MOV AX,10 ;AN032;SEH flash msg on screen to insert SELECT diskette | ||
| 62 | CALL DISPLAY_MSG ;AN032; if user has not inserted it | ||
| 63 | JMP AGN ;AN000;try again | ||
| 64 | DSKTOK: ;AN000; | ||
| 65 | CALL CLEAR_SCREEN ;AN000; | ||
| 66 | |||
| 67 | ; Issue SETBLOCK to free memory | ||
| 68 | |||
| 69 | PUSH CS ;AN000; restore ES pointing to this segment | ||
| 70 | POP ES ;AN000; . | ||
| 71 | LEA AX,endofcode ;AN000; get the address of the program end | ||
| 72 | MOV BL,16 ;AN000; get the paragraph size | ||
| 73 | DIV BL ;AN000; get the number of paragraphs | ||
| 74 | INC AL ;AN000; round up to next paragraph | ||
| 75 | SUB AH,AH ;AN000; clear high remainder | ||
| 76 | MOV BX,AX ;AN000; set up call | ||
| 77 | MOV AH,4AH ;AN000; setblock function code | ||
| 78 | INT 21H ;AN000; issue function to free memory | ||
| 79 | |||
| 80 | ; EXEC the main program | ||
| 81 | |||
| 82 | MOV AX,CS ;AN000; get our segment | ||
| 83 | MOV DS,AX ;AN000; | ||
| 84 | MOV comseg,AX ;AN000; put in parameter blocks | ||
| 85 | MOV seg1,AX ;AN000; . | ||
| 86 | MOV seg2,AX ;AN000; . | ||
| 87 | MOV DX,OFFSET prognm ;AN000; get a pointer to the program name | ||
| 88 | MOV BX,OFFSET execparm ;AN000; get a pointer to the program parms | ||
| 89 | MOV AX,4BH*256 ;AN000; get function code - load & execute | ||
| 90 | INT 21H ;AN000; exec SELECT | ||
| 91 | EXIT: ;AN000; | ||
| 92 | MOV AX,4C00H ;AN000; | ||
| 93 | INT 21H ;AN000; | ||
| 94 | RET ;AN000; | ||
| 95 | |||
| 96 | endofcode DB ? ;AN000; | ||
| 97 | |||
| 98 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 99 | ; Message Retriever code inserted at this point.... | ||
| 100 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 101 | MSG_SERVICES <MSGDATA> ;AN000; | ||
| 102 | MSG_SERVICES <NOVERCHECKmsg, DISPLAYmsg, LOADmsg>;AN000; | ||
| 103 | MSG_SERVICES <SELECT.CLA,SELECT.CLB>;AN000; | ||
| 104 | MSG_SERVICES <SELECT.CL1,SELECT.CL2>;AN000; | ||
| 105 | |||
| 106 | ;**************************************************************************** | ||
| 107 | ; | ||
| 108 | ; DISPLAY_MSG: Call the message retriever to display a message. | ||
| 109 | ; | ||
| 110 | ; INPUT: | ||
| 111 | ; AX = message number | ||
| 112 | ; | ||
| 113 | ; OUTPUT: | ||
| 114 | ; If CY = 1, there was an error displaying the message. | ||
| 115 | ; If CY = 0, there were no errors. | ||
| 116 | ; | ||
| 117 | ; OPERATION: | ||
| 118 | ; | ||
| 119 | ;**************************************************************************** | ||
| 120 | DISPLAY_MSG PROC NEAR ;AN000; | ||
| 121 | MOV BX, -1 ;AN000; HANDLE -1 ==> USE ONLY DOS FUNCTION 1-12 | ||
| 122 | MOV SI, 0 ;AN000; SUBSTITUTION LIST | ||
| 123 | MOV CX, 0 ;AN000; SUBSTITUTION COUNT | ||
| 124 | MOV DL, 00 ;AN000; DOS INT21H FUNCTION FOR INPUT 0==> NO INPUT | ||
| 125 | MOV DI, 0 ;AN000; INPUT BUFFER IF DL = 0AH | ||
| 126 | MOV DH, -1 ;AN000; MESSAGE CALL -1==> UTILITY MESSAGE | ||
| 127 | CALL SYSDISPMSG ;AN000; | ||
| 128 | RET ;AN000; | ||
| 129 | DISPLAY_MSG ENDP ;AN000; | ||
| 130 | |||
| 131 | ;**************************************************************************** | ||
| 132 | ; | ||
| 133 | ; LOAD_MSG: Load the message | ||
| 134 | ; | ||
| 135 | ; INPUT: | ||
| 136 | ; None | ||
| 137 | ; | ||
| 138 | ; OUTPUT: | ||
| 139 | ; None | ||
| 140 | ; | ||
| 141 | ;**************************************************************************** | ||
| 142 | LOAD_MSG PROC NEAR ;AN000; | ||
| 143 | CALL SYSLOADMSG ;AN000; | ||
| 144 | RET ;AN000; | ||
| 145 | LOAD_MSG ENDP ;AN000; | ||
| 146 | |||
| 147 | ;**************************************************************************** | ||
| 148 | ; | ||
| 149 | ; CLEAR_SCREEN: Clear the screen and move cursor to top of display | ||
| 150 | ; | ||
| 151 | ; INPUT: | ||
| 152 | ; None | ||
| 153 | ; | ||
| 154 | ; OUTPUT: | ||
| 155 | ; None | ||
| 156 | ; | ||
| 157 | ;**************************************************************************** | ||
| 158 | CLEAR_SCREEN PROC NEAR ;AN000; | ||
| 159 | |||
| 160 | MOV CX,0000H ;AN000;0,0 upper left of scroll | ||
| 161 | MOV DX,184FH ;AC032;SEH 24,79 lower right of screen | ||
| 162 | MOV BH,07H ;AN000;normal attribute | ||
| 163 | MOV AX,600H ;AN000;scroll screen | ||
| 164 | INT 10H ;AN000; | ||
| 165 | |||
| 166 | MOV DX,0000H ;AN000;move cursor to 0,0 | ||
| 167 | XOR BH,BH ;AN000;display page | ||
| 168 | MOV AH,2 ;AN000;move cursor | ||
| 169 | INT 10H ;AN000; | ||
| 170 | |||
| 171 | RET ;AN000; | ||
| 172 | |||
| 173 | CLEAR_SCREEN ENDP ;AN000; | ||
| 174 | |||
| 175 | ;**************************************************************************** | ||
| 176 | ; | ||
| 177 | ; CHECK_DISKETTE: Check for INSTALL diskette in drive A: | ||
| 178 | ; | ||
| 179 | ; INPUT: | ||
| 180 | ; None | ||
| 181 | ; | ||
| 182 | ; OUTPUT: | ||
| 183 | ; CY = 0 correct diskette in drive | ||
| 184 | ; CY = 1 incorrect diskette in drive | ||
| 185 | ; | ||
| 186 | ;**************************************************************************** | ||
| 187 | CHECK_DISKETTE PROC NEAR ;AN000; | ||
| 188 | PUSH DS ;AN000; | ||
| 189 | PUSH CS ;AN000; | ||
| 190 | POP DS ;AN000; | ||
| 191 | MOV DX,OFFSET dta ;AN000;set new dta | ||
| 192 | MOV AH,1AH ;AN000; | ||
| 193 | INT 21H ;AN000; | ||
| 194 | MOV DX,OFFSET prognm ;AN000;search for this file | ||
| 195 | XOR CX,CX ;AN000;search attribute | ||
| 196 | MOV AH,4EH ;AN000;find first matching file | ||
| 197 | INT 21H ;AN000; | ||
| 198 | POP DS ;AN000; | ||
| 199 | RET ;AN000; | ||
| 200 | CHECK_DISKETTE ENDP ;AN000; | ||
| 201 | |||
| 202 | DTA DB ? ;AN000;start of dummy DTA for find first | ||
| 203 | |||
| 204 | include msgdcl.inc | ||
| 205 | |||
| 206 | MAIN ENDP ;AN000; | ||
| 207 | CODE ENDS ;AN000; | ||
| 208 | END BEGIN ;AN000; | ||
| 209 | |||
diff --git a/v4.0/src/SELECT/S_DISPLY.ASM b/v4.0/src/SELECT/S_DISPLY.ASM new file mode 100644 index 0000000..c04540e --- /dev/null +++ b/v4.0/src/SELECT/S_DISPLY.ASM | |||
| @@ -0,0 +1,112 @@ | |||
| 1 | ;******************************************************************************** | ||
| 2 | ; File: S_DISPLY.ASM | ||
| 3 | ; | ||
| 4 | ; This module contains a subroutine for setting the mode of the display to | ||
| 5 | ; 80X25 text mode. | ||
| 6 | ; | ||
| 7 | ; If ANSI.SYS is loaded, then the calls to change the mode go through it, | ||
| 8 | ; otherwise standard BIOS calls are performed. | ||
| 9 | ; | ||
| 10 | ; If ANSI.SYS is to be used, then a version dated July 15, 1987 or later must | ||
| 11 | ; be used. | ||
| 12 | ; | ||
| 13 | ;******************************************************************************** | ||
| 14 | .ALPHA ;AN000; | ||
| 15 | .XLIST ;AN000; | ||
| 16 | INCLUDE STRUC.INC ;AN000; | ||
| 17 | .LIST ;AN000; | ||
| 18 | |||
| 19 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 20 | |||
| 21 | |||
| 22 | ; Buffer for IOCTL calls | ||
| 23 | BUFFER LABEL BYTE ;AN000; | ||
| 24 | DB 0 ;AN000; INFO LEVEL | ||
| 25 | DB 0 ;AN000; RESERVED | ||
| 26 | DW 14 ;AN000; SIZE | ||
| 27 | FLAGS DW 0 ;AN000; | ||
| 28 | D_MODE DB 0 ;AN000; 1 = TEXT, 2 = APA | ||
| 29 | DB 0 ;AN000; RESERVED | ||
| 30 | COLORS DW 0 ;AN000; | ||
| 31 | B_WIDTH DW 0 ;AN000; PELS ==> -1 FOR TEXT | ||
| 32 | B_LENGTH DW 0 ;AN000; PELS ==> -1 FOR TEXT | ||
| 33 | COLS DW 0 ;AN000; | ||
| 34 | ROWS DW 0 ;AN000; | ||
| 35 | |||
| 36 | DATA ENDS ;AN000; | ||
| 37 | |||
| 38 | CODE_FAR SEGMENT BYTE PUBLIC 'CODE' ;AN000; | ||
| 39 | |||
| 40 | ASSUME CS:CODE_FAR, DS:DATA ;AN000; | ||
| 41 | |||
| 42 | ;******************************************************************************** | ||
| 43 | ; SET_DISPLAY_MODE_ROUTINE: Set the display mode to 80X25 text mode. | ||
| 44 | ; | ||
| 45 | ; INPUT: | ||
| 46 | ; None. | ||
| 47 | ; | ||
| 48 | ; OUTPUT: | ||
| 49 | ; If CY = 1, then an error was encountered making a IOCTL call. | ||
| 50 | ; If CY = 0, there were no errors. | ||
| 51 | ; | ||
| 52 | ; Operation: If ANSY.SYS is loaded, then the mode is set by calls to it, | ||
| 53 | ; otherwise BIOS calls are used. | ||
| 54 | ; | ||
| 55 | ;******************************************************************************** | ||
| 56 | PUBLIC SET_DISPLAY_MODE_ROUTINE ;AN000; | ||
| 57 | SET_DISPLAY_MODE_ROUTINE PROC FAR ;AN000; | ||
| 58 | |||
| 59 | ;********************************************************************** | ||
| 60 | ; See if ANSI.SYS is loaded | ||
| 61 | ;********************************************************************** | ||
| 62 | MOV AX, 1A00H ;AC086;SEH changed from 1600h to avoid MICROSOFT collision ;AN000; Fn. for determining ANSI.SYS state | ||
| 63 | INT 2FH ;AN000; Returns AL = 0FFh if it is loaded | ||
| 64 | .IF < AL NE 0FFH > ;AN000; Is it loaded? | ||
| 65 | MOV AH, 15 ;AN000; No! Fn. number for getting the current video state | ||
| 66 | INT 10H ;AN000; Get the video state | ||
| 67 | .IF < AL EQ 07H > OR ;AN000; If in monochrome mode, | ||
| 68 | .IF < AL EQ 0FH> ;AN000; or monochrome graphics mode, | ||
| 69 | MOV AX, 07H ;AN000; Set monochrome mode | ||
| 70 | .ELSE ;AN000; Otherwise... | ||
| 71 | MOV AX, 03H ;AN000; Set mode 3: 80 column, color enabled | ||
| 72 | .ENDIF ;AN000; | ||
| 73 | INT 10H ;AN000; Set the mode | ||
| 74 | .ELSE ;AN000; | ||
| 75 | MOV AX, 440CH ;AN000; Get the info from ANSI. | ||
| 76 | MOV BX, 0 ;AN000; | ||
| 77 | MOV CX, 037FH ;AN000; | ||
| 78 | MOV DX, OFFSET BUFFER ;AN000; | ||
| 79 | INT 21H ;AN000; | ||
| 80 | .IF < C > ;AN000; Was there an error? | ||
| 81 | JMP ERROR_SETTING ;AN000; Yes! Exit the subroutine. | ||
| 82 | .ENDIF ;AN000; | ||
| 83 | MOV D_MODE, 1 ;AN000; Set to text mode | ||
| 84 | MOV B_WIDTH, -1 ;AN000; -1 for text mode | ||
| 85 | MOV B_LENGTH, -1 ;AN000; -1 for text mode | ||
| 86 | MOV COLS, 80 ;AN000; Number of columns | ||
| 87 | MOV ROWS, 25 ;AN000; Number of rows | ||
| 88 | .IF < COLORS NE 0 > ;AN000; If colors = 0, monochrome | ||
| 89 | MOV COLORS, 16 ;AN000; Otherwise set 16 color mode | ||
| 90 | .ENDIF ;AN000; | ||
| 91 | MOV AX, 440CH ;AN000; Set the new mode | ||
| 92 | MOV BX, 0 ;AN000; | ||
| 93 | MOV CX, 035FH ;AN000; | ||
| 94 | MOV DX, OFFSET BUFFER ;AN000; | ||
| 95 | INT 21H ;AN000; | ||
| 96 | .IF < C > ;AN000; Was there en error? | ||
| 97 | JMP ERROR_SETTING ;AN000; Yes! Exit the subroutine | ||
| 98 | .ENDIF ;AN000; | ||
| 99 | CLC ;AN000; Indicate there were no errors | ||
| 100 | .ENDIF ;AN000; | ||
| 101 | JMP EXIT_SET ;AN000; | ||
| 102 | ERROR_SETTING: ;AN000; | ||
| 103 | STC ;AN000; Indicate that there were errors | ||
| 104 | EXIT_SET: ;AN000; | ||
| 105 | RET ;AN000; | ||
| 106 | |||
| 107 | SET_DISPLAY_MODE_ROUTINE ENDP ;AN000; | ||
| 108 | |||
| 109 | |||
| 110 | CODE_FAR ENDS ;AN000; | ||
| 111 | |||
| 112 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/TRANS.CHG b/v4.0/src/SELECT/TRANS.CHG new file mode 100644 index 0000000..5d01b62 --- /dev/null +++ b/v4.0/src/SELECT/TRANS.CHG | |||
| @@ -0,0 +1,24 @@ | |||
| 1 | This file lists the changes to USA.INF which need to be included | ||
| 2 | in the translated versions. | ||
| 3 | |||
| 4 | SCROLL TEXT # CHANGE | ||
| 5 | ÄÄÄÄÄÄÄÄÄÄÄÄÄ ÄÄÄÄÄÄ | ||
| 6 | 27 Changed text | ||
| 7 | |||
| 8 | PANEL # CHANGE | ||
| 9 | ÄÄÄÄÄÄÄ ÄÄÄÄÄÄ | ||
| 10 | 38 Changed text | ||
| 11 | 59 Changed text | ||
| 12 | 105 Changed text | ||
| 13 | 21 Changed text | ||
| 14 | 22 Changed text | ||
| 15 | 24 Changed text | ||
| 16 | 25 Changed text | ||
| 17 | 26 Changed text | ||
| 18 | 27 Changed text | ||
| 19 | 28 Changed text | ||
| 20 | 108 Changed text | ||
| 21 | |||
| 22 | |||
| 23 | ID should also be consulted for any changes to the help text (USAHELP.TXT). | ||
| 24 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/USA.INF b/v4.0/src/SELECT/USA.INF new file mode 100644 index 0000000..f98c4eb --- /dev/null +++ b/v4.0/src/SELECT/USA.INF | |||
| @@ -0,0 +1,2381 @@ | |||
| 1 | false = 0 | ||
| 2 | IF SCROLL ;A000; | ||
| 3 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 4 | ; | ||
| 5 | ; SCROLL TEXT INFORMATION FILE | ||
| 6 | ; | ||
| 7 | ; RULES: There are a number of rules and regulations that | ||
| 8 | ; MUST be followed in order to translated properly. | ||
| 9 | ; For each entry there are detailed instructions to | ||
| 10 | ; help facilitate any changes. | ||
| 11 | ; | ||
| 12 | ; The information in this file is destined for the | ||
| 13 | ; 'SELECT.DAT' file. The panels and scrollable lists | ||
| 14 | ; are contained in this file. | ||
| 15 | ; There are two sections to this file, one for the | ||
| 16 | ; SCROLL fields and one for the PANELS. | ||
| 17 | ; | ||
| 18 | ; Each rules is marked by '<R#>' and a brief description. | ||
| 19 | ; The detailed description is contained in the header of | ||
| 20 | ; this file (just below). In order to successfully | ||
| 21 | ; translate SELECT, all of these rules have to be obeyed. | ||
| 22 | ; | ||
| 23 | ; | ||
| 24 | ; <R1> The quotation marks have to left-right justified | ||
| 25 | ; ���������������������������������������������Ŀ | ||
| 26 | ; � The quotation marks (') tell SELECT where � | ||
| 27 | ; � to start wrapping the text onto the next � | ||
| 28 | ; � line. The assembler line immediately after � | ||
| 29 | ; � the first text line automatically calculates� | ||
| 30 | ; � the length of this field. The right border � | ||
| 31 | ; � of the text can be adjusted freely - a ruler� | ||
| 32 | ; � is drawn for each entry to help in centering� | ||
| 33 | ; � text. � | ||
| 34 | ; ����������������������������������������������� | ||
| 35 | ; | ||
| 36 | ; <R2> The '[' and ']' input field markers cannot be moved | ||
| 37 | ; ���������������������������������������������Ŀ | ||
| 38 | ; � These characters must remain in the same � | ||
| 39 | ; � position. They define the boundries of � | ||
| 40 | ; � input fields. � | ||
| 41 | ; ����������������������������������������������� | ||
| 42 | ; | ||
| 43 | ; <R3> The panel will be centered in an 80 column screen | ||
| 44 | ; ���������������������������������������������Ŀ | ||
| 45 | ; � This panel will be centered on the screen � | ||
| 46 | ; � when it is displayed. Please translate � | ||
| 47 | ; � accordingly. � | ||
| 48 | ; ����������������������������������������������� | ||
| 49 | ; | ||
| 50 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 51 | ; ���������������������������������������������Ŀ | ||
| 52 | ; � The number of lines (from top to bottom) � | ||
| 53 | ; � must not change. Translated text must � | ||
| 54 | ; � conform to the existing number of lines. � | ||
| 55 | ; ����������������������������������������������� | ||
| 56 | ; | ||
| 57 | ; <R5> The width of the entry must not exceed the RULER provided. | ||
| 58 | ; ���������������������������������������������Ŀ | ||
| 59 | ; � Translated text should remain the same � | ||
| 60 | ; � width (do not exceed the ruler). Otherwise � | ||
| 61 | ; � the text will not fit within the panel. � | ||
| 62 | ; ����������������������������������������������� | ||
| 63 | ; | ||
| 64 | ; <R9> DO NOT TRANSLATE OR CHANGE!!!! | ||
| 65 | ; ���������������������������������������������Ŀ | ||
| 66 | ; � The information contained in the quotations � | ||
| 67 | ; � should NEVER be changed. These fields are � | ||
| 68 | ; � established for the size of the help text � | ||
| 69 | ; � or error panels. � | ||
| 70 | ; ����������������������������������������������� | ||
| 71 | ; | ||
| 72 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 73 | ; | ||
| 74 | ; | ||
| 75 | ; | ||
| 76 | ; | ||
| 77 | ; <R1> The quotation marks have to left-right justified | ||
| 78 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 79 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 80 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 81 | |||
| 82 | SCB_LIST1 DB ' 1. Minimum DOS function; maximum program workspace ';AN000; | ||
| 83 | SCB_LIST1_W EQU ($-SCB_LIST1) ;AN000; | ||
| 84 | DB ' ';AN000; | ||
| 85 | DB ' 2. Balance DOS function with program workspace ';AN000; | ||
| 86 | DB ' ';AN000; | ||
| 87 | DB ' 3. Maximum DOS function; minimum program workspace ';AN000; | ||
| 88 | SCB_LIST1_N EQU ($-SCB_LIST1)/SCB_LIST1_W ;AN000; | ||
| 89 | |||
| 90 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 91 | ; | ||
| 92 | ; | ||
| 93 | ; | ||
| 94 | ; | ||
| 95 | ; <R1> The quotation marks have to left-right justified | ||
| 96 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 97 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 98 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 99 | |||
| 100 | SCB_LIST2 DB ' 1. Accept predefined country and keyboard ';AN000; | ||
| 101 | SCB_LIST2_W EQU ($-SCB_LIST2) ;AN000; | ||
| 102 | DB ' ';AN000; | ||
| 103 | DB ' 2. Specify a different country and keyboard ';AN000; | ||
| 104 | SCB_LIST2_N EQU ($-SCB_LIST2)/SCB_LIST2_W ;AN000; | ||
| 105 | |||
| 106 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 107 | ; | ||
| 108 | ; | ||
| 109 | ; | ||
| 110 | ; | ||
| 111 | ; <R1> The quotation marks have to left-right justified | ||
| 112 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 113 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 114 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 115 | |||
| 116 | SCB_LIST23 LABEL BYTE ;AN000; | ||
| 117 | SCB_LIST3 DB ' United States (001) ';AN000; | ||
| 118 | SCB_LIST3_W EQU ($-SCB_LIST3) ;AN000; | ||
| 119 | SCB_LIST23_W EQU ($-SCB_LIST23) ;AN000; | ||
| 120 | DB ' Canada (French Speaking) (002) ';AN000; | ||
| 121 | DB ' Latin America (003) ';AN000; | ||
| 122 | DB ' Netherlands (031) ';AN000; | ||
| 123 | DB ' Belgium (032) ';AN000; | ||
| 124 | DB ' France (033) ';AN000; | ||
| 125 | DB ' Spain (034) ';AN000; | ||
| 126 | DB ' Italy (039) ';AN000; | ||
| 127 | DB ' Switzerland (041) ';AN000; | ||
| 128 | DB ' United Kingdom (044) ';AN000; | ||
| 129 | DB ' Denmark (045) ';AN000; | ||
| 130 | DB ' Sweden (046) ';AN000; | ||
| 131 | SCB_LIST3_N EQU ($-SCB_LIST3)/SCB_LIST3_W ;AN000; | ||
| 132 | SCB_LIST4 DB ' Norway (047) ';AN000; | ||
| 133 | SCB_LIST4_W EQU ($-SCB_LIST4) ;AN000; | ||
| 134 | DB ' Germany (049) ';AN000; | ||
| 135 | DB ' Australia (061) ';AN000; | ||
| 136 | DB ' Japan (081) ';AN000; | ||
| 137 | DB ' Korea (082) ';AN000; | ||
| 138 | DB ' Peoples Republic of China (086) ';AN000; | ||
| 139 | DB ' Taiwan (088) ';AN000; | ||
| 140 | DB ' Portugal (351) ';AN000; | ||
| 141 | DB ' Finland (358) ';AN000; | ||
| 142 | DB ' Arabic Speaking (785) ';AN000; | ||
| 143 | DB ' Hebrew Speaking (972) ';AN000; | ||
| 144 | SCB_LIST4_N EQU ($-SCB_LIST4)/SCB_LIST4_W ;AN000; | ||
| 145 | SCB_LIST23_N EQU ($-SCB_LIST23)/SCB_LIST23_W ;AN000; | ||
| 146 | |||
| 147 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 148 | ; | ||
| 149 | ; | ||
| 150 | ; | ||
| 151 | ; | ||
| 152 | ; <R1> The quotation marks have to left-right justified | ||
| 153 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 154 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 155 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 156 | |||
| 157 | SCB_LIST24 LABEL BYTE ;AN000; | ||
| 158 | SCB_LIST5 DB ' Belgian (BE) ';AN000; | ||
| 159 | SCB_LIST5_W EQU ($-SCB_LIST5) ;AN000; | ||
| 160 | SCB_LIST24_W EQU ($-SCB_LIST24) ;AN000; | ||
| 161 | DB ' Canadian French (CF) ';AN000; | ||
| 162 | DB ' Danish (DK) ';AN000; | ||
| 163 | DB ' French (FR) ';AN000; | ||
| 164 | DB ' German (GR) ';AN000; | ||
| 165 | DB ' Italian (IT) ';AN000; | ||
| 166 | DB ' Latin American Speaking (LA) ';AN000; | ||
| 167 | DB ' Dutch (NE) ';AN000; | ||
| 168 | DB ' Norwegian (NO) ';AN000; | ||
| 169 | SCB_LIST5_N EQU ($-SCB_LIST5)/SCB_LIST5_W ;AN000; | ||
| 170 | SCB_LIST6 DB ' Portuguese (PO) ';AN000; | ||
| 171 | SCB_LIST6_W EQU ($-SCB_LIST6) ;AN000; | ||
| 172 | DB ' Swiss (French) (SF) ';AN000; | ||
| 173 | DB ' Swiss (German) (SG) ';AN000; | ||
| 174 | DB ' Spanish (SP) ';AN000; | ||
| 175 | DB ' Finnish (SU) ';AN000; | ||
| 176 | DB ' Swedish (SV) ';AN000; | ||
| 177 | DB ' UK English (UK) ';AN000; | ||
| 178 | DB ' US English (US) ';AN000; | ||
| 179 | DB ' None ';AN000; | ||
| 180 | SCB_LIST6_N EQU ($-SCB_LIST6)/SCB_LIST6_W ;AN000; | ||
| 181 | DB ' French 120 (120) ';AN000; | ||
| 182 | DB ' French (FR) ';AN000; | ||
| 183 | DB ' Italian 142 (142) ';AC090; | ||
| 184 | DB ' Italian (IT) ';AN000; | ||
| 185 | DB ' UK English 168 (168) ';AN000; | ||
| 186 | DB ' UK English (UK) ';AN000; | ||
| 187 | SCB_LIST24_N EQU ($-SCB_LIST24)/SCB_LIST24_W ;AN000; | ||
| 188 | |||
| 189 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 190 | ; | ||
| 191 | ; | ||
| 192 | ; | ||
| 193 | ; | ||
| 194 | ; <R1> The quotation marks have to left-right justified | ||
| 195 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 196 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 197 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 198 | |||
| 199 | SCB_LIST7 DB ' 1. French 120 (120) ';AN000; | ||
| 200 | SCB_LIST7_W EQU ($-SCB_LIST7) ;AN000; | ||
| 201 | DB ' ';AN000; | ||
| 202 | DB ' 2. French (FR) ';AN000; | ||
| 203 | SCB_LIST7_N EQU ($-SCB_LIST7)/SCB_LIST7_W ;AN000; | ||
| 204 | |||
| 205 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 206 | ; | ||
| 207 | ; | ||
| 208 | ; | ||
| 209 | ; | ||
| 210 | ; <R1> The quotation marks have to left-right justified | ||
| 211 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 212 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 213 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 214 | |||
| 215 | SCB_LIST8 DB ' 1. Italian 142 (142) ';AC090; | ||
| 216 | SCB_LIST8_W EQU ($-SCB_LIST8) ;AN000; | ||
| 217 | DB ' ';AN000; | ||
| 218 | DB ' 2. Italian (IT) ';AN000; | ||
| 219 | SCB_LIST8_N EQU ($-SCB_LIST8)/SCB_LIST8_W ;AN000; | ||
| 220 | |||
| 221 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 222 | ; | ||
| 223 | ; | ||
| 224 | ; | ||
| 225 | ; | ||
| 226 | ; <R1> The quotation marks have to left-right justified | ||
| 227 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 228 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 229 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 230 | |||
| 231 | SCB_LIST9 DB ' 1. UK English 168 (168) ';AN000; | ||
| 232 | SCB_LIST9_W EQU ($-SCB_LIST9) ;AN000; | ||
| 233 | DB ' ';AN000; | ||
| 234 | DB ' 2. UK English (UK) ';AN000; | ||
| 235 | SCB_LIST9_N EQU ($-SCB_LIST9)/SCB_LIST9_W ;AN000; | ||
| 236 | |||
| 237 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 238 | ; | ||
| 239 | ; | ||
| 240 | ; | ||
| 241 | ; | ||
| 242 | ; <R1> The quotation marks have to left-right justified | ||
| 243 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 244 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 245 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 246 | |||
| 247 | SCB_LIST10 DB ' 1. C ' ;AN000; | ||
| 248 | SCB_LIST10_W EQU ($-SCB_LIST10) ;AN000; | ||
| 249 | DB ' ' ;AN000; | ||
| 250 | DB ' 2. B ' ;AN000; | ||
| 251 | SCB_LIST10_N EQU ($-SCB_LIST10)/SCB_LIST10_W ;AN000; | ||
| 252 | |||
| 253 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 254 | ; | ||
| 255 | ; | ||
| 256 | ; | ||
| 257 | ; | ||
| 258 | ; <R1> The quotation marks have to left-right justified | ||
| 259 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 260 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 261 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 262 | |||
| 263 | SCB_LIST11 DB ' ' ;AN000; | ||
| 264 | SCB_LIST11_W EQU ($-SCB_LIST11) ;AN000; | ||
| 265 | SCB_LIST11_N EQU ($-SCB_LIST11)/SCB_LIST11_W ;AN000; | ||
| 266 | |||
| 267 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 268 | ; | ||
| 269 | ; | ||
| 270 | ; | ||
| 271 | ; | ||
| 272 | ; <R1> The quotation marks have to left-right justified | ||
| 273 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 274 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 275 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 276 | |||
| 277 | SCB_LIST12 DB ' 1. LPT1 - First port ' ;AN000; | ||
| 278 | SCB_LIST12_W EQU ($-SCB_LIST12) ;AN000; | ||
| 279 | DB ' ' ;AN000; | ||
| 280 | DB ' 2. LPT2 - Second port ' ;AN000; | ||
| 281 | DB ' ' ;AN000; | ||
| 282 | DB ' 3. LPT3 - Third port ' ;AN000; | ||
| 283 | SCB_LIST12_N EQU ($-SCB_LIST12)/SCB_LIST12_W ;AN000; | ||
| 284 | |||
| 285 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 286 | ; | ||
| 287 | ; | ||
| 288 | ; | ||
| 289 | ; | ||
| 290 | ; <R1> The quotation marks have to left-right justified | ||
| 291 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 292 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 293 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 294 | |||
| 295 | SCB_LIST13 DB ' 1. COM1 - First port ' ;AN000; | ||
| 296 | SCB_LIST13_W EQU ($-SCB_LIST13) ;AN000; | ||
| 297 | DB ' 2. COM2 - Second port ' ;AN000; | ||
| 298 | DB ' 3. COM3 - Third port ' ;AN000; | ||
| 299 | DB ' 4. COM4 - Fourth port ' ;AN000; | ||
| 300 | SCB_LIST13_N EQU ($-SCB_LIST13)/SCB_LIST13_W ;AN000; | ||
| 301 | |||
| 302 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 303 | ; | ||
| 304 | ; | ||
| 305 | ; | ||
| 306 | ; | ||
| 307 | ; <R1> The quotation marks have to left-right justified | ||
| 308 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 309 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 310 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 311 | |||
| 312 | SCB_LIST14 DB ' 1. None ' ;AN000; | ||
| 313 | SCB_LIST14_W EQU ($-SCB_LIST14) ;AN000; | ||
| 314 | DB ' 2. LPT1 - First port ' ;AN000; | ||
| 315 | DB ' 3. LPT2 - Second port ' ;AN000; | ||
| 316 | DB ' 4. LPT3 - Third port ' ;AN000; | ||
| 317 | SCB_LIST14_N EQU ($-SCB_LIST14)/SCB_LIST14_W ;AN000; | ||
| 318 | |||
| 319 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 320 | ; | ||
| 321 | ; | ||
| 322 | ; | ||
| 323 | ; | ||
| 324 | ; <R1> The quotation marks have to left-right justified | ||
| 325 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 326 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 327 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 328 | |||
| 329 | SCB_LIST15 DB ' 1. Accept configuration and continue with installation ';AC079;SEH ;AN000; | ||
| 330 | SCB_LIST15_W EQU ($-SCB_LIST15) ;AN000; | ||
| 331 | DB ' ';AN000; | ||
| 332 | DB ' 2. Review, change, or add installation choices ';AC079;SEH ;AN000; | ||
| 333 | SCB_LIST15_N EQU ($-SCB_LIST15)/SCB_LIST15_W ;AN000; | ||
| 334 | |||
| 335 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 336 | ; | ||
| 337 | ; | ||
| 338 | ; | ||
| 339 | ; | ||
| 340 | ; <R1> The quotation marks have to left-right justified | ||
| 341 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 342 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 343 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 344 | |||
| 345 | SCB_LIST16 DB ' Code Page Switching ';AN000; | ||
| 346 | SCB_LIST16_W EQU ($-SCB_LIST16) ;AN000; | ||
| 347 | DB ' Expanded Memory support ';AN000; | ||
| 348 | DB ' Extended display support (ANSI.SYS) ';AN000; | ||
| 349 | DB ' File performance enhancements (FASTOPEN) ';AN000; | ||
| 350 | DB ' GRAFTABL display support ';AN000; | ||
| 351 | DB ' GRAPHICS PrtSc support ';AN000; | ||
| 352 | DB ' DOS SHARE support ';AN000; | ||
| 353 | DB ' DOS SHELL ';AN000; | ||
| 354 | DB ' Virtual Disk support (RAMDRIVE.SYS) ';AN000; | ||
| 355 | SCB_LIST16_N EQU ($-SCB_LIST16)/SCB_LIST16_W ;AN000; | ||
| 356 | |||
| 357 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 358 | ; | ||
| 359 | ; | ||
| 360 | ; | ||
| 361 | ; | ||
| 362 | ; <R1> The quotation marks have to left-right justified | ||
| 363 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 364 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 365 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 366 | |||
| 367 | SCB_LIST17 DB ' Code Page Switching ';AN000; | ||
| 368 | SCB_LIST17_W EQU ($-SCB_LIST17) ;AN000; | ||
| 369 | DB ' Extended display support (ANSI.SYS) ';AN000; | ||
| 370 | DB ' GRAFTABL display support ';AN000; | ||
| 371 | DB ' GRAPHICS PrtSc support ';AN000; | ||
| 372 | DB ' DOS SHELL ';AN000; | ||
| 373 | DB ' Virtual Disk support (RAMDRIVE.SYS) ';AN000; | ||
| 374 | SCB_LIST17_N EQU ($-SCB_LIST17)/SCB_LIST17_W ;AN000; | ||
| 375 | |||
| 376 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 377 | ; | ||
| 378 | ; | ||
| 379 | ; | ||
| 380 | ; | ||
| 381 | ; <R1> The quotation marks have to left-right justified | ||
| 382 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 383 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 384 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 385 | |||
| 386 | SCB_LIST18 DB ' 1. Let SELECT define partition sizes ';AN000; | ||
| 387 | SCB_LIST18_W EQU ($-SCB_LIST18) ;AN000; | ||
| 388 | DB ' ';AN000; | ||
| 389 | DB ' 2. Define your own partition sizes ';AN000; | ||
| 390 | SCB_LIST18_N EQU ($-SCB_LIST18)/SCB_LIST18_W ;AN000; | ||
| 391 | |||
| 392 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 393 | ; | ||
| 394 | ; | ||
| 395 | ; | ||
| 396 | ; | ||
| 397 | ; <R1> The quotation marks have to left-right justified | ||
| 398 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 399 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 400 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 401 | |||
| 402 | SCB_LIST19 DB ' 1. Leave disk unchanged ';AN000; | ||
| 403 | SCB_LIST19_W EQU ($-SCB_LIST19) ;AN000; | ||
| 404 | DB ' ';AN000; | ||
| 405 | DB ' 2. Define your own partition sizes ';AN000; | ||
| 406 | SCB_LIST19_N EQU ($-SCB_LIST19)/SCB_LIST19_W ;AN000; | ||
| 407 | |||
| 408 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 409 | ; | ||
| 410 | ; | ||
| 411 | ; | ||
| 412 | ; | ||
| 413 | ; <R1> The quotation marks have to left-right justified | ||
| 414 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 415 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 416 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 417 | |||
| 418 | SCB_LIST20 DB ' 1. Format fixed disk partition ';AN000; | ||
| 419 | SCB_LIST20_W EQU ($-SCB_LIST20) ;AN000; | ||
| 420 | DB ' ';AN000; | ||
| 421 | DB ' 2. Do not format fixed disk partition ';AN000; | ||
| 422 | SCB_LIST20_N EQU ($-SCB_LIST20)/SCB_LIST20_W ;AN000; | ||
| 423 | |||
| 424 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;AN000;JW | ||
| 425 | ; | ||
| 426 | ; | ||
| 427 | ; | ||
| 428 | ; | ||
| 429 | ; <R1> The quotation marks have to left-right justified ;AN000;JW | ||
| 430 | ; <R4> The number of lines for the entry MUST be maintained ;AN000;JW | ||
| 431 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;AN000;JW | ||
| 432 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 ;AN000;JW | ||
| 433 | |||
| 434 | SCB_LIST26 DB ' 1. Install all DOS files on fixed disk ' ;AC000;JW | ||
| 435 | SCB_LIST26_W EQU ($-SCB_LIST26) ;AN000;JW | ||
| 436 | DB ' ' ;AN000;JW | ||
| 437 | DB ' 2. Copy only non-system files to directory specified ' ;AC038;SEH Let user know hidden files not copied ;AC000;JW | ||
| 438 | SCB_LIST26_N EQU ($-SCB_LIST26)/SCB_LIST26_W ;AN000;JW | ||
| 439 | |||
| 440 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;AN111;JW | ||
| 441 | ; | ||
| 442 | ; | ||
| 443 | ; | ||
| 444 | ; | ||
| 445 | ; <R1> The quotation marks have to left-right justified ;AN111;JW | ||
| 446 | ; <R4> The number of lines for the entry MUST be maintained ;AN111;JW | ||
| 447 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;AN111;JW | ||
| 448 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 ;AN111;JW | ||
| 449 | |||
| 450 | SCB_LIST27 DB ' 1. C ' ;AN111;JW | ||
| 451 | SCB_LIST27_W EQU ($-SCB_LIST27) ;AN111;JW | ||
| 452 | DB ' ' ;AN111;JW | ||
| 453 | DB ' 2. A ' ;AN111;JW | ||
| 454 | SCB_LIST27_N EQU ($-SCB_LIST27)/SCB_LIST27_W ;AN111;JW | ||
| 455 | |||
| 456 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 457 | ; | ||
| 458 | ; | ||
| 459 | ; | ||
| 460 | ; | ||
| 461 | ; <R1> The quotation marks have to left-right justified | ||
| 462 | ; <R4> The number of lines for the entry MUST be maintained | ||
| 463 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 464 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 465 | |||
| 466 | SCB_LIST28 DB ' 1. Install the MS-DOS Shell ' | ||
| 467 | SCB_LIST28_W EQU ($-SCB_LIST28) ;AN000; | ||
| 468 | DB ' ' | ||
| 469 | DB ' 2. Do not install the MS-DOS Shell ' | ||
| 470 | SCB_LIST28_N EQU ($-SCB_LIST28)/SCB_LIST28_W ;AN000; | ||
| 471 | |||
| 472 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;AN111;JW | ||
| 473 | ; | ||
| 474 | ; <R*> Translate text inside ' ' | ||
| 475 | ; | ||
| 476 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;AN111;JW | ||
| 477 | |||
| 478 | WR_NOIND DB 'No' ;AN000;selection pointer indicator buff | ||
| 479 | WR_NOINDLEN EQU ($-WR_NOIND) ;AN000; | ||
| 480 | |||
| 481 | WR_YESIND DB 'Yes' ;AN000;check mark string indicator buff | ||
| 482 | WR_YESINDLEN EQU ($-WR_YESIND) ;AN000; | ||
| 483 | |||
| 484 | |||
| 485 | ENDIF | ||
| 486 | |||
| 487 | |||
| 488 | |||
| 489 | IF PANEL | ||
| 490 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 491 | ; | ||
| 492 | ; | ||
| 493 | ; <R1> The quotation marks have to left-right justified | ||
| 494 | ; <R3> The panel will be centered in an 80 column screen | ||
| 495 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 496 | |||
| 497 | PANEL1 LABEL BYTE ;AN000; | ||
| 498 | DB ' Welcome ' ;AN000; | ||
| 499 | PANEL1_W EQU ($-PANEL1) ;AN000; | ||
| 500 | DB ' ' ;AN000; | ||
| 501 | DB 'Welcome to DOS 4.0 and the SELECT program. SELECT ' ;AN000; | ||
| 502 | DB 'will install DOS 4.0 on your fixed disk or diskette.' ;AN000; | ||
| 503 | DB 'If you install DOS 4.0 on a diskette, the number of ' ;AN000; | ||
| 504 | DB 'blank diskettes you need depends on the type and ' ;AN000; | ||
| 505 | DB 'capacity of your diskette drive: ' ;AN000; | ||
| 506 | DB ' ' ;AN000; | ||
| 507 | DB ' Drive Type (Capacity) Number of Diskettes ' ;AN000; | ||
| 508 | DB ' ' ;AN000; | ||
| 509 | DB ' 5.25-Inch Drive (360KB) five 5.25 (360KB) ' ;AC050;SEH ;AN000; | ||
| 510 | DB ' 5.25-Inch Drive (1.2MB) five 5.25 (360KB) ' ;AC050;SEH ;AN000; | ||
| 511 | DB ' 3.5-Inch Drive (720KB) three 3.5 (720KB) ' ;AC050;SEH;AC000;JW | ||
| 512 | DB ' 3.5-Inch Drive (1.44MB) three 3.5 (720KB) ' ;AC050;SEH;AC000;JW | ||
| 513 | DB ' ' ;AN000; | ||
| 514 | DB 'If you install DOS 4.0 onto a fixed disk, you need ' ;AN000; | ||
| 515 | DB 'one blank diskette: ' ;AN000; | ||
| 516 | DB ' ' ;AN000; | ||
| 517 | DB ' 5.25-Inch Drive one 5.25 (360KB) ' ;AC050;SEH ;AN000; | ||
| 518 | DB ' 3.5-Inch Drive one 3.5 (1 or 2MB) ' ;AC050;SEH ;AC022;SEH ;AC000;JW | ||
| 519 | PANEL1_L EQU ($-PANEL1)/PANEL1_W ;AN000; | ||
| 520 | |||
| 521 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 522 | ; | ||
| 523 | ; | ||
| 524 | ; | ||
| 525 | ; <R1> The quotation marks have to left-right justified | ||
| 526 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 527 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 528 | |||
| 529 | PANEL2 LABEL BYTE ;AN000; | ||
| 530 | DB ' Introduction ';AN000; | ||
| 531 | PANEL2_W EQU ($-PANEL2) ;AN000; | ||
| 532 | DB ' ';AN000; | ||
| 533 | DB ' ';AN000; | ||
| 534 | DB 'As you view the SELECT displays, you will be asked to make a choice ';AN000; | ||
| 535 | DB 'or type an entry. If you are uncertain about what to choose or type,';AN000; | ||
| 536 | DB 'you can accept the predefined choice or press the F1 help key for ';AN000; | ||
| 537 | DB 'more information about an item. ';AN000; | ||
| 538 | DB ' ';AN000; | ||
| 539 | DB 'You will be using these keys in the SELECT program: ';AN000; | ||
| 540 | DB ' ';AN000; | ||
| 541 | DB ' Enter To proceed to the next step. ';AN000; | ||
| 542 | DB ' Esc To cancel the current display. ';AN000; | ||
| 543 | DB ' Tab To move to the next entry field. ';AN000; | ||
| 544 | DB ' PgUp/PgDn To scroll information one page at a time. ';AN000; | ||
| 545 | DB ' Up/Down Arrow To move the highlight bar to the next item. ';AN000; | ||
| 546 | DB ' F1 To view the help information. ';AN000; | ||
| 547 | DB ' F3 To exit SELECT. ';AN000; | ||
| 548 | DB ' F9 To view key assignments while viewing help. ';AN000; | ||
| 549 | DB ' Left/Right Arrow To scroll data fields horizontally ';AN000; | ||
| 550 | DB ' to the left or right. ';AN000; | ||
| 551 | DB ' ';AN000; | ||
| 552 | DB 'You can press Enter, Esc and F1 keys when they appear on the display.';AN000; | ||
| 553 | PANEL2_L EQU ($-PANEL2)/PANEL2_W ;AN000; | ||
| 554 | |||
| 555 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 556 | ; | ||
| 557 | ; | ||
| 558 | ; | ||
| 559 | ; | ||
| 560 | ; <R1> The quotation marks have to left-right justified | ||
| 561 | ; <R3> The panel will be centered in an 80 column screen | ||
| 562 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 563 | |||
| 564 | PANEL3 LABEL BYTE ;AN000; | ||
| 565 | DB ' Exit ' ;AN000; | ||
| 566 | PANEL3_W EQU ($-PANEL3) ;AN000; | ||
| 567 | DB ' ' ;AN000; | ||
| 568 | DB ' ' ;AN000; | ||
| 569 | DB ' ' ;AN000; | ||
| 570 | DB ' ' ;AN000; | ||
| 571 | DB ' ' ;AN000; | ||
| 572 | DB ' ' ;AN000; | ||
| 573 | DB 'You have chosen to end SELECT. ' ;AN000; | ||
| 574 | DB ' ' ;AN000; | ||
| 575 | DB ' ' ;AN000; | ||
| 576 | DB 'If you are sure you want to end DOS ' ;AN000; | ||
| 577 | DB 'installation, press F3. ' ;AN000; | ||
| 578 | DB ' ' ;AN000; | ||
| 579 | DB ' ' ;AN000; | ||
| 580 | DB 'If not, press Enter to continue installation.' ;AN000; | ||
| 581 | PANEL3_L EQU ($-PANEL3)/PANEL3_W ;AN000; | ||
| 582 | |||
| 583 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 584 | ; | ||
| 585 | ; | ||
| 586 | ; | ||
| 587 | ; | ||
| 588 | ; <R1> The quotation marks have to left-right justified | ||
| 589 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 590 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 591 | |||
| 592 | PANEL4 LABEL BYTE ;AN000; | ||
| 593 | DB ' Specify Function and Workspace ';AN000; | ||
| 594 | PANEL4_W EQU ($-PANEL4) ;AN000; | ||
| 595 | DB ' ';AN000; | ||
| 596 | DB 'SELECT sets up your computer to run DOS and your programs';AN000; | ||
| 597 | DB 'most efficiently based on the option you choose. ';AN000; | ||
| 598 | DB ' ';AN000; | ||
| 599 | DB 'Note: You can review the results of your choice later ';AN000; | ||
| 600 | DB 'in this program. ';AN000; | ||
| 601 | DB ' ';AN000; | ||
| 602 | DB 'Choose an option: ';AN000; | ||
| 603 | PANEL4_L EQU ($-PANEL4)/PANEL4_W ;AN000; | ||
| 604 | |||
| 605 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 606 | ; | ||
| 607 | ; | ||
| 608 | ; | ||
| 609 | ; | ||
| 610 | ; <R1> The quotation marks have to left-right justified | ||
| 611 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 612 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 613 | |||
| 614 | PANEL5 LABEL BYTE ;AN000; | ||
| 615 | DB ' Select Country and Keyboard' ;AN000; | ||
| 616 | PANEL5_W EQU ($-PANEL5) ;AN000; | ||
| 617 | DB ' ' ;AN000; | ||
| 618 | DB ' ' ;AN000; | ||
| 619 | DB 'Predefined country . . . . .: ' ;AN000; | ||
| 620 | DB 'Predefined keyboard. . . . .: ' ;AN000; | ||
| 621 | DB ' ' ;AN000; | ||
| 622 | DB ' ' ;AN000; | ||
| 623 | DB ' ' ;AN000; | ||
| 624 | DB ' ' ;AN000; | ||
| 625 | DB ' ' ;AN000; | ||
| 626 | DB 'Choose an option: ' ;AN000; | ||
| 627 | PANEL5_L EQU ($-PANEL5)/PANEL5_W ;AN000; | ||
| 628 | |||
| 629 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 630 | ; | ||
| 631 | ; | ||
| 632 | ; | ||
| 633 | ; | ||
| 634 | ; <R1> The quotation marks have to left-right justified | ||
| 635 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 636 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 637 | |||
| 638 | PANEL6 LABEL BYTE ;AN000; | ||
| 639 | DB ' Country Selection' ;AN000; | ||
| 640 | PANEL6_W EQU ($-PANEL6) ;AN000; | ||
| 641 | DB ' ' ;AN000; | ||
| 642 | DB ' ' ;AN000; | ||
| 643 | DB 'Choose a country: ' ;AN000; | ||
| 644 | PANEL6_L EQU ($-PANEL6)/PANEL6_W ;AN000; | ||
| 645 | |||
| 646 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 647 | ; | ||
| 648 | ; | ||
| 649 | ; | ||
| 650 | ; | ||
| 651 | ; <R1> The quotation marks have to left-right justified | ||
| 652 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 653 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 654 | |||
| 655 | PANEL7 LABEL BYTE ;AN000; | ||
| 656 | DB ' Keyboard Selection' ;AN000; | ||
| 657 | PANEL7_W EQU ($-PANEL7) ;AN000; | ||
| 658 | DB ' ' ;AN000; | ||
| 659 | DB ' ' ;AN000; | ||
| 660 | DB 'Choose a keyboard: ' ;AN000; | ||
| 661 | PANEL7_L EQU ($-PANEL7)/PANEL7_W ;AN000; | ||
| 662 | |||
| 663 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 664 | ; | ||
| 665 | ; | ||
| 666 | ; | ||
| 667 | ; | ||
| 668 | ; <R1> The quotation marks have to left-right justified | ||
| 669 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 670 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 671 | |||
| 672 | PANEL8 LABEL BYTE ;AN000; | ||
| 673 | DB ' Keyboard Layout Selection ';AN000; | ||
| 674 | PANEL8_W EQU ($-PANEL8) ;AN000; | ||
| 675 | DB ' ';AN000; | ||
| 676 | DB ' ';AN000; | ||
| 677 | DB 'If your keyboard has a number in the top left corner that matches';AN000; | ||
| 678 | DB 'the one shown in option 1, choose option 1; otherwise choose ';AN000; | ||
| 679 | DB 'option 2. ';AN000; | ||
| 680 | DB ' ';AN000; | ||
| 681 | DB 'Choose a keyboard: ';AN000; | ||
| 682 | PANEL8_L EQU ($-PANEL8)/PANEL8_W ;AN000; | ||
| 683 | |||
| 684 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 685 | ; | ||
| 686 | ; | ||
| 687 | ; | ||
| 688 | ; | ||
| 689 | ; <R1> The quotation marks have to left-right justified | ||
| 690 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 691 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 692 | |||
| 693 | PANEL9 LABEL BYTE ;AN000; | ||
| 694 | DB ' Select Installation Drive';AN000; | ||
| 695 | PANEL9_W EQU ($-PANEL9) ;AN000; | ||
| 696 | DB ' ';AN000; | ||
| 697 | DB ' ';AN000; | ||
| 698 | DB ' ';AN000; | ||
| 699 | DB ' ';AN000; | ||
| 700 | DB 'Choose the drive to install DOS on: ';AN000; | ||
| 701 | PANEL9_L EQU ($-PANEL9)/PANEL9_W ;AN000; | ||
| 702 | |||
| 703 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 704 | ; | ||
| 705 | ; | ||
| 706 | ; | ||
| 707 | ; | ||
| 708 | ; <R1> The quotation marks have to left-right justified | ||
| 709 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 710 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 711 | |||
| 712 | PANEL10 LABEL BYTE ;AN000; | ||
| 713 | DB ' Specify DOS Location ';AN000; | ||
| 714 | PANEL10_W EQU ($-PANEL10) ;AN000; | ||
| 715 | DB ' ';AN000; | ||
| 716 | DB ' ';AN000; | ||
| 717 | DB 'You can accept the DOS directory name shown or type a new';AC053;SEH ;AN000; | ||
| 718 | DB 'directory name. ';AC053;SEH ;AN000; | ||
| 719 | DB ' ';AN000; | ||
| 720 | DB ' ';AN000; | ||
| 721 | DB 'DOS Directory . . . .C:\ ';AN000; | ||
| 722 | DB ' ' | ||
| 723 | DB ' ' | ||
| 724 | DB ' ' | ||
| 725 | DB 'To select option 1 below, press Enter. To change your ';AN053;SEH | ||
| 726 | DB 'option, press the tab key, highlight your choice and then';AN053;SEH | ||
| 727 | DB 'press Enter. ';AN053;SEH | ||
| 728 | DB ' ';AN053;SEH | ||
| 729 | DB ' ';AN053;SEH | ||
| 730 | PANEL10_L EQU ($-PANEL10)/PANEL10_W ;AN000; | ||
| 731 | |||
| 732 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 733 | ; | ||
| 734 | ; | ||
| 735 | ; | ||
| 736 | ; | ||
| 737 | ; <R1> The quotation marks have to left-right justified | ||
| 738 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 739 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 740 | |||
| 741 | PANEL11 LABEL BYTE ;AN000; | ||
| 742 | DB ' Number of Printers ';AN000; | ||
| 743 | PANEL11_W EQU ($-PANEL11) ;AN000; | ||
| 744 | DB ' ';AN000; | ||
| 745 | DB ' ';AN000; | ||
| 746 | DB ' ';AN000; | ||
| 747 | DB ' ';AN000; | ||
| 748 | DB 'How many printers do you have? . . . . (0-7)';AN000; | ||
| 749 | PANEL11_L EQU ($-PANEL11)/PANEL11_W ;AN000; | ||
| 750 | |||
| 751 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 752 | ; | ||
| 753 | ; | ||
| 754 | ; | ||
| 755 | ; | ||
| 756 | ; <R1> The quotation marks have to left-right justified | ||
| 757 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 758 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 759 | |||
| 760 | PANEL12 LABEL BYTE ;AN000; | ||
| 761 | DB ' Printer Selection ';AN000; | ||
| 762 | PANEL12_W EQU ($-PANEL12) ;AN000; | ||
| 763 | DB ' ';AN000; | ||
| 764 | DB ' ';AN000; | ||
| 765 | DB ' ';AN000; | ||
| 766 | DB ' ';AN000; | ||
| 767 | DB ' ';AN000; | ||
| 768 | DB ' ';AN000; | ||
| 769 | DB 'Choose a printer: ';AN000; | ||
| 770 | DB ' More:';AN000; | ||
| 771 | PANEL12_L EQU ($-PANEL12)/PANEL12_W ;AN000; | ||
| 772 | |||
| 773 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 774 | ; | ||
| 775 | ; | ||
| 776 | ; | ||
| 777 | ; | ||
| 778 | ; <R1> The quotation marks have to left-right justified | ||
| 779 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 780 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 781 | |||
| 782 | PANEL13 LABEL BYTE ;AN000; | ||
| 783 | DB ' Parallel Printer Port';AN000; | ||
| 784 | PANEL13_W EQU ($-PANEL13) ;AN000; | ||
| 785 | DB ' ';AN000; | ||
| 786 | DB ' ';AN000; | ||
| 787 | DB ' ';AN000; | ||
| 788 | DB ' ';AN000; | ||
| 789 | DB ' ';AN000; | ||
| 790 | DB 'Choose a parallel printer port: ';AN000; | ||
| 791 | PANEL13_L EQU ($-PANEL13)/PANEL13_W ;AN000; | ||
| 792 | |||
| 793 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 794 | ; | ||
| 795 | ; | ||
| 796 | ; | ||
| 797 | ; | ||
| 798 | ; <R1> The quotation marks have to left-right justified | ||
| 799 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 800 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 801 | |||
| 802 | PANEL14 LABEL BYTE ;AN000; | ||
| 803 | DB ' Serial Printer Port ';AN000; | ||
| 804 | PANEL14_W EQU ($-PANEL14) ;AN000; | ||
| 805 | DB ' ';AN000; | ||
| 806 | DB ' ';AN000; | ||
| 807 | DB ' ';AN000; | ||
| 808 | DB ' ';AN000; | ||
| 809 | DB 'Choose a serial printer port: ';AN000; | ||
| 810 | DB ' ';AN000; | ||
| 811 | DB ' ';AN000; | ||
| 812 | DB ' ';AN000; | ||
| 813 | DB ' ';AN000; | ||
| 814 | DB ' ';AN000; | ||
| 815 | DB ' ';AN000; | ||
| 816 | DB ' ';AN000; | ||
| 817 | DB 'To refer to this serial printer as a parallel printer,';AN000; | ||
| 818 | DB 'choose a parallel port. If not, choose None. ';AN000; | ||
| 819 | PANEL14_L EQU ($-PANEL14)/PANEL14_W ;AN000; | ||
| 820 | |||
| 821 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 822 | ; | ||
| 823 | ; | ||
| 824 | ; | ||
| 825 | ; | ||
| 826 | ; <R1> The quotation marks have to left-right justified | ||
| 827 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 828 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 829 | |||
| 830 | PANEL15 LABEL BYTE ;AN000; | ||
| 831 | DB ' Installation Options ';AN000; | ||
| 832 | PANEL15_W EQU ($-PANEL15) ;AN000; | ||
| 833 | DB ' ';AN000; | ||
| 834 | DB ' ';AN000; | ||
| 835 | DB 'SELECT defined a configuration based on the options';AC079;SEH ;AN000; | ||
| 836 | DB 'you chose for DOS functions and program workspace. ';AC079;SEH ;AN000; | ||
| 837 | DB ' ';AC079;SEH ;AN000; | ||
| 838 | DB ' ';AC079;SEH ;AN000; | ||
| 839 | DB 'Choose an option: ';AN000; | ||
| 840 | PANEL15_L EQU ($-PANEL15)/PANEL15_W ;AN000; | ||
| 841 | |||
| 842 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 843 | ; | ||
| 844 | ; | ||
| 845 | ; | ||
| 846 | ; | ||
| 847 | ; <R1> The quotation marks have to left-right justified | ||
| 848 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 849 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 850 | |||
| 851 | PANEL16 LABEL BYTE ;AN000; | ||
| 852 | DB ' Review Selections ';AN000; | ||
| 853 | PANEL16_W EQU ($-PANEL16) ;AN000; | ||
| 854 | DB ' ';AN000; | ||
| 855 | DB 'SELECT made these selections for you. You can accept ';AN000; | ||
| 856 | DB 'these selections or change any of them. If you change ';AN000; | ||
| 857 | DB 'an item from No to Yes, it will increase the amount of ';AN000; | ||
| 858 | DB 'memory DOS uses. ';AN000; | ||
| 859 | DB ' ';AN000; | ||
| 860 | DB 'To change a selection, use the up and down arrow keys to ';AN000; | ||
| 861 | DB 'highlight your choice, then press the spacebar. To accept';AN000; | ||
| 862 | DB 'all the selections, press the Enter key. ';AN000; | ||
| 863 | DB ' Choice: ';AN000; | ||
| 864 | PANEL16_L EQU ($-PANEL16)/PANEL16_W ;AN000; | ||
| 865 | |||
| 866 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 867 | ; | ||
| 868 | ; | ||
| 869 | ; | ||
| 870 | ; | ||
| 871 | ; <R1> The quotation marks have to left-right justified | ||
| 872 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 873 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 874 | |||
| 875 | PANEL17 LABEL BYTE ;AN028; | ||
| 876 | DB 'The printer you chose is not supported. ';AN028; | ||
| 877 | PANEL17_W EQU ($-PANEL17) ;AN028; | ||
| 878 | DB ' ';AN028; | ||
| 879 | DB 'Press Enter to return to the Printer Selection';AN028; | ||
| 880 | DB 'screen and choose another printer, or Press F3';AN028; | ||
| 881 | DB 'to exit the SELECT program. ';AN028; | ||
| 882 | PANEL17_L EQU ($-PANEL17)/PANEL17_W ;AN028; | ||
| 883 | |||
| 884 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 885 | ; | ||
| 886 | ; | ||
| 887 | ; | ||
| 888 | ; | ||
| 889 | ; <R1> The quotation marks have to left-right justified | ||
| 890 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 891 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 892 | |||
| 893 | PANEL18 LABEL BYTE ;AN000; | ||
| 894 | DB ' DOS Parameters ' ;AN000; | ||
| 895 | PANEL18_W EQU ($-PANEL18) ;AN000; | ||
| 896 | DB ' ' ;AN000; | ||
| 897 | DB ' ' ;AN000; | ||
| 898 | DB 'SELECT has set these values for you (if any). Press' ;AC000;JW | ||
| 899 | DB 'Enter to accept these values or type in new values. ' ;AC000;JW | ||
| 900 | DB ' ' ;AN000; | ||
| 901 | DB ' ' ;AN000; | ||
| 902 | DB 'DOS PATH . . . . . . ' ;AN000; | ||
| 903 | DB ' ' ;AN000; | ||
| 904 | DB ' ' ;AN000; | ||
| 905 | DB 'APPEND PARAMETERS . ' ;AN000;JW | ||
| 906 | DB 'APPEND PATH . . . . ' ;AN000; | ||
| 907 | DB ' ' ;AN000; | ||
| 908 | DB ' ' ;AN000; | ||
| 909 | DB 'PROMPT . . . . . . . ' ;AN000; | ||
| 910 | PANEL18_L EQU ($-PANEL18)/PANEL18_W ;AN000; | ||
| 911 | |||
| 912 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 913 | ; | ||
| 914 | ; | ||
| 915 | ; | ||
| 916 | ; | ||
| 917 | ; <R1> The quotation marks have to left-right justified | ||
| 918 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 919 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 920 | |||
| 921 | PANEL19 LABEL BYTE ;AN000; | ||
| 922 | DB ' DOS SHELL Parameters ' ;AN000; | ||
| 923 | PANEL19_W EQU ($-PANEL19) ;AN000; | ||
| 924 | DB ' ' ;AN000; | ||
| 925 | DB ' ' ;AN000; | ||
| 926 | DB 'SELECT has set these values for you (if any). Press' ;AC000;JW | ||
| 927 | DB 'Enter to accept these values or type in new values. ' ;AC000;JW | ||
| 928 | DB ' ' ;AN000; | ||
| 929 | DB ' ' ;AN000; | ||
| 930 | DB 'SHELL parameters . . ' ;AN000; | ||
| 931 | PANEL19_L EQU ($-PANEL19)/PANEL19_W ;AN000; | ||
| 932 | |||
| 933 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 934 | ; | ||
| 935 | ; | ||
| 936 | ; | ||
| 937 | ; | ||
| 938 | ; <R1> The quotation marks have to left-right justified | ||
| 939 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 940 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 941 | |||
| 942 | PANEL20 LABEL BYTE ;AN000; | ||
| 943 | DB 'An unrecoverable error occurred while installing' ;AN000; | ||
| 944 | PANEL20_W EQU ($-PANEL20) ;AN000; | ||
| 945 | DB 'DOS. Press F3 to exit SELECT. ' ;AN000; | ||
| 946 | PANEL20_L EQU ($-PANEL20)/PANEL20_W ;AN000; | ||
| 947 | |||
| 948 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 949 | ; | ||
| 950 | ; | ||
| 951 | ; | ||
| 952 | ; | ||
| 953 | ; <R1> The quotation marks have to left-right justified | ||
| 954 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 955 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 956 | |||
| 957 | PANEL21 LABEL BYTE ;AN000; | ||
| 958 | DB ' FASTOPEN Parameters ' ;AN000; | ||
| 959 | PANEL21_W EQU ($-PANEL21) ;AN000; | ||
| 960 | DB ' ' ;AN000; | ||
| 961 | DB ' ' ;AN000; | ||
| 962 | DB 'SELECT has set these values for you (if any). Press' ;AC000;JW | ||
| 963 | DB 'Enter to accept these values or type in new values. ' ;AC000;JW | ||
| 964 | DB ' ' ;AN000; | ||
| 965 | DB ' ' ;AN000; | ||
| 966 | DB 'FASTOPEN parameters . . . ' ;AN000; | ||
| 967 | PANEL21_L EQU ($-PANEL21)/PANEL21_W ;AN000; | ||
| 968 | |||
| 969 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 970 | ; | ||
| 971 | ; | ||
| 972 | ; | ||
| 973 | ; | ||
| 974 | ; <R1> The quotation marks have to left-right justified | ||
| 975 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 976 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 977 | |||
| 978 | PANEL22 LABEL BYTE ;AN000; | ||
| 979 | DB ' SHARE Parameters ' ;AN000; | ||
| 980 | PANEL22_W EQU ($-PANEL22) ;AN000; | ||
| 981 | DB ' ' ;AN000; | ||
| 982 | DB ' ' ;AN000; | ||
| 983 | DB 'SELECT has set these values for you (if any). Press' ;AC000;JW | ||
| 984 | DB 'Enter to accept these values or type in new values. ' ;AC000;JW | ||
| 985 | DB ' ' ;AN000; | ||
| 986 | DB ' ' ;AN000; | ||
| 987 | DB 'SHARE parameters . . . . ' ;AN000; | ||
| 988 | PANEL22_L EQU ($-PANEL22)/PANEL22_W ;AN000; | ||
| 989 | |||
| 990 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 991 | ; | ||
| 992 | ; | ||
| 993 | ; | ||
| 994 | ; | ||
| 995 | ; <R1> The quotation marks have to left-right justified | ||
| 996 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 997 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 998 | |||
| 999 | PANEL23 LABEL BYTE ;AN000; | ||
| 1000 | DB ' GRAPHICS Parameters ' ;AN000; | ||
| 1001 | PANEL23_W EQU ($-PANEL23) ;AN000; | ||
| 1002 | DB ' ' ;AN000; | ||
| 1003 | DB ' ' ;AN000; | ||
| 1004 | DB 'SELECT has set these values for you (if any). Press' ;AC000;JW | ||
| 1005 | DB 'Enter to accept these values or type in new values. ' ;AC000;JW | ||
| 1006 | DB ' ' ;AN000; | ||
| 1007 | DB ' ' ;AN000; | ||
| 1008 | DB 'GRAPHICS parameters . . ' ;AN000; | ||
| 1009 | PANEL23_L EQU ($-PANEL23)/PANEL23_W ;AN000; | ||
| 1010 | |||
| 1011 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1012 | ; | ||
| 1013 | ; | ||
| 1014 | ; | ||
| 1015 | ; | ||
| 1016 | ; <R1> The quotation marks have to left-right justified | ||
| 1017 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1018 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1019 | |||
| 1020 | PANEL24 LABEL BYTE ;AN000; | ||
| 1021 | DB ' Expanded Memory Parameters ' ;AN000; | ||
| 1022 | PANEL24_W EQU ($-PANEL24) ;AN000; | ||
| 1023 | DB ' ' ;AN000; | ||
| 1024 | DB ' ' ;AN000; | ||
| 1025 | DB 'SELECT has set these values for you (if any). Press' ;AC000;JW | ||
| 1026 | DB 'Enter to accept these values or type in new values. ' ;AC000;JW | ||
| 1027 | DB ' ' ;AN000; | ||
| 1028 | DB ' ' ;AN000; | ||
| 1029 | DB 'XMAEM parameters . . . . ' ;AN000; | ||
| 1030 | DB ' ' ;AN000; | ||
| 1031 | DB ' ' ;AN000; | ||
| 1032 | DB 'XMA2EMS parameters . . . ' ;AN000; | ||
| 1033 | PANEL24_L EQU ($-PANEL24)/PANEL24_W ;AN000; | ||
| 1034 | |||
| 1035 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1036 | ; | ||
| 1037 | ; | ||
| 1038 | ; | ||
| 1039 | ; | ||
| 1040 | ; <R1> The quotation marks have to left-right justified | ||
| 1041 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1042 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1043 | |||
| 1044 | PANEL25 LABEL BYTE ;AN000; | ||
| 1045 | DB ' RAMDRIVE Parameters ' ;AN000; | ||
| 1046 | PANEL25_W EQU ($-PANEL25) ;AN000; | ||
| 1047 | DB ' ' ;AN000; | ||
| 1048 | DB ' ' ;AN000; | ||
| 1049 | DB 'SELECT has set these values for you (if any). Press' ;AC000;JW | ||
| 1050 | DB 'Enter to accept these values or type in new values. ' ;AC000;JW | ||
| 1051 | DB ' ' ;AN000; | ||
| 1052 | DB ' ' ;AN000; | ||
| 1053 | DB 'RAMDRIVE parameters . . . . ' ;AN000; | ||
| 1054 | PANEL25_L EQU ($-PANEL25)/PANEL25_W ;AN000; | ||
| 1055 | |||
| 1056 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1057 | ; | ||
| 1058 | ; | ||
| 1059 | ; | ||
| 1060 | ; | ||
| 1061 | ; <R1> The quotation marks have to left-right justified | ||
| 1062 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1063 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1064 | |||
| 1065 | PANEL26 LABEL BYTE ;AN000; | ||
| 1066 | DB ' Configuration Parameters' ;AN000; | ||
| 1067 | PANEL26_W EQU ($-PANEL26) ;AN000; | ||
| 1068 | DB ' ' ;AN000; | ||
| 1069 | DB 'SELECT has set these values for you. Press ' ;AN000; | ||
| 1070 | DB 'Enter to accept the values shown or type in ' ;AN000; | ||
| 1071 | DB 'new values. ' ;AN000; | ||
| 1072 | DB ' ' ;AN000; | ||
| 1073 | DB ' ' ;AN000; | ||
| 1074 | DB 'BREAK. . . . . . (ON/OFF) ' ;AN000; | ||
| 1075 | DB 'BUFFERS . . . . (1-99,1-8) ' ;AN000; | ||
| 1076 | DB 'FCBS . . . . . . (1-255,0-255) ' ;AN000; | ||
| 1077 | DB 'FILES . . . . . (8-255) ' ;AN000; | ||
| 1078 | DB 'LASTDRIVE . . . (A-Z) ' ;AN000; | ||
| 1079 | DB 'STACKS . . . . . (8-64,32-512) ' ;AN000; | ||
| 1080 | DB 'VERIFY . . . . . (ON/OFF) ' ;AN000; | ||
| 1081 | PANEL26_L EQU ($-PANEL26)/PANEL26_W ;AN000; | ||
| 1082 | |||
| 1083 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1084 | ; | ||
| 1085 | ; | ||
| 1086 | ; | ||
| 1087 | ; | ||
| 1088 | ; <R1> The quotation marks have to left-right justified | ||
| 1089 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1090 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1091 | |||
| 1092 | PANEL27 LABEL BYTE ;AN000; | ||
| 1093 | DB ' Partition Fixed Disk ';AN000; | ||
| 1094 | PANEL27_W EQU ($-PANEL27) ;AN000; | ||
| 1095 | DB ' ';AN000; | ||
| 1096 | DB ' ';AN000; | ||
| 1097 | DB ' ';AN000; | ||
| 1098 | DB ' ';AN000; | ||
| 1099 | DB ' ';AN000; | ||
| 1100 | DB 'This fixed disk must be set up before you can use it. Setting up ';AN000; | ||
| 1101 | DB 'involves separating the disk into areas called partitions. SELECT';AN000; | ||
| 1102 | DB 'can define the partition sizes for you, or you can define your ';AN000; | ||
| 1103 | DB 'own partition sizes. ';AN000; | ||
| 1104 | DB ' ';AN000; | ||
| 1105 | DB ' ';AN000; | ||
| 1106 | DB 'Choose an option: ';AN000; | ||
| 1107 | PANEL27_L EQU ($-PANEL27)/PANEL27_W ;AN000; | ||
| 1108 | |||
| 1109 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1110 | ; | ||
| 1111 | ; | ||
| 1112 | ; | ||
| 1113 | ; | ||
| 1114 | ; <R1> The quotation marks have to left-right justified | ||
| 1115 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1116 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1117 | |||
| 1118 | PANEL28 LABEL BYTE ;AN000; | ||
| 1119 | DB ' Partition Fixed Disk ';AN000; | ||
| 1120 | PANEL28_W EQU ($-PANEL28) ;AN000; | ||
| 1121 | DB ' ';AN000; | ||
| 1122 | DB ' ';AN000; | ||
| 1123 | DB ' ';AN000; | ||
| 1124 | DB ' ';AN000; | ||
| 1125 | DB ' ';AN000; | ||
| 1126 | DB 'This fixed disk is not completely set up. The fixed disk has space';AN000; | ||
| 1127 | DB 'that needs to be divided into areas called partitions. You can ';AN000; | ||
| 1128 | DB 'leave the fixed disk as it is, or you can define your own ';AN000; | ||
| 1129 | DB 'partition sizes. ';AN000; | ||
| 1130 | DB ' ';AN000; | ||
| 1131 | DB ' ';AN000; | ||
| 1132 | DB 'Choose an option: ';AN000; | ||
| 1133 | PANEL28_L EQU ($-PANEL28)/PANEL28_W ;AN000; | ||
| 1134 | |||
| 1135 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1136 | ; | ||
| 1137 | ; | ||
| 1138 | ; | ||
| 1139 | ; | ||
| 1140 | ; <R1> The quotation marks have to left-right justified | ||
| 1141 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1142 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1143 | |||
| 1144 | PANEL29 LABEL BYTE ;AN000; | ||
| 1145 | DB 'You must restart your computer to continue.' ;AN000; | ||
| 1146 | PANEL29_W EQU ($-PANEL29) ;AN000; | ||
| 1147 | PANEL29_L EQU ($-PANEL29)/PANEL29_W ;AN000; | ||
| 1148 | |||
| 1149 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1150 | ; | ||
| 1151 | ; | ||
| 1152 | ; | ||
| 1153 | ; | ||
| 1154 | ; <R1> The quotation marks have to left-right justified | ||
| 1155 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1156 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1157 | |||
| 1158 | PANEL30 LABEL BYTE ;AN000; | ||
| 1159 | DB ' Date and Time' ;AN000; | ||
| 1160 | PANEL30_W EQU ($-PANEL30) ;AN000; | ||
| 1161 | DB ' ' ;AN000; | ||
| 1162 | DB ' ' ;AN000; | ||
| 1163 | DB 'Current date: ' ;AN000; | ||
| 1164 | DB ' ' ;AN000; | ||
| 1165 | DB ' Year . . . . (1980-2079) ' ;AN000; | ||
| 1166 | DB ' ' ;AN000; | ||
| 1167 | DB ' Month . . . (1-12) ' ;AN000; | ||
| 1168 | DB ' ' ;AN000; | ||
| 1169 | DB ' Day . . . . (1-31) ' ;AN000; | ||
| 1170 | DB ' ' ;AN000; | ||
| 1171 | DB ' ' ;AN000; | ||
| 1172 | DB ' ' ;AN000; | ||
| 1173 | DB 'Current time: ' ;AN000; | ||
| 1174 | DB ' ' ;AN000; | ||
| 1175 | DB ' Hour . . . . (00-23) ' ;AN000; | ||
| 1176 | DB ' ' ;AN000; | ||
| 1177 | DB ' Minute . . . (00-59) ' ;AN000; | ||
| 1178 | DB ' ' ;AN000; | ||
| 1179 | DB ' Second . . . (00-59) ' ;AN000; | ||
| 1180 | PANEL30_L EQU ($-PANEL30)/PANEL30_W ;AN000; | ||
| 1181 | |||
| 1182 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1183 | ; | ||
| 1184 | ; | ||
| 1185 | ; | ||
| 1186 | ; | ||
| 1187 | ; <R1> The quotation marks have to left-right justified | ||
| 1188 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1189 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1190 | |||
| 1191 | PANEL31 LABEL BYTE ;AN000; | ||
| 1192 | DB ' Format Fixed Disk Drive' ;AN000; | ||
| 1193 | PANEL31_W EQU ($-PANEL31) ;AN000; | ||
| 1194 | DB ' ' ;AN000; | ||
| 1195 | DB ' ' ;AN000; | ||
| 1196 | DB ' ' ;AN000; | ||
| 1197 | DB ' ' ;AN000;JW added line | ||
| 1198 | DB ' ' ;AN000; | ||
| 1199 | DB 'Choose an option: ' ;AN000; | ||
| 1200 | PANEL31_L EQU ($-PANEL31)/PANEL31_W ;AN000; | ||
| 1201 | |||
| 1202 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1203 | ; | ||
| 1204 | ; | ||
| 1205 | ; | ||
| 1206 | ; | ||
| 1207 | ; <R1> The quotation marks have to left-right justified | ||
| 1208 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1209 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1210 | |||
| 1211 | PANEL32 LABEL BYTE ;AN000; | ||
| 1212 | DB ' Continuing Installation' ;AN000; | ||
| 1213 | PANEL32_W EQU ($-PANEL32) ;AN000; | ||
| 1214 | PANEL32_L EQU ($-PANEL32)/PANEL32_W ;AN000; | ||
| 1215 | |||
| 1216 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1217 | ; | ||
| 1218 | ; ************** | ||
| 1219 | ; | ||
| 1220 | ; | ||
| 1221 | ; <R1> The quotation marks have to left-right justified | ||
| 1222 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1223 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1224 | |||
| 1225 | PANEL33 LABEL BYTE ;AN028; | ||
| 1226 | DB 'System does not support selected keyboard. ';AN028; | ||
| 1227 | PANEL33_W EQU ($-PANEL33) ;AN028; | ||
| 1228 | DB ' ';AN028; | ||
| 1229 | DB 'Press Enter to return to the Keyboard Selection';AN028; | ||
| 1230 | DB 'screen and choose another keyboard, or Press F3';AN028; | ||
| 1231 | DB 'to exit the SELECT program. ';AN028; | ||
| 1232 | PANEL33_L EQU ($-PANEL33)/PANEL33_W ;AN028; | ||
| 1233 | |||
| 1234 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1235 | ; | ||
| 1236 | ; | ||
| 1237 | ; | ||
| 1238 | ; | ||
| 1239 | ; <R1> The quotation marks have to left-right justified | ||
| 1240 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1241 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1242 | |||
| 1243 | PANEL34 LABEL BYTE ;AN000; | ||
| 1244 | DB ' Installation Complete' ;AN000; | ||
| 1245 | PANEL34_W EQU ($-PANEL34) ;AN000; | ||
| 1246 | PANEL34_L EQU ($-PANEL34)/PANEL34_W ;AN000; | ||
| 1247 | |||
| 1248 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1249 | ; | ||
| 1250 | ; | ||
| 1251 | ; | ||
| 1252 | ; | ||
| 1253 | ; <R1> The quotation marks have to left-right justified | ||
| 1254 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1255 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1256 | |||
| 1257 | PANEL35 LABEL BYTE ;AN028; | ||
| 1258 | DB 'Installation of MS-DOS 4.0 is complete. ';AN028; | ||
| 1259 | PANEL35_W EQU ($-PANEL35) ;AN028; | ||
| 1260 | DB ' ';AN028; | ||
| 1261 | DB ' ';AN028; | ||
| 1262 | DB 'Place the new STARTUP diskette in drive A and ';AC028; | ||
| 1263 | DB 'press Ctrl+Alt+Del to start DOS. ';AC028; | ||
| 1264 | DB ' ';AN028; | ||
| 1265 | DB 'FOR INFORMATION ON USING THE DOS SHELL, REFER TO';AC076;SEH ;AN028; | ||
| 1266 | DB 'THE "MS-DOS 4.0 USERS GUIDE" BOOK. ';AC076;SEH ;AN028; ;AC049;SEH | ||
| 1267 | PANEL35_L EQU ($-PANEL35)/PANEL35_W ;AN028; | ||
| 1268 | |||
| 1269 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1270 | ; | ||
| 1271 | ; | ||
| 1272 | ; | ||
| 1273 | ; | ||
| 1274 | ; <R9> DO NOT TRANSLATE OR CHANGE!!!! | ||
| 1275 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1276 | ; |---------1---------2---------3---------4---------5----| | ||
| 1277 | |||
| 1278 | PANEL36 LABEL BYTE ;AN000; | ||
| 1279 | DB '������������������������������������������������������Ŀ';AN000; | ||
| 1280 | PANEL36_W EQU ($-PANEL36) ;AN000; | ||
| 1281 | DB '� �';AN000; | ||
| 1282 | DB '� �';AN000; | ||
| 1283 | DB '� �';AN000; | ||
| 1284 | DB '� �';AN000; | ||
| 1285 | DB '� �';AN000; | ||
| 1286 | DB '� �';AN000; | ||
| 1287 | DB '� �';AN000; | ||
| 1288 | DB '� �';AN000; | ||
| 1289 | DB '� �';AN000; | ||
| 1290 | DB '������������������������������������������������������Ĵ';AN000; | ||
| 1291 | DB '� �';AN000; | ||
| 1292 | DB '��������������������������������������������������������';AN000; | ||
| 1293 | PANEL36_L EQU ($-PANEL36)/PANEL36_W ;AN000; | ||
| 1294 | |||
| 1295 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1296 | ; | ||
| 1297 | ; | ||
| 1298 | ; | ||
| 1299 | ; | ||
| 1300 | ; <R9> DO NOT TRANSLATE OR CHANGE!!!! | ||
| 1301 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1302 | |||
| 1303 | PANEL37 LABEL BYTE ;AN000; | ||
| 1304 | DB '��������������������������������������������������������������������������������';AN000; | ||
| 1305 | PANEL37_W EQU ($-PANEL37) ;AN000; | ||
| 1306 | PANEL37_L EQU ($-PANEL37)/PANEL37_W ;AN000; | ||
| 1307 | |||
| 1308 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1309 | ; | ||
| 1310 | ; | ||
| 1311 | ; | ||
| 1312 | ; | ||
| 1313 | ; <R1> The quotation marks have to left-right justified | ||
| 1314 | ; <R3> The panel will be centered in an 80 column screen | ||
| 1315 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1316 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1317 | |||
| 1318 | PANEL38 LABEL BYTE ;AN000; | ||
| 1319 | DB 'Press Enter (��) to continue or Esc to Cancel' ;AN000; | ||
| 1320 | PANEL38_W EQU ($-PANEL38) ;AN000; | ||
| 1321 | PANEL38_L EQU ($-PANEL38)/PANEL38_W ;AN000; | ||
| 1322 | |||
| 1323 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1324 | ; | ||
| 1325 | ; | ||
| 1326 | ; | ||
| 1327 | ; | ||
| 1328 | ; <R1> The quotation marks have to left-right justified | ||
| 1329 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1330 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1331 | |||
| 1332 | PANEL39 LABEL BYTE ;AN000; | ||
| 1333 | DB 'Printer........... ' ;AN000; | ||
| 1334 | PANEL39_W EQU ($-PANEL39) ;AN000; | ||
| 1335 | PANEL39_L EQU ($-PANEL39)/PANEL39_W ;AN000; | ||
| 1336 | |||
| 1337 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1338 | ; | ||
| 1339 | ; | ||
| 1340 | ; | ||
| 1341 | ; | ||
| 1342 | ; <R1> The quotation marks have to left-right justified | ||
| 1343 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1344 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1345 | |||
| 1346 | PANEL40 LABEL BYTE ;AN000; | ||
| 1347 | DB ' F3=Exit ' ;AN000; | ||
| 1348 | PANEL40_W EQU ($-PANEL40) ;AN000; | ||
| 1349 | PANEL40_L EQU ($-PANEL40)/PANEL40_W ;AN000; | ||
| 1350 | |||
| 1351 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1352 | ; | ||
| 1353 | ; | ||
| 1354 | ; | ||
| 1355 | ; | ||
| 1356 | ; <R1> The quotation marks have to left-right justified | ||
| 1357 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1358 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1359 | |||
| 1360 | PANEL41 LABEL BYTE ;AN000; | ||
| 1361 | DB 'Fixed Disk........ ' ;AC000;JW | ||
| 1362 | PANEL41_W EQU ($-PANEL41) ;AN000; | ||
| 1363 | PANEL41_L EQU ($-PANEL41)/PANEL41_W ;AN000; | ||
| 1364 | |||
| 1365 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1366 | ; | ||
| 1367 | ; | ||
| 1368 | ; | ||
| 1369 | ; | ||
| 1370 | ; <R1> The quotation marks have to left-right justified | ||
| 1371 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1372 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1373 | |||
| 1374 | PANEL42 LABEL BYTE ;AN000; | ||
| 1375 | DB 'Logical Drive..... :' ;AC000;JW | ||
| 1376 | PANEL42_W EQU ($-PANEL42) ;AN000; | ||
| 1377 | PANEL42_L EQU ($-PANEL42)/PANEL42_W ;AN000; | ||
| 1378 | |||
| 1379 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1380 | ; | ||
| 1381 | ; | ||
| 1382 | ; | ||
| 1383 | ; | ||
| 1384 | ; <R1> The quotation marks have to left-right justified | ||
| 1385 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1386 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1387 | |||
| 1388 | PANEL43 LABEL BYTE ;AN000; | ||
| 1389 | DB 'Press Ctrl+Alt+Del to continue with DOS installation.';AN000; | ||
| 1390 | PANEL43_W EQU ($-PANEL43) ;AN000; | ||
| 1391 | PANEL43_L EQU ($-PANEL43)/PANEL43_W ;AN000; | ||
| 1392 | |||
| 1393 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1394 | ; | ||
| 1395 | ; | ||
| 1396 | ; | ||
| 1397 | ; | ||
| 1398 | ; <R1> The quotation marks have to left-right justified | ||
| 1399 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1400 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1401 | |||
| 1402 | PANEL44 LABEL BYTE ;AN000; | ||
| 1403 | DB 'Copying from OPERATING diskette . . .';AN000; | ||
| 1404 | PANEL44_W EQU ($-PANEL44) ;AN000; | ||
| 1405 | PANEL44_L EQU ($-PANEL44)/PANEL44_W ;AN000; | ||
| 1406 | |||
| 1407 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1408 | ; | ||
| 1409 | ; | ||
| 1410 | ; | ||
| 1411 | ; | ||
| 1412 | ; <R1> The quotation marks have to left-right justified | ||
| 1413 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1414 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1415 | |||
| 1416 | PANEL45 LABEL BYTE ;AN000; | ||
| 1417 | DB 'Copying from INSTALL diskette . . .' ;AN000; | ||
| 1418 | PANEL45_W EQU ($-PANEL45) ;AN000; | ||
| 1419 | PANEL45_L EQU ($-PANEL45)/PANEL45_W ;AN000; | ||
| 1420 | |||
| 1421 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1422 | ; | ||
| 1423 | ; | ||
| 1424 | ; | ||
| 1425 | ; | ||
| 1426 | ; <R1> The quotation marks have to left-right justified | ||
| 1427 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1428 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1429 | |||
| 1430 | PANEL46 LABEL BYTE ;AN000; | ||
| 1431 | DB 'Installation of MS-DOS 4.0 is complete. ';AN000; | ||
| 1432 | PANEL46_W EQU ($-PANEL46) ;AN000; | ||
| 1433 | DB ' ';AN076;SEH | ||
| 1434 | DB ' ';AN076;SEH | ||
| 1435 | DB 'REFER TO THE "MS-DOS 4.0 USERS GUIDE" BOOK';AC076;SEH ;AC049;SEH ;AN028; | ||
| 1436 | DB 'FOR INFORMATION ON USING THE DOS SHELL. ';AC076;SEH ;AN028; | ||
| 1437 | PANEL46_L EQU ($-PANEL46)/PANEL46_W ;AN000; | ||
| 1438 | |||
| 1439 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1440 | ; | ||
| 1441 | ; | ||
| 1442 | ; | ||
| 1443 | ; | ||
| 1444 | ; <R1> The quotation marks have to left-right justified | ||
| 1445 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1446 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1447 | |||
| 1448 | PANEL47 LABEL BYTE ;AN000; | ||
| 1449 | DB 'Remove all diskettes. Press Ctrl+Alt+Del to start DOS.';AN000; | ||
| 1450 | PANEL47_W EQU ($-PANEL47) ;AN000; | ||
| 1451 | PANEL47_L EQU ($-PANEL47)/PANEL47_W ;AN000; | ||
| 1452 | |||
| 1453 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1454 | ; | ||
| 1455 | ; | ||
| 1456 | ; | ||
| 1457 | ; <R1> The quotation marks have to left-right justified | ||
| 1458 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1459 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1460 | |||
| 1461 | PANEL48 LABEL BYTE ;AN000; | ||
| 1462 | DB 'Installation of MS-DOS 4.0 is complete. ';AN000; | ||
| 1463 | PANEL48_W EQU ($-PANEL48) ;AN000; | ||
| 1464 | DB ' ';AN000; | ||
| 1465 | DB ' ';AN000; | ||
| 1466 | DB 'To start DOS, place the STARTUP diskette in drive A';AC064;SEH;AC056;SEH ;AC000;JW | ||
| 1467 | DB 'and press Ctrl+Alt+Del. ';AC064;SEH;AC056;SEH ;AC000;JW | ||
| 1468 | DB ' ';AN000; | ||
| 1469 | DB 'or ';AN064;SEH;AN000; | ||
| 1470 | DB ' ';AN000; | ||
| 1471 | DB 'To start the DOS Shell, place the SHELL diskette ';AC064;SEH;AC056;SEH ;AC028; | ||
| 1472 | DB 'in drive A, and press Ctrl+Alt+Del. ';AC064;SEH;AC056;SEH ;AC028; | ||
| 1473 | DB ' ';AN064;SEH | ||
| 1474 | DB 'FOR INFORMATION ON USING THE DOS SHELL, REFER TO ';AC076;SEH ;AC064;SEH;AC056;SEH ;AN028; | ||
| 1475 | DB 'THE "MS-DOS 4.0 USERS GUIDE" BOOK. ';AC076;SEH ;AC056;SEH ;AC049;SEH ;AN028; | ||
| 1476 | PANEL48_L EQU ($-PANEL48)/PANEL48_W ;AN000; | ||
| 1477 | |||
| 1478 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1479 | ; | ||
| 1480 | ; | ||
| 1481 | ; | ||
| 1482 | ; | ||
| 1483 | ; <R1> The quotation marks have to left-right justified | ||
| 1484 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1485 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1486 | |||
| 1487 | PANEL49 LABEL BYTE ;AN000; | ||
| 1488 | DB ' F1=Help ' ;AN000; | ||
| 1489 | PANEL49_W EQU ($-PANEL49) ;AN000; | ||
| 1490 | PANEL49_L EQU ($-PANEL49)/PANEL49_W ;AN000; | ||
| 1491 | |||
| 1492 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1493 | ; | ||
| 1494 | ; | ||
| 1495 | ; | ||
| 1496 | ; | ||
| 1497 | ; <R1> The quotation marks have to left-right justified | ||
| 1498 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1499 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1500 | |||
| 1501 | PANEL50 LABEL BYTE ;AN000; | ||
| 1502 | DB ' F9=Keys ' ;AN000; | ||
| 1503 | PANEL50_W EQU ($-PANEL50) ;AN000; | ||
| 1504 | PANEL50_L EQU ($-PANEL50)/PANEL50_W ;AN000; | ||
| 1505 | |||
| 1506 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1507 | ; | ||
| 1508 | ; | ||
| 1509 | ; | ||
| 1510 | ; | ||
| 1511 | ; <R1> The quotation marks have to left-right justified | ||
| 1512 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1513 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1514 | |||
| 1515 | PANEL51 LABEL BYTE ;AN000; | ||
| 1516 | DB ' Esc=Cancel ' ;AN000; | ||
| 1517 | PANEL51_W EQU ($-PANEL51) ;AN000; | ||
| 1518 | PANEL51_L EQU ($-PANEL51)/PANEL51_W ;AN000; | ||
| 1519 | |||
| 1520 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1521 | ; | ||
| 1522 | ; | ||
| 1523 | ; | ||
| 1524 | ; | ||
| 1525 | ; <R1> The quotation marks have to left-right justified | ||
| 1526 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1527 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1528 | |||
| 1529 | PANEL52 LABEL BYTE ;AN000; | ||
| 1530 | DB ' Enter ' ;AN000; | ||
| 1531 | PANEL52_W EQU ($-PANEL52) ;AN000; | ||
| 1532 | PANEL52_L EQU ($-PANEL52)/PANEL52_W ;AN000; | ||
| 1533 | |||
| 1534 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1535 | ; | ||
| 1536 | ; ************ | ||
| 1537 | ; | ||
| 1538 | ; | ||
| 1539 | ; <R1> The quotation marks have to left-right justified | ||
| 1540 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1541 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1542 | PANEL53 LABEL BYTE ;AN000; | ||
| 1543 | DB 'Installation of MS-DOS 4.0 is complete. ';AN000; | ||
| 1544 | PANEL53_W EQU ($-PANEL53) ;AN000; | ||
| 1545 | DB ' ';AN000; | ||
| 1546 | DB 'The files AUTOEXEC.400 and CONFIG.400 have been ';AC057;SEH ;AN000; | ||
| 1547 | DB 'copied to your fixed disk. The files contain the';AC057;SEH ;AN000; | ||
| 1548 | DB 'options selected for DOS 4.0. To get the options';AC057;SEH ;AN000; | ||
| 1549 | DB 'selected, update your AUTOEXEC.BAT and CONFIG.SYS';AC057;SEH ;AN000; | ||
| 1550 | DB 'files. Refer to the "MS-DOS 4.0 Users Guide" ';AC057;SEH ;AN000; | ||
| 1551 | DB 'book for information on updating these files. ';AC057;SEH ;AN000; | ||
| 1552 | DB ' ';AC057;SEH ;AC049;SEH ;AN000; | ||
| 1553 | DB 'FOR INFORMATION ON USING THE DOS SHELL, REFER TO ';AC076;SEH ;AC057;SEH ;AC028; | ||
| 1554 | DB 'THE "MS-DOS 4.0 USERS GUIDE" BOOK. ';AC076;SEH ;AC057;SEH ;AN028; | ||
| 1555 | PANEL53_L EQU ($-PANEL53)/PANEL53_W ;AN000; | ||
| 1556 | |||
| 1557 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1558 | ; | ||
| 1559 | ; | ||
| 1560 | ; | ||
| 1561 | ; | ||
| 1562 | ; <R1> The quotation marks have to left-right justified | ||
| 1563 | ; <R5> The width of the entry must not exceed the RULER provided. | ||
| 1564 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1565 | ; |---------1---------2---------3---------4---------5-| | ||
| 1566 | |||
| 1567 | PANEL54 LABEL BYTE ;AN028; | ||
| 1568 | DB 'Disk write-protected ' ;AN028; | ||
| 1569 | PANEL54_W EQU ($-PANEL54) ;AN028; | ||
| 1570 | DB ' ' ;AN028; | ||
| 1571 | DB 'Use a non-protected diskette or remove' ;AN028; | ||
| 1572 | DB 'the write-protection on the diskette. ' ;AN028; | ||
| 1573 | PANEL54_L EQU ($-PANEL54)/PANEL54_W ;AN028; | ||
| 1574 | |||
| 1575 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1576 | ; | ||
| 1577 | ; | ||
| 1578 | ; | ||
| 1579 | ; | ||
| 1580 | ; <R1> The quotation marks have to left-right justified | ||
| 1581 | ; <R5> The width of the entry must not exceed the RULER provided. | ||
| 1582 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1583 | ; |---------1---------2---------3---------4---------5-| | ||
| 1584 | |||
| 1585 | PANEL55 LABEL BYTE ;AN028; | ||
| 1586 | DB 'Drive not ready ';AN028; | ||
| 1587 | PANEL55_W EQU ($-PANEL55) ;AN028; | ||
| 1588 | DB ' ';AN028; | ||
| 1589 | DB 'Reinsert the diskette and close the drive door.';AN028; | ||
| 1590 | DB 'Press Enter to continue. ';AN028; | ||
| 1591 | PANEL55_L EQU ($-PANEL55)/PANEL55_W ;AN028; | ||
| 1592 | |||
| 1593 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1594 | ; | ||
| 1595 | ; | ||
| 1596 | ; | ||
| 1597 | ; | ||
| 1598 | ; <R1> The quotation marks have to left-right justified | ||
| 1599 | ; <R5> The width of the entry must not exceed the RULER provided. | ||
| 1600 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1601 | ; |---------1---------2---------3---------4---------5-| | ||
| 1602 | |||
| 1603 | PANEL56 LABEL BYTE ;AN000; | ||
| 1604 | DB 'Defective diskette ';AN000; | ||
| 1605 | PANEL56_W EQU ($-PANEL56) ;AN000; | ||
| 1606 | DB ' ';AN028; | ||
| 1607 | DB 'Press Enter to retry, or Press F3 to exit SELECT.';AN000; | ||
| 1608 | PANEL56_L EQU ($-PANEL56)/PANEL56_W ;AN000; | ||
| 1609 | |||
| 1610 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1611 | ; | ||
| 1612 | ; | ||
| 1613 | ; | ||
| 1614 | ; | ||
| 1615 | ; <R1> The quotation marks have to left-right justified | ||
| 1616 | ; <R5> The width of the entry must not exceed the RULER provided. | ||
| 1617 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1618 | ; |---------1---------2---------3---------4---------5-| | ||
| 1619 | |||
| 1620 | PANEL57 LABEL BYTE ;AN000; | ||
| 1621 | DB 'An error occurred while installing DOS. ';AN000; | ||
| 1622 | PANEL57_W EQU ($-PANEL57) ;AN000; | ||
| 1623 | DB 'Press Enter to continue, or F3 to exit SELECT.';AN000; | ||
| 1624 | PANEL57_L EQU ($-PANEL57)/PANEL57_W ;AN000; | ||
| 1625 | |||
| 1626 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1627 | ; | ||
| 1628 | ; | ||
| 1629 | ; | ||
| 1630 | ; | ||
| 1631 | ; <R1> The quotation marks have to left-right justified | ||
| 1632 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1633 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1634 | |||
| 1635 | PANEL58 LABEL BYTE ;AN000; | ||
| 1636 | DB 'Insert STARTUP diskette in drive B' ;AC000;JW | ||
| 1637 | PANEL58_W EQU ($-PANEL58) ;AN000; | ||
| 1638 | PANEL58_L EQU ($-PANEL58)/PANEL58_W ;AN000; | ||
| 1639 | |||
| 1640 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1641 | ; | ||
| 1642 | ; | ||
| 1643 | ; | ||
| 1644 | ; | ||
| 1645 | ; <R1> The quotation marks have to left-right justified | ||
| 1646 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1647 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1648 | |||
| 1649 | PANEL59 LABEL BYTE ;AN000; | ||
| 1650 | DB 'Insert OPERATING diskette in drive A' ;AC000;JW | ||
| 1651 | PANEL59_W EQU ($-PANEL59) ;AN000; | ||
| 1652 | PANEL59_L EQU ($-PANEL59)/PANEL59_W ;AN000; | ||
| 1653 | |||
| 1654 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1655 | ; | ||
| 1656 | ; | ||
| 1657 | ; | ||
| 1658 | ; | ||
| 1659 | ; <R1> The quotation marks have to left-right justified | ||
| 1660 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1661 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1662 | |||
| 1663 | PANEL60 LABEL BYTE ;AN000; | ||
| 1664 | DB 'Insert SHELL diskette in drive B' ;AC000;JW | ||
| 1665 | PANEL60_W EQU ($-PANEL60) ;AN000; | ||
| 1666 | PANEL60_L EQU ($-PANEL60)/PANEL60_W ;AN000; | ||
| 1667 | |||
| 1668 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1669 | ; | ||
| 1670 | ; | ||
| 1671 | ; | ||
| 1672 | ; | ||
| 1673 | ; <R1> The quotation marks have to left-right justified | ||
| 1674 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1675 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1676 | |||
| 1677 | PANEL61 LABEL BYTE ;AN000; | ||
| 1678 | DB 'Insert INSTALL diskette in drive A' ;AC000;JW | ||
| 1679 | PANEL61_W EQU ($-PANEL61) ;AN000; | ||
| 1680 | PANEL61_L EQU ($-PANEL61)/PANEL61_W ;AN000; | ||
| 1681 | |||
| 1682 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1683 | ; | ||
| 1684 | ; | ||
| 1685 | ; | ||
| 1686 | ; | ||
| 1687 | ; <R1> The quotation marks have to left-right justified | ||
| 1688 | ; <R5> The width of the entry must not exceed the RULER provided. | ||
| 1689 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1690 | ; |---------1---------2---------3---------4---------5-| | ||
| 1691 | |||
| 1692 | PANEL62 LABEL BYTE ;AN000; | ||
| 1693 | DB 'Incorrect path ';AN000; | ||
| 1694 | PANEL62_W EQU ($-PANEL62) ;AN000; | ||
| 1695 | DB ' ';AN028; | ||
| 1696 | DB 'The path specified cannot be found. ';AN000; | ||
| 1697 | DB ' ';AN000; | ||
| 1698 | DB 'Correct the path and retry the command.';AN000; | ||
| 1699 | PANEL62_L EQU ($-PANEL62)/PANEL62_W ;AN000; | ||
| 1700 | |||
| 1701 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1702 | ; | ||
| 1703 | ; | ||
| 1704 | ; | ||
| 1705 | ; | ||
| 1706 | ; <R1> The quotation marks have to left-right justified | ||
| 1707 | ; <R5> The width of the entry must not exceed the RULER provided. | ||
| 1708 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1709 | ; |---------1---------2---------3---------4---------5-| | ||
| 1710 | |||
| 1711 | PANEL63 LABEL BYTE ;AN028; | ||
| 1712 | DB 'Missing or unreadable SELECT.PRT file ';AN028; | ||
| 1713 | PANEL63_W EQU ($-PANEL63) ;AN028; | ||
| 1714 | DB ' ';AN028; | ||
| 1715 | DB 'Press Enter to continue SELECT and no printers';AN028; | ||
| 1716 | DB 'will be defined, or Press F3 to exit SELECT. ';AN028; | ||
| 1717 | PANEL63_L EQU ($-PANEL63)/PANEL63_W ;AN028; | ||
| 1718 | |||
| 1719 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1720 | ; | ||
| 1721 | ; | ||
| 1722 | ; | ||
| 1723 | ; | ||
| 1724 | ; <R1> The quotation marks have to left-right justified | ||
| 1725 | ; <R5> The width of the entry must not exceed the RULER provided. | ||
| 1726 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1727 | ; |---------1---------2---------3---------4---------5-| | ||
| 1728 | |||
| 1729 | PANEL64 LABEL BYTE ;AN000; | ||
| 1730 | DB 'Printer profile information invalid ';AN000; | ||
| 1731 | PANEL64_W EQU ($-PANEL64) ;AN000; | ||
| 1732 | DB ' ';AN000; | ||
| 1733 | DB 'Press Enter to return to the Printer Selection';AN000; | ||
| 1734 | DB 'screen and choose another printer, or Press F3';AN000; | ||
| 1735 | DB 'to exit SELECT. ';AN000; | ||
| 1736 | PANEL64_L EQU ($-PANEL64)/PANEL64_W ;AN000; | ||
| 1737 | |||
| 1738 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1739 | ; | ||
| 1740 | ; | ||
| 1741 | ; | ||
| 1742 | ; | ||
| 1743 | ; <R1> The quotation marks have to left-right justified | ||
| 1744 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1745 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1746 | |||
| 1747 | PANEL65 LABEL BYTE ;AN000; | ||
| 1748 | DB 'Formatting disk . . .' ;AN000; | ||
| 1749 | PANEL65_W EQU ($-PANEL65) ;AN000; | ||
| 1750 | PANEL65_L EQU ($-PANEL65)/PANEL65_W ;AN000; | ||
| 1751 | |||
| 1752 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1753 | ; | ||
| 1754 | ; | ||
| 1755 | ; | ||
| 1756 | ; | ||
| 1757 | ; <R1> The quotation marks have to left-right justified | ||
| 1758 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1759 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1760 | |||
| 1761 | PANEL66 LABEL BYTE ;AN000; | ||
| 1762 | DB 'Formatting diskette in drive B . . .';AC000;JW | ||
| 1763 | PANEL66_W EQU ($-PANEL66) ;AN000; | ||
| 1764 | PANEL66_L EQU ($-PANEL66)/PANEL66_W ;AN000; | ||
| 1765 | |||
| 1766 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1767 | ; | ||
| 1768 | ; | ||
| 1769 | ; | ||
| 1770 | ; | ||
| 1771 | ; <R9> DO NOT TRANSLATE OR CHANGE!!!! | ||
| 1772 | ; <R5> The width of the entry must not exceed the RULER provided. | ||
| 1773 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1774 | ; |---------1---------2---------3---------4---------5-| | ||
| 1775 | |||
| 1776 | PANEL67 LABEL BYTE ;AN000; | ||
| 1777 | DB '���������������������������������������������������Ŀ';AN000; | ||
| 1778 | PANEL67_W EQU ($-PANEL67) ;AN000; | ||
| 1779 | DB '� �';AN000; | ||
| 1780 | DB '� �';AN000; | ||
| 1781 | DB '� �';AN000; | ||
| 1782 | DB '� �';AN000; | ||
| 1783 | DB '� �';AN000; | ||
| 1784 | DB '���������������������������������������������������Ĵ';AN000; | ||
| 1785 | DB '� �';AN000; | ||
| 1786 | DB '�����������������������������������������������������';AN000; | ||
| 1787 | PANEL67_L EQU ($-PANEL67)/PANEL67_W ;AN000; | ||
| 1788 | |||
| 1789 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1790 | ; | ||
| 1791 | ; | ||
| 1792 | ; | ||
| 1793 | ; | ||
| 1794 | ; <R1> The quotation marks have to left-right justified | ||
| 1795 | ; <R5> The width of the entry must not exceed the RULER provided. | ||
| 1796 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1797 | ; |---------1---------2---------3---------4---------5-| | ||
| 1798 | |||
| 1799 | PANEL68 LABEL BYTE ;AN000; | ||
| 1800 | DB 'Incorrect diskette ';AC030; | ||
| 1801 | PANEL68_W EQU ($-PANEL68) ;AN000; | ||
| 1802 | DB ' ';AN030; | ||
| 1803 | DB 'Press Enter and follow instructions on screen,';AN030; | ||
| 1804 | DB 'or press F3 to exit SELECT. ';AN030; | ||
| 1805 | PANEL68_L EQU ($-PANEL68)/PANEL68_W ;AN000; | ||
| 1806 | |||
| 1807 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1808 | ; | ||
| 1809 | ; | ||
| 1810 | ; | ||
| 1811 | ; | ||
| 1812 | ; <R1> The quotation marks have to left-right justified | ||
| 1813 | ; <R5> The width of the entry must not exceed the RULER provided. | ||
| 1814 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1815 | ; |---------1---------2---------3---------4---------5-| | ||
| 1816 | |||
| 1817 | PANEL69 LABEL BYTE ;AN000; | ||
| 1818 | DB 'An unrecoverable error occurred while installing ';AN000; | ||
| 1819 | PANEL69_W EQU ($-PANEL69) ;AN000; | ||
| 1820 | DB 'DOS. Press Enter to retry, or F3 to exit SELECT.';AN000; | ||
| 1821 | PANEL69_L EQU ($-PANEL69)/PANEL69_W ;AN000; | ||
| 1822 | |||
| 1823 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1824 | ; | ||
| 1825 | ; | ||
| 1826 | ; | ||
| 1827 | ; | ||
| 1828 | ; <R1> The quotation marks have to left-right justified | ||
| 1829 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1830 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1831 | |||
| 1832 | PANEL70 LABEL BYTE ;AN000; | ||
| 1833 | DB 'Before proceeding, SELECT needs to make a copy of ';AN000; | ||
| 1834 | PANEL70_W EQU ($-PANEL70) ;AN000; | ||
| 1835 | DB 'the INSTALL diskette. ';AN000; | ||
| 1836 | DB ' ';AN000; | ||
| 1837 | DB 'During installation to a fixed disk, SELECT records';AN000; | ||
| 1838 | DB 'information to a diskette for later use in the ';AN000; | ||
| 1839 | DB 'installation process. Have your blank diskette, ';AN000; | ||
| 1840 | DB 'labeled "SELECT COPY", ready for this purpose. ';AC075;SEH | ||
| 1841 | DB ' ';AN000; | ||
| 1842 | DB 'For now, leave the INSTALL diskette in drive A and ';AC000;JW | ||
| 1843 | DB 'press ENTER to continue. ';AN000; | ||
| 1844 | PANEL70_L EQU ($-PANEL70)/PANEL70_W ;AN000; | ||
| 1845 | |||
| 1846 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1847 | ; | ||
| 1848 | ; | ||
| 1849 | ; | ||
| 1850 | ; | ||
| 1851 | ; <R1> The quotation marks have to left-right justified | ||
| 1852 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1853 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1854 | |||
| 1855 | PANEL71 LABEL BYTE ;AN000; | ||
| 1856 | DB 'Remove the INSTALL diskette from drive A ' ;AN000; | ||
| 1857 | PANEL71_W EQU ($-PANEL71) ;AN000; | ||
| 1858 | DB ' ' ;AN000; | ||
| 1859 | DB 'Insert the SELECT COPY diskette in drive A' ;AC075;SEH | ||
| 1860 | PANEL71_L EQU ($-PANEL71)/PANEL71_W ;AN000; | ||
| 1861 | |||
| 1862 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1863 | ; | ||
| 1864 | ; | ||
| 1865 | ; | ||
| 1866 | ; | ||
| 1867 | ; <R1> The quotation marks have to left-right justified | ||
| 1868 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1869 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1870 | |||
| 1871 | PANEL72 LABEL BYTE ;AN000; | ||
| 1872 | DB 'Remove the SELECT COPY diskette from drive A' ;AC075;SEH ;AC000;JW | ||
| 1873 | PANEL72_W EQU ($-PANEL72) ;AN000; | ||
| 1874 | DB ' ' ;AC000;JW | ||
| 1875 | DB 'Insert the INSTALL diskette in drive A ' ;AC000;JW | ||
| 1876 | PANEL72_L EQU ($-PANEL72)/PANEL72_W ;AN000; | ||
| 1877 | |||
| 1878 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1879 | ; | ||
| 1880 | ; | ||
| 1881 | ; | ||
| 1882 | ; | ||
| 1883 | ; <R1> The quotation marks have to left-right justified | ||
| 1884 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1885 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1886 | |||
| 1887 | PANEL73 LABEL BYTE ;AN000; | ||
| 1888 | DB 'Copying diskette . . .' ;AN000; | ||
| 1889 | PANEL73_W EQU ($-PANEL73) ;AN000; | ||
| 1890 | PANEL73_L EQU ($-PANEL73)/PANEL73_W ;AN000; | ||
| 1891 | |||
| 1892 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1893 | ; | ||
| 1894 | ; | ||
| 1895 | ; | ||
| 1896 | ; | ||
| 1897 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1898 | PANEL74 LABEL BYTE ;AN010; | ||
| 1899 | DB 'Installation of MS-DOS 4.0 is complete. ';AN010; | ||
| 1900 | PANEL74_W EQU ($-PANEL74) ;AN010; | ||
| 1901 | DB ' ';AN010; | ||
| 1902 | DB 'The files AUTOEXEC.400 and CONFIG.400 have been';AN010; | ||
| 1903 | DB 'copied to your fixed disk. These files reflect';AN010; | ||
| 1904 | DB 'the options selected for DOS 4.0. ';AN010; | ||
| 1905 | DB ' ';AN010; | ||
| 1906 | DB 'To get the options selected for DOS 4.0: ';AN010; | ||
| 1907 | DB ' 1. Update your AUTOEXEC.BAT and CONFIG.SYS ';AN010; | ||
| 1908 | DB ' files ';AN010; | ||
| 1909 | DB ' 2. Copy DOS 4.0 system files to drive C ';AN010; | ||
| 1910 | DB ' ';AN010; | ||
| 1911 | DB 'REFER TO THE "MS-DOS 4.0 USERS GUIDE" BOOK FOR ';AC076;SEH ;AC049;SEH ;AN010; | ||
| 1912 | DB 'INFORMATION ON UPDATING THESE FILES AND ON ';AC076;SEH ;AN010; | ||
| 1913 | DB 'USING THE DOS SHELL. ';AC076;SEH ;AN028; | ||
| 1914 | PANEL74_L EQU ($-PANEL74)/PANEL74_W ;AN010; | ||
| 1915 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1916 | ; | ||
| 1917 | ; | ||
| 1918 | ; | ||
| 1919 | ; | ||
| 1920 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1921 | PANEL75 LABEL BYTE ;AN000; | ||
| 1922 | DB 'Formatting SHELL diskette . . .' ;AN000; | ||
| 1923 | PANEL75_W EQU ($-PANEL75) ;AN000; | ||
| 1924 | PANEL75_L EQU ($-PANEL75)/PANEL75_W ;AN000; | ||
| 1925 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1926 | ; | ||
| 1927 | ; | ||
| 1928 | ; | ||
| 1929 | ; | ||
| 1930 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1931 | PANEL76 LABEL BYTE ;AN000; | ||
| 1932 | DB 'Formatting STARTUP diskette . . .' ;AN000; | ||
| 1933 | PANEL76_W EQU ($-PANEL76) ;AN000; | ||
| 1934 | PANEL76_L EQU ($-PANEL76)/PANEL76_W ;AN000; | ||
| 1935 | |||
| 1936 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1937 | ; | ||
| 1938 | ; | ||
| 1939 | ; | ||
| 1940 | ; | ||
| 1941 | ; <R1> The quotation marks have to left-right justified | ||
| 1942 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1943 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1944 | |||
| 1945 | PANEL77 LABEL BYTE ;AN000; | ||
| 1946 | DB 'Insert SELECT diskette in drive A' ;AC000;JW | ||
| 1947 | PANEL77_W EQU ($-PANEL77) ;AN000; | ||
| 1948 | PANEL77_L EQU ($-PANEL77)/PANEL77_W ;AN000; | ||
| 1949 | |||
| 1950 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1951 | ; | ||
| 1952 | ; | ||
| 1953 | ; | ||
| 1954 | ; | ||
| 1955 | ; <R1> The quotation marks have to left-right justified | ||
| 1956 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1957 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1958 | |||
| 1959 | PANEL78 LABEL BYTE ;AN000; | ||
| 1960 | DB 'Insert OPERATING 1 diskette in drive A' ;AC000;JW | ||
| 1961 | PANEL78_W EQU ($-PANEL78) ;AN000; | ||
| 1962 | PANEL78_L EQU ($-PANEL78)/PANEL78_W ;AN000; | ||
| 1963 | |||
| 1964 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1965 | ; | ||
| 1966 | ; | ||
| 1967 | ; | ||
| 1968 | ; | ||
| 1969 | ; <R1> The quotation marks have to left-right justified | ||
| 1970 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1971 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1972 | |||
| 1973 | PANEL79 LABEL BYTE ;AN000; | ||
| 1974 | DB 'Insert OPERATING 3 diskette in drive A' ;AC000;JW | ||
| 1975 | PANEL79_W EQU ($-PANEL79) ;AN000; | ||
| 1976 | PANEL79_L EQU ($-PANEL79)/PANEL79_W ;AN000; | ||
| 1977 | |||
| 1978 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1979 | ; | ||
| 1980 | ; | ||
| 1981 | ; | ||
| 1982 | ; | ||
| 1983 | ; <R1> The quotation marks have to left-right justified | ||
| 1984 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1985 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 1986 | |||
| 1987 | PANEL80 LABEL BYTE ;AN000; | ||
| 1988 | DB 'Copying files . . .' ;AN000; | ||
| 1989 | PANEL80_W EQU ($-PANEL80) ;AN000; | ||
| 1990 | PANEL80_L EQU ($-PANEL80)/PANEL80_W ;AN000; | ||
| 1991 | |||
| 1992 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1993 | ; | ||
| 1994 | ; | ||
| 1995 | ; | ||
| 1996 | ; | ||
| 1997 | ; <R1> The quotation marks have to left-right justified | ||
| 1998 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 1999 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2000 | |||
| 2001 | PANEL81 LABEL BYTE ;AN000; | ||
| 2002 | DB 'Insert WORKING 1 diskette in drive B' ;AC000;JW | ||
| 2003 | PANEL81_W EQU ($-PANEL81) ;AN000; | ||
| 2004 | PANEL81_L EQU ($-PANEL81)/PANEL81_W ;AN000; | ||
| 2005 | |||
| 2006 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2007 | ; | ||
| 2008 | ; | ||
| 2009 | ; | ||
| 2010 | ; | ||
| 2011 | ; <R1> The quotation marks have to left-right justified | ||
| 2012 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2013 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2014 | |||
| 2015 | PANEL82 LABEL BYTE ;AN000; | ||
| 2016 | DB 'Insert OPERATING 1 diskette in drive A' ;AC000;JW | ||
| 2017 | PANEL82_W EQU ($-PANEL82) ;AN000; | ||
| 2018 | DB ' ' ;AC000;JW | ||
| 2019 | DB 'Insert WORKING 2 diskette in drive B ' ;AC000;JW | ||
| 2020 | PANEL82_L EQU ($-PANEL82)/PANEL82_W ;AN000; | ||
| 2021 | |||
| 2022 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2023 | ; | ||
| 2024 | ; | ||
| 2025 | ; | ||
| 2026 | ; | ||
| 2027 | ; <R1> The quotation marks have to left-right justified | ||
| 2028 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2029 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2030 | |||
| 2031 | PANEL83 LABEL BYTE ;AN000; | ||
| 2032 | DB 'Insert OPERATING 2 diskette in drive A' ;AC000;JW | ||
| 2033 | PANEL83_W EQU ($-PANEL83) ;AN000; | ||
| 2034 | DB ' ' ;AC000;JW | ||
| 2035 | DB 'Insert WORKING 3 diskette in drive B ' ;AC000;JW | ||
| 2036 | PANEL83_L EQU ($-PANEL83)/PANEL83_W ;AN000; | ||
| 2037 | |||
| 2038 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2039 | ; | ||
| 2040 | ; | ||
| 2041 | ; | ||
| 2042 | ; | ||
| 2043 | ; <R1> The quotation marks have to left-right justified | ||
| 2044 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2045 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2046 | |||
| 2047 | PANEL84 LABEL BYTE ;AN000; | ||
| 2048 | DB 'Insert OPERATING 3 diskette in drive A' ;AC000;JW | ||
| 2049 | PANEL84_W EQU ($-PANEL84) ;AN000; | ||
| 2050 | DB ' ' ;AC000;JW | ||
| 2051 | DB 'Insert STARTUP diskette in drive B ' ;AC000;JW | ||
| 2052 | PANEL84_L EQU ($-PANEL84)/PANEL84_W ;AN000; | ||
| 2053 | |||
| 2054 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2055 | ; | ||
| 2056 | ; | ||
| 2057 | ; | ||
| 2058 | ; | ||
| 2059 | ; <R1> The quotation marks have to left-right justified | ||
| 2060 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2061 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2062 | |||
| 2063 | PANEL85 LABEL BYTE ;AN000; | ||
| 2064 | DB 'Insert SELECT diskette in drive A' ;AC000;JW | ||
| 2065 | PANEL85_W EQU ($-PANEL85) ;AN000; | ||
| 2066 | DB ' ' ;AC000;JW | ||
| 2067 | DB 'Leave STARTUP diskette in drive B' ;AC000;JW | ||
| 2068 | PANEL85_L EQU ($-PANEL85)/PANEL85_W ;AN000; | ||
| 2069 | |||
| 2070 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2071 | ; | ||
| 2072 | ; | ||
| 2073 | ; | ||
| 2074 | ; | ||
| 2075 | ; <R1> The quotation marks have to left-right justified | ||
| 2076 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2077 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2078 | |||
| 2079 | PANEL86 LABEL BYTE ;AN000; | ||
| 2080 | DB 'Insert WORKING 1 diskette in drive A';AC000;JW | ||
| 2081 | PANEL86_W EQU ($-PANEL86) ;AN000; | ||
| 2082 | PANEL86_L EQU ($-PANEL86)/PANEL86_W ;AN000; | ||
| 2083 | |||
| 2084 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2085 | ; | ||
| 2086 | ; | ||
| 2087 | ; | ||
| 2088 | ; | ||
| 2089 | ; <R1> The quotation marks have to left-right justified | ||
| 2090 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2091 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2092 | |||
| 2093 | PANEL87 LABEL BYTE ;AN000; | ||
| 2094 | DB 'Insert WORKING 2 diskette in drive A' ;AC000;JW | ||
| 2095 | PANEL87_W EQU ($-PANEL87) ;AN000; | ||
| 2096 | PANEL87_L EQU ($-PANEL87)/PANEL87_W ;AN000; | ||
| 2097 | |||
| 2098 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2099 | ; | ||
| 2100 | ; | ||
| 2101 | ; | ||
| 2102 | ; | ||
| 2103 | ; <R1> The quotation marks have to left-right justified | ||
| 2104 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2105 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2106 | |||
| 2107 | PANEL88 LABEL BYTE ;AN000; | ||
| 2108 | DB 'Insert SHELL diskette in drive A' ;AC000;JW | ||
| 2109 | PANEL88_W EQU ($-PANEL88) ;AN000; | ||
| 2110 | PANEL88_L EQU ($-PANEL88)/PANEL88_W ;AN000; | ||
| 2111 | |||
| 2112 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2113 | ; | ||
| 2114 | ; | ||
| 2115 | ; | ||
| 2116 | ; | ||
| 2117 | ; <R1> The quotation marks have to left-right justified | ||
| 2118 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2119 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2120 | |||
| 2121 | PANEL89 LABEL BYTE ;AN000; | ||
| 2122 | DB 'Insert STARTUP diskette in drive A' ;AC000;JW | ||
| 2123 | PANEL89_W EQU ($-PANEL89) ;AN000; | ||
| 2124 | PANEL89_L EQU ($-PANEL89)/PANEL89_W ;AN000; | ||
| 2125 | |||
| 2126 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2127 | ; | ||
| 2128 | ; | ||
| 2129 | ; | ||
| 2130 | ; | ||
| 2131 | ; <R1> The quotation marks have to left-right justified | ||
| 2132 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2133 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2134 | |||
| 2135 | PANEL90 LABEL BYTE ;AN000; | ||
| 2136 | DB 'SELECT will create the following diskettes:';AN000; | ||
| 2137 | PANEL90_W EQU ($-PANEL90) ;AN000; | ||
| 2138 | DB ' (You will need 5 blank 360KB diskettes) ';AN000; | ||
| 2139 | DB ' ';AN000; | ||
| 2140 | DB ' STARTUP Starting DOS ';AN000; | ||
| 2141 | DB ' WORKING 1 DOS Utilities ';AC000;JW | ||
| 2142 | DB ' WORKING 2 More DOS Utilities ';AC000;JW | ||
| 2143 | DB ' WORKING 3 Other DOS Utilities ' | ||
| 2144 | DB ' SHELL Starting SHELL (Optional)';AN000; | ||
| 2145 | DB ' ';AN000; | ||
| 2146 | DB 'Label the blank diskettes as shown, and ';AN000; | ||
| 2147 | DB 'then follow the display prompts. ';AN000; | ||
| 2148 | PANEL90_L EQU ($-PANEL90)/PANEL90_W ;AN000; | ||
| 2149 | |||
| 2150 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2151 | ; | ||
| 2152 | ; | ||
| 2153 | ; | ||
| 2154 | ; <R1> The quotation marks have to left-right justified | ||
| 2155 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2156 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2157 | |||
| 2158 | PANEL91 LABEL BYTE ;AN000; | ||
| 2159 | DB 'Installation of MS-DOS 4.0 is complete. ';AN000; | ||
| 2160 | PANEL91_W EQU ($-PANEL91) ;AN000; | ||
| 2161 | DB ' ';AN000; | ||
| 2162 | DB ' ';AN000; | ||
| 2163 | DB 'Place the STARTUP diskette in drive A and press ';AC064;SEH;AC000;JW | ||
| 2164 | DB 'Ctrl+Alt+Del to start DOS. ';AC064;SEH;AC000;JW | ||
| 2165 | DB ' ';AN064;SEH | ||
| 2166 | DB 'If you want to use the DOS Shell, place the SHELL';AC064;SEH;AC028; | ||
| 2167 | DB 'diskette in drive A and type DOSSHELL to start ';AC064;SEH;AC028; | ||
| 2168 | DB 'the Shell. ';AC064;SEH;AN000; | ||
| 2169 | DB ' ';AN064;SEH | ||
| 2170 | DB 'FOR INFORMATION ON USING THE DOS SHELL, REFER TO ';AC076;SEH;AC064;SEH;AN028; | ||
| 2171 | DB 'THE "MS-DOS 4.0 USERS GUIDE" BOOK. ';AC076;SEH;AC064;SEH;AC049;SEH ;AN028; | ||
| 2172 | PANEL91_L EQU ($-PANEL91)/PANEL91_W ;AN000; | ||
| 2173 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2174 | ; | ||
| 2175 | ; | ||
| 2176 | ; | ||
| 2177 | ; | ||
| 2178 | ; <R1> The quotation marks have to left-right justified | ||
| 2179 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2180 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2181 | |||
| 2182 | PANEL92 LABEL BYTE ;AN000; | ||
| 2183 | DB 'Insert SELECT COPY diskette in drive A' ;AC075;SEH ;AC000;JW | ||
| 2184 | PANEL92_W EQU ($-PANEL92) ;AN000; | ||
| 2185 | PANEL92_L EQU ($-PANEL92)/PANEL92_W ;AN000; | ||
| 2186 | |||
| 2187 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2188 | ; | ||
| 2189 | ; | ||
| 2190 | ; | ||
| 2191 | ; | ||
| 2192 | ; <R1> The quotation marks have to left-right justified | ||
| 2193 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2194 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2195 | |||
| 2196 | PANEL93 LABEL BYTE ;AN000; | ||
| 2197 | DB 'Insert OPERATING 2 diskette in drive A' ;AC000;JW | ||
| 2198 | PANEL93_W EQU ($-PANEL93) ;AN000; | ||
| 2199 | PANEL93_L EQU ($-PANEL93)/PANEL93_W ;AN000; | ||
| 2200 | |||
| 2201 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2202 | ; | ||
| 2203 | ; | ||
| 2204 | ; PAN_EXP_MEMORY2 EQU 108 ;AN000;JW | ||
| 2205 | ; | ||
| 2206 | ; <R1> The quotation marks have to left-right justified | ||
| 2207 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2208 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2209 | PANEL94 LABEL BYTE ;AN000; | ||
| 2210 | DB ' Expanded Memory Parameters ';AN000; | ||
| 2211 | PANEL94_W EQU ($-PANEL94) ;AN000; | ||
| 2212 | DB ' ';AN000; | ||
| 2213 | DB ' ';AN000; | ||
| 2214 | DB 'SELECT has set these values for you (if any). Press';AC000;JW | ||
| 2215 | DB 'Enter to accept these values or type in new values. ';AC000;JW | ||
| 2216 | DB ' ';AN000; | ||
| 2217 | DB ' ';AN000; | ||
| 2218 | DB ' ';AN000; | ||
| 2219 | DB ' ';AN000; | ||
| 2220 | DB ' ';AN000; | ||
| 2221 | DB 'XMA2EMS parameters . . . ';AN000; | ||
| 2222 | PANEL94_L EQU ($-PANEL94)/PANEL94_W ;AN000; | ||
| 2223 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2224 | ; | ||
| 2225 | ; | ||
| 2226 | ; | ||
| 2227 | ; | ||
| 2228 | ; <R1> The quotation marks have to left-right justified | ||
| 2229 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2230 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2231 | |||
| 2232 | PANEL95 LABEL BYTE ;AN000; | ||
| 2233 | DB 'SELECT will create the following diskettes:' ;AN000; | ||
| 2234 | PANEL95_W EQU ($-PANEL95) ;AN000; | ||
| 2235 | DB ' (You will need 3 blank 1MB diskettes) ' ;AN000; | ||
| 2236 | DB ' ' ;AN000; | ||
| 2237 | DB ' STARTUP Starting DOS, ' ;AN000; | ||
| 2238 | DB ' DOS Utilities ' ;AN000; | ||
| 2239 | DB ' ' ;AN000; | ||
| 2240 | DB ' WORKING Other DOS Utilities ' | ||
| 2241 | DB ' ' ;AN000; | ||
| 2242 | DB ' SHELL Starting SHELL, ' ;AN000; | ||
| 2243 | DB ' More DOS Utilities ' ;AN000; | ||
| 2244 | DB ' (Optional) ' ;AN000; | ||
| 2245 | DB ' ' ;AN000; | ||
| 2246 | DB 'Label the blank diskettes as shown, and ' ;AN000; | ||
| 2247 | DB 'then follow the display prompts. ' ;AN000; | ||
| 2248 | PANEL95_L EQU ($-PANEL95)/PANEL95_W ;AN000; | ||
| 2249 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2250 | ; | ||
| 2251 | ; | ||
| 2252 | ; | ||
| 2253 | ; | ||
| 2254 | ; <R1> The quotation marks have to left-right justified | ||
| 2255 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2256 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2257 | |||
| 2258 | PANEL96 LABEL BYTE ;AN000; | ||
| 2259 | DB 'SELECT will create the following diskette:' ;AN000; | ||
| 2260 | PANEL96_W EQU ($-PANEL96) ;AN000; | ||
| 2261 | DB ' (You will need 1 blank 2MB diskette) ' ;AC052;SEH ;AN000; | ||
| 2262 | DB ' ' ;AN000; | ||
| 2263 | DB ' STARTUP Starting DOS and SHELL, ' ;AC000;JW | ||
| 2264 | DB ' DOS Utilities ' ;AN000; | ||
| 2265 | DB ' ' ;AN000; | ||
| 2266 | DB 'Label the blank diskette as shown, and ' ;AN000; | ||
| 2267 | DB 'then follow the display prompts. ' ;AN000; | ||
| 2268 | PANEL96_L EQU ($-PANEL96)/PANEL96_W ;AN000; | ||
| 2269 | |||
| 2270 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2271 | ; | ||
| 2272 | ; | ||
| 2273 | ; | ||
| 2274 | ; | ||
| 2275 | ; <R1> The quotation marks have to left-right justified | ||
| 2276 | ; <R5> The width of the entry must not exceed the RULER provided. | ||
| 2277 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2278 | ; |---------1---------2---------3---------4---------5-| | ||
| 2279 | |||
| 2280 | PANEL97 LABEL BYTE ;AN060; | ||
| 2281 | DB 'Incorrect diskette ';AC060; | ||
| 2282 | PANEL97_W EQU ($-PANEL97) ;AN060; | ||
| 2283 | DB ' ';AN060; | ||
| 2284 | DB 'Insert the INSTALL diskette in drive A. Press';AN060; | ||
| 2285 | DB 'Enter to continue or F3 to exit SELECT. ';AN060; | ||
| 2286 | PANEL97_L EQU ($-PANEL97)/PANEL97_W ;AN060; | ||
| 2287 | |||
| 2288 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2289 | ; | ||
| 2290 | ; | ||
| 2291 | ; | ||
| 2292 | ; | ||
| 2293 | ; <R1> The quotation marks have to left-right justified | ||
| 2294 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2295 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2296 | |||
| 2297 | PANEL98 LABEL BYTE | ||
| 2298 | DB ' MS-DOS Shell Option ' | ||
| 2299 | PANEL98_W EQU ($-PANEL98) | ||
| 2300 | DB ' ' | ||
| 2301 | DB ' ' | ||
| 2302 | DB 'SELECT can install the MS-DOS Shell on the system ' | ||
| 2303 | DB 'being set up. Indicate whether you want to do this.' | ||
| 2304 | DB ' ' | ||
| 2305 | DB ' ' | ||
| 2306 | DB 'Choose an option: ' | ||
| 2307 | PANEL98_L EQU ($-PANEL98)/PANEL98_W | ||
| 2308 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2309 | ; | ||
| 2310 | ; | ||
| 2311 | ; | ||
| 2312 | ; | ||
| 2313 | ; <R1> The quotation marks have to left-right justified | ||
| 2314 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2315 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2316 | |||
| 2317 | PANEL99 LABEL BYTE ;AN000; | ||
| 2318 | DB 'Insert WORKING diskette in drive A' ;AC000;JW | ||
| 2319 | PANEL99_W EQU ($-PANEL99) ;AN000; | ||
| 2320 | PANEL99_L EQU ($-PANEL99)/PANEL99_W ;AN000; | ||
| 2321 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2322 | ; | ||
| 2323 | ; | ||
| 2324 | ; | ||
| 2325 | ; | ||
| 2326 | ; <R1> The quotation marks have to left-right justified | ||
| 2327 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2328 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2329 | |||
| 2330 | PANEL100 LABEL BYTE ;AN000; | ||
| 2331 | DB 'Insert MS-DOS SHELL diskette in drive A' ;AC000;JW | ||
| 2332 | PANEL100_W EQU ($-PANEL100) ;AN000; | ||
| 2333 | PANEL100_L EQU ($-PANEL100)/PANEL100_W ;AN000; | ||
| 2334 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2335 | ; | ||
| 2336 | ; | ||
| 2337 | ; | ||
| 2338 | ; | ||
| 2339 | ; <R1> The quotation marks have to left-right justified | ||
| 2340 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2341 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2342 | |||
| 2343 | PANEL101 LABEL BYTE | ||
| 2344 | DB 'Insert MS-DOS SHELL diskette in drive A' | ||
| 2345 | PANEL101_W EQU ($-PANEL101) | ||
| 2346 | DB ' ' | ||
| 2347 | DB 'Insert SHELL diskette in drive B ' | ||
| 2348 | PANEL101_L EQU ($-PANEL101)/PANEL101_W | ||
| 2349 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2350 | ; | ||
| 2351 | ; | ||
| 2352 | ; | ||
| 2353 | ; | ||
| 2354 | ; <R1> The quotation marks have to left-right justified | ||
| 2355 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2356 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2357 | |||
| 2358 | PANEL102 LABEL BYTE ;AN000; | ||
| 2359 | DB 'Insert OPERATING diskette in drive A' ;AC000;JW | ||
| 2360 | PANEL102_W EQU ($-PANEL102) ;AN000; | ||
| 2361 | DB ' ' ;AC000;JW | ||
| 2362 | DB 'Insert WORKING diskette in drive B ' ;AC000;JW | ||
| 2363 | PANEL102_L EQU ($-PANEL102)/PANEL102_W ;AN000; | ||
| 2364 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2365 | ; | ||
| 2366 | ; | ||
| 2367 | ; | ||
| 2368 | ; | ||
| 2369 | ; <R1> The quotation marks have to left-right justified | ||
| 2370 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 2371 | ; |---------1---------2---------3---------4---------5---------6---------7---------8 | ||
| 2372 | |||
| 2373 | PANEL103 LABEL BYTE ;AN000; | ||
| 2374 | DB 'Insert WORKING 3 diskette in drive A' ;AC000;JW | ||
| 2375 | PANEL103_W EQU ($-PANEL103) ;AN000; | ||
| 2376 | PANEL103_L EQU ($-PANEL103)/PANEL103_W ;AN000; | ||
| 2377 | |||
| 2378 | |||
| 2379 | |||
| 2380 | ENDIF | ||
| 2381 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/USA.PRT b/v4.0/src/SELECT/USA.PRT new file mode 100644 index 0000000..64e0fa9 --- /dev/null +++ b/v4.0/src/SELECT/USA.PRT | |||
| @@ -0,0 +1,88 @@ | |||
| 1 | 25 | ||
| 2 | P IBM 3852 Ink Jet Printer | ||
| 3 | |||
| 4 | P IBM 4201 Proprinter | ||
| 5 | CDP 4201,437 | ||
| 6 | CPP 4201.CPI | ||
| 7 | GP GRAPHICS | ||
| 8 | |||
| 9 | P IBM 4201 Proprinter II | ||
| 10 | CDP 4201,437 | ||
| 11 | CPP 4201.CPI | ||
| 12 | GP GRAPHICS | ||
| 13 | |||
| 14 | P IBM 4202 Proprinter XL | ||
| 15 | CDP 4201,437 | ||
| 16 | CPP 4201.CPI | ||
| 17 | GP GRAPHICS | ||
| 18 | |||
| 19 | P IBM 4207 Proprinter X24 | ||
| 20 | CDP 4208,437 | ||
| 21 | CPP 4208.CPI | ||
| 22 | GP GRAPHICS | ||
| 23 | |||
| 24 | P IBM 4208 Proprinter XL24 | ||
| 25 | CDP 4208,437 | ||
| 26 | CPP 4208.CPI | ||
| 27 | GP GRAPHICS | ||
| 28 | |||
| 29 | P IBM 5152 Graphics Printer Model 2 | ||
| 30 | GP GRAPHICS | ||
| 31 | |||
| 32 | P IBM 5182 Color Printer | ||
| 33 | GP COLOR1 | ||
| 34 | |||
| 35 | P IBM 5201 Quietwriter Printer | ||
| 36 | |||
| 37 | P IBM 5201 Quietwriter Printer Model 2 | ||
| 38 | GP GRAPHICS | ||
| 39 | |||
| 40 | P IBM 5202 Quietwriter III Printer | ||
| 41 | CDP 5202,437 | ||
| 42 | CPP 5202.CPI | ||
| 43 | GP GRAPHICS | ||
| 44 | |||
| 45 | P IBM 5204 Quickwriter Printer | ||
| 46 | CDP 5202,437 | ||
| 47 | CPP 5202.CPI | ||
| 48 | GP GRAPHICS | ||
| 49 | |||
| 50 | P IBM 5216 Wheelprinter | ||
| 51 | |||
| 52 | P IBM 5223 Wheelprinter E | ||
| 53 | |||
| 54 | P Other IBM Parallel Printer | ||
| 55 | |||
| 56 | P Other Parallel Printer | ||
| 57 | |||
| 58 | S IBM 3812 Pageprinter | ||
| 59 | SP BAUD=96 PARITY=E DATA=8 STOP=1 RETRY=P | ||
| 60 | GP GRAPHICS | ||
| 61 | |||
| 62 | S IBM 4201 Proprinter (Serial) | ||
| 63 | SP BAUD=96 PARITY=E DATA=8 STOP=1 | ||
| 64 | GP GRAPHICS | ||
| 65 | |||
| 66 | S IBM 4201 Proprinter II (Serial) | ||
| 67 | SP BAUD=96 PARITY=E DATA=8 STOP=1 | ||
| 68 | GP GRAPHICS | ||
| 69 | |||
| 70 | S IBM 4202 Proprinter XL (Serial) | ||
| 71 | SP BAUD=96 PARITY=E DATA=8 STOP=1 | ||
| 72 | GP GRAPHICS | ||
| 73 | |||
| 74 | S IBM 4207 Proprinter X24 (Serial) | ||
| 75 | SP BAUD=96 PARITY=E DATA=8 STOP=1 | ||
| 76 | GP GRAPHICS | ||
| 77 | |||
| 78 | S IBM 4208 Proprinter XL24 (Serial) | ||
| 79 | SP BAUD=96 PARITY=E DATA=8 STOP=1 | ||
| 80 | GP GRAPHICS | ||
| 81 | |||
| 82 | S IBM 5204 Quickwriter Printer (Serial) | ||
| 83 | SP BAUD=96 PARITY=E DATA=8 STOP=1 | ||
| 84 | GP GRAPHICS | ||
| 85 | |||
| 86 | S Other IBM Serial Printer | ||
| 87 | |||
| 88 | S Other Serial Printer | ||
diff --git a/v4.0/src/SELECT/USA.TXT b/v4.0/src/SELECT/USA.TXT new file mode 100644 index 0000000..f59729a --- /dev/null +++ b/v4.0/src/SELECT/USA.TXT | |||
| @@ -0,0 +1,1185 @@ | |||
| 1 | .TOPICLEN. 53 | ||
| 2 | .MAXNUMHLP. 57 | ||
| 3 | .HELPID. 1 | ||
| 4 | .TOPICTEXT.Key Assignments Help | ||
| 5 | .HELPTEXT. Key Assignments Help& | ||
| 6 | & | ||
| 7 | Enter Places into memory the information& | ||
| 8 | you select or type.& | ||
| 9 | & | ||
| 10 | Esc Cancels the current screen and returns& | ||
| 11 | you to the previous screen. Information& | ||
| 12 | on the current screen is not saved.& | ||
| 13 | & | ||
| 14 | Tab Moves the selection cursor to the next& | ||
| 15 | choice or entry on a screen.& | ||
| 16 | & | ||
| 17 | Moves the cursor in the direction of the& | ||
| 18 | arrow.& | ||
| 19 | & | ||
| 20 | F1 Displays help information.& | ||
| 21 | & | ||
| 22 | F3 Exits the SELECT program. The information& | ||
| 23 | you selected or typed is not saved.& | ||
| 24 | |||
| 25 | & | ||
| 26 | F9 Displays the key assignments and their& | ||
| 27 | functions.& | ||
| 28 | .HELPTEND. | ||
| 29 | |||
| 30 | |||
| 31 | .HELPID. 2 | ||
| 32 | .TOPICTEXT.Help Facility Help | ||
| 33 | .HELPTEXT. @ Help Facility Help | ||
| 34 | & | ||
| 35 | Help is available whenever F1=Help appears on a screen. | ||
| 36 | To get help for an item, highlight the item and press F1.& | ||
| 37 | & | ||
| 38 | From a help panel you can press the F9 key to view the | ||
| 39 | key assignments.@ | ||
| 40 | .HELPTEND. | ||
| 41 | |||
| 42 | |||
| 43 | .HELPID. 3 | ||
| 44 | .TOPICTEXT.Minimum DOS Function Help | ||
| 45 | .HELPTEXT. @ Minimum DOS Function Help | ||
| 46 | & | ||
| 47 | Select this option to allocate more memory for | ||
| 48 | running programs than for using DOS | ||
| 49 | functions. This option is useful if you | ||
| 50 | use a large number of files or you calculate large | ||
| 51 | amounts of data. Database and spreadsheet programs, | ||
| 52 | for example, require large amounts of memory. | ||
| 53 | Select this option if your system has 256K of memory | ||
| 54 | installed.@ | ||
| 55 | .HELPTEND. | ||
| 56 | |||
| 57 | |||
| 58 | .HELPID. 4 | ||
| 59 | .TOPICTEXT.Balance DOS Function Help | ||
| 60 | .HELPTEXT. @ Balance DOS Function Help | ||
| 61 | & | ||
| 62 | Select this option to balance the memory between the | ||
| 63 | DOS functions and the programs you use. | ||
| 64 | This option provides sufficient memory for programs | ||
| 65 | such as word processors or text editors. | ||
| 66 | Select this option if your system has 512K of memory installed.@ | ||
| 67 | .HELPTEND. | ||
| 68 | |||
| 69 | |||
| 70 | .HELPID. 5 | ||
| 71 | .TOPICTEXT.Maximum DOS Function Help | ||
| 72 | .HELPTEXT. @ Maximum DOS Function Help | ||
| 73 | & | ||
| 74 | Select this option if you want to allocate the | ||
| 75 | maximum amount of memory for DOS functions.& | ||
| 76 | Select this option if your system has more than | ||
| 77 | 512K of memory installed.@ | ||
| 78 | .HELPTEND. | ||
| 79 | |||
| 80 | |||
| 81 | .HELPID. 6 | ||
| 82 | .TOPICTEXT.Accept Country and Keyboard Help | ||
| 83 | .HELPTEXT. @ Accept Country and Keyboard Help | ||
| 84 | & | ||
| 85 | Select this option to accept the country and | ||
| 86 | keyboard shown. The SELECT program assigns | ||
| 87 | the appropriate monetary symbol, decimal | ||
| 88 | separator, date and time format, and keyboard | ||
| 89 | layout.@ | ||
| 90 | .HELPTEND. | ||
| 91 | |||
| 92 | |||
| 93 | .HELPID. 7 | ||
| 94 | .TOPICTEXT.Specify Country and Keyboard Help | ||
| 95 | .HELPTEXT. @ Specify Country and Keyboard Help | ||
| 96 | & | ||
| 97 | Select this option to choose a different country | ||
| 98 | and keyboard layout.@ | ||
| 99 | .HELPTEND. | ||
| 100 | |||
| 101 | |||
| 102 | .HELPID. 8 | ||
| 103 | .TOPICTEXT.Country Help | ||
| 104 | .HELPTEXT. @ Country Help | ||
| 105 | & | ||
| 106 | Use the Up or Down arrow keys to select a country, | ||
| 107 | then press Enter. The SELECT program assigns the | ||
| 108 | appropriate monetary symbol, decimal separator, | ||
| 109 | and date and time format for the country.@ | ||
| 110 | .HELPTEND. | ||
| 111 | |||
| 112 | |||
| 113 | .HELPID. 9 | ||
| 114 | .TOPICTEXT.Keyboard Help | ||
| 115 | .HELPTEXT. @ Keyboard Help | ||
| 116 | & | ||
| 117 | Use the Up or Down arrow keys to select a keyboard, | ||
| 118 | then press Enter.& | ||
| 119 | & | ||
| 120 | Select "None" if you do not want to change the | ||
| 121 | keyboard layout.& | ||
| 122 | & | ||
| 123 | The SELECT program assigns the appropriate keyboard | ||
| 124 | layout.@ | ||
| 125 | .HELPTEND. | ||
| 126 | |||
| 127 | |||
| 128 | .HELPID. 10 | ||
| 129 | .TOPICTEXT.Keyboard Layout Help | ||
| 130 | .HELPTEXT. @ Keyboard Layout Help | ||
| 131 | & | ||
| 132 | The keyboard you selected has two versions.& | ||
| 133 | & | ||
| 134 | Use the Up or Down arrow key to select the | ||
| 135 | keyboard version you want, then press Enter.@ | ||
| 136 | .HELPTEND. | ||
| 137 | |||
| 138 | |||
| 139 | .HELPID. 11 | ||
| 140 | .TOPICTEXT.Installation Drive Help | ||
| 141 | .HELPTEXT. Installation Drive Help | ||
| 142 | & | ||
| 143 | Use the Up or Down arrow key to select& | ||
| 144 | the drive you want to install DOS on,& | ||
| 145 | then press Enter.& | ||
| 146 | & | ||
| 147 | Option 1 installs DOS on a fixed disk,& | ||
| 148 | drive C.& | ||
| 149 | & | ||
| 150 | Option 2 installs DOS on a diskette.& | ||
| 151 | .HELPTEND. | ||
| 152 | |||
| 153 | |||
| 154 | .HELPID. 12 | ||
| 155 | .TOPICTEXT.DOS Location Help | ||
| 156 | .HELPTEXT. @ DOS Location Help | ||
| 157 | & | ||
| 158 | Accept or change the directory name shown.& | ||
| 159 | & | ||
| 160 | If you accept the directory name, DOS utilities | ||
| 161 | are placed in the DOS directory.& | ||
| 162 | & | ||
| 163 | If you change the directory name, DOS utilities | ||
| 164 | are placed in the directory you specify. | ||
| 165 | The directory name can have up to eight characters. | ||
| 166 | A backslash (\) must precede the directory name.& | ||
| 167 | & | ||
| 168 | Example : C:\MINE& | ||
| 169 | & | ||
| 170 | C: specifies the drive and \MINE is& | ||
| 171 | the new directory name.& | ||
| 172 | & | ||
| 173 | You can specify a directory path. The directory path can | ||
| 174 | have up to 40 characters. Use the backslash (\) to separate | ||
| 175 | the directory names in a path. | ||
| 176 | & | ||
| 177 | Example: C:\DOS\DIR1\DIR2& | ||
| 178 | & | ||
| 179 | C: specifies the drive and& | ||
| 180 | \DOS\DIR1\DIR2 is the directory path.@ | ||
| 181 | .HELPTEND. | ||
| 182 | |||
| 183 | |||
| 184 | .HELPID. 13 | ||
| 185 | .TOPICTEXT.Printer Selection Help | ||
| 186 | .HELPTEXT. @ Printer Selection Help | ||
| 187 | & | ||
| 188 | Type in a number from 0 through 7 to show the number of | ||
| 189 | printers attached to your system.@ | ||
| 190 | .HELPTEND. | ||
| 191 | |||
| 192 | |||
| 193 | .HELPID. 14 | ||
| 194 | .TOPICTEXT.Printer Type Help | ||
| 195 | .HELPTEXT. @ Printer Type Help | ||
| 196 | & | ||
| 197 | Use the Up or Down arrow keys to select the name of your | ||
| 198 | printer, then press Enter. If the printer attached to your | ||
| 199 | system is not listed, select "Other" to identify the type | ||
| 200 | of printer you are using. When more than one printer is | ||
| 201 | attached, this list reappears for each printer. | ||
| 202 | If you do not know the name or type of printer you have, | ||
| 203 | check the printer label or the manual that came with the | ||
| 204 | printer.@ | ||
| 205 | .HELPTEND. | ||
| 206 | |||
| 207 | |||
| 208 | |||
| 209 | .HELPID. 15 | ||
| 210 | .TOPICTEXT.Parallel Printer Port Help | ||
| 211 | .HELPTEXT. @ Parallel Printer Port Help | ||
| 212 | & | ||
| 213 | If you have one printer, press Enter to accept LPT1.& | ||
| 214 | & | ||
| 215 | If you have two printers, select LPT1 for your primary | ||
| 216 | printer and LPT2 for your secondary printer. If you | ||
| 217 | have three printers, select LPT3 for the third one.& | ||
| 218 | & | ||
| 219 | You can assign only one printer to each port.@ | ||
| 220 | .HELPTEND. | ||
| 221 | |||
| 222 | |||
| 223 | .HELPID. 16 | ||
| 224 | .TOPICTEXT.Serial Printer Port Help | ||
| 225 | .HELPTEXT. @ Serial Printer Port Help | ||
| 226 | & | ||
| 227 | If you have one printer, press Enter to accept COM1.& | ||
| 228 | & | ||
| 229 | If you have two printers, select COM1 for your primary | ||
| 230 | printer and COM2 for you secondary printer. If you | ||
| 231 | have three printers, select COM3 for the third one. | ||
| 232 | If you have four printers, select COM4 for the fourth | ||
| 233 | printer.& | ||
| 234 | & | ||
| 235 | You can assign only one printer to each port.& | ||
| 236 | & | ||
| 237 | Note: Other devices, such as modems, lightpens, or a | ||
| 238 | mouse, attach to serial ports. If you have one of these | ||
| 239 | devices, refer to the manual that came with the device | ||
| 240 | to determine which serial port to use.& | ||
| 241 | & | ||
| 242 | If you refer to your serial printer by a parallel port | ||
| 243 | name, press the Tab key to move to the options at the | ||
| 244 | bottom of the screen.@ | ||
| 245 | .HELPTEND. | ||
| 246 | |||
| 247 | |||
| 248 | .HELPID. 17 | ||
| 249 | .TOPICTEXT.Serial Printer/Parallel Port Help | ||
| 250 | .HELPTEXT. @ Serial Printer/Parallel Port Help | ||
| 251 | & | ||
| 252 | This option allows you to refer to your serial printer | ||
| 253 | as a parallel printer. This option is useful if your | ||
| 254 | programs require that printer output be sent to a | ||
| 255 | parallel port.& | ||
| 256 | & | ||
| 257 | Select "None" if you use your printer only as a serial | ||
| 258 | printer.& | ||
| 259 | & | ||
| 260 | If you have one serial printer that you use as a | ||
| 261 | parallel printer select LPT1.& | ||
| 262 | & | ||
| 263 | If you have more than one serial printer that you | ||
| 264 | use as a parallel printer, select LPT 1 for your | ||
| 265 | primary printer, LPT2 for your secondary printer, | ||
| 266 | and LPT3 for your third printer.& | ||
| 267 | & | ||
| 268 | Do not select a parallel port for a serial printer if | ||
| 269 | that port has a parallel printer attached.@ | ||
| 270 | .HELPTEND. | ||
| 271 | |||
| 272 | |||
| 273 | .HELPID. 18 | ||
| 274 | .TOPICTEXT.Update DOS Files Help | ||
| 275 | .HELPTEXT. @ Update DOS Files Help | ||
| 276 | & | ||
| 277 | Select this option to replace previous DOS files. This | ||
| 278 | option replaces previous DOS files in the directory specified, | ||
| 279 | and installs the read-only system files in the root directory. & | ||
| 280 | & | ||
| 281 | This option does not replace DOS files in subdirectories | ||
| 282 | other than that specified.@ | ||
| 283 | .HELPTEND. | ||
| 284 | |||
| 285 | |||
| 286 | .HELPID. 19 | ||
| 287 | .TOPICTEXT.Update DOS Help | ||
| 288 | .HELPTEXT. @ Update DOS Help | ||
| 289 | & | ||
| 290 | Select this option to replace previous DOS files in the directory | ||
| 291 | you specify on drive C. This option is useful if you want | ||
| 292 | DOS 4.0 to co-exist with a previous version of DOS or | ||
| 293 | another operating system, or when your system is a | ||
| 294 | network server.& | ||
| 295 | & | ||
| 296 | This option does not replace system files on an existing | ||
| 297 | system or DOS files in subdirectories across multiple | ||
| 298 | logical drives.& | ||
| 299 | & | ||
| 300 | For further information on replacing system files, refer to | ||
| 301 | the "MS-DOS 4.0 Users Guide" book.@ | ||
| 302 | .HELPTEND. | ||
| 303 | |||
| 304 | |||
| 305 | |||
| 306 | .HELPID. 20 | ||
| 307 | .TOPICTEXT.Continue Installation Help | ||
| 308 | .HELPTEXT. @ Continue Installation Help | ||
| 309 | & | ||
| 310 | Select this option to continue installing DOS without | ||
| 311 | reviewing the selections you made for your CONFIG.SYS | ||
| 312 | and AUTOEXEC.BAT files.@ | ||
| 313 | .HELPTEND. | ||
| 314 | |||
| 315 | |||
| 316 | .HELPID. 21 | ||
| 317 | .TOPICTEXT.Change Options Help | ||
| 318 | .HELPTEXT. @ Change Options Help | ||
| 319 | & | ||
| 320 | Select this option to review, change, or add values to | ||
| 321 | your CONFIG.SYS and AUTOEXEC.BAT files.& | ||
| 322 | & | ||
| 323 | Depending on the hardware installed on your system, you | ||
| 324 | can change or add options, such as expanded memory | ||
| 325 | support, FASTOPEN, and SHARE.& | ||
| 326 | & | ||
| 327 | When you change a selection from NO to YES, it increases | ||
| 328 | the amount of memory DOS uses.& | ||
| 329 | & | ||
| 330 | Refer to the "MS-DOS 4.0 Users Guide" book for additional | ||
| 331 | information.@ | ||
| 332 | .HELPTEND. | ||
| 333 | |||
| 334 | |||
| 335 | .HELPID. 22 | ||
| 336 | .TOPICTEXT.Code Page Switching Help | ||
| 337 | .HELPTEXT. @ Code Page Switching Help | ||
| 338 | & | ||
| 339 | Accept or change the choice shown.& | ||
| 340 | & | ||
| 341 | If you selected Denmark, Portugal, Norway, | ||
| 342 | or French-speaking Canada on a previous | ||
| 343 | display, set this choice to Yes. | ||
| 344 | & | ||
| 345 | Code Page Switching allows you | ||
| 346 | to change from one character set to | ||
| 347 | another so you can display or | ||
| 348 | print characters in different | ||
| 349 | languages.@ | ||
| 350 | .HELPTEND. | ||
| 351 | |||
| 352 | |||
| 353 | .HELPID. 23 | ||
| 354 | .TOPICTEXT.Expanded Memory Support Help | ||
| 355 | .HELPTEXT. @ Expanded Memory Support Help | ||
| 356 | & | ||
| 357 | Accept or change the choice shown.& | ||
| 358 | & | ||
| 359 | DOS uses expanded memory to hold part | ||
| 360 | of the operating system. This provides | ||
| 361 | more memory for running programs that | ||
| 362 | require expanded memory support.& | ||
| 363 | & | ||
| 364 | Expanded Memory is available on the IBM | ||
| 365 | Personal System/2 (registered trademark of International | ||
| 366 | Business Machines) and on other IBM | ||
| 367 | PC/AT family and compatible computers with expanded | ||
| 368 | memory cards.@ | ||
| 369 | .HELPTEND. | ||
| 370 | |||
| 371 | |||
| 372 | .HELPID. 24 | ||
| 373 | .TOPICTEXT.Extended Display Support Help | ||
| 374 | .HELPTEXT. @ Extended Display Support Help | ||
| 375 | & | ||
| 376 | Accept or change the choice shown.& | ||
| 377 | & | ||
| 378 | Extended display support (ANSI.SYS) | ||
| 379 | replaces the standard | ||
| 380 | input and output support on your | ||
| 381 | system. ANSI.SYS provides extended | ||
| 382 | features, such as redefining keys, | ||
| 383 | manipulating the cursor, and displaying | ||
| 384 | color attributes.@ | ||
| 385 | .HELPTEND. | ||
| 386 | |||
| 387 | |||
| 388 | .HELPID. 25 | ||
| 389 | .TOPICTEXT.FASTOPEN Support Help | ||
| 390 | .HELPTEXT. @ FASTOPEN Support Help | ||
| 391 | & | ||
| 392 | Accept or change the choice shown.& | ||
| 393 | & | ||
| 394 | FASTOPEN allows quick access to | ||
| 395 | recently opened files.@ | ||
| 396 | .HELPTEND. | ||
| 397 | |||
| 398 | |||
| 399 | .HELPID. 26 | ||
| 400 | .TOPICTEXT.GRAFTABL Display Support Help | ||
| 401 | .HELPTEXT. @ GRAFTABL Display Support Help | ||
| 402 | & | ||
| 403 | Accept or change the choice shown.& | ||
| 404 | & | ||
| 405 | GRAFTABL (Graphics Table) allows you | ||
| 406 | to display additional characters from | ||
| 407 | the National Language Code Page when | ||
| 408 | you use a color/graphics display adapter in | ||
| 409 | graphics mode.@ | ||
| 410 | .HELPTEND. | ||
| 411 | |||
| 412 | |||
| 413 | |||
| 414 | .HELPID. 27 | ||
| 415 | .TOPICTEXT.GRAPHICS Support Help | ||
| 416 | .HELPTEXT. @ GRAPHICS PrtSc Support Help | ||
| 417 | & | ||
| 418 | Accept or change the choice shown.& | ||
| 419 | & | ||
| 420 | GRAPHICS allows you to print the | ||
| 421 | contents of a graphics display. | ||
| 422 | This option prints graphics, such as | ||
| 423 | drawings, graphs, or charts. | ||
| 424 | Without GRAPHICS, you can print | ||
| 425 | text characters only.@ | ||
| 426 | .HELPTEND. | ||
| 427 | |||
| 428 | .HELPID. 28 | ||
| 429 | .TOPICTEXT.SHARE Support Help | ||
| 430 | .HELPTEXT. @ DOS SHARE Support Help | ||
| 431 | & | ||
| 432 | Accept or change the choice shown.& | ||
| 433 | & | ||
| 434 | SHARE provides support for file sharing and | ||
| 435 | diskette change protection.@ | ||
| 436 | .HELPTEND. | ||
| 437 | |||
| 438 | |||
| 439 | .HELPID. 29 | ||
| 440 | .TOPICTEXT.SHELL Support Help | ||
| 441 | .HELPTEXT. @ DOS SHELL Support Help | ||
| 442 | & | ||
| 443 | Accept or change the choice shown.& | ||
| 444 | & | ||
| 445 | The Shell program allows you to make selections | ||
| 446 | from menus instead of typing DOS commands.& | ||
| 447 | & | ||
| 448 | For additional information on the Shell program, | ||
| 449 | refer to the "MS-DOS 4.0 Users Guide" | ||
| 450 | book.@ | ||
| 451 | .HELPTEND. | ||
| 452 | |||
| 453 | |||
| 454 | .HELPID. 30 | ||
| 455 | .TOPICTEXT.Virtual Disk (RAMDRIVE) Support Help | ||
| 456 | .HELPTEXT. @ Virtual Disk Support Help | ||
| 457 | & | ||
| 458 | Accept or change the choice shown.& | ||
| 459 | & | ||
| 460 | RAMDRIVE allows you to use part of your | ||
| 461 | system memory to simulate a fixed disk | ||
| 462 | drive. A virtual drive permits quick | ||
| 463 | access to files, but it is temporary, | ||
| 464 | and data stored on the virtual drive | ||
| 465 | is lost when you turn off the system.@ | ||
| 466 | .HELPTEND. | ||
| 467 | |||
| 468 | |||
| 469 | .HELPID. 31 | ||
| 470 | .TOPICTEXT.DOS PATH Help | ||
| 471 | .HELPTEXT. @ DOS PATH Help | ||
| 472 | & | ||
| 473 | Accept or change the choice shown.& | ||
| 474 | & | ||
| 475 | DOS uses a path to search for files that | ||
| 476 | are not located in the current directory.& | ||
| 477 | DOS PATH searches only for files with the extensions | ||
| 478 | .COM, .EXE, or .BAT. The (;) separates the pathnames.& | ||
| 479 | & | ||
| 480 | You can type up to 120 characters in this field. | ||
| 481 | If your typing scrolls out of view, use the right | ||
| 482 | or left arrow keys to see it.& | ||
| 483 | & | ||
| 484 | Example: C:\DOS;C:\DIR1;C:\DIR2& | ||
| 485 | & | ||
| 486 | PATH searches and locates files& | ||
| 487 | in the DOS, DIR1, and DIR2& | ||
| 488 | directories on drive C.@ | ||
| 489 | .HELPTEND. | ||
| 490 | |||
| 491 | |||
| 492 | .HELPID. 32 | ||
| 493 | .TOPICTEXT.APPEND Path Help | ||
| 494 | .HELPTEXT. @ APPEND Path Help | ||
| 495 | & | ||
| 496 | Accept or change the choice shown.& | ||
| 497 | & | ||
| 498 | DOS uses a path to search for files that are | ||
| 499 | not in the current directory. APPEND searches | ||
| 500 | only for data files with extensions other than .COM, | ||
| 501 | .EXE, or .BAT. The (;) separates the pathnames.& | ||
| 502 | & | ||
| 503 | You can type up to 120 characters in this field. | ||
| 504 | If your typing scrolls out of view, use the right | ||
| 505 | or left arrow keys to see it.& | ||
| 506 | & | ||
| 507 | Example: C:\DOS;C:\DIR1;C:\DIR2& | ||
| 508 | & | ||
| 509 | APPEND searches and locates files& | ||
| 510 | in the DOS, DIR1, and DIR2& | ||
| 511 | directories on drive C.@ | ||
| 512 | .HELPTEND. | ||
| 513 | |||
| 514 | |||
| 515 | .HELPID. 33 | ||
| 516 | .TOPICTEXT.PROMPT Help | ||
| 517 | .HELPTEXT. @ PROMPT Help | ||
| 518 | & | ||
| 519 | Accept or change the choice shown.& | ||
| 520 | & | ||
| 521 | Use the following list as a guide. You can type | ||
| 522 | up to 120 characters in this field. If your | ||
| 523 | typing scrolls out of view, use the right or | ||
| 524 | left arrow keys to see it.& | ||
| 525 | & | ||
| 526 | The default DOS prompt is C:\>.& | ||
| 527 | & | ||
| 528 | PROMPT entries :& | ||
| 529 | & | ||
| 530 | $B for the : character& | ||
| 531 | & | ||
| 532 | $D for the current date& | ||
| 533 | & | ||
| 534 | $E for the Esc character& | ||
| 535 | & | ||
| 536 | $G for the > character& | ||
| 537 | & | ||
| 538 | $H for backspace; the previous& | ||
| 539 | character is erased& | ||
| 540 | & | ||
| 541 | $N for the current drive& | ||
| 542 | & | ||
| 543 | $P for the current directory& | ||
| 544 | & | ||
| 545 | $Q for the = character& | ||
| 546 | & | ||
| 547 | $T for the current time& | ||
| 548 | & | ||
| 549 | $V for the DOS version& | ||
| 550 | & | ||
| 551 | $1 for the < character& | ||
| 552 | & | ||
| 553 | $$ for the $ character& | ||
| 554 | & | ||
| 555 | $_ for advance a line& | ||
| 556 | & | ||
| 557 | Example: C>prompt HELLO& | ||
| 558 | & | ||
| 559 | Sets the DOS prompt to& | ||
| 560 | the message HELLO.@ | ||
| 561 | .HELPTEND. | ||
| 562 | |||
| 563 | |||
| 564 | .HELPID. 34 | ||
| 565 | .TOPICTEXT.SHELL Parameters Help | ||
| 566 | .HELPTEXT. @ SHELL Parameters Help | ||
| 567 | & | ||
| 568 | Accept or change the choices shown.& | ||
| 569 | & | ||
| 570 | Use the following list as a guide. You can type up | ||
| 571 | to 115 characters in this field. If your typing | ||
| 572 | scrolls out of view, use the right or left arrow | ||
| 573 | keys to see it.& | ||
| 574 | & | ||
| 575 | The Shell program uses menus that allow you to make | ||
| 576 | selections instead of typing DOS commands.& | ||
| 577 | & | ||
| 578 | SHELL entries:& | ||
| 579 | & | ||
| 580 | /B:xxx Specifies a buffer size& | ||
| 581 | & | ||
| 582 | /CLR:SHELL.CLR& | ||
| 583 | Identifies the filename for the Shell& | ||
| 584 | color setup. SHELL.CLR is the default.& | ||
| 585 | & | ||
| 586 | /CO1& | ||
| 587 | Displays the Shell in 16-color,& | ||
| 588 | high-resolution 640 x 350 graphics& | ||
| 589 | & | ||
| 590 | /CO2& | ||
| 591 | Displays the Shell in 2-color,& | ||
| 592 | high resolution graphics& | ||
| 593 | & | ||
| 594 | /CO3& | ||
| 595 | Displays the Shell in 16-color,& | ||
| 596 | high-resolution 640 x 480 graphics& | ||
| 597 | & | ||
| 598 | /COLOR& | ||
| 599 | Activates the "Change colors" option& | ||
| 600 | & | ||
| 601 | /COM2& | ||
| 602 | Identifies a serial mouse installed on the& | ||
| 603 | second serial port (installation default& | ||
| 604 | is COM1)& | ||
| 605 | & | ||
| 606 | /DATE& | ||
| 607 | Displays the date and time& | ||
| 608 | & | ||
| 609 | /DOS& | ||
| 610 | Activates the File System in the Shell& | ||
| 611 | & | ||
| 612 | /EXIT& | ||
| 613 | Activates the "Exit Shell" option& | ||
| 614 | & | ||
| 615 | /LF& | ||
| 616 | Enables a mouse for left-handed use& | ||
| 617 | & | ||
| 618 | /MAINT& | ||
| 619 | Activates the ability to do& | ||
| 620 | maintenance in Start Programs& | ||
| 621 | & | ||
| 622 | /MENU& | ||
| 623 | Activates the Start Programs in the& | ||
| 624 | Shell& | ||
| 625 | & | ||
| 626 | /MEU:SHELL.MEU& | ||
| 627 | Identifies the filename of the Main Group& | ||
| 628 | structure for the Start Programs& | ||
| 629 | & | ||
| 630 | /MOS:PCIBMDRV.MOS& | ||
| 631 | Identifies the filename of the IBM mouse& | ||
| 632 | driver& | ||
| 633 | & | ||
| 634 | /MOS:PCMSDRV.MOS& | ||
| 635 | Identifies the filename of the Microsoft& | ||
| 636 | serial mouse driver& | ||
| 637 | & | ||
| 638 | /MOS:PCMSPDRV.MOS& | ||
| 639 | Identifies the filename of the Microsoft& | ||
| 640 | parallel mouse driver& | ||
| 641 | & | ||
| 642 | /MUL& | ||
| 643 | Provides multiple directory and file& | ||
| 644 | buffers in the File System& | ||
| 645 | & | ||
| 646 | /PROMPT& | ||
| 647 | Activates the Shell command prompt& | ||
| 648 | & | ||
| 649 | /SND& | ||
| 650 | Enables the speaker for sound& | ||
| 651 | & | ||
| 652 | /SWAP& | ||
| 653 | Activates saving (swapping) files and& | ||
| 654 | directories to a disk file while& | ||
| 655 | performing tasks at the Shell command& | ||
| 656 | prompt& | ||
| 657 | & | ||
| 658 | /TEXT& | ||
| 659 | Displays the Shell in text mode& | ||
| 660 | & | ||
| 661 | /TRAN& | ||
| 662 | Operates the Shell in transient mode@ | ||
| 663 | .HELPTEND. | ||
| 664 | |||
| 665 | |||
| 666 | .HELPID. 35 | ||
| 667 | .TOPICTEXT.FASTOPEN Parameters Help | ||
| 668 | .HELPTEXT. @ FASTOPEN Parameters Help | ||
| 669 | & | ||
| 670 | Accept or change the choice shown.& | ||
| 671 | & | ||
| 672 | Use the following list as a guide. You can type | ||
| 673 | up to 60 characters in this field. If your typing | ||
| 674 | scrolls out of view, use the left or right arrow | ||
| 675 | keys to see it.& | ||
| 676 | & | ||
| 677 | FASTOPEN allows quick access to recently | ||
| 678 | opened files.& | ||
| 679 | & | ||
| 680 | FASTOPEN entries:& | ||
| 681 | & | ||
| 682 | C:& | ||
| 683 | Specifies the drive& | ||
| 684 | & | ||
| 685 | N = 10 to 999& | ||
| 686 | Specifies the number of directories or& | ||
| 687 | file entry buffers allocated in memory& | ||
| 688 | & | ||
| 689 | M = 1 to 999& | ||
| 690 | Specifies the number of continuous& | ||
| 691 | space buffers allocated in memory& | ||
| 692 | & | ||
| 693 | /X& | ||
| 694 | Used when expanded memory support is& | ||
| 695 | available. When using the /X option& | ||
| 696 | the value of "N" or "M" should not& | ||
| 697 | exceed 150.& | ||
| 698 | & | ||
| 699 | Example: C:=(50,25)& | ||
| 700 | & | ||
| 701 | Specifies FASTOPEN on drive C with& | ||
| 702 | 50 file and directory entry buffers and& | ||
| 703 | 25 continuous space buffers.@ | ||
| 704 | .HELPTEND. | ||
| 705 | |||
| 706 | |||
| 707 | .HELPID. 36 | ||
| 708 | .TOPICTEXT.SHARE Parameters Help | ||
| 709 | .HELPTEXT. @ SHARE Parameters Help | ||
| 710 | & | ||
| 711 | Accept or change the choice shown.&& | ||
| 712 | Use the following list as a guide.& | ||
| 713 | & | ||
| 714 | SHARE provides support for file sharing and | ||
| 715 | diskette change protection.& | ||
| 716 | & | ||
| 717 | SHARE Parameters:& | ||
| 718 | & | ||
| 719 | /F: Allocates file space in bytes for the& | ||
| 720 | area used to record information for file& | ||
| 721 | sharing& | ||
| 722 | & | ||
| 723 | /L: Allocates space for the number of locks& | ||
| 724 | you want. Lock denies read/write access& | ||
| 725 | to regions of a file.& | ||
| 726 | & | ||
| 727 | Example: /F:2048 /L:20& | ||
| 728 | & | ||
| 729 | Specifies a filespace of 2048 bytes and& | ||
| 730 | 20 locks.@ | ||
| 731 | .HELPTEND. | ||
| 732 | |||
| 733 | |||
| 734 | .HELPID. 37 | ||
| 735 | .TOPICTEXT.GRAPHICS Parameters Help | ||
| 736 | .HELPTEXT. @ GRAPHICS Parameters Help | ||
| 737 | & | ||
| 738 | Accept or change the choice shown.& | ||
| 739 | & | ||
| 740 | Use the following list as a guide. You can type | ||
| 741 | up to 80 characters in this field. If your typing | ||
| 742 | scrolls out of view, use the left or right arrow | ||
| 743 | keys to see it.& | ||
| 744 | & | ||
| 745 | GRAPHICS prints the contents of a graphics display. | ||
| 746 | This is useful, if you print charts, tables, or | ||
| 747 | drawings.& | ||
| 748 | & | ||
| 749 | GRAPHICS Parameters:& | ||
| 750 | & | ||
| 751 | COLOR1& | ||
| 752 | IBM 5182 Color Printer with black ribbon& | ||
| 753 | & | ||
| 754 | COLOR4& | ||
| 755 | IBM 5182 Color Printer with red, green,& | ||
| 756 | blue, and black ribbon& | ||
| 757 | & | ||
| 758 | COLOR8& | ||
| 759 | IBM 5182 Color Printer with black, cyan,& | ||
| 760 | magenta, and yellow ribbon& | ||
| 761 | & | ||
| 762 | GRAPHICS& | ||
| 763 | IBM 5152 Graphics Printer& | ||
| 764 | IBM Proprinters& | ||
| 765 | IBM 3812 Pageprinter& | ||
| 766 | IBM 5202 Quietwriter (registered& | ||
| 767 | trademark of International Business& | ||
| 768 | Machines) III Printer& | ||
| 769 | IBM 5204 Quickwriter (trademark of& | ||
| 770 | International Business Machines) Printer& | ||
| 771 | & | ||
| 772 | GRAPHICSWIDE& | ||
| 773 | IBM 5152 Graphics Printer& | ||
| 774 | IBM Proprinters (both are set for wide& | ||
| 775 | paper)& | ||
| 776 | & | ||
| 777 | THERMAL& | ||
| 778 | IBM 5140 Convertible Printer& | ||
| 779 | & | ||
| 780 | /B& | ||
| 781 | Specifies background color printing for& | ||
| 782 | COLOR4 and COLOR8 printers& | ||
| 783 | & | ||
| 784 | /LCD& | ||
| 785 | Prints data as it appears on a liquid& | ||
| 786 | crystal display& | ||
| 787 | & | ||
| 788 | /R& | ||
| 789 | Prints black and white as it appears on& | ||
| 790 | the display& | ||
| 791 | & | ||
| 792 | Example: COLOR8 /B/R& | ||
| 793 | & | ||
| 794 | Specifies black, white, and background& | ||
| 795 | color printing for the 5182 Color Printer.& | ||
| 796 | & | ||
| 797 | /PB:ID& | ||
| 798 | Prints data using the print box size& | ||
| 799 | specified by the ID. The ID should match& | ||
| 800 | the first operand of a Printbox statement& | ||
| 801 | in the printer profile. You may use& | ||
| 802 | /PRINTBOX:ID in place of /PB:ID.& | ||
| 803 | & | ||
| 804 | Supported IDS:& | ||
| 805 | & | ||
| 806 | LCD& | ||
| 807 | Specifies the LCD printbox. When used& | ||
| 808 | with an LCD display, the data is printed& | ||
| 809 | as it appears on the LCD display.& | ||
| 810 | This entry has the same effect as /LCD.& | ||
| 811 | & | ||
| 812 | STD& | ||
| 813 | Specifies standard printbox, which is the& | ||
| 814 | default value.@ | ||
| 815 | .HELPTEND. | ||
| 816 | |||
| 817 | |||
| 818 | .HELPID. 38 | ||
| 819 | .TOPICTEXT.XMAEM Parameters Help | ||
| 820 | .HELPTEXT. @ XMAEM Parameters Help | ||
| 821 | & | ||
| 822 | Accept or change the choice shown. Type, in 16KB | ||
| 823 | increments, the amount of memory you want to allocate. | ||
| 824 | If you do not specify an amount, the system allocates | ||
| 825 | all memory above 1MB.& | ||
| 826 | & | ||
| 827 | XMAEM enables your system to access the extended memory | ||
| 828 | available as expanded memory.& | ||
| 829 | & | ||
| 830 | Example: DEVICE=XMAEM.SYS 64& | ||
| 831 | & | ||
| 832 | Allocates 1 megabyte of extended memory.& | ||
| 833 | & | ||
| 834 | For additional information, refer | ||
| 835 | to the "MS-DOS 4.0 Users Guide" book.@ | ||
| 836 | .HELPTEND. | ||
| 837 | |||
| 838 | |||
| 839 | .HELPID. 39 | ||
| 840 | .TOPICTEXT.XMA2EMS Parameters Help | ||
| 841 | .HELPTEXT. @ XMA2EMS Parameters Help | ||
| 842 | & | ||
| 843 | Accept or change the choice shown. If you change | ||
| 844 | the segment address values, you must | ||
| 845 | define unused 64KB contiguous space for the FRAME and | ||
| 846 | unused 16KB contiguous space for the Pxxx pages.& | ||
| 847 | & | ||
| 848 | Example: FRAME=D000 P254=C000 P255=C400& | ||
| 849 | & | ||
| 850 | Note: These values are sample defaults only and& | ||
| 851 | may not reflect actual free segments in your& | ||
| 852 | system.& | ||
| 853 | & | ||
| 854 | For additional information, refer to the "MS-DOS 4.0 | ||
| 855 | Users Guide" book.@ | ||
| 856 | .HELPTEND. | ||
| 857 | |||
| 858 | |||
| 859 | .HELPID. 40 | ||
| 860 | .TOPICTEXT.RAMDRIVE Parameters Help | ||
| 861 | .HELPTEXT. @ RAMDRIVE Parameters Help | ||
| 862 | & | ||
| 863 | Accept or change the choice shown. Use the | ||
| 864 | following list as a guide.& | ||
| 865 | & | ||
| 866 | RAMDRIVE allows you to use part of the system | ||
| 867 | memory to simulate a fixed disk drive. A | ||
| 868 | virtual drive permits quick access to files, | ||
| 869 | but it is temporary, and data stored on a | ||
| 870 | virtual drive is lost when you turn off | ||
| 871 | the system.& | ||
| 872 | & | ||
| 873 | RAMDRIVE Parameters:& | ||
| 874 | & | ||
| 875 | Buffer:& | ||
| 876 | Buffer size in kilobytes;& | ||
| 877 | 16KB is the minimum buffer size& | ||
| 878 | & | ||
| 879 | Sector:& | ||
| 880 | Sector size in bytes;& | ||
| 881 | 128, 256, 512, or 1024 bytes& | ||
| 882 | & | ||
| 883 | Directory entries:& | ||
| 884 | Number of root directory entries;& | ||
| 885 | 3 to 1024& | ||
| 886 | & | ||
| 887 | /E& | ||
| 888 | Used when extended memory support& | ||
| 889 | is available& | ||
| 890 | & | ||
| 891 | /A& | ||
| 892 | Used when expanded memory support& | ||
| 893 | is available& | ||
| 894 | & | ||
| 895 | Example: 160 512 64& | ||
| 896 | & | ||
| 897 | Specifies the size of the buffers,& | ||
| 898 | sectors, and the number of directories.@ | ||
| 899 | .HELPTEND. | ||
| 900 | |||
| 901 | |||
| 902 | .HELPID. 41 | ||
| 903 | .TOPICTEXT.BREAK Help | ||
| 904 | .HELPTEXT. BREAK (Control Break) Help | ||
| 905 | & | ||
| 906 | Accept or change the choice shown.& | ||
| 907 | & | ||
| 908 | ON: DOS always checks for a Ctrl+Break key& | ||
| 909 | sequence and permits input or output to& | ||
| 910 | a device to be canceled.& | ||
| 911 | & | ||
| 912 | OFF: DOS checks for a Ctrl+Break key sequence only& | ||
| 913 | during standard input, output, print, and& | ||
| 914 | auxiliary device operations.& | ||
| 915 | .HELPTEND. | ||
| 916 | |||
| 917 | |||
| 918 | .HELPID. 42 | ||
| 919 | .TOPICTEXT.BUFFERS Help | ||
| 920 | .HELPTEXT. @ BUFFERS Help | ||
| 921 | & | ||
| 922 | Accept or change the choice shown. Use the | ||
| 923 | following list as a guide.& | ||
| 924 | & | ||
| 925 | The value shown specifies the number of disk buffers | ||
| 926 | DOS allocates in memory. If a second value is shown, | ||
| 927 | this value specifies the number of sectors the system | ||
| 928 | can read or write when processing an input or output | ||
| 929 | operation.& | ||
| 930 | & | ||
| 931 | If you do not specify a buffer, DOS sets a value | ||
| 932 | based on the amount of system memory.& | ||
| 933 | & | ||
| 934 | BUFFERS Values:& | ||
| 935 | & | ||
| 936 | 1 to 99 Number of buffers the system uses& | ||
| 937 | & | ||
| 938 | 1 to 8 Number of sectors the system can& | ||
| 939 | read or write in processing an input& | ||
| 940 | or output operation@ | ||
| 941 | .HELPTEND. | ||
| 942 | |||
| 943 | |||
| 944 | .HELPID. 43 | ||
| 945 | .TOPICTEXT.APPEND Parameter Help | ||
| 946 | .HELPTEXT. @ APPEND Parameter Help | ||
| 947 | & | ||
| 948 | Accept or change the choice shown. Use the | ||
| 949 | following list as a guide.& | ||
| 950 | & | ||
| 951 | APPEND locates data files outside of the current | ||
| 952 | directory that have extensions other then .COM, | ||
| 953 | .EXE, or .BAT.& | ||
| 954 | & | ||
| 955 | APPEND Parameters:& | ||
| 956 | & | ||
| 957 | /X:ON or /X& | ||
| 958 | Tells APPEND to search and process& | ||
| 959 | executable files& | ||
| 960 | & | ||
| 961 | /X:OFF (default value)& | ||
| 962 | Tells APPEND not to search and& | ||
| 963 | process executable files.& | ||
| 964 | & | ||
| 965 | /PATH:ON (default value)& | ||
| 966 | Tells APPEND to search for files that have& | ||
| 967 | a drive or a path specified& | ||
| 968 | & | ||
| 969 | /PATH:OFF& | ||
| 970 | Tells APPEND not to search for files that& | ||
| 971 | have a drive or a path specified& | ||
| 972 | & | ||
| 973 | /E& | ||
| 974 | Keeps the APPEND paths in the DOS& | ||
| 975 | environment. APPEND searches the& | ||
| 976 | environment on each call to find the path.& | ||
| 977 | & | ||
| 978 | ;& | ||
| 979 | Separates the APPEND paths, or cancels the& | ||
| 980 | APPEND paths if the semi-colon is the only& | ||
| 981 | parameter used.& | ||
| 982 | & | ||
| 983 | Example: /E /X& | ||
| 984 | APPEND is in the DOS environment& | ||
| 985 | where it searches and processes& | ||
| 986 | executable files with extensions of& | ||
| 987 | .COM, .EXE, or .BAT.@ | ||
| 988 | .HELPTEND. | ||
| 989 | |||
| 990 | |||
| 991 | .HELPID. 44 | ||
| 992 | .TOPICTEXT.FCBS Help | ||
| 993 | .HELPTEXT. @ FCBS Help | ||
| 994 | & | ||
| 995 | Accept or change the choice shown. Use the | ||
| 996 | following list as a guide.& | ||
| 997 | & | ||
| 998 | FCBS allows you to specify the number of file | ||
| 999 | control blocks that DOS can open concurrently.& | ||
| 1000 | & | ||
| 1001 | FCBS Values:& | ||
| 1002 | & | ||
| 1003 | 1 to 255 Number of file control blocks& | ||
| 1004 | & | ||
| 1005 | 0 to 255 Number of protected file control blocks& | ||
| 1006 | & | ||
| 1007 | Example: 20,10& | ||
| 1008 | & | ||
| 1009 | Specifies 20 FCBS open and 10 protected& | ||
| 1010 | from being automatically closed by DOS.@ | ||
| 1011 | .HELPTEND. | ||
| 1012 | |||
| 1013 | |||
| 1014 | .HELPID. 45 | ||
| 1015 | .TOPICTEXT.FILES Help | ||
| 1016 | .HELPTEXT. @ FILES Help | ||
| 1017 | & | ||
| 1018 | Accept or change the choice shown.& | ||
| 1019 | & | ||
| 1020 | If you do not specify a value, DOS uses a value of 8.& | ||
| 1021 | & | ||
| 1022 | The value specifies the number of files that& | ||
| 1023 | can be open at any one time. The value can be& | ||
| 1024 | from 8 through 255.@ | ||
| 1025 | .HELPTEND. | ||
| 1026 | |||
| 1027 | |||
| 1028 | .HELPID. 46 | ||
| 1029 | .TOPICTEXT.LASTDRIVE Help | ||
| 1030 | .HELPTEXT. @ LASTDRIVE Help | ||
| 1031 | & | ||
| 1032 | Accept or change the choice shown.& | ||
| 1033 | & | ||
| 1034 | If you do not specify a value, DOS uses a value of E.& | ||
| 1035 | & | ||
| 1036 | This value identifies the last drive installed on | ||
| 1037 | your system. The value can be a letter from A through | ||
| 1038 | Z, and it must represent the last valid drive letter | ||
| 1039 | that DOS can accept.@ | ||
| 1040 | .HELPTEND. | ||
| 1041 | |||
| 1042 | |||
| 1043 | .HELPID. 47 | ||
| 1044 | .TOPICTEXT.STACKS Help | ||
| 1045 | .HELPTEXT. @ STACKS Help | ||
| 1046 | & | ||
| 1047 | Accept or change the choice shown.& | ||
| 1048 | & | ||
| 1049 | This value (if any) specifies stack resources. | ||
| 1050 | Use the following list as a guide. You must | ||
| 1051 | specify a number for each frame and a size, | ||
| 1052 | in bytes, for each frame.& | ||
| 1053 | & | ||
| 1054 | STACKS Values:& | ||
| 1055 | & | ||
| 1056 | 8 to 64 Number of stack frames& | ||
| 1057 | & | ||
| 1058 | 32 to 512 Size of each stack frame& | ||
| 1059 | & | ||
| 1060 | Example: 8 128& | ||
| 1061 | & | ||
| 1062 | Specifies 8 stack frames of 128 bytes& | ||
| 1063 | each.@ | ||
| 1064 | .HELPTEND. | ||
| 1065 | |||
| 1066 | |||
| 1067 | .HELPID. 48 | ||
| 1068 | .TOPICTEXT.VERIFY Help | ||
| 1069 | .HELPTEXT. @ VERIFY Help | ||
| 1070 | & | ||
| 1071 | Accept or change the choice shown.& | ||
| 1072 | & | ||
| 1073 | VERIFY confirms that data is correctly | ||
| 1074 | written to a disk.& | ||
| 1075 | & | ||
| 1076 | ON: DOS confirms the data can be read& | ||
| 1077 | without error.& | ||
| 1078 | & | ||
| 1079 | OFF: DOS does not verify the data.@ | ||
| 1080 | .HELPTEND. | ||
| 1081 | |||
| 1082 | |||
| 1083 | .HELPID. 49 | ||
| 1084 | .TOPICTEXT.Use SELECT Partition Sizes Help | ||
| 1085 | .HELPTEXT. @ Use SELECT Partition Sizes Help | ||
| 1086 | & | ||
| 1087 | Select this option to partition your fixed | ||
| 1088 | disk into one partition.& | ||
| 1089 | & | ||
| 1090 | Note: If you have a Personal System/2 with a& | ||
| 1091 | partition greater than 32MB and want to& | ||
| 1092 | install a keyboard password, refer to the& | ||
| 1093 | "MS-DOS 4.0 Users Guide" book for& | ||
| 1094 | additional information.@ | ||
| 1095 | .HELPTEND. | ||
| 1096 | |||
| 1097 | |||
| 1098 | .HELPID. 50 | ||
| 1099 | .TOPICTEXT.Define Your Own Partitions Sizes Help | ||
| 1100 | .HELPTEXT. @ Define Your Own Partitions Sizes Help | ||
| 1101 | & | ||
| 1102 | Select this option if you want to use FDISK to partition | ||
| 1103 | your fixed disk.& | ||
| 1104 | & | ||
| 1105 | Note: If you have a Personal System/2 with a& | ||
| 1106 | partition greater than 32MB and want to& | ||
| 1107 | install a keyboard password, refer to the& | ||
| 1108 | "MS-DOS 4.0 Users Guide" book for& | ||
| 1109 | additional information.@ | ||
| 1110 | .HELPTEND. | ||
| 1111 | |||
| 1112 | |||
| 1113 | .HELPID. 51 | ||
| 1114 | .TOPICTEXT.Leave Disk Unchanged Help | ||
| 1115 | .HELPTEXT. @ Leave Disk Unchanged Help | ||
| 1116 | & | ||
| 1117 | Select this option if you do not want to change | ||
| 1118 | the non-allocated partition space on your fixed disk.@ | ||
| 1119 | .HELPTEND. | ||
| 1120 | |||
| 1121 | |||
| 1122 | .HELPID. 52 | ||
| 1123 | .TOPICTEXT.Define Your Own Sizes Help | ||
| 1124 | .HELPTEXT. @ Define Your Own Sizes Help | ||
| 1125 | & | ||
| 1126 | Select this option if you want to partition the non-allocated | ||
| 1127 | space on your fixed disk. Refer to the "MS-DOS 4.0 Users | ||
| 1128 | Guide" book for information on using FDISK.@ | ||
| 1129 | .HELPTEND. | ||
| 1130 | |||
| 1131 | .HELPID. 53 | ||
| 1132 | .TOPICTEXT.Date and Time Help | ||
| 1133 | .HELPTEXT. @ Date and Time Help | ||
| 1134 | & | ||
| 1135 | Type the date and time in the fields provided. The system clock | ||
| 1136 | keeps an accurate record of the date and time.@ | ||
| 1137 | .HELPTEND. | ||
| 1138 | |||
| 1139 | |||
| 1140 | .HELPID. 54 | ||
| 1141 | .TOPICTEXT.Format Fixed Disk Help | ||
| 1142 | .HELPTEXT. @ Format Fixed Disk Help | ||
| 1143 | & | ||
| 1144 | Select this option to format your fixed disk. | ||
| 1145 | A partition must be formatted before data can | ||
| 1146 | be placed on it.& | ||
| 1147 | & | ||
| 1148 | Warning : | ||
| 1149 | If your fixed disk is already formatted, this option will | ||
| 1150 | reformat the disk and destroy all information on | ||
| 1151 | the disk. Refer to the "MS-DOS 4.0 Users Guide" | ||
| 1152 | book for additional information.@ | ||
| 1153 | .HELPTEND. | ||
| 1154 | |||
| 1155 | |||
| 1156 | .HELPID. 55 | ||
| 1157 | .TOPICTEXT.Do Not Format Fixed Disk Help | ||
| 1158 | .HELPTEXT. @ Do Not Format Fixed Disk Help | ||
| 1159 | & | ||
| 1160 | Select this option if you do not want to format | ||
| 1161 | your fixed disk.@ | ||
| 1162 | .HELPTEND. | ||
| 1163 | |||
| 1164 | |||
| 1165 | .HELPID. 56 | ||
| 1166 | .TOPICTEXT.Install the MS-DOS Shell Help | ||
| 1167 | .HELPTEXT. @ Install the MS-DOS Shell Help | ||
| 1168 | & | ||
| 1169 | Select this option if you want the MS-DOS Shell | ||
| 1170 | to be installed by SELECT onto the target system.& | ||
| 1171 | & | ||
| 1172 | The MS-DOS Shell lets you choose options from | ||
| 1173 | menus instead of typing DOS commands.@ | ||
| 1174 | .HELPTEND. | ||
| 1175 | |||
| 1176 | |||
| 1177 | .HELPID. 57 | ||
| 1178 | .TOPICTEXT.Do not install the MS-DOS Shell Help | ||
| 1179 | .HELPTEXT. @ Do not install the MS-DOS Shell Help | ||
| 1180 | & | ||
| 1181 | Select this option if you do not want the MS-DOS | ||
| 1182 | Shell to be installed by SELECT onto the target | ||
| 1183 | system.@ | ||
| 1184 | .HELPTEND. | ||
| 1185 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/VAR.ASM b/v4.0/src/SELECT/VAR.ASM new file mode 100644 index 0000000..0074a81 --- /dev/null +++ b/v4.0/src/SELECT/VAR.ASM | |||
| @@ -0,0 +1,946 @@ | |||
| 1 | PAGE 60,132 ;AN000; | ||
| 2 | NAME SELECT ;AN000; | ||
| 3 | TITLE VARIABLES - DOS - SELECT.EXE ;AN000; | ||
| 4 | SUBTTL var.asm ;AN000; | ||
| 5 | .ALPHA ;AN000; | ||
| 6 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 7 | ; | ||
| 8 | ; VAR.ASM: Copyright 1988 Microsoft | ||
| 9 | ; | ||
| 10 | ; DATE: August 8/87 | ||
| 11 | ; | ||
| 12 | ; COMMENTS: Assemble with MASM 3.0 (using the /A option) | ||
| 13 | ; | ||
| 14 | ; Module contains variables used by SELECT. | ||
| 15 | ; | ||
| 16 | ; CHANGE HISTORY: | ||
| 17 | ; | ||
| 18 | ; | ||
| 19 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 20 | ; | ||
| 21 | INCLUDE SYSMSG.INC ;AN000; | ||
| 22 | MSG_UTILNAME <SELECT> ;AN000; | ||
| 23 | ; | ||
| 24 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 25 | ; | ||
| 26 | ; | ||
| 27 | ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; | ||
| 28 | DATA SEGMENT BYTE PUBLIC 'DATA' ;AN000; | ||
| 29 | INCLUDE VARSTRUC.INC ;AN000; | ||
| 30 | INCLUDE SEL_FILE.INC ;AN000; | ||
| 31 | ; | ||
| 32 | PUBLIC E_ENTER,E_TAB,E_ESCAPE ;AN000; | ||
| 33 | ; | ||
| 34 | ESCAPE EQU 27 ;AN000; | ||
| 35 | ENTER EQU 13 ;AN000; | ||
| 36 | TAB EQU 9 ;AN000; | ||
| 37 | F1 EQU 59 ;AN000; | ||
| 38 | F3 EQU 61 ;AN000; | ||
| 39 | SPACE EQU 32 ;AN000; | ||
| 40 | ; | ||
| 41 | PUBLIC DRIVE_A,DRIVE_B ;AN000;JW | ||
| 42 | DRIVE_A EQU 0 ;AN000;JW | ||
| 43 | DRIVE_B EQU 1 ;AN000;JW | ||
| 44 | ; | ||
| 45 | MSG_SERVICES <MSGDATA> ;AN000; | ||
| 46 | ; | ||
| 47 | PUBLIC SUPPORT_STATUS ;AN000; | ||
| 48 | SUPPORT_STATUS DW ? ;AN000; | ||
| 49 | DW ? ;AN000; | ||
| 50 | DW ? ;AN000; | ||
| 51 | DW ? ;AN000; | ||
| 52 | DW ? ;AN000; | ||
| 53 | DW ? ;AN000; | ||
| 54 | DW ? ;AN000; | ||
| 55 | DW ? ;AN000; | ||
| 56 | DW ? ;AN000; | ||
| 57 | DW ? ;AN000; | ||
| 58 | ; | ||
| 59 | PUBLIC I_USER_INDEX ;AN000; | ||
| 60 | I_USER_INDEX DW ? ;AN000; Index value for scroll list | ||
| 61 | ; | ||
| 62 | PUBLIC N_USER_NUMERIC,MIN_INPUT_VAL,MAX_INPUT_VAL;AN000; | ||
| 63 | N_USER_NUMERIC DW ? ;AN000; Input value for numeric fields | ||
| 64 | MIN_INPUT_VAL DW ? ;AN000; Minimum value of input | ||
| 65 | MAX_INPUT_VAL DW ? ;AN000; Maximum value of input | ||
| 66 | ; | ||
| 67 | PUBLIC S_USER_STRING,P_USER_STRING,M_USER_STRING;AN000; | ||
| 68 | S_USER_STRING DW M_USER_STRING ;AN000; Length of string | ||
| 69 | P_USER_STRING DB 120 DUP(?) ;AN000; Actual string | ||
| 70 | M_USER_STRING EQU $ - P_USER_STRING ;AN000; | ||
| 71 | ; | ||
| 72 | PUBLIC N_VALID_KEYS ;AN000; | ||
| 73 | N_VALID_KEYS DW ? ;AN000; Valid keys for current input | ||
| 74 | ; | ||
| 75 | PUBLIC N_USER_FUNC, E_ENTER, E_ESCAPE, E_TAB, E_F3, E_SPACE ;AN000; | ||
| 76 | N_USER_FUNC DW ? ;AN000; Function type entered by user | ||
| 77 | E_ENTER = ENTER ;AN000; Enter key | ||
| 78 | E_ESCAPE = ESCAPE ;AN000; Escape key | ||
| 79 | E_TAB = TAB ;AN000; Tab key | ||
| 80 | E_F3 = F3*256 ;AN000; Function key 3 (F3,0) | ||
| 81 | E_SPACE = SPACE ;AN000; ; | ||
| 82 | ; | ||
| 83 | PUBLIC FK_ENT_F3, FK_ENT_F3_LEN ;AN000; | ||
| 84 | FK_ENT_F3 DB ENTER,0,F3 ;AN000; Enter, F3 | ||
| 85 | FK_ENT_F3_LEN EQU ($-FK_ENT_F3) ;AN000; | ||
| 86 | ; | ||
| 87 | PUBLIC FK_ENT_ESC, FK_ENT_ESC_LEN ;AN000; | ||
| 88 | FK_ENT_ESC DB ENTER,ESCAPE ;AN000; Enter, Esc | ||
| 89 | FK_ENT_ESC_LEN EQU ($-FK_ENT_ESC) ;AN000; | ||
| 90 | ; | ||
| 91 | PUBLIC FK_ENT_ESC_F3, FK_ENT_ESC_F3_LEN ;AN000; | ||
| 92 | FK_ENT_ESC_F3 DB ENTER,ESCAPE,0,F3 ;AN000; Enter, Esc | ||
| 93 | FK_ENT_ESC_F3_LEN EQU ($-FK_ENT_ESC_F3) ;AN000; | ||
| 94 | ; | ||
| 95 | PUBLIC FK_ENT, FK_ENT_LEN ;AN000; | ||
| 96 | FK_ENT DB ENTER ;AN000; Enter | ||
| 97 | FK_ENT_LEN EQU ($-FK_ENT) ;AN000; | ||
| 98 | ; | ||
| 99 | PUBLIC FK_TEXT, FK_TEXT_LEN ;AN000; | ||
| 100 | FK_TEXT DB ENTER,ESCAPE,0,F1,0,F3 ;AN000; Enter, ESC, F1, F3 | ||
| 101 | FK_TEXT_LEN EQU ($-FK_TEXT) ;AN000; | ||
| 102 | ; | ||
| 103 | PUBLIC FK_SCROLL, FK_SCROLL_LEN ;AN000; | ||
| 104 | FK_SCROLL DB ENTER,ESCAPE,0,F1,0,F3 ;AN000; Enter,ESC, F1, F3 | ||
| 105 | FK_SCROLL_LEN EQU ($-FK_SCROLL) ;AN000; | ||
| 106 | ; | ||
| 107 | PUBLIC FK_TAB, FK_TAB_LEN ;AN000; | ||
| 108 | FK_TAB DB TAB,ENTER,ESCAPE,0,F1,0,F3 ;AN000;Enter, ESC, F1, F3, Tab | ||
| 109 | FK_TAB_LEN EQU ($-FK_TAB) ;AN000; | ||
| 110 | ; | ||
| 111 | PUBLIC FK_REVIEW, FK_REVIEW_LEN ;AN000; | ||
| 112 | FK_REVIEW DB ENTER,SPACE,ESCAPE,0,F1,0,F3 ;AN000;Enter,ESC,F1,F3,SPACE | ||
| 113 | FK_REVIEW_LEN EQU ($-FK_REVIEW) ;AN000; | ||
| 114 | ; | ||
| 115 | PUBLIC FK_DATE, FK_DATE_LEN ;AN000; | ||
| 116 | FK_DATE DB TAB,ENTER,0,F1 ;AN000; Enter, ESC, F1, Tab | ||
| 117 | FK_DATE_LEN EQU ($-FK_DATE) ;AN000; | ||
| 118 | ; | ||
| 119 | PUBLIC FK_FORMAT, FK_FORMAT_LEN ;AN000; | ||
| 120 | FK_FORMAT DB ENTER,0,F1 ;AN000; | ||
| 121 | FK_FORMAT_LEN EQU ($-FK_FORMAT) ;AN000; | ||
| 122 | ; | ||
| 123 | PUBLIC FK_REBOOT, FK_REBOOT_LEN ;AN000; | ||
| 124 | FK_REBOOT DB ? ;AN000; only CTRL+ALT+DEL keys valid | ||
| 125 | FK_REBOOT_LEN EQU 0 ;AN000; | ||
| 126 | ; | ||
| 127 | PUBLIC ERROR_KEYS,ERROR_KEYS_LEN,E_QUIT,E_RETURN ;AN000; | ||
| 128 | ERROR_KEYS DB 0,F3,ENTER ;AN000; | ||
| 129 | ERROR_KEYS_LEN EQU $-ERROR_KEYS ;AN000; | ||
| 130 | E_QUIT EQU 1 ;AN000; | ||
| 131 | E_RETURN EQU 2 ;AN000; | ||
| 132 | ; | ||
| 133 | PUBLIC E_YES, E_NO, E_NA ;AN000; | ||
| 134 | E_YES EQU 1 ;AN000; | ||
| 135 | E_NO EQU 2 ;AN000; | ||
| 136 | E_NA EQU 6 ;AN000; | ||
| 137 | ; | ||
| 138 | PUBLIC N_SELECT_MODE, E_SELECT_MENU, E_SELECT_FDISK, E_SELECT_INV ;AN000; | ||
| 139 | N_SELECT_MODE DW ? ;AN000; SELECT command line mode | ||
| 140 | E_SELECT_MENU EQU 0 ;AN000; MENU mode | ||
| 141 | E_SELECT_FDISK EQU 1 ;AN000; FDISK mode | ||
| 142 | E_SELECT_INV EQU 0FFH ;AN000; Invalid parameter | ||
| 143 | ; | ||
| 144 | PUBLIC N_FORMAT_MODE,E_FORMAT_SELECT,E_FORMAT_NEW,E_FORMAT_USED ;AN000; | ||
| 145 | N_FORMAT_MODE DW ? ;AN000; FORMAT mode specified on command line | ||
| 146 | E_FORMAT_SELECT EQU 1 ;AN000; new disk - select to format all partitions | ||
| 147 | E_FORMAT_NEW EQU 2 ;AN000; new disk - user to format all partitions | ||
| 148 | E_FORMAT_USED EQU 3 ;AN000; used disk - user to format all partitions | ||
| 149 | ; | ||
| 150 | PUBLIC S_SPACE ;AN000; | ||
| 151 | S_SPACE DW M_SPACE ;AN000; | ||
| 152 | P_SPACE DB ' ' ;AN000; | ||
| 153 | M_SPACE EQU $ - P_SPACE ;AN000; | ||
| 154 | ; | ||
| 155 | PUBLIC S_OFF ;AN000; | ||
| 156 | S_OFF DW M_OFF ;AN000; OFF parameter | ||
| 157 | P_OFF DB 'OFF' ;AN000; | ||
| 158 | M_OFF EQU $ - P_OFF ;AN000; | ||
| 159 | ; | ||
| 160 | PUBLIC S_ON ;AN000; | ||
| 161 | S_ON DW M_ON ;AN000; ON parameter | ||
| 162 | P_ON DB 'ON' ;AN000; | ||
| 163 | M_ON EQU $ - P_ON ;AN000; | ||
| 164 | ; | ||
| 165 | PUBLIC I_WORKSPACE,N_WORK_PREV,E_WORKSPACE_BAL,E_WORKSPACE_MIN,E_WORKSPACE_MAX ;AN000; | ||
| 166 | I_WORKSPACE DW ? ;AN000; user workspace option | ||
| 167 | N_WORK_PREV DW ? ;AN000; previous workspace option | ||
| 168 | E_WORKSPACE_MIN EQU 1 ;AN000; minimize DOS functions | ||
| 169 | E_WORKSPACE_BAL EQU 2 ;AN000; balance DOS function | ||
| 170 | E_WORKSPACE_MAX EQU 3 ;AN000; maximize DOS functions | ||
| 171 | ; | ||
| 172 | PUBLIC S_ANSI,M_ANSI,F_ANSI,E_ANSI_YES,D_ANSI_1,E_ANSI_B,E_ANSI_C,E_ANSI_NO ;AN000; | ||
| 173 | S_ANSI DW M_ANSI ;AN000; ANSI command | ||
| 174 | P_ANSI DB 2 DUP(?) ;AN000; | ||
| 175 | M_ANSI EQU $ - P_ANSI ;AN000; | ||
| 176 | D_ANSI_1 DW 2 ;AN000; | ||
| 177 | DB '/X' ;AN000; | ||
| 178 | F_ANSI DW ? ;AN000; ANSI support required indicator | ||
| 179 | E_ANSI_NO = E_NO ;AN000; ANSI support not required | ||
| 180 | E_ANSI_YES = E_YES ;AN000; include ANSI.SYS command | ||
| 181 | E_ANSI_B EQU 2 ;AN000; | ||
| 182 | E_ANSI_C EQU 3 ;AN000; | ||
| 183 | ; | ||
| 184 | PUBLIC S_APPEND, F_APPEND, E_APPEND_YES, E_APPEND_NO, M_APPEND ;AN000; | ||
| 185 | PUBLIC S_APPEND_P, M_APPEND_P ;AN000;JW | ||
| 186 | S_APPEND DW M_APPEND ;AN000; APPEND command | ||
| 187 | P_APPEND DB 120 DUP(?) ;AN000; | ||
| 188 | M_APPEND EQU $ - P_APPEND ;AN000; | ||
| 189 | S_APPEND_P DW 2 ;AN000; APPEND command paramters JW | ||
| 190 | P_APPEND_P DB '/E' ;AN000; Default parameter JW | ||
| 191 | DB 38 DUP(' ') ;AN000; JW | ||
| 192 | M_APPEND_P EQU $ - P_APPEND_P ;AN000; JW | ||
| 193 | F_APPEND DW ? ;AN000; APPEND support indicator | ||
| 194 | E_APPEND_NO = E_NO ;AN000; APPEND support not required | ||
| 195 | E_APPEND_YES = E_YES ;AN000; include APPEND command | ||
| 196 | ; | ||
| 197 | PUBLIC S_BREAK, M_BREAK, ST_BREAK, MT_BREAK ;AN000; | ||
| 198 | S_BREAK DW M_BREAK ;AN000; BREAK command | ||
| 199 | P_BREAK DB 3 DUP(?) ;AN000; | ||
| 200 | M_BREAK EQU $ - P_BREAK ;AN000; | ||
| 201 | ST_BREAK DW MT_BREAK ;AN000; temp location for BREAK command | ||
| 202 | PT_BREAK DB M_BREAK DUP(?) ;AN000; | ||
| 203 | MT_BREAK EQU $ - PT_BREAK ;AN000; | ||
| 204 | ; | ||
| 205 | PUBLIC S_BUFFERS,M_BUFFERS,D_BUFFERS_1,D_BUFFERS_2,ST_BUFFERS,MT_BUFFERS ;AN000; | ||
| 206 | S_BUFFERS DW M_BUFFERS ;AN000; BUFFERS command | ||
| 207 | P_BUFFERS DB 7 DUP(?) ;AN000; | ||
| 208 | M_BUFFERS EQU $ - P_BUFFERS ;AN000; | ||
| 209 | D_BUFFERS_1 DW 2 ;AN000; | ||
| 210 | DB '20' ;AN000; | ||
| 211 | D_BUFFERS_2 DW 4 ;AN000; | ||
| 212 | DB '25,8' ;AC041;SEH for optimal performance | ||
| 213 | ST_BUFFERS DW MT_BUFFERS ;AN000; temp location for BUFFERS parameters | ||
| 214 | PT_BUFFERS DB M_BUFFERS DUP(?) ;AN000; | ||
| 215 | MT_BUFFERS EQU $ - PT_BUFFERS ;AN000; | ||
| 216 | ; | ||
| 217 | PUBLIC S_CPSW, M_CPSW, F_CPSW, E_CPSW_YES, E_CPSW_NO, E_CPSW_NA ;AN000; | ||
| 218 | PUBLIC E_CPSW_B, E_CPSW_C, ST_CPSW, MT_CPSW ;AN000; | ||
| 219 | PUBLIC N_CPSW, E_CPSW_NOT_VAL, E_CPSW_NOT_REC, E_CPSW_VALID ;AN000; | ||
| 220 | S_CPSW DW M_CPSW ;AN000; CPSW command | ||
| 221 | P_CPSW DB 3 DUP(?) ;AN000; | ||
| 222 | M_CPSW EQU $ - P_CPSW ;AN000; | ||
| 223 | F_CPSW DW ? ;AN000; CPSW support indicator | ||
| 224 | E_CPSW_NO = E_NO ;AN000; CPSW support not required | ||
| 225 | E_CPSW_YES = E_YES ;AN000; include CPSW command | ||
| 226 | E_CPSW_NA = E_NA ;AN000; CPSW not available | ||
| 227 | E_CPSW_B EQU 1 ;AN000; | ||
| 228 | E_CPSW_C EQU 1 ;AN000; | ||
| 229 | ST_CPSW DW MT_CPSW ;AN000; temp location for CPSW command | ||
| 230 | PT_CPSW DB M_CPSW DUP(?) ;AN000; | ||
| 231 | MT_CPSW EQU $ - PT_CPSW ;AN000; | ||
| 232 | N_CPSW DW ? ;AN000; code page switching indicator for country | ||
| 233 | E_CPSW_NOT_VAL EQU 0 ;AN000; code page switching not allowed | ||
| 234 | E_CPSW_NOT_REC EQU 1 ;AN000; code page switching not recommended | ||
| 235 | E_CPSW_VALID EQU 2 ;AN000; code page switching recommended | ||
| 236 | ; | ||
| 237 | PUBLIC S_FASTOPEN, M_FASTOPEN, F_FASTOPEN, E_FASTOPEN_YES ;AN000; | ||
| 238 | PUBLIC E_FASTOPEN_NO, D_FASTOPEN_1, D_FASTOPEN_2, E_FASTOPEN_C ;AN000; | ||
| 239 | S_FASTOPEN DW M_FASTOPEN ;AN000; FASTOPEN command | ||
| 240 | P_FASTOPEN DB 60 DUP(?) ;AN000; | ||
| 241 | M_FASTOPEN EQU $ - P_FASTOPEN ;AN000; | ||
| 242 | D_FASTOPEN_1 DW 10 ;AN000; | ||
| 243 | DB 'C:=(50,25)' ;AN000; | ||
| 244 | D_FASTOPEN_2 DW 12 ;AN000; | ||
| 245 | DB 'C:=(150,150)' ;AC078; SEH changed from 200,200 to 150,150 due to expanded mem problems ;AC041; SEH for optimal performance | ||
| 246 | F_FASTOPEN DW ? ;AN000; FASTOPEN support indicator | ||
| 247 | E_FASTOPEN_NO = E_NO ;AN000; FASTOPEN support not required | ||
| 248 | E_FASTOPEN_YES = E_YES ;AN000; include FASTOPEN command | ||
| 249 | E_FASTOPEN_C EQU 4 ;AN000; | ||
| 250 | ; | ||
| 251 | PUBLIC S_FCBS, M_FCBS, D_FCBS_1, ST_FCBS, MT_FCBS ;AN000; | ||
| 252 | S_FCBS DW M_FCBS ;AN000; FCBS command | ||
| 253 | P_FCBS DB 7 DUP(?) ;AN000; | ||
| 254 | M_FCBS EQU $ - P_FCBS ;AN000; | ||
| 255 | D_FCBS_1 DW 4 ;AN000; | ||
| 256 | DB '20,8' ;AN000; | ||
| 257 | ST_FCBS DW MT_FCBS ;AN000; temp location for FCBS command | ||
| 258 | PT_FCBS DB M_FCBS DUP(?) ;AN000; | ||
| 259 | MT_FCBS EQU $ - PT_FCBS ;AN000; | ||
| 260 | ; | ||
| 261 | PUBLIC S_FILES, M_FILES, D_FILES_1, D_FILES_2, ST_FILES, MT_FILES ;AN000; | ||
| 262 | S_FILES DW M_FILES ;AN000; FILES command | ||
| 263 | P_FILES DB 3 DUP(?) ;AN000; | ||
| 264 | M_FILES EQU $ - P_FILES ;AN000; | ||
| 265 | D_FILES_1 DW 2 ;AN000; | ||
| 266 | DB '20' ;AN000; | ||
| 267 | D_FILES_2 DW 1 ;AN000; | ||
| 268 | DB '8' ;AN000; | ||
| 269 | ST_FILES DW MT_FILES ;AN000; temp location for FILES command | ||
| 270 | PT_FILES DB M_FILES DUP(?) ;AN000; | ||
| 271 | MT_FILES EQU $ - PT_FILES ;AN000; | ||
| 272 | ; | ||
| 273 | PUBLIC S_GRAPHICS, M_GRAPHICS, F_GRAPHICS, E_GRAPHICS_YES ;AN000; | ||
| 274 | PUBLIC E_GRAPHICS_NO, E_GRAPHICS_B, E_GRAPHICS_C ;AN000; | ||
| 275 | S_GRAPHICS DW M_GRAPHICS ;AN000; GRAPHICS command | ||
| 276 | P_GRAPHICS DB 80 DUP(?) ;AN000; | ||
| 277 | M_GRAPHICS EQU $ - P_GRAPHICS ;AN000; | ||
| 278 | F_GRAPHICS DW ? ;AN000; GRAPHICS support indicator | ||
| 279 | E_GRAPHICS_NO = E_NO ;AN000; GRAPHICS support not required | ||
| 280 | E_GRAPHICS_YES = E_YES ;AN000; include GRAPHICS command | ||
| 281 | E_GRAPHICS_B EQU 4 ;AN000; | ||
| 282 | E_GRAPHICS_C EQU 6 ;AN000; | ||
| 283 | ; | ||
| 284 | PUBLIC F_GRAFTABL, E_GRAFTABL_YES, E_GRAFTABL_NO, E_GRAFTABL_NA ;AN000; | ||
| 285 | PUBLIC E_GRAFTABL_B, E_GRAFTABL_C ;AN000; | ||
| 286 | F_GRAFTABL DW ? ;AN000; GRAFTABL support indicator | ||
| 287 | E_GRAFTABL_NO = E_NO ;AN000; GRAFTABL support not required | ||
| 288 | E_GRAFTABL_YES = E_YES ;AN000; include GRAFTABL command | ||
| 289 | E_GRAFTABL_NA = E_NA ;AN000; GRAFTABL not available | ||
| 290 | E_GRAFTABL_B EQU 3 ;AN000; | ||
| 291 | E_GRAFTABL_C EQU 5 ;AN000; | ||
| 292 | ; | ||
| 293 | PUBLIC S_LASTDRIVE,M_LASTDRIVE,D_LASTDRIVE_1,ST_LASTDRIVE,MT_LASTDRIVE ;AN000; | ||
| 294 | S_LASTDRIVE DW M_LASTDRIVE ;AN000; LASTDRIVE command | ||
| 295 | P_LASTDRIVE DB 1 DUP(?) ;AN000; | ||
| 296 | M_LASTDRIVE EQU $ - P_LASTDRIVE ;AN000; | ||
| 297 | D_LASTDRIVE_1 DW 1 ;AN000; | ||
| 298 | DB 'E' ;AN000; | ||
| 299 | ST_LASTDRIVE DW MT_LASTDRIVE ;AN000; temp location for LASTDRIVE command | ||
| 300 | PT_LASTDRIVE DB M_LASTDRIVE DUP(?) ;AN000; | ||
| 301 | MT_LASTDRIVE EQU $ - PT_LASTDRIVE ;AN000; | ||
| 302 | ; | ||
| 303 | PUBLIC S_PATH, M_PATH, F_PATH, E_PATH_YES, E_PATH_NO ;AN000; | ||
| 304 | S_PATH DW M_PATH ;AN000; PATH command | ||
| 305 | P_PATH DB 120 DUP(?) ;AN000; | ||
| 306 | M_PATH EQU $ - P_PATH ;AN000; | ||
| 307 | F_PATH DW ? ;AN000; PATH support indicator | ||
| 308 | E_PATH_NO = E_NO ;AN000; PATH support not required | ||
| 309 | E_PATH_YES = E_YES ;AN000; include PATH command | ||
| 310 | ; | ||
| 311 | PUBLIC S_PROMPT,M_PROMPT,F_PROMPT,E_PROMPT_YES,E_PROMPT_NO,D_PROMPT_1 ;AN000; | ||
| 312 | S_PROMPT DW M_PROMPT ;AN000; PROMPT command | ||
| 313 | P_PROMPT DB 120 DUP(?) ;AN000; | ||
| 314 | M_PROMPT EQU $ - P_PROMPT ;AN000; | ||
| 315 | D_PROMPT_1 DW 4 ;AN000; | ||
| 316 | DB '$P$G' ;AN000; | ||
| 317 | F_PROMPT DW ? ;AN000; PROMPT command indicator | ||
| 318 | E_PROMPT_NO = E_NO ;AN000; PROMPT command not to be included | ||
| 319 | E_PROMPT_YES = E_YES ;AN000; include PROMPT command | ||
| 320 | ; | ||
| 321 | PUBLIC S_SHARE,M_SHARE,F_SHARE,E_SHARE_YES,E_SHARE_NO,E_SHARE_C ;AN000; | ||
| 322 | S_SHARE DW M_SHARE ;AN000; SHARE command | ||
| 323 | P_SHARE DB 15 DUP(?) ;AN000; | ||
| 324 | M_SHARE EQU $ - P_SHARE ;AN000; | ||
| 325 | F_SHARE DW ? ;AN000; SHARE support indicator | ||
| 326 | E_SHARE_NO = E_NO ;AN000; SHARE support not required | ||
| 327 | E_SHARE_YES = E_YES ;AN000; include SHARE command | ||
| 328 | E_SHARE_C EQU 7 ;AN000; | ||
| 329 | ; | ||
| 330 | PUBLIC S_SHELL, M_SHELL, F_SHELL, E_SHELL_YES, E_SHELL_NO ;AN000; | ||
| 331 | PUBLIC D_SHELL_1, D_SHELL_2, E_SHELL_B, E_SHELL_C ;AC018;SEH ;AC000;JW | ||
| 332 | S_SHELL DW M_SHELL ;AN000; SHELL command | ||
| 333 | P_SHELL DB 115 DUP(?) ;AN000; | ||
| 334 | M_SHELL EQU $ - P_SHELL ;AN000; | ||
| 335 | D_SHELL_1 DW M_SHELL_1 ;AN000; | ||
| 336 | P_SHELL_1 DB '/TRAN/MAINT/MENU/EXIT/SND/PROMPT' ;AC077;SEH ;AC000;JW | ||
| 337 | M_SHELL_1 EQU $ - P_SHELL_1 ;AN000; | ||
| 338 | D_SHELL_2 DW M_SHELL_2 ;AN000; | ||
| 339 | P_SHELL_2 DB '/TRAN/COLOR/DOS/MENU/MUL' ;AC071;SEH ;AC016;SEH ;AC000;JW | ||
| 340 | DB '/SND/MEU:SHELL.MEU/CLR:SHELL.CLR/PROMPT/MAINT/EXIT/SWAP/DATE' ;AC012;SEH ;AC000;JW | ||
| 341 | M_SHELL_2 EQU $ - P_SHELL_2 ;AN000; | ||
| 342 | F_SHELL DW ? ;AN000; SHELL support indicator | ||
| 343 | E_SHELL_NO = E_NO ;AN000; SHELL support not required | ||
| 344 | E_SHELL_YES = E_YES ;AN000; include SHELL command | ||
| 345 | E_SHELL_B = 5 | ||
| 346 | E_SHELL_C = 8 | ||
| 347 | ; | ||
| 348 | PUBLIC MACHINE_TYPE, PS2_FLAG, MOD25_OR_MOD30 ;AN000;JW | ||
| 349 | MACHINE_TYPE DB ? ;AN000;JW | ||
| 350 | PS2_FLAG DB ? ;AN000;JW | ||
| 351 | MOD25_OR_MOD30 EQU 0FAH ;AN000;JW | ||
| 352 | ; | ||
| 353 | PUBLIC S_STACKS,M_STACKS,ST_STACKS,MT_STACKS ;AN000; | ||
| 354 | S_STACKS DW M_STACKS ;AN000; STACKS command | ||
| 355 | P_STACKS DB 6 DUP(?) ;AN000; | ||
| 356 | M_STACKS EQU $ - P_STACKS ;AN000; | ||
| 357 | ST_STACKS DW MT_STACKS ;AN000; temp location for STACKS command | ||
| 358 | PT_STACKS DB M_STACKS DUP(?) ;AN000; | ||
| 359 | MT_STACKS EQU $ - PT_STACKS ;AN000; | ||
| 360 | ; | ||
| 361 | PUBLIC S_VDISK,M_VDISK,F_VDISK,E_VDISK_YES,E_VDISK_NO,E_VDISK_B,E_VDISK_C ;AN000; | ||
| 362 | S_VDISK DW M_VDISK ;AN000; VDISK command | ||
| 363 | P_VDISK DB 20 DUP(?) ;AN000; | ||
| 364 | M_VDISK EQU $ - P_VDISK ;AN000; | ||
| 365 | F_VDISK DW ? ;AN000; VDISK support indicator | ||
| 366 | E_VDISK_NO = E_NO ;AN000; VDISK support not required | ||
| 367 | E_VDISK_YES = E_YES ;AN000; include VDISK command | ||
| 368 | E_VDISK_B EQU 6 ;AN000; | ||
| 369 | E_VDISK_C EQU 9 ;AN000; | ||
| 370 | ; | ||
| 371 | PUBLIC S_VERIFY, M_VERIFY, ST_VERIFY, MT_VERIFY ;AN000; | ||
| 372 | S_VERIFY DW M_VERIFY ;AN000; VERIFY command | ||
| 373 | P_VERIFY DB 3 DUP(?) ;AN000; | ||
| 374 | M_VERIFY EQU $ - P_VERIFY ;AN000; | ||
| 375 | ST_VERIFY DW MT_VERIFY ;AN000; temp location for VERIFY command | ||
| 376 | PT_VERIFY DB M_VERIFY DUP(?) ;AN000; | ||
| 377 | MT_VERIFY EQU $ - PT_VERIFY ;AN000; | ||
| 378 | ; | ||
| 379 | PUBLIC S_XMAEM, M_XMAEM ;AN000; | ||
| 380 | S_XMAEM DW M_XMAEM ;AN000; XMAEM command | ||
| 381 | P_XMAEM DB 40 DUP(?) ;AN000; | ||
| 382 | M_XMAEM EQU $ - P_XMAEM ;AN000; | ||
| 383 | ; | ||
| 384 | PUBLIC S_XMA2EMS, M_XMA2EMS, D_XMA2EMS_1, F_XMA, E_XMA_NO, E_XMA_NA ;AN000; | ||
| 385 | PUBLIC E_XMA_YES, E_XMA_C, N_XMA, E_XMA_ABSENT, E_XMA_PRESENT ;AN000; | ||
| 386 | S_XMA2EMS DW M_XMA2EMS ;AN000; XMA2EMS command | ||
| 387 | P_XMA2EMS DB 40 DUP(?) ;AN000; | ||
| 388 | M_XMA2EMS EQU $ - P_XMA2EMS ;AN000; | ||
| 389 | D_XMA2EMS_1 DW 30 ;AN000; | ||
| 390 | DB 'FRAME=D000 P254=C000 P255=C400' ;AC044;SEH ;AC040;SEH ;AN000;JW | ||
| 391 | F_XMA DW ? ;AN000; Expanded Memory support indicator | ||
| 392 | E_XMA_NO = E_NO ;AN000; Expanded Memory support not required | ||
| 393 | E_XMA_YES = E_YES ;AN000; include XMAEM, XMA2EMS commands | ||
| 394 | E_XMA_NA = E_NA ;AN000; Expanded memory not available | ||
| 395 | E_XMA_C EQU 2 ;AN000; | ||
| 396 | N_XMA DW ? ;AN000; Expanded memory presence indicator | ||
| 397 | E_XMA_ABSENT EQU 0 ;AN000; expanded memory not present | ||
| 398 | E_XMA_PRESENT EQU 1 ;AN000; expanded memory is present | ||
| 399 | ; | ||
| 400 | PUBLIC N_MOD80, E_IS_MOD80, E_NOT_MOD80 ;AN000;JW | ||
| 401 | N_MOD80 DW ? ;AN000; Model 80 indicator | ||
| 402 | E_NOT_MOD80 EQU 0 ;AN000; is not a model 80 | ||
| 403 | E_IS_MOD80 EQU 1 ;AN000; is a model 80 | ||
| 404 | ; | ||
| 405 | PUBLIC I_DEST_DRIVE, E_DEST_DRIVE_A, E_DEST_DRIVE_B, E_DEST_DRIVE_C ;AN111;JW | ||
| 406 | I_DEST_DRIVE DW ? ;AN000; Install destination drive - set by CHECK_VALID_MEDIA | ||
| 407 | E_DEST_DRIVE_C EQU 1 ;AN000; drive C: | ||
| 408 | E_DEST_DRIVE_B EQU 2 ;AN000; drive B: | ||
| 409 | E_DEST_DRIVE_A EQU 3 ;AN111; drive A: | ||
| 410 | ; | ||
| 411 | PUBLIC N_DRIVE_OPTION, E_OPTION_B_C, E_OPTION_A_C ;AN111;JW | ||
| 412 | N_DRIVE_OPTION DW ? ;AN111; Which options to choose from JW | ||
| 413 | E_OPTION_B_C EQU 1 ;AN111; install to B or C JW | ||
| 414 | E_OPTION_A_C EQU 2 ;AN111; install to A or C JW | ||
| 415 | ; | ||
| 416 | PUBLIC N_DEST_DRIVE, E_DEST_SELECT, E_DEST_USER ;AN000; | ||
| 417 | N_DEST_DRIVE DB ? ;AN000; destination drive determined by user or SELECT | ||
| 418 | E_DEST_SELECT EQU 0 ;AN000; SELECT will determine default drive | ||
| 419 | E_DEST_USER EQU 1 ;AN000; user will select destination drive | ||
| 420 | ; | ||
| 421 | PUBLIC N_DISKETTE_TOT, N_ZERO_DISKETTE, N_DISKETTE_A, N_DISKETTE_B ;AN000; | ||
| 422 | PUBLIC E_DISKETTE_INV, E_DISKETTE_360, E_DISKETTE_720, E_DISKETTE_1200, E_DISKETTE_1440 ;AN000; | ||
| 423 | N_DISKETTE_TOT DB ? ;AN000; number of diskette drives | ||
| 424 | N_ZERO_DISKETTE EQU 0 ;AN000; | ||
| 425 | N_DISKETTE_A DB ? ;AN000; drive A: diskette status | ||
| 426 | N_DISKETTE_B DB ? ;AN000; drive B: diskette status | ||
| 427 | E_DISKETTE_INV EQU 0FFH ;AN000; diskette not present | ||
| 428 | E_DISKETTE_360 EQU 0 ;AN000; diskette media is 360K (5.25 inch) | ||
| 429 | E_DISKETTE_1200 EQU 1 ;AN000; diskette media is 1.2M (5.25 inch) | ||
| 430 | E_DISKETTE_720 EQU 2 ;AN000; diskette media is 720K (3.5 inch) | ||
| 431 | E_DISKETTE_1440 EQU 7 ;AN000; diskette media is 1.44M (3.5 inch) | ||
| 432 | ; | ||
| 433 | PUBLIC S_DEST_DRIVE,M_DEST_DRIVE,S_DRIVE_A ;AN000; | ||
| 434 | S_DEST_DRIVE DW M_DEST_DRIVE ;AN000; Destination drive to install DOS | ||
| 435 | P_DEST_DRIVE DB 'C:\' ;AN000; | ||
| 436 | M_DEST_DRIVE EQU $ - P_DEST_DRIVE ;AN000; | ||
| 437 | S_DRIVE_A DW M_DRIVE_A ;AN000; | ||
| 438 | P_DRIVE_A DB 'A:\' ;AN000; | ||
| 439 | M_DRIVE_A EQU $ - P_DRIVE_A ;AN000; | ||
| 440 | ; | ||
| 441 | PUBLIC S_C_DRIVE,S_A_DRIVE,S_B_DRIVE ;AC039;SEH;AN000;JW | ||
| 442 | S_C_DRIVE DW M_C_DRIVE ;AN000; Destination drive w/o backslash JW | ||
| 443 | P_C_DRIVE DB 'C:' ;AN000; | ||
| 444 | M_C_DRIVE EQU $ - P_C_DRIVE ;AN000; | ||
| 445 | S_A_DRIVE DW M_A_DRIVE ;AN039;SEH Destination drive w/o backslash | ||
| 446 | P_A_DRIVE DB 'A:' ;AN039;SEH | ||
| 447 | M_A_DRIVE EQU $ - P_A_DRIVE ;AN039;SEH | ||
| 448 | S_B_DRIVE DW M_B_DRIVE ;AN039;SEH Destination drive w/o backslash | ||
| 449 | P_B_DRIVE DB 'B:' ;AN039;SEH | ||
| 450 | M_B_DRIVE EQU $ - P_B_DRIVE ;AN039;SEH | ||
| 451 | ; | ||
| 452 | PUBLIC S_DOS_LOC, M_DOS_LOC, D_DOS_LOC_1 ;AN000; | ||
| 453 | S_DOS_LOC DW M_DOS_LOC ;AN000; user defined DOS location path for drive C: | ||
| 454 | P_DOS_LOC DB 37 DUP(?) ;AN000; | ||
| 455 | M_DOS_LOC EQU $ - P_DOS_LOC ;AN000; | ||
| 456 | D_DOS_LOC_1 DW 3 ;AN000; | ||
| 457 | DB 'DOS' ;AN000; | ||
| 458 | ; | ||
| 459 | PUBLIC S_INSTALL_PATH, M_INSTALL_PATH ;AN000; | ||
| 460 | S_INSTALL_PATH DW M_INSTALL_PATH ;AN000; install path including drive | ||
| 461 | P_INSTALL_PATH DB 40 DUP( ) ;AN000; | ||
| 462 | M_INSTALL_PATH EQU $ - P_INSTALL_PATH ;AN000; | ||
| 463 | ; | ||
| 464 | PUBLIC I_CTY_KYBD, E_CTY_KB_PREDEF, E_CTY_KB_USER ;AN000; | ||
| 465 | I_CTY_KYBD DW ? ;AN000; index for country and keyboard screen | ||
| 466 | E_CTY_KB_PREDEF EQU 1 ;AN000; Use predefined country/keyboard | ||
| 467 | E_CTY_KB_USER EQU 2 ;AN000; user specified country/keyboard to be used | ||
| 468 | ; | ||
| 469 | PUBLIC N_CTY_LIST, E_CTY_LIST_1, E_CTY_LIST_2 ;AN000; | ||
| 470 | N_CTY_LIST DW ? ;AN000; Country code scroll list identifier | ||
| 471 | E_CTY_LIST_1 EQU 1 ;AN000; code 001 - 046 | ||
| 472 | E_CTY_LIST_2 EQU 2 ;AN000; code 047 - 972 | ||
| 473 | ; | ||
| 474 | PUBLIC I_COUNTRY, N_COUNTRY ;AN000; | ||
| 475 | I_COUNTRY DW ? ;AN000; Index into country code list | ||
| 476 | N_COUNTRY DW ? ;AN000; Country Code | ||
| 477 | ; | ||
| 478 | PUBLIC N_KYBD_LIST, E_KYBD_LIST_1, E_KYBD_LIST_2 ;AN000; | ||
| 479 | N_KYBD_LIST DW ? ;AN000; Keyboard code scroll list identifier | ||
| 480 | E_KYBD_LIST_1 EQU 1 ;AN000; code BE - NO | ||
| 481 | E_KYBD_LIST_2 EQU 2 ;AN000; code PO - none | ||
| 482 | ; | ||
| 483 | PUBLIC I_KEYBOARD ;AN000; | ||
| 484 | I_KEYBOARD DW ? ;AN000; Index into keyboard code list | ||
| 485 | ; | ||
| 486 | PUBLIC S_KEYBOARD,N_KYBD_VAL,E_KYBD_VAL_YES,E_KYBD_VAL_NO ;AN000; | ||
| 487 | PUBLIC M_KEYBOARD,E_KYBD_VAL_DEF ;AN000; | ||
| 488 | S_KEYBOARD DW M_KEYBOARD ;AN000; | ||
| 489 | P_KEYBOARD DB 2 DUP(?) ;AN000; Keyboard code | ||
| 490 | M_KEYBOARD EQU $ - P_KEYBOARD ;AN000; | ||
| 491 | N_KYBD_VAL DB ? ;AN000; Keyboard code valid indicator | ||
| 492 | E_KYBD_VAL_NO EQU 0 ;AN000; Keyboard code is not valid | ||
| 493 | E_KYBD_VAL_YES EQU 1 ;AN000; Keyboard code is valid | ||
| 494 | E_KYBD_VAL_DEF EQU 2 ;AN000; Default keyboard (US) is to be used | ||
| 495 | ; This state is defined so that keyboard screen | ||
| 496 | ; will be displayed with "None" option | ||
| 497 | ; | ||
| 498 | PUBLIC N_DESIGNATES, N_CP_PRI, N_CP_SEC, N_CTY_RES ;AN000; | ||
| 499 | N_DESIGNATES DW ? ;AN000; number of designates | ||
| 500 | N_CP_PRI DW ? ;AN000; Primary code page | ||
| 501 | N_CP_SEC DW ? ;AN000; Secondary code page | ||
| 502 | N_CTY_RES DB ? ;AN000; reserved byte from country table | ||
| 503 | ; | ||
| 504 | PUBLIC I_KYBD_ALT, S_KYBD_ALT, M_KYBD_ALT, N_KYBD_ALT ;AN000; | ||
| 505 | PUBLIC E_KYBD_ALT_NO, E_KYBD_ALT_YES ;AN000; | ||
| 506 | I_KYBD_ALT DW ? ;AN000; Index into alternate keyboard code list | ||
| 507 | S_KYBD_ALT DW M_KYBD_ALT ;AN000; | ||
| 508 | P_KYBD_ALT DB 2 DUP(?) ;AN000; Keyboard code | ||
| 509 | M_KYBD_ALT EQU $ - P_KYBD_ALT ;AN000; | ||
| 510 | N_KYBD_ALT DB ? ;AN000; Alternate keyboards present indicator | ||
| 511 | E_KYBD_ALT_NO EQU 0 ;AN000; no alternate keyboards | ||
| 512 | E_KYBD_ALT_YES EQU 1 ;AN000; are alternate keyboards are present | ||
| 513 | ; | ||
| 514 | PUBLIC N_KYB_LOAD,E_KYB_LOAD_SUC,E_KYB_LOAD_ERR,E_KYB_LOAD_US,E_KYB_LOAD_UND ;AN000; | ||
| 515 | N_KYB_LOAD DW ? ;AN000; KEYB load status | ||
| 516 | E_KYB_LOAD_SUC EQU 1 ;AN000; no error from KEYB | ||
| 517 | E_KYB_LOAD_ERR EQU 2 ;AN000; error from KEYB | ||
| 518 | E_KYB_LOAD_US EQU 3 ;AN000; US keyboard loaded | ||
| 519 | E_KYB_LOAD_UND EQU 4 ;AN000; undefined keyboard loaded | ||
| 520 | ; | ||
| 521 | ; Country code association with Keyboard code & Code Page | ||
| 522 | PUBLIC CTY_TAB_A,CTY_TAB_A_1,CTY_A_ITEMS ;AN000; | ||
| 523 | CTY_TAB_A DB CTY_A_ITEMS ;AN000; no of entries in table | ||
| 524 | CTY_TAB_A_1 CTY_DEF < 001,E_KYBD_VAL_DEF,' ',437,850,1,E_CPSW_NOT_REC,0> ;AN000; (01) United States | ||
| 525 | CTY_DEF < 002,E_KYBD_VAL_YES,'CF',863,850,2,E_CPSW_VALID ,0> ;AN000; (02) Canada (French) | ||
| 526 | CTY_DEF < 003,E_KYBD_VAL_YES,'LA',850,437,1,E_CPSW_VALID ,0> ;AC070;SEH ;AN000; (03) Latin America | ||
| 527 | CTY_DEF < 031,E_KYBD_VAL_YES,'NL',437,850,1,E_CPSW_VALID ,0> ;AN000; (04) Netherlands | ||
| 528 | CTY_DEF < 032,E_KYBD_VAL_YES,'BE',850,437,1,E_CPSW_VALID ,0> ;AN000; (05) Belgium | ||
| 529 | CTY_DEF < 033,E_KYBD_VAL_YES,'FR',437,850,1,E_CPSW_VALID ,1> ;AN000; (06) France | ||
| 530 | CTY_DEF < 034,E_KYBD_VAL_YES,'SP',850,437,1,E_CPSW_VALID ,0> ;AN000; (07) Spain | ||
| 531 | CTY_DEF < 039,E_KYBD_VAL_YES,'IT',437,850,1,E_CPSW_VALID ,2> ;AN000; (08) Italy | ||
| 532 | CTY_DEF < 041,E_KYBD_VAL_YES,'SF',850,437,1,E_CPSW_VALID ,0> ;AN000; (09) Switzerland | ||
| 533 | CTY_DEF < 044,E_KYBD_VAL_YES,'UK',437,850,1,E_CPSW_VALID ,3> ;AN000; (10) United Kingdom | ||
| 534 | CTY_DEF < 045,E_KYBD_VAL_YES,'DK',850,865,2,E_CPSW_VALID ,0> ;AN000; (11) Denmark | ||
| 535 | CTY_DEF < 046,E_KYBD_VAL_YES,'SV',437,850,1,E_CPSW_VALID ,0> ;AN000; (12) Sweden | ||
| 536 | CTY_A_ITEMS EQU ($ - CTY_TAB_A_1) / TYPE CTY_DEF ;AN000; no of items | ||
| 537 | ; | ||
| 538 | PUBLIC CTY_TAB_B,CTY_TAB_B_1,CTY_B_ITEMS ;AN000; | ||
| 539 | CTY_TAB_B DB CTY_B_ITEMS ;AN000; no of entries in table | ||
| 540 | CTY_TAB_B_1 CTY_DEF < 047,E_KYBD_VAL_YES,'NO',850,865,2,E_CPSW_VALID ,0 > ;AN000; (01) Norway | ||
| 541 | CTY_DEF < 049,E_KYBD_VAL_YES,'GR',437,850,1,E_CPSW_VALID ,0 > ;AN000; (02) Germany | ||
| 542 | CTY_DEF < 061,E_KYBD_VAL_YES,'US',437,850,1,E_CPSW_VALID ,0 > ;AN000; (03) Australia | ||
| 543 | CTY_DEF < 081,E_KYBD_VAL_NO ,' ',000,000,0,E_CPSW_NOT_VAL,0 > ;AN000; (04) Japan | ||
| 544 | CTY_DEF < 082,E_KYBD_VAL_NO ,' ',000,000,0,E_CPSW_NOT_VAL,0 > ;AN000; (05) Korea | ||
| 545 | CTY_DEF < 086,E_KYBD_VAL_NO ,' ',000,000,0,E_CPSW_NOT_VAL,0 > ;AN000; (06) Republic of China | ||
| 546 | CTY_DEF < 088,E_KYBD_VAL_NO ,' ',000,000,0,E_CPSW_NOT_VAL,0 > ;AN000; (07) Taiwan | ||
| 547 | CTY_DEF < 351,E_KYBD_VAL_YES,'PO',850,860,2,E_CPSW_VALID ,0 > ;AN000; (08) Portugal | ||
| 548 | CTY_DEF < 358,E_KYBD_VAL_YES,'SU',850,437,1,E_CPSW_VALID ,0 > ;AN000; (09) Finland | ||
| 549 | CTY_DEF < 785,E_KYBD_VAL_NO ,' ',000,000,0,E_CPSW_NOT_VAL,0 > ;AN000; (10) Arabic Speaking | ||
| 550 | CTY_DEF < 972,E_KYBD_VAL_NO ,' ',000,000,0,E_CPSW_NOT_VAL,0 > ;AN000; (11) Hebrew Speaking | ||
| 551 | CTY_B_ITEMS EQU ($ - CTY_TAB_B_1) / TYPE CTY_DEF ;AN000; no of items | ||
| 552 | ; | ||
| 553 | ; Keyboard Codes supported | ||
| 554 | PUBLIC KYBD_TAB_A,KYBD_TAB_A_1,KYBD_A_ITEMS ;AN000; | ||
| 555 | KYBD_TAB_A DB KYBD_A_ITEMS ;AN000; no of entries in table | ||
| 556 | KYBD_TAB_A_1 KYB_DEF < 'BE', E_KYBD_ALT_NO > ;AN000; (01) Flemish | ||
| 557 | KYB_DEF < 'CF', E_KYBD_ALT_NO > ;AN000; (02) Canadian French | ||
| 558 | KYB_DEF < 'DK', E_KYBD_ALT_NO > ;AN000; (03) Danish | ||
| 559 | KYB_DEF < 'FR', E_KYBD_ALT_YES> ;AN000; (04) French | ||
| 560 | KYB_DEF < 'GR', E_KYBD_ALT_NO > ;AN000; (05) German | ||
| 561 | KYB_DEF < 'IT', E_KYBD_ALT_YES> ;AN000; (06) Italian | ||
| 562 | KYB_DEF < 'LA', E_KYBD_ALT_NO > ;AN000; (07) Latin American (Spanish) | ||
| 563 | KYB_DEF < 'NL', E_KYBD_ALT_NO > ;AN000; (08) Dutch | ||
| 564 | KYB_DEF < 'NO', E_KYBD_ALT_NO > ;AN000; (09) Norwegian | ||
| 565 | KYBD_A_ITEMS EQU ($ - KYBD_TAB_A_1) / TYPE KYB_DEF ;AN000; no of items in table | ||
| 566 | ; | ||
| 567 | PUBLIC KYBD_TAB_B,KYBD_TAB_B_1,KYBD_B_ITEMS ;AN000; | ||
| 568 | KYBD_TAB_B DB KYBD_B_ITEMS ;AN000; no of entries in table | ||
| 569 | KYBD_TAB_B_1 KYB_DEF < 'PO', E_KYBD_ALT_NO > ;AN000; (01) Portuguese | ||
| 570 | KYB_DEF < 'SF', E_KYBD_ALT_NO > ;AN000; (02) Swiss (French) | ||
| 571 | KYB_DEF < 'SG', E_KYBD_ALT_NO > ;AN000; (03) Swiss (German) | ||
| 572 | KYB_DEF < 'SP', E_KYBD_ALT_NO > ;AN000; (04) Spanish | ||
| 573 | KYB_DEF < 'SU', E_KYBD_ALT_NO > ;AN000; (05) Finnish | ||
| 574 | KYB_DEF < 'SV', E_KYBD_ALT_NO > ;AN000; (06) Swedish | ||
| 575 | KYB_DEF < 'UK', E_KYBD_ALT_YES> ;AN000; (07) UK English | ||
| 576 | KYB_DEF < 'US', E_KYBD_ALT_NO > ;AN000; (08) US English | ||
| 577 | KYB_DEF < ' ', E_KYBD_ALT_NO > ;AN000; (09) none of the above | ||
| 578 | KYBD_B_ITEMS EQU ($ - KYBD_TAB_B_1) / TYPE KYB_DEF ;AN000; no of items in table | ||
| 579 | ; | ||
| 580 | PUBLIC ALT_TAB_PTR ;AN000; | ||
| 581 | ALT_TAB_PTR DW ? ;AN000; pointer keyboard table | ||
| 582 | ; | ||
| 583 | PUBLIC ALT_KYB_ID, ALT_FRENCH, ALT_ITALIAN, ALT_UK, ALT_KYB_ID_PREV ;AN000; | ||
| 584 | ALT_KYB_ID DB ? ;AN000; keyboard code identifier | ||
| 585 | ALT_KYB_ID_PREV DB ? ;AN000; previous keyboard code identifier | ||
| 586 | ALT_FRENCH EQU 1 ;AN000; French keyboard | ||
| 587 | ALT_ITALIAN EQU 2 ;AN000; Italian keyboard | ||
| 588 | ALT_UK EQU 3 ;AN000; UK English keyboard | ||
| 589 | ; | ||
| 590 | PUBLIC ALT_KYB_TABLE, ALT_KYB_TAB_1, ALT_KYB_ITEMS ;AN000; | ||
| 591 | ALT_KYB_TABLE DB ALT_KYB_ITEMS ;AN000; no of items in table | ||
| 592 | ALT_KYB_TAB_1 ALT_KYB_DEF < 'FR', ALT_KYBD_FR, ALT_FRENCH > ;AN000; French keyboard | ||
| 593 | ALT_KYB_DEF < 'IT', ALT_KYBD_IT, ALT_ITALIAN > ;AN000; Italian keyboard | ||
| 594 | ALT_KYB_DEF < 'UK', ALT_KYBD_UK, ALT_UK > ;AN000; UK English | ||
| 595 | ALT_KYB_ITEMS EQU ($ - ALT_KYB_TAB_1) / TYPE ALT_KYB_DEF ;AN000; no of items | ||
| 596 | ; | ||
| 597 | PUBLIC ALT_KYBD_FR, ALT_KYBD_FR_1, ALT_FR_ITEMS ;AN000; | ||
| 598 | ALT_KYBD_FR DB ALT_FR_ITEMS ;AN000; Alternate French Keyboard-no of entries in table | ||
| 599 | ALT_KYBD_FR_1 FR_STRUC <'120'> ;AN000; | ||
| 600 | FR_STRUC <'189'> ;AC000;JW | ||
| 601 | ALT_FR_ITEMS EQU ($ - ALT_KYBD_FR_1) / TYPE FR_STRUC ;AN000; | ||
| 602 | ; | ||
| 603 | PUBLIC ALT_KYBD_IT, ALT_KYBD_IT_1, ALT_IT_ITEMS ;AN000; | ||
| 604 | ALT_KYBD_IT DB ALT_IT_ITEMS ;AN000; Alternate Italian keyboard-no of entries in table | ||
| 605 | ALT_KYBD_IT_1 IT_STRUC <'142'> ;AC090;JW Switched with '141 | ||
| 606 | IT_STRUC <'141'> ;AC090;JW | ||
| 607 | ALT_IT_ITEMS EQU ($ - ALT_KYBD_IT_1) / TYPE IT_STRUC ;AN000; | ||
| 608 | ; | ||
| 609 | PUBLIC ALT_KYBD_UK, ALT_KYBD_UK_1, ALT_UK_ITEMS ;AN000; | ||
| 610 | ALT_KYBD_UK DB ALT_UK_ITEMS ;AN000; no of entries in table | ||
| 611 | ALT_KYBD_UK_1 UK_STRUC <'168'> ;AN000; | ||
| 612 | UK_STRUC <'166'> ;AC000;JW | ||
| 613 | ALT_UK_ITEMS EQU ($ - ALT_KYBD_UK_1) / TYPE UK_STRUC ;AN000; | ||
| 614 | ; | ||
| 615 | PUBLIC ALT_ID_DEF ;AN000; | ||
| 616 | ALT_ID_DEF DB 0 ;AN000;DT | ||
| 617 | ; | ||
| 618 | PUBLIC S_US ;AN000; | ||
| 619 | S_US DW M_US ;AN000; | ||
| 620 | P_US DB 'US' ;AN000; | ||
| 621 | M_US EQU $ - P_US ;AN000; | ||
| 622 | ; | ||
| 623 | PUBLIC S_SWISS ;AN000; | ||
| 624 | S_SWISS DW M_SWISS ;AN000; | ||
| 625 | P_SWISS DB 'SF' ;AN000; | ||
| 626 | M_SWISS EQU $ - P_SWISS ;AN000; | ||
| 627 | ; | ||
| 628 | PUBLIC PRINTER_TABLES ;AN000; | ||
| 629 | PRINTER_TABLES EQU $ ;AN000; | ||
| 630 | PRINTER_DEF < > ;AN000; LPT1 | ||
| 631 | PRINTER_DEF < > ;AN000; LPT2 | ||
| 632 | PRINTER_DEF < > ;AN000; LPT3 | ||
| 633 | PRINTER_DEF < > ;AN000; COM1 | ||
| 634 | PRINTER_DEF < > ;AN000; COM2 | ||
| 635 | PRINTER_DEF < > ;AN000; COM3 | ||
| 636 | PRINTER_DEF < > ;AN000; COM4 | ||
| 637 | ; | ||
| 638 | PUBLIC N_NUMPRINT, MIN_NUMPRINT, MAX_NUMPRINT ;AN000; | ||
| 639 | N_NUMPRINT DW ? ;AN000; No. of printers to install | ||
| 640 | MIN_NUMPRINT EQU 0 ;AN000; | ||
| 641 | MAX_NUMPRINT EQU 7 ;AN000; | ||
| 642 | ; | ||
| 643 | PUBLIC N_SERIAL, N_PARALLEL ;AN000; | ||
| 644 | N_PARALLEL DW ? ;AN000; | ||
| 645 | N_SERIAL DW ? ;AN000; | ||
| 646 | ; | ||
| 647 | PUBLIC I_PORT, I_REDIRECT, I_PRINTER ;AN000; | ||
| 648 | I_PORT DW ? ;AN000; port number | ||
| 649 | I_REDIRECT DW ? ;AN000; serial port redirection | ||
| 650 | I_PRINTER DW ? ;AN000; index into printer list | ||
| 651 | ; | ||
| 652 | PUBLIC N_PRINTER_TYPE, E_SERIAL, E_PARALLEL ;AN000; | ||
| 653 | N_PRINTER_TYPE DB ? ;AN000; printer type | ||
| 654 | E_SERIAL EQU 53H ;AN000; Serial 'S' | ||
| 655 | E_PARALLEL EQU 50H ;AN000; Parallel 'P' | ||
| 656 | ; | ||
| 657 | PUBLIC S_MODE_PARM, M_MODE_PARM ;AN000; | ||
| 658 | S_MODE_PARM DW M_MODE_PARM ;AN000; | ||
| 659 | P_MODE_PARM DB 40 DUP(?) ;AN000; | ||
| 660 | M_MODE_PARM EQU $ - P_MODE_PARM ;AN000; | ||
| 661 | ; | ||
| 662 | PUBLIC S_CP_DRIVER, M_CP_DRIVER ;AN000; | ||
| 663 | S_CP_DRIVER DW M_CP_DRIVER ;AN000; | ||
| 664 | P_CP_DRIVER DB 22 DUP(?) ;AN000; | ||
| 665 | M_CP_DRIVER EQU $ - P_CP_DRIVER ;AN000; | ||
| 666 | ; | ||
| 667 | PUBLIC S_CP_PREPARE, M_CP_PREPARE ;AN000; | ||
| 668 | S_CP_PREPARE DW M_CP_PREPARE ;AN000; | ||
| 669 | P_CP_PREPARE DB 12 DUP(?) ;AN000; | ||
| 670 | M_CP_PREPARE EQU $ - P_CP_PREPARE ;AN000; | ||
| 671 | ; | ||
| 672 | PUBLIC S_GRAPH_PARM, M_GRAPH_PARM ;AN000; | ||
| 673 | S_GRAPH_PARM DW M_GRAPH_PARM ;AN000; | ||
| 674 | P_GRAPH_PARM DB 20 DUP(?) ;AN000; | ||
| 675 | M_GRAPH_PARM EQU $ - P_GRAPH_PARM ;AN000; | ||
| 676 | ; | ||
| 677 | PUBLIC F_REVIEW, E_REVIEW_ACCEPT, E_REVIEW_VIEW ;AN000; | ||
| 678 | F_REVIEW DW ? ;AN000; Review selection screen index | ||
| 679 | E_REVIEW_ACCEPT EQU 1 ;AN000; user will accept selections made by SELECT | ||
| 680 | E_REVIEW_VIEW EQU 2 ;AN000; user wants to view/change selections made by SELECT | ||
| 681 | ; | ||
| 682 | PUBLIC N_DISPLAY, E_CPSW_DISP, E_NOCPSW_DISP ;AN000; | ||
| 683 | N_DISPLAY DB ? ;AN000; display type indicator | ||
| 684 | E_CPSW_DISP EQU 0 ;AN000; display type will support CPSW | ||
| 685 | E_NOCPSW_DISP EQU 1 ;AN000; display type will not support CPSW | ||
| 686 | ; | ||
| 687 | PUBLIC N_YEAR, MIN_YEAR, MAX_YEAR ;AN000; | ||
| 688 | N_YEAR DW ? ;AN000; calender year | ||
| 689 | MIN_YEAR EQU 1980 ;AN000; | ||
| 690 | MAX_YEAR EQU 2079 ;AN000; | ||
| 691 | ; | ||
| 692 | PUBLIC N_MONTH, MIN_MONTH, MAX_MONTH ;AN000; | ||
| 693 | N_MONTH DW ? ;AN000; calender month | ||
| 694 | MIN_MONTH EQU 1 ;AN000; | ||
| 695 | MAX_MONTH EQU 12 ;AN000; | ||
| 696 | ; | ||
| 697 | PUBLIC N_DAY, MIN_DAY, MAX_DAY ;AN000; | ||
| 698 | N_DAY DW ? ;AN000; calender day | ||
| 699 | MIN_DAY EQU 1 ;AN000; | ||
| 700 | MAX_DAY EQU 31 ;AN000; | ||
| 701 | ; | ||
| 702 | PUBLIC N_HOUR, MIN_HOUR, MAX_HOUR ;AN000; | ||
| 703 | N_HOUR DW ? ;AN000; hour | ||
| 704 | MIN_HOUR EQU 0 ;AN000; | ||
| 705 | MAX_HOUR EQU 23 ;AN000; | ||
| 706 | ; | ||
| 707 | PUBLIC N_MINUTE, MIN_MINUTE, MAX_MINUTE ;AN000; | ||
| 708 | N_MINUTE DW ? ;AN000; minute | ||
| 709 | MIN_MINUTE EQU 0 ;AN000; | ||
| 710 | MAX_MINUTE EQU 59 ;AN000; | ||
| 711 | ; | ||
| 712 | PUBLIC N_SECOND, MIN_SECOND, MAX_SECOND ;AN000; | ||
| 713 | N_SECOND DW ? ;AN000; second | ||
| 714 | MIN_SECOND EQU 0 ;AN000; | ||
| 715 | MAX_SECOND EQU 59 ;AN000; | ||
| 716 | ; | ||
| 717 | PUBLIC PARM_BLOCK, CMD_BUFF ;AN000; | ||
| 718 | PARM_BLOCK LABEL WORD ;AN000; parameter block for EXEC_PROGRAM | ||
| 719 | DW 0 ;AN000; use parent environment | ||
| 720 | DW OFFSET CMD_BUFF ;AN000; pointer to commnad line | ||
| 721 | DW ? ;AN000; segment for command line | ||
| 722 | DW 5CH ;AN000; default FCB | ||
| 723 | DW ? ;AN000; segment for FCB | ||
| 724 | DW 6CH ;AN000; default FCB | ||
| 725 | DW ? ;AN000; segment for FCB | ||
| 726 | PARM_BLOCK_END EQU $ ;AN000; | ||
| 727 | ; | ||
| 728 | CMD_BUFF LABEL BYTE ;AN000; command line passed to EXEC_PROGRAM | ||
| 729 | DB ? ;AN000; length of command line - excluding carrier return | ||
| 730 | DB 80 DUP(?) ;AN000; | ||
| 731 | CMD_BUFF_END EQU $ ;AN000; | ||
| 732 | ; | ||
| 733 | PUBLIC S_STR40, P_STR40, M_STR40 ;AN000;JW | ||
| 734 | S_STR40 DW M_STR40 ;AN000; Temporary variable for string field | ||
| 735 | P_STR40 DB 40 DUP(?) ;AN000;JW | ||
| 736 | M_STR40 EQU $ - P_STR40 ;AN000;JW | ||
| 737 | ; | ||
| 738 | PUBLIC S_STR120_1, P_STR120_1, M_STR120_1 ;AN000; | ||
| 739 | S_STR120_1 DW M_STR120_1 ;AN000; Temporary variable for string field | ||
| 740 | P_STR120_1 DB 120 DUP(?) ;AN000; | ||
| 741 | M_STR120_1 EQU $ - P_STR120_1 ;AN000; | ||
| 742 | ; | ||
| 743 | PUBLIC S_STR120_2, M_STR120_2 ;AN000; | ||
| 744 | S_STR120_2 DW M_STR120_2 ;AN000; Temporary variable for string field | ||
| 745 | P_STR120_2 DB 120 DUP(?) ;AN000; | ||
| 746 | M_STR120_2 EQU $ - P_STR120_2 ;AN000; | ||
| 747 | ; | ||
| 748 | PUBLIC S_STR120_3, M_STR120_3 ;AN000; | ||
| 749 | S_STR120_3 DW M_STR120_3 ;AN000; Temporary variable for string field | ||
| 750 | P_STR120_3 DB 120 DUP(?) ;AN000; | ||
| 751 | M_STR120_3 EQU $ - P_STR120_3 ;AN000; | ||
| 752 | ; | ||
| 753 | PUBLIC S_STR120_4, M_STR120_4 ;AN039;SEH | ||
| 754 | S_STR120_4 DW M_STR120_4 ;AN039;SEH Temporary variable for string field | ||
| 755 | P_STR120_4 DB 120 DUP(?) ;AN039;SEH | ||
| 756 | M_STR120_4 EQU $ - P_STR120_4 ;AN039;SEH | ||
| 757 | ; | ||
| 758 | PUBLIC SC_LINE, MC_LINE ;AN000; | ||
| 759 | SC_LINE DW MC_LINE ;AN000; Temporary variable for string field | ||
| 760 | PC_LINE DB 130 DUP(?) ;AN000; | ||
| 761 | MC_LINE EQU $ - PC_LINE - 2 ;AN000; | ||
| 762 | ; | ||
| 763 | PUBLIC N_HANDLE ;AN000; | ||
| 764 | N_HANDLE DW ? ;AN000; save location for file handle | ||
| 765 | ; | ||
| 766 | PUBLIC N_WRITE_HANDLE, N_WRITE_ERR_CODE ;AN000; | ||
| 767 | N_WRITE_HANDLE DW ? ;AN000; File handle for prepared file | ||
| 768 | N_WRITE_ERR_CODE DW ? ;AN000; error code for prepared file | ||
| 769 | ; | ||
| 770 | PUBLIC N_RETCODE, N_COUNTER ;AN000; | ||
| 771 | N_RETCODE DW ? ;AN000; Return code if execution not a success | ||
| 772 | N_COUNTER DW ? ;AN000; Loop counter | ||
| 773 | ; | ||
| 774 | PUBLIC N_WORD_1, N_WORD_2, N_WORD_3, N_WORD_4, N_WORD_5, N_WORD_6,N_BYTE_1 ;AN000; | ||
| 775 | N_WORD_1 DW ? ;AN000; temp variable | ||
| 776 | N_WORD_2 DW ? ;AN000; temp variable | ||
| 777 | N_WORD_3 DW ? ;AN000; temp variable | ||
| 778 | N_WORD_4 DW ? ;AN000; temp variable | ||
| 779 | N_WORD_5 DW ? ;AN000; temp variable | ||
| 780 | N_WORD_6 DW ? ;AN000; temp variable | ||
| 781 | N_BYTE_1 DB ? ;AN025; temp variable | ||
| 782 | ; | ||
| 783 | PUBLIC SAVE_AREA ;AN000; | ||
| 784 | SAVE_AREA DB 4 DUP(?) ;AN000; save area for stack pointer before EXEC program | ||
| 785 | ; | ||
| 786 | PUBLIC N_HOUSE_CLEAN,E_CLEAN_YES,E_CLEAN_NO ;AN000; | ||
| 787 | N_HOUSE_CLEAN DB ? ;AN000; | ||
| 788 | E_CLEAN_YES EQU 1 ;AN000; erase temp files | ||
| 789 | E_CLEAN_NO EQU 0 ;AN000; no temp files to erase | ||
| 790 | ; | ||
| 791 | PUBLIC N_DSKCPY_ERR,E_DSKCPY_RETRY,E_DSKCPY_OK ;AN000;JW | ||
| 792 | N_DSKCPY_ERR DB 0 ;AN000;JW | ||
| 793 | E_DSKCPY_RETRY EQU 1 ;AN000; retry diskcopy | ||
| 794 | E_DSKCPY_OK EQU 0 ;AN000; diskcopy successful | ||
| 795 | ; | ||
| 796 | PUBLIC E_CR, E_LF ;AN000; | ||
| 797 | E_CR EQU 0DH ;AN000; | ||
| 798 | E_LF EQU 0AH ;AN000; | ||
| 799 | ; | ||
| 800 | ; EQUATES FOR FIELD TYPES DEFINED IN DISK STATUS STRUCTURE | ||
| 801 | ; EQUATES FOR N_PART_NAME ; Partition name | ||
| 802 | PUBLIC E_PART_PRI_DOS, E_PART_EXT_DOS, E_PART_LOG_DRI ;AN000; | ||
| 803 | PUBLIC E_FREE_MEM_EDOS, E_FREE_MEM_DISK, E_PART_OTHER ;AN000; | ||
| 804 | E_PART_PRI_DOS EQU 1 ;AN000; Primary DOS partition | ||
| 805 | E_PART_EXT_DOS EQU 2 ;AN000; Extended DOS partition | ||
| 806 | E_PART_LOG_DRI EQU 3 ;AN000; Logical Drive | ||
| 807 | E_FREE_MEM_EDOS EQU 4 ;AN000; Free space in Extended DOS partition | ||
| 808 | E_FREE_MEM_DISK EQU 5 ;AN000; Free disk space - undefined partition | ||
| 809 | E_PART_OTHER EQU 6 ;AN000; other partition types i.e not DOS or EDOS | ||
| 810 | |||
| 811 | ; EQUATES FOR N_PART_STATUS ; Partition status | ||
| 812 | PUBLIC E_PART_UNFORMAT, E_PART_FORMAT ;AN000; | ||
| 813 | E_PART_UNFORMAT EQU 0 ;AN000; partition is unformatted | ||
| 814 | E_PART_FORMAT EQU 1 ;AN000; partition is formatted | ||
| 815 | ; | ||
| 816 | ; EQUATES FOR N_PART_TYPE ; Partition type | ||
| 817 | PUBLIC E_PART_FAT, E_PART_KSAM, E_PART_UNDEF, E_PART_IGNORE ;AN000; | ||
| 818 | E_PART_FAT EQU 1 ;AN000; FAT | ||
| 819 | E_PART_KSAM EQU 2 ;AN000; KSAM | ||
| 820 | E_PART_UNDEF EQU 3 ;AN000; not assigned | ||
| 821 | E_PART_IGNORE EQU 4 ;AN000; other partition types i.e not FAT or KSAM | ||
| 822 | ; | ||
| 823 | PUBLIC N_DISK_1, E_DISK_1, N_DISK_2, E_DISK_2 ;AN000; | ||
| 824 | PUBLIC E_DISK_INV, E_DISK_NO_PART, E_DISK_VAL_PART ;AN000; | ||
| 825 | N_DISK_1 DW ? ;AN000; first fixed disk status | ||
| 826 | N_DISK_2 DW ? ;AN000; second fixed disk status | ||
| 827 | E_DISK_1 EQU 1 ;AN000; | ||
| 828 | E_DISK_2 EQU 2 ;AN000; | ||
| 829 | E_DISK_INV EQU 0 ;AN000; fixed disk not present | ||
| 830 | E_DISK_NO_PART EQU 1 ;AN000; fixed disk present : no DOS or EDOS partitions | ||
| 831 | E_DISK_VAL_PART EQU 2 ;AN000; fixed disk present : DOS or EDOS partitions exist | ||
| 832 | ; | ||
| 833 | PUBLIC N_DISK_1_S1,N_DISK_2_S1,E_DISK_PRI,E_DISK_EXT_DOS ;AN000; | ||
| 834 | PUBLIC E_DISK_LOG_DRI,E_DISK_EDOS_MEM,E_DISK_FREE_MEM ;AN000; | ||
| 835 | N_DISK_1_S1 DW ? ;AN000; detailed status of first fixed drive | ||
| 836 | N_DISK_2_S1 DW ? ;AN000; detailed status or second fixed drive | ||
| 837 | E_DISK_PRI EQU 01H ;AN000; Primary DOS partition exists | ||
| 838 | E_DISK_EXT_DOS EQU 02H ;AN000; Extended DOS partitions exists | ||
| 839 | E_DISK_LOG_DRI EQU 04H ;AN000; Logical drives exist in Extended Dos partitions | ||
| 840 | E_DISK_EDOS_MEM EQU 08H ;AN000; Free space exists in Extended DOS partition | ||
| 841 | E_DISK_FREE_MEM EQU 10H ;AN000; Free disk space exists | ||
| 842 | ; | ||
| 843 | PUBLIC N_DISK_1_S2, N_DISK_2_S2,E_SPACE_NONE,E_SPACE_EDOS,E_SPACE_DISK ;AN000; | ||
| 844 | N_DISK_1_S2 DW 0 ;AN000; | ||
| 845 | N_DISK_2_S2 DW 0 ;AN000; | ||
| 846 | E_SPACE_NONE EQU 0 ;AN000; no free space in EDOS and DISK | ||
| 847 | E_SPACE_EDOS EQU 1 ;AN000; free space in EDOS | ||
| 848 | E_SPACE_DISK EQU 2 ;AN000; no EDOS but free space in disk | ||
| 849 | ; | ||
| 850 | PUBLIC F_PARTITION, E_PART_DEFAULT, E_PART_USER ;AN000; | ||
| 851 | F_PARTITION DW 1 ;AN000; partition size division option | ||
| 852 | E_PART_DEFAULT EQU 1 ;AN000; default partition sizes are to be used | ||
| 853 | E_PART_USER EQU 2 ;AN000; user will define partition sizes | ||
| 854 | ; | ||
| 855 | PUBLIC I_DESTINATION, E_ENTIRE_DISK, E_PATH_ONLY ;AN000;JW | ||
| 856 | I_DESTINATION DW 1 ;AN000; destination on c: disk option JW | ||
| 857 | E_ENTIRE_DISK EQU 1 ;AN000; replace files across entire disk JW | ||
| 858 | E_PATH_ONLY EQU 2 ;AN000; replace files in dos path only JW | ||
| 859 | ; | ||
| 860 | PUBLIC F_FORMAT, E_FORMAT_FAT, E_FORMAT_NO ;AN000; | ||
| 861 | F_FORMAT DW ? ;AN000; | ||
| 862 | E_FORMAT_FAT EQU 1 ;AN000; format partition with FAT | ||
| 863 | E_FORMAT_NO EQU 2 ;AN000; do not format partition | ||
| 864 | ; | ||
| 865 | PUBLIC N_DISK1_MODE, E_DISK1_INSTALL, E_DISK1_REPLACE ;AN000; | ||
| 866 | N_DISK1_MODE DW ? ;AN000; install mode for fixed disk | ||
| 867 | E_DISK1_INSTALL EQU 1 ;AN000; install DOS-no partitions | ||
| 868 | E_DISK1_REPLACE EQU 2 ;AN000; replace DOS-partitions exist | ||
| 869 | ; | ||
| 870 | PUBLIC DISK_1_TABLE,DISK_1_VAL_ITEM,DISK_1_START,M_DISK_1_ITEMS ;AN000; | ||
| 871 | DISK_1_TABLE DB M_DISK_1_ITEMS ;AN000; maximum no of items in table | ||
| 872 | DISK_1_VAL_ITEM DB 0 ;AN000; number of valid entries in table | ||
| 873 | DISK_1_START DB (100*TYPE DISK_STATUS) DUP (0) ;AN000; | ||
| 874 | M_DISK_1_ITEMS EQU ($ - DISK_1_START) / TYPE DISK_STATUS ;AN000; | ||
| 875 | ; | ||
| 876 | PUBLIC DISK_2_TABLE,DISK_2_VAL_ITEM,DISK_2_START,M_DISK_2_ITEMS ;AN000; | ||
| 877 | DISK_2_TABLE DB M_DISK_2_ITEMS ;AN000; maximum no of items in table | ||
| 878 | DISK_2_VAL_ITEM DB 0 ;AN000; number of valid entries in table | ||
| 879 | DISK_2_START DB (100*TYPE DISK_STATUS) DUP (0) ;AN000; | ||
| 880 | M_DISK_2_ITEMS EQU ($ - DISK_2_START) / TYPE DISK_STATUS ;AN000; | ||
| 881 | ; | ||
| 882 | PUBLIC N_NAME_PART,N_SIZE_PART,N_STATUS_PART,P_DRIVE_PART,N_TYPE_PART,N_LEVEL1_PART,N_LEVEL2_PART,N_LEVEL3_PART,N_LEVEL4_PART ;AC065;SEH add check for version number ;AN000; | ||
| 883 | N_NAME_PART DB 0 ;AN000; partition name | ||
| 884 | N_SIZE_PART DW 0 ;AN000; partition size | ||
| 885 | N_STATUS_PART DB 0 ;AN000; partition status | ||
| 886 | N_TYPE_PART DB 0 ;AN000; partition type | ||
| 887 | P_DRIVE_PART DB ' ' ;AN000; drive letter assigned | ||
| 888 | N_LEVEL1_PART DB 0 ;AN065; SEH version number (1st part) for DOS 4.00 1st part = blank | ||
| 889 | N_LEVEL2_PART DB 0 ;AN065; SEH version number (2nd part) for DOS 4.00 2nd part = 4 | ||
| 890 | N_LEVEL3_PART DB 0 ;AN065; SEH version number (3rd part) for DOS 4.00 3rd part = . | ||
| 891 | N_LEVEL4_PART DB 0 ;AN065; SEH version number (4th part) for DOS 4.00 4th part = 0 | ||
| 892 | ; | ||
| 893 | PUBLIC N_DISK_NUM,E_DISK_ROW,E_DISK_COL,E_DRIVE_ROW,E_DRIVE_COL ;AN000; | ||
| 894 | N_DISK_NUM DB ? ;AN000; holder for ascii disk number | ||
| 895 | E_DISK_ROW EQU 0 ;AN000; row for fixed disk number (0 based) | ||
| 896 | E_DISK_COL EQU 19 ;AN000; column for fixed disk number | ||
| 897 | E_DRIVE_ROW EQU 0 ;AN000; row for logical drive letter (0 based) | ||
| 898 | E_DRIVE_COL EQU 19 ;AN000; column for logical drive letter | ||
| 899 | ; | ||
| 900 | PUBLIC STACK_INDEX, SELECT_STACK, STACK_SIZE ;AN000; | ||
| 901 | STACK_INDEX DB 00H ;AN000; no. of entries in stack | ||
| 902 | SELECT_STACK DW 50 DUP(?) ;AN000; stack entries | ||
| 903 | STACK_SIZE EQU $ - SELECT_STACK ;AN000; size of SELECT stack | ||
| 904 | ; | ||
| 905 | PUBLIC N_DEST,E_DEST_DOS,E_DEST_SHELL ;AN000; | ||
| 906 | N_DEST DB ? ;AN000; | ||
| 907 | E_DEST_DOS EQU 1 ;AN000; | ||
| 908 | E_DEST_SHELL EQU 2 ;AN000; | ||
| 909 | ; | ||
| 910 | ; Variables which return information if a critical error occurs. | ||
| 911 | ; INT_24_ERROR returns the error code from the critical error routine | ||
| 912 | ; INT_24_FLAG is set if a critical error occurs. It is not enough | ||
| 913 | ; to check if INT_24_ERROR is non-zero, since a value of zero is a critical error. | ||
| 914 | PUBLIC INT_24_ERROR, INT_24_FLAG ;AN000; | ||
| 915 | INT_24_ERROR DW 0 ;AN000; | ||
| 916 | INT_24_FLAG DB 0 ;AN000; | ||
| 917 | ; | ||
| 918 | ; Area to save the old interrupt 23h vector for restoration when the program is done. | ||
| 919 | PUBLIC OLD_INT_23 ;AN074;SEH ctrl-break | ||
| 920 | OLD_INT_23 DD 0 ;AN074;SEH | ||
| 921 | ; Area to save the old interrupt 24h vector for restoration when the program is done. | ||
| 922 | PUBLIC OLD_INT_24 ;AN000; | ||
| 923 | OLD_INT_24 DD 0 ;AN000; | ||
| 924 | ; Area to save the old interrupt 2Fh vector for restoration when the program is done. | ||
| 925 | PUBLIC OLD_INT_2F ;AN000; | ||
| 926 | OLD_INT_2F DD 0 ;AN000; | ||
| 927 | ; | ||
| 928 | PUBLIC MEM_SIZE ;AN000; | ||
| 929 | MEM_SIZE DW 0 ;AN000;DT installed memory in machine | ||
| 930 | ; | ||
| 931 | PUBLIC FORMAT_WHICH, STARTUP, SHELL ;AN000; | ||
| 932 | FORMAT_WHICH DB ? ;AN111; indicator for which disk (720) to format JW | ||
| 933 | STARTUP EQU 0 ;AN111; format startup | ||
| 934 | SHELL EQU 1 ;AN111; format shell | ||
| 935 | ; | ||
| 936 | PUBLIC DISK_PANEL, SEARCH_FILE ;AN000;JW | ||
| 937 | DISK_PANEL DW ? ;AN000;JW Holds panel number for INSERT_DISK | ||
| 938 | SEARCH_FILE DW ? ;AN000;JW Holds offset of file to search for | ||
| 939 | |||
| 940 | PUBLIC SUB_ERROR ;AN000;JW Holds error code of sub process | ||
| 941 | SUB_ERROR DB ? ;AN000;JW | ||
| 942 | |||
| 943 | include msgdcl.inc | ||
| 944 | ; | ||
| 945 | DATA ENDS ;AN000; | ||
| 946 | END ;AN000; | ||
diff --git a/v4.0/src/SELECT/VARSTRUC.INC b/v4.0/src/SELECT/VARSTRUC.INC new file mode 100644 index 0000000..302fdb9 --- /dev/null +++ b/v4.0/src/SELECT/VARSTRUC.INC | |||
| @@ -0,0 +1,65 @@ | |||
| 1 | CTY_DEF STRUC ;AN000; | ||
| 2 | COUNTRY_CODE DW 0 ;AN000; Country Code | ||
| 3 | KEYBOARD_VALID DB 0 ;AN000; =0 Keyboard code is not valid | ||
| 4 | ; =1 Keyboard code is valid | ||
| 5 | KEYBOARD_CODE DB ' ' ;AN000; Keyboard Code | ||
| 6 | PRI_CODEPAGE DW 0 ;AN000; Primary Code Page | ||
| 7 | SEC_CODEPAGE DW 0 ;AN000; Secondary Code Page | ||
| 8 | NUM_DESIGNATES DW 0 ;AN000; number of designates | ||
| 9 | CPSW_STAT DW 0 ;AN000; code page switching recommendation for country | ||
| 10 | RESERVED_1 DW 0 ;AN000; reserved byte | ||
| 11 | CTY_DEF ENDS ;AN000; | ||
| 12 | |||
| 13 | KYB_DEF STRUC ;AN000; | ||
| 14 | KEYB_CODE DB ' ' ;AN000; Keyboard code | ||
| 15 | KEYB_ALT_VALID DB 0 ;AN000; =0 No alternate Keyboard code | ||
| 16 | ; =1 Alternate Keyboard code present | ||
| 17 | KYB_DEF ENDS ;AN000; | ||
| 18 | |||
| 19 | ALT_KYB_DEF STRUC ;AN000; | ||
| 20 | ALT_KYB DB ' ' ;AN000; keyboard codes which have alternate keyboards | ||
| 21 | ALT_KYB_PTR DW 0 ;AN000; pointer to list of alternate keyboards | ||
| 22 | ALT_KYB_IDENT DB 0 ;AN000; keyboard code identifier | ||
| 23 | ALT_KYB_DEF ENDS ;AN000; | ||
| 24 | |||
| 25 | FR_STRUC STRUC ;AN000; Alternate French Keyboard | ||
| 26 | FR_KYB DB ' ' ;AN000; | ||
| 27 | FR_STRUC ENDS ;AN000; | ||
| 28 | |||
| 29 | IT_STRUC STRUC ;AN000; Alternate Italian Keyboard | ||
| 30 | IT_KYB DB ' ' ;AN000; | ||
| 31 | IT_STRUC ENDS ;AN000; | ||
| 32 | |||
| 33 | UK_STRUC STRUC ;AN000; Alternate UK English Keyboard | ||
| 34 | UK_KYB DB ' ' ;AN000; | ||
| 35 | UK_STRUC ENDS ;AN000; | ||
| 36 | |||
| 37 | DISK_STATUS STRUC ;AN000; | ||
| 38 | N_PART_NAME DB 0 ;AN000; Partition name | ||
| 39 | N_PART_SIZE DW 0 ;AN000; size of above partition in MBytes | ||
| 40 | N_PART_STATUS DB 0 ;AN000; Partition status | ||
| 41 | P_PART_DRIVE DB ? ;AN000; drive letter assigned to the partition (ASCII) | ||
| 42 | N_PART_TYPE DB 0 ;AN000; | ||
| 43 | N_PART_LEVEL1 DB 0 ;AN065; SEH version number (1st part) for DOS 4.00 1st part = blank | ||
| 44 | N_PART_LEVEL2 DB 0 ;AN065; SEH version number (2nd part) for DOS 4.00 2nd part = 4 | ||
| 45 | N_PART_LEVEL3 DB 0 ;AN065; SEH version number (3rd part) for DOS 4.00 3rd part = . | ||
| 46 | N_PART_LEVEL4 DB 0 ;AN065; SEH version number (4th part) for DOS 4.00 4th part = 0 | ||
| 47 | DISK_STATUS ENDS ;AN000; | ||
| 48 | |||
| 49 | PRINTER_DEF STRUC ;AN000; | ||
| 50 | PRINTER_INDEX DW 0 ;AN000; index into SELECT.PRT | ||
| 51 | PRINTER_TYPE DB 0 ;AN000; printer type serial/parallel | ||
| 52 | PRINTER_DATA_VALID DB 0 ;AN000; | ||
| 53 | MODE_PARMS DW 0 ;AN000; | ||
| 54 | DB 40 DUP(?) ;AC000;JW | ||
| 55 | CODE_DRIVER DW 0 ;AN000; | ||
| 56 | DB 22 DUP(?) ;AN000; | ||
| 57 | CODE_PREPARE DW 0 ;AN000; | ||
| 58 | DB 12 DUP(?) ;AN000; | ||
| 59 | GRAPHICS_PARMS DW 0 ;AN000; | ||
| 60 | DB 20 DUP(?) ;AN000; | ||
| 61 | PORT_NUMBER DW 0 ;AN000; | ||
| 62 | REDIRECTION_PORT DW 0 ;AN000; | ||
| 63 | PRINTER_TAB_NUM DW 0 ;AN000; indicates 1st, 2nd, 3rd, etc. printer selected | ||
| 64 | PRINTER_DEF ENDS ;AN000; | ||
| 65 | |||
diff --git a/v4.0/src/SELECT/XCOPY.EQU b/v4.0/src/SELECT/XCOPY.EQU new file mode 100644 index 0000000..d3f932d --- /dev/null +++ b/v4.0/src/SELECT/XCOPY.EQU | |||
| @@ -0,0 +1,144 @@ | |||
| 1 | ; | ||
| 2 | ; | ||
| 3 | ;REVISION HISTORY | ||
| 4 | ; | ||
| 5 | ; A005 DCR0201 10/9/87 Incorperate new format for EXTENDED | ||
| 6 | ; ATTRIBUTES. | ||
| 7 | ; | ||
| 8 | ; | ||
| 9 | ;Equates used for flags | ||
| 10 | ; | ||
| 11 | ;*** MY_FLAG **** | ||
| 12 | find_first_flag equ 01h ;AN000;set MY_FLAG by "OR" | ||
| 13 | findfile_flag equ 02h ;AN000; | ||
| 14 | no_more_file equ 04h ;AN000; | ||
| 15 | single_copy_flag equ 08h ;AN000;single copy instead of multi copy | ||
| 16 | visit_parent_flag equ 10h ;AN000;visit parent node | ||
| 17 | found_flag equ 20h ;AN000;found flag - for find subdir | ||
| 18 | missing_link_flag equ 40h ;AN000; | ||
| 19 | is_source_flag equ 80h ;AN000;if set, dealing with source | ||
| 20 | reset_find_first equ 0FEh ;AN000;reset by AND | ||
| 21 | reset_findfile equ 0FDh ;AN000; | ||
| 22 | reset_no_more equ 0FBh ;AN000; | ||
| 23 | reset_visit_parent equ 0EFh ;AN000; | ||
| 24 | reset_found equ 0DFh ;AN000; | ||
| 25 | reset_missing_link equ 0BFh ;AN000; | ||
| 26 | reset_is_source equ 07Fh ;AN000; | ||
| 27 | |||
| 28 | ;*** FILE_FLAG *** | ||
| 29 | cont_flag equ 01h ;AN000; | ||
| 30 | eof_flag equ 02h ;AN000; | ||
| 31 | big_file_flag equ 04h ;AN000; | ||
| 32 | file_bigger_flag equ 08h ;AN000; | ||
| 33 | created_flag equ 10h ;AN000; | ||
| 34 | reset_cont equ 0FEh ;AN000; | ||
| 35 | reset_eof equ 0FDh ;AN000; | ||
| 36 | reset_big_file equ 0FBh ;AN000; | ||
| 37 | reset_file_bigger equ 0F7h ;AN000; | ||
| 38 | reset_created equ 0EFh ;AN000; | ||
| 39 | reset_readfile equ 0F0h ;AN000;reset FILE_FLAG for read a file | ||
| 40 | |||
| 41 | ;*** COPY_STATUS *** | ||
| 42 | open_error_flag equ 01h ;AN000; | ||
| 43 | read_error_flag equ 02h ;AN000; | ||
| 44 | create_error_flag equ 04h ;AN000; | ||
| 45 | write_error_flag equ 08h ;AN000; | ||
| 46 | mkdir_error_flag equ 10h ;AN000; | ||
| 47 | chdir_error_flag equ 20h ;AN000; | ||
| 48 | maybe_itself_flag equ 40h ;AN000;source, target starting drv, directory is same. | ||
| 49 | disk_full_flag equ 80h ;AN000; | ||
| 50 | reset_open_error equ 0FEh ;AN000; | ||
| 51 | reset_read_error equ 0FDh ;AN000; | ||
| 52 | reset_create_error equ 0FBh ;AN000; | ||
| 53 | reset_write_error equ 0F7h ;AN000; | ||
| 54 | reset_close_error equ 0EFh ;AN000; | ||
| 55 | reset_chdir_error equ 0DFh ;AN000; | ||
| 56 | |||
| 57 | |||
| 58 | ;*** ACTION_FLAG *** | ||
| 59 | |||
| 60 | reading_flag equ 01h ;AN000;display "Reading source files..." | ||
| 61 | reset_reading equ 0FEh ;AN000;do not display. | ||
| 62 | |||
| 63 | ;*** SYS_FLAG *** | ||
| 64 | |||
| 65 | one_disk_copy_flag equ 01h ;AN000; | ||
| 66 | default_drv_set_flag equ 02h ;AN000;default drive has been changed by this program | ||
| 67 | default_s_dir_flag equ 04h ;AN000;source current directory saved. | ||
| 68 | default_t_dir_flag equ 08h ;AN000;target current directory saved. | ||
| 69 | removalble_drv_flag equ 10h ;AN000; | ||
| 70 | sharing_source_flag equ 20h ;AN000;source shared | ||
| 71 | sharing_target_flag equ 40h ;AN000; | ||
| 72 | turn_verify_off_flag equ 80h ;AN000;turn the verify off when exit to dos. | ||
| 73 | reset_default_s_dir equ 0FBh ;AN000;reset default_s_dir_flag | ||
| 74 | |||
| 75 | ;*** OPTION_FLAG *** | ||
| 76 | |||
| 77 | slash_a equ 01h ;AN000;soft archieve ? | ||
| 78 | slash_d equ 02h ;AN000;date? | ||
| 79 | slash_e equ 04h ;AN000;create empty dir? | ||
| 80 | slash_m equ 08h ;AN000;hard archieve ? (turn off source archieve bit) | ||
| 81 | slash_p equ 10h ;AN000;prompt? | ||
| 82 | slash_s equ 20h ;AN000;walk the tree? | ||
| 83 | slash_v equ 40h ;AN000;verify on? | ||
| 84 | slash_w equ 80h ;AN000;show "Press any key to begin copying" msg) | ||
| 85 | reset_slash_a equ 0FEh ;AN000;turn off soft archieve | ||
| 86 | reset_slash_m equ 0F7h ;AN000;turn off hard archieve | ||
| 87 | |||
| 88 | ;*** PARM_FLAG *** | ||
| 89 | |||
| 90 | first_parm_flag equ 01h ;AN000;first parm entered in input parm | ||
| 91 | second_parm_flag equ 02h ;AN000;second parm entered. | ||
| 92 | end_of_parm_flag equ 04h ;AN000;end of parm reached | ||
| 93 | copy_onto_itself_flag equ 08h ;AN000;copy onto itself flag | ||
| 94 | cyclic_flag equ 10h ;AN000;cyclic copy flag | ||
| 95 | inv_time_flag equ 20h ;AN000;invalid time | ||
| 96 | inv_date_flag equ 40h ;AN000;invalid date | ||
| 97 | init_error_flag equ 80h ;AN000;critical initialization error. Should abort. | ||
| 98 | |||
| 99 | ;*** PARM1_FLAG *** | ||
| 100 | |||
| 101 | inv_s_path_flag equ 01h ;AN000;invalid source path (path not found) | ||
| 102 | inv_t_path_flag equ 02h ;AN000;invalid target path | ||
| 103 | s_file_flag equ 04h ;AN000;source filename entered | ||
| 104 | t_file_flag equ 08h ;AN000;target filename entered | ||
| 105 | |||
| 106 | ;general equates | ||
| 107 | |||
| 108 | COLON EQU ":" ;AN000;FOLLOWS DRV LTR IN FULL FILESPEC | ||
| 109 | NUL EQU 0 ;AN000;DELIMITER FOR ASCIIZ STRINGS | ||
| 110 | SPACE EQU " " ;AN000;TEST FOR DBCS IN 'F D ' MESSAGE | ||
| 111 | PARAGRAPH EQU 4 ;AN005;TO CONVERT TO/FROM BYTES/PARA. | ||
| 112 | PARA_BOUND EQU 15 ;AN005;BYTES TO ADD FOR PARA. CALCULAT | ||
| 113 | FIXD_HD_SIZ EQU 2 ;AN005;PARA COUNT MINIMUM FOR FILE HDR | ||
| 114 | SYSPRM_EX_MANY EQU 1 ;AN000;TOO MANY OPERANDS ERR FROM PARSE | ||
| 115 | SYSPRM_MISSING_OP EQU 2 ;AN000;MISSING OPERANDS ERR FROM PARSE | ||
| 116 | SYSPRM_DUP_SW EQU 3 ;AN004;INVALID SWITCH R-CODE FROM PARSE | ||
| 117 | F_APPEND EQU 8000H ;AN000; /X status bit in Append | ||
| 118 | NOT_X_APPEND EQU 0 ;AN000; /X NOT ACTIVE | ||
| 119 | ACT_APPEND EQU 0 ;AN000;ACTIVE STATUS OF APPEND | ||
| 120 | D_V_APPEND EQU 0FFH ;AN000;DOS VERSION OF APPEND | ||
| 121 | PSPFCB1_DRV EQU 5Ch ;AN000; | ||
| 122 | PSPFCB2_DRV EQU 6Ch ;AN000; | ||
| 123 | PSPDTA_PARMLEN EQU 80h ;AN000; | ||
| 124 | PSPDTA_PARRSTR EQU 81h ;AN000; | ||
| 125 | BASE_OF_ALPHA_DRV EQU 64 ;AN000;1 => A, 2 => B for drive letter | ||
| 126 | BASE_UPPER_CASE EQU 11011111B ;AN000;"AND"ed will make it to upper case chr | ||
| 127 | ALPHA_A EQU 'A' ;AN000; | ||
| 128 | ;ALPHA_D EQU 'D' ;moved to XCPYINT.MSG file for translation. | ||
| 129 | ALPHA_E EQU 'E' ;AN000; | ||
| 130 | ;ALPHA_F EQU 'F' ;moved to XCPYINT.MSG file for translation. | ||
| 131 | ALPHA_M EQU 'M' ;AN000; | ||
| 132 | ALPHA_S EQU 'S' ;AN000; | ||
| 133 | ALPHA_P EQU 'P' ;AN000; | ||
| 134 | ALPHA_T EQU 'T' ;AN000; | ||
| 135 | ALPHA_V EQU 'V' ;AN000; | ||
| 136 | ALPHA_W EQU 'W' ;AN000; | ||
| 137 | ALPHA_Z EQU 'Z' ;AN000; | ||
| 138 | A_dot EQU '.' ;AN000; | ||
| 139 | path_delim equ '\' ;AN000; | ||
| 140 | drv_delim equ ':' ;AN000; | ||
| 141 | ;********************************************************************** | ||
| 142 | ;DOS_LEVEL EQU 0314h ;VERSION 3.20 | ||
| 143 | ;*************************END OF XCOPY.EQU **************************** | ||
| 144 | \ No newline at end of file | ||
diff --git a/v4.0/src/SELECT/XMAINMSG.EQU b/v4.0/src/SELECT/XMAINMSG.EQU new file mode 100644 index 0000000..b16913b --- /dev/null +++ b/v4.0/src/SELECT/XMAINMSG.EQU | |||
| @@ -0,0 +1,44 @@ | |||
| 1 | ;***************************************************************************** | ||
| 2 | ; Message equates | ||
| 3 | ;***************************************************************************** | ||
| 4 | CR equ 13 ;AN000; | ||
| 5 | LF equ 10 ;AN000; | ||
| 6 | BELL equ 7 ;AN000; | ||
| 7 | END_OF_MESSAGE equ 0 ;AN000; | ||
| 8 | ALPHA_D equ 'D' ;AN000; | ||
| 9 | ALPHA_F equ 'F' ;AN000; | ||
| 10 | PARM_SUBST_ONE EQU 01H ;AN000;MSG PARAMETER SUBSTITUTION = 1 | ||
| 11 | MSG_SER_CLASS EQU 00H ;AN000;MESSAGE SERVICE CLASS (RESERVED) | ||
| 12 | EXT_ERR_CLASS EQU 01H ;AN000;DOS EXTENDED ERROR CLASS | ||
| 13 | PARSE_ERR_CLASS EQU 02H ;AN000;PARSE ERROR CLASS | ||
| 14 | UTILITY_MSG_CLASS EQU 0FFH ;AN000;UTILITY MESSAGE CLASS | ||
| 15 | NO_INPUT EQU 00H ;AN000;NO INPUT CHARACTERS | ||
| 16 | DOS_KEYB_INP EQU 01H ;AN000;KEYBOARD INPUT EXPECTED | ||
| 17 | ;****************************************************************************** | ||
| 18 | ; XCOPY (MAIN) messages | ||
| 19 | ;***************************************************************************** | ||
| 20 | ; ERROR MESSAGES DEFINITION | ||
| 21 | ; | ||
| 22 | MSG_ACCESS_DENIED EQU 13 ;AN000; | ||
| 23 | MSG_TOO_MANY_OPEN EQU 14 ;AN000; | ||
| 24 | MSG_GENERAL_FAIL EQU 15 ;AN000; | ||
| 25 | MSG_SHARING_VIOL EQU 16 ;AN000; | ||
| 26 | MSG_LOCK_VIOL EQU 17 ;AN000; | ||
| 27 | MSG_PATH_NOT EQU 18 ;AN000; | ||
| 28 | MSG_DISK_FULL EQU 19 ;AN000; | ||
| 29 | MSG_COPY_ITSELF EQU 20 ;AN000; | ||
| 30 | MSG_UNABLE_CREATE EQU 10 ;AN000; | ||
| 31 | MSG_RES_T_NAME EQU 22 ;AN000; | ||
| 32 | MSG_FILE_NOT_ERR EQU 23 ;AN000; | ||
| 33 | MSG_FILE_CREATE_ERR EQU 24 ;AN000; | ||
| 34 | MSG_READING_SOURCE EQU 25 ;AN000; | ||
| 35 | MSG_CR_LF_STR EQU 26 ;AN000; | ||
| 36 | MSG_FILES_COPIED EQU 27 ;AN000; | ||
| 37 | MSG_FILE_NOT_FOUND EQU 28 ;AN000; | ||
| 38 | S_PATH_FILE0 EQU 30 ;AN000; | ||
| 39 | S_PATH_FILE1 EQU 31 ;AN000; | ||
| 40 | DISPLAY_S_PATH EQU 32 ;AN000; | ||
| 41 | P_S_PATH_FILE0 EQU 33 ;AN000; | ||
| 42 | P_S_PATH_FILE1 EQU 34 ;AN000; | ||
| 43 | ;******************** END OF XCPYMAIN.MSG ************************************** | ||
| 44 | \ No newline at end of file | ||