diff options
| author | 2024-04-25 21:24:10 +0100 | |
|---|---|---|
| committer | 2024-04-25 22:32:27 +0000 | |
| commit | 2d04cacc5322951f187bb17e017c12920ac8ebe2 (patch) | |
| tree | 80ee017efa878dfd5344b44249e6a241f2a7f6e2 /v4.0/src/SELECT/SERVICES.ASM | |
| parent | Merge pull request #430 from jpbaltazar/typoptbr (diff) | |
| download | ms-dos-main.tar.gz ms-dos-main.tar.xz ms-dos-main.zip | |
Diffstat (limited to 'v4.0/src/SELECT/SERVICES.ASM')
| -rw-r--r-- | v4.0/src/SELECT/SERVICES.ASM | 899 |
1 files changed, 899 insertions, 0 deletions
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; | ||