1 2 ; LST OFF 3 ORG $8300 4 5 ******************************** 6 * * 7 * ARTSCI70.OBJ0 * 8 * for Magic Window II.3 * 9 * (c)1982 by Artsci Inc. * 10 * * 11 * Merlin-8 Source by Deckard * 12 * * 13 ******************************** 14 15 *------------------------------- 16 * Zero page 17 *------------------------------- 18 19 WNDLFT EQU $20 ; window: left margin 20 WNDWDTH EQU $21 ; window: width 21 WNDTOP EQU $22 ; window: top margin 22 WNDBTM EQU $23 ; window: bottom margin 23 CH EQU $24 ; horizontal position of the cursor 24 CV EQU $25 ; vertical position of the cursor 25 KEY_BUFF_PTR EQU $28 ; keyboard buffer pointer 26 INVFLG EQU $32 ; bit 7 [1=normal, 0=inverse] 27 28 CSWL EQU $36 ; low output 29 CSWH EQU $37 ; high 30 KSWL EQU $38 ; low input 31 KSWH EQU $39 ; high 32 33 * Zero page: drawing a character on the screen 34 * 1 character=8 bytes (8 lines of pixels) 35 36 MASK_AND EQU $C0 ; mask for AND 37 MASK_EOR EQU $C1 ; mask for EOR 38 SV_MK_BYTE_B EQU $C2 ; save mask byte B 39 40 ; screen pointers used to draw a character 41 CHAR_LINE0 EQU $D0 ; +$D1: addr of the 1st byte of the character 42 CHAR_LINE1 EQU $D2 43 CHAR_LINE2 EQU $D4 44 CHAR_LINE3 EQU $D6 45 CHAR_LINE4 EQU $D8 46 CHAR_LINE5 EQU $DA 47 CHAR_LINE6 EQU $DC 48 CHAR_LINE7 EQU $DE ; +$DF: addr of the last byte of the character 49 50 ; other screen pointers used to draw a character 51 ; (additionnal routines) 52 CHAR2_LINE0 EQU $D2 ; +$D3: addr of the 1st byte of the character 53 CHAR2_LINE1 EQU $D4 54 CHAR2_LINE2 EQU $D6 55 CHAR2_LINE3 EQU $D8 56 CHAR2_LINE4 EQU $DA 57 CHAR2_LINE5 EQU $DC 58 CHAR2_LINE6 EQU $DE 59 CHAR2_LINE7 EQU $D0 ; +$D1: addr of the last byte of the character 60 61 ; work screen pointer (used with CHAR2_*) 62 WORK_LINE0 EQU $C2 ; +$C3: addr of the 1st byte of the character 63 WORK_LINE1 EQU $C4 64 WORK_LINE2 EQU $C6 65 WORK_LINE3 EQU $C8 66 WORK_LINE4 EQU $CA 67 WORK_LINE5 EQU $CC 68 WORK_LINE6 EQU $CE 69 WORK_LINE7 EQU $C0 ; +$C1: addr of the last byte of the character 70 71 72 *------------------------------- 73 * Ram 74 *------------------------------- 75 76 SCREEN EQU $2000 ; to $3FFF : HGR page 77 LC_VIDEO EQU $0AC2 ; for Magic Window II: Lower case video flag 78 79 *------------------------------- 80 * ROM 81 *------------------------------- 82 83 KEY EQU $C000 84 STROBE EQU $C010 85 TXTCLR EQU $C050 86 TXTSET EQU $C051 87 MIXCLR EQU $C052 88 LOWSCR EQU $C054 89 HIRES EQU $C057 90 COUT1 EQU $FDF0 91 KNOWN_RTS EQU $FF58 92 93 *------------------------------- 94 * Macros 95 *------------------------------- 96 97 * Define AND and EOR masks 98 99 SET_MASKS MAC 100 STA MASK_AND ; for AND 101 EOR #$7F ; inverse all useful bits 102 EOR INV_NORM ; inverse or normal 103 STA MASK_EOR ; for EOR 104 <<< 105 106 * For lines 0 and 7 107 108 MASK_LINEZ MAC 109 LDA MASK_EOR 110 EOR (]1),Y 111 AND MASK_AND 112 EOR (]1),Y 113 STA (]1),Y 114 <<< 115 116 * For lines 1 to 6 117 118 MASK_LINE MAC 119 LDA ]1,X 120 EOR INV_NORM 121 EOR (]2),Y 122 AND MASK_AND 123 EOR (]2),Y 124 STA (]2),Y 125 <<< 126 127 ******************************** 128 8300: 4C 0A 83 129 ARTSCI70 JMP DO_INIT 130 131 132 *------------------------------- 133 * Datas 134 *------------------------------- 135 8303: 46 136 HEX 46 ; driver id? (Not used by the driver itself) 8304: 80 137 HEX 80 ; driver id? (Not used by the driver itself) 138 8305: A0 139 SAVE_ACC ASC " " ; backup of acc reg 8306: A0 140 SAVE_X HEX A0 ; backup of X reg 8307: B5 141 SAVE_Y HEX B5 ; backup of Y reg 8308: A0 142 INV_NORM HEX A0 ; $00=normal, $7F=inverse 8309: 80 143 CV_SAVE HEX 80 ; backup of current Y position 144 145 146 *------------------------------- 147 * Inits 148 *------------------------------- 149 830A: 8D 05 83 150 DO_INIT STA SAVE_ACC ; save registers 830D: 8E 06 83 151 STX SAVE_X 8310: 8C 07 83 152 STY SAVE_Y 153 154 * Screen definitions 155 8313: A9 46 156 LDA #70 ; 70 columns 8315: 85 21 157 STA WNDWDTH 8317: A9 18 158 LDA #24 ; 24 lines 8319: 85 23 159 STA WNDBTM 831B: A9 00 160 LDA #0 ; left and top margin 831D: 85 24 161 STA CH 831F: 85 25 162 STA CV 8321: 85 20 163 STA WNDLFT 8323: 85 22 164 STA WNDTOP 165 166 * Clear HGR screen ($2000-$3FFF) 167 8325: A8 168 TAY ; Y=0 8326: A2 20 169 LDX #$20 ; HGR mode and number of pages 8328: 8E 2D 83 170 STX H832B+2 171 172 ; acc=0 832B: 99 00 20 173 H832B STA SCREEN,Y 832E: C8 174 INY 832F: D0 FA 175 BNE H832B 176 8331: EE 2D 83 177 INC H832B+2 ; high+1 8334: CA 178 DEX 8335: D0 F4 179 BNE H832B ; continue until end of HGR page 180 181 * HGR mode and set vectors 182 8337: 20 3A 84 183 JSR SET_SCRN_PTR ; clear keyboard buffer and prepare 184 ; CHAR_LINE0 to CHAR_LINE7 (screen pointers) 185 833A: 8D 57 C0 186 STA HIRES ; HGR full screen 833D: 8D 52 C0 187 STA MIXCLR 8340: 8D 54 C0 188 STA LOWSCR 8343: 8D 50 C0 189 STA TXTCLR 190 8346: A9 66 191 LDA #OUT_70 834C: 85 37 194 STA CSWH 834E: A9 B9 195 LDA #IN_70 8354: 85 39 198 STA KSWH 199 8356: 20 C8 84 200 JSR SET_NORM ; mode=normal 8359: 38 201 SEC ; lower case = "Y" for MW II 835A: 6E C2 0A 202 ROR LC_VIDEO 203 835D: AD 05 83 204 H835D LDA SAVE_ACC ; restore registers 8360: AE 06 83 205 LDX SAVE_X 8363: AC 07 83 206 LDY SAVE_Y 207 208 209 *------------------------------- 210 * Character out 211 *------------------------------- 212 8366: 8D 05 83 213 OUT_70 STA SAVE_ACC ; save registers 8369: 8E 06 83 214 STX SAVE_X 836C: 8C 07 83 215 STY SAVE_Y 216 836F: 29 7F 217 AND #%01111111 ; acc[$00..$7F] 218 8371: A2 00 219 LDX #0 ; no eor 8373: 24 32 220 BIT INVFLG ; normal mode? 8375: 30 02 221 BMI H8379 ; yes 222 8377: A2 7F 223 LDX #$7F ; eor for inverse mode 224 8379: 8E 08 83 225 H8379 STX INV_NORM 837C: A6 25 226 LDX CV ; Y position changed? 837E: EC 09 83 227 CPX CV_SAVE 8381: F0 05 228 BEQ H8388 ; no, same place 229 8383: 48 230 PHA 8384: 20 3A 84 231 JSR SET_SCRN_PTR ; new screen pointers and init txt echo 8387: 68 232 PLA 233 234 ; test acc's content 8388: 2C 58 FF 235 H8388 BIT KNOWN_RTS ; RTS=$60: #%011000000 838B: D0 06 236 BNE H8393 ; not a control key 237 838D: 20 AF 83 238 JSR DO_SPEC_KEYS ; process special key if required 8390: 4C A5 83 239 JMP REST_REG ; don't display another thing 240 241 * Display the character on screen 242 8393: A4 24 243 H8393 LDY CH ; save it to keyboard buffer (txt echo) 8395: 91 28 244 STA (KEY_BUFF_PTR),Y 8397: 20 42 87 245 JSR DSP_CHAR ; display it 839A: E6 24 246 INC CH ; next X position for cursor 839C: A5 24 247 LDA CH 839E: C5 21 248 CMP WNDWDTH ; line overflow? 83A0: 90 03 249 BCC REST_REG ; no 250 83A2: 20 96 84 251 JSR NEXT_LINE ; next line or scroll up 252 253 254 *------------------------------- 255 * Restore registers 256 *------------------------------- 257 83A5: AC 07 83 258 REST_REG LDY SAVE_Y ; restore registers 83A8: AE 06 83 259 LDX SAVE_X 83AB: AD 05 83 260 LDA SAVE_ACC 83AE: 60 261 RTS 262 263 264 *------------------------------- 265 * Process a special key (CTRL) 266 *------------------------------- 267 83AF: A2 08 268 DO_SPEC_KEYS LDX #8 83B1: DD C7 83 269 H83B1 CMP SPECIAL_KEYS,X ; special key? 83B4: F0 05 270 BEQ H83BB yes 271 83B6: CA 272 DEX ; next special key to test 83B7: 10 F8 273 BPL H83B1 ; not finished 274 83B9: 30 0B 275 BMI H83C6 ; no special key: end 276 83BB: 8A 277 H83BB TXA ; *2 to get addr 83BC: 0A 278 ASL 83BD: AA 279 TAX 83BE: BD D1 83 280 LDA SPEC_KEYS_SUB+1,X 83C1: 48 281 PHA 83C2: BD D0 83 282 LDA SPEC_KEYS_SUB,X 83C5: 48 283 PHA 284 ; exec corresponding sub-routine (unstack) 83C6: 60 285 H83C6 RTS 286 287 288 *------------------------------- 289 * Special keys 290 *------------------------------- 291 83C7: 0A 292 SPECIAL_KEYS HEX 0A ; ctrl-J / down arrow 83C8: 0B 293 HEX 0B ; ctrl-K / up arrow 83C9: 0C 294 HEX 0C ; ctrl-L 83CA: 0D 295 HEX 0D ; ctrl-M / return 83CB: 15 296 HEX 15 ; ctrl-U (/ right arrow depending a2 version or 297 ; emulator) 83CC: 19 298 HEX 19 ; ctrl-Y 83CD: 1D 299 HEX 1D ; ctrl-] 83CE: 07 300 HEX 07 ; ctrl-G 83CF: 08 301 HEX 08 ; ctrl-H / left arrow 302 303 304 *------------------------------- 305 * Routines for special keys 306 *------------------------------- 307 83D0: 99 84 308 SPEC_KEYS_SUB DA DOWN-1 ; cursor on next line 83D2: 66 88 309 DA CLREOP-1 ; clear until end of page (CLREOP) 83D4: 9E 88 310 DA CLEAR_SCREEN-1 ; clear screen 83D6: 95 84 311 DA NEXT_LINE-1 ; return 83D8: B1 84 312 DA OUT_40-1 ; return to normal txt screen 83DA: A8 84 313 DA CURSOR_0_0-1 ; cursor position 0,0 83DC: 36 88 314 DA CLREOL-1 ; clear until end of line (CLREOL) 83DE: DC FB 315 DA $FBDD-1 ; bell 83E0: 0F FC 316 DA $FC10-1 ; cursor on previous character 317 318 319 *------------------------------- 320 * HGR addresses 321 *------------------------------- 322 323 * Low address for the 24 lines 324 * (first byte of the character on the screen) 325 83E2: 00 80 00 326 HGR_DATAL HEX 0080008000800080 83E5: 80 00 80 00 80 83EA: 28 A8 28 327 HEX 28A828A828A828A8 83ED: A8 28 A8 28 A8 83F2: 50 D0 50 328 HEX 50D050D050D050D0 83F5: D0 50 D0 50 D0 329 330 * High address for the 64 first lines / 192 331 * (same high addr for the others 128 lines) 332 * Use AND#$3F to reduce to this case. 333 83FA: 20 24 28 334 HGR_DATAH HEX 2024282C3034383C 83FD: 2C 30 34 38 3C 8402: 20 24 28 335 HEX 2024282C3034383C 8405: 2C 30 34 38 3C 840A: 21 25 29 336 HEX 2125292D3135393D 840D: 2D 31 35 39 3D 8412: 21 25 29 337 HEX 2125292D3135393D 8415: 2D 31 35 39 3D 841A: 22 26 2A 338 HEX 22262A2E32363A3E 841D: 2E 32 36 3A 3E 8422: 22 26 2A 339 HEX 22262A2E32363A3E 8425: 2E 32 36 3A 3E 842A: 23 27 2B 340 HEX 23272B2F33373B3F 842D: 2F 33 37 3B 3F 8432: 23 27 2B 341 HEX 23272B2F33373B3F 8435: 2F 33 37 3B 3F 342 343 344 *------------------------------- 345 * Set screen pointers and init 346 * the keyboard buffer used to 347 * store all entries (required 348 * to display content of previous 349 * character if left arrow is 350 * pressed x times) 351 *------------------------------- 352 843A: A0 45 353 SET_SCRN_PTR LDY #69 ; fill the keyboard buffer with 70 spaces 843C: A9 A0 354 LDA #" " ; =fill 1 line 843E: 99 F0 88 355 H843E STA KEY_BUFF,Y 8441: 88 356 DEY 8442: 10 FA 357 BPL H843E 358 8444: A4 25 359 LDY CV 8446: 8C 09 83 360 STY CV_SAVE 361 8449: A9 F0 362 LDA #KEY_BUFF 844F: 85 29 365 STA KEY_BUFF_PTR+1 366 367 * Prepare the addresses for the 8 bytes 368 8451: B9 E2 83 369 LDA HGR_DATAL,Y ; low 8454: 85 D2 370 STA CHAR_LINE1 8456: 85 D4 371 STA CHAR_LINE2 8458: 85 D6 372 STA CHAR_LINE3 845A: 85 D8 373 STA CHAR_LINE4 845C: 85 DA 374 STA CHAR_LINE5 845E: 85 DC 375 STA CHAR_LINE6 8460: 85 DE 376 STA CHAR_LINE7 8462: 85 D0 377 STA CHAR_LINE0 378 8464: A5 25 379 LDA CV ; [0..23] 8466: 0A 380 ASL ; *8 = [0..184] 8467: 0A 381 ASL 8468: 0A 382 ASL 8469: 29 3F 383 AND #%00111111 ; [0..56] 846B: A8 384 TAY 846C: B9 FA 83 385 LDA HGR_DATAH,Y ; high 846F: 85 D1 386 STA CHAR_LINE0+1 8471: C8 387 INY 8472: B9 FA 83 388 LDA HGR_DATAH,Y 8475: 85 D3 389 STA CHAR_LINE1+1 8477: B9 FB 83 390 LDA HGR_DATAH+1,Y 847A: 85 D5 391 STA CHAR_LINE2+1 847C: B9 FC 83 392 LDA HGR_DATAH+2,Y 847F: 85 D7 393 STA CHAR_LINE3+1 8481: B9 FD 83 394 LDA HGR_DATAH+3,Y 8484: 85 D9 395 STA CHAR_LINE4+1 8486: B9 FE 83 396 LDA HGR_DATAH+4,Y 8489: 85 DB 397 STA CHAR_LINE5+1 848B: B9 FF 83 398 LDA HGR_DATAH+5,Y 848E: 85 DD 399 STA CHAR_LINE6+1 8490: B9 00 84 400 LDA HGR_DATAH+6,Y 8493: 85 DF 401 STA CHAR_LINE7+1 8495: 60 402 RTS 403 404 405 *------------------------------- 406 * Go to next line or scroll up 407 * (CTRL-M) 408 *------------------------------- 409 8496: A9 00 410 NEXT_LINE LDA #0 ; begin of line 8498: 85 24 411 STA CH 412 413 * (CTRL-J) 414 849A: A4 25 415 DOWN LDY CV ; next line 849C: C8 416 INY 849D: C4 23 417 CPY WNDBTM ; out of screen? 849F: B0 05 418 BCS GO_SCROLL_UP ; yes: scroll up 419 84A1: 84 25 420 STY CV ; apply next line 84A3: 4C 3A 84 421 JMP SET_SCRN_PTR ; new pointer 422 84A6: 4C 80 88 423 GO_SCROLL_UP JMP SCROLL_UP 424 425 426 *------------------------------- 427 * Cursor at position 0,0 428 * (CTRL-Y) 429 *------------------------------- 430 84A9: A9 00 431 CURSOR_0_0 LDA #0 84AB: 85 24 432 STA CH 84AD: 85 25 433 STA CV 84AF: 4C 3A 84 434 JMP SET_SCRN_PTR ; new pointer 435 436 437 *------------------------------- 438 * Return to 40c TXT screen 439 * (CTRL-U) 440 *------------------------------- 441 84B2: A9 F0 442 OUT_40 LDA #COUT1 84B8: 85 37 445 STA CSWH 84BA: A9 28 446 LDA #40 ; normal width 84BC: 85 21 447 STA WNDWDTH 84BE: 8D 51 C0 448 STA TXTSET 84C1: 60 449 RTS 450 451 452 *------------------------------- 453 * Set INVERSE mode 454 *------------------------------- 455 84C2: A9 7F 456 SET_INV LDA #$7F 84C4: 8D 08 83 457 STA INV_NORM 84C7: 60 458 RTS 459 460 461 *------------------------------- 462 * Set NORMAL mode 463 *------------------------------- 464 84C8: A9 00 465 SET_NORM LDA #0 84CA: 8D 08 83 466 STA INV_NORM 84CD: 60 467 RTS 468 469 470 *------------------------------- 471 * Mask (bytes A and B) for the 472 * 7 cases 473 *------------------------------- 474 84CE: 0F 70 1E 475 MASK_BYTE_A HEX 0F701E603C4078 84D1: 60 3C 40 78 84D5: 00 01 00 476 MASK_BYTE_B HEX 00010003000700 84D8: 03 00 07 00 477 478 479 *------------------------------- 480 * 1st column [0..39] for every X 481 * position of the char [0..69] 482 *------------------------------- 483 84DC: 00 00 01 484 FIRST_COL HEX 00000101020203 84DF: 01 02 02 03 84E3: 04 04 05 485 HEX 04040505060607 84E6: 05 06 06 07 84EA: 08 08 09 486 HEX 080809090A0A0B 84ED: 09 0A 0A 0B 84F1: 0C 0C 0D 487 HEX 0C0C0D0D0E0E0F 84F4: 0D 0E 0E 0F 84F8: 10 10 11 488 HEX 10101111121213 84FB: 11 12 12 13 84FF: 14 14 15 489 HEX 14141515161617 8502: 15 16 16 17 8506: 18 18 19 490 HEX 181819191A1A1B 8509: 19 1A 1A 1B 850D: 1C 1C 1D 491 HEX 1C1C1D1D1E1E1F 8510: 1D 1E 1E 1F 8514: 20 20 21 492 HEX 20202121222223 8517: 21 22 22 23 851B: 24 24 25 493 HEX 24242525262627 851E: 25 26 26 27 494 495 496 *------------------------------- 497 * Case for every X pos [0..69] 498 *------------------------------- 499 8522: 00 01 02 500 CASE HEX 00010203040506 8525: 03 04 05 06 8529: 00 01 02 501 HEX 00010203040506 852C: 03 04 05 06 8530: 00 01 02 502 HEX 00010203040506 8533: 03 04 05 06 8537: 00 01 02 503 HEX 00010203040506 853A: 03 04 05 06 853E: 00 01 02 504 HEX 00010203040506 8541: 03 04 05 06 8545: 00 01 02 505 HEX 00010203040506 8548: 03 04 05 06 854C: 00 01 02 506 HEX 00010203040506 854F: 03 04 05 06 8553: 00 01 02 507 HEX 00010203040506 8556: 03 04 05 06 855A: 00 01 02 508 HEX 00010203040506 855D: 03 04 05 06 8561: 00 01 02 509 HEX 00010203040506 8564: 03 04 05 06 510 511 512 *------------------------------- 513 * Case 0 514 *------------------------------- 515 516 * In : X = character 517 * Y = first col 518 * acc = mask byte 0 519 520 CASE_0 SET_MASKS 8568: 85 C0 520 STA MASK_AND ; for AND 856A: 49 7F 520 EOR #$7F ; inverse all useful bits 856C: 4D 08 83 520 EOR INV_NORM ; inverse or normal 856F: 85 C1 520 STA MASK_EOR ; for EOR 520 <<< 521 522 MASK_LINEZ CHAR_LINE7 8571: A5 C1 522 LDA MASK_EOR 8573: 51 DE 522 EOR (CHAR_LINE7),Y 8575: 25 C0 522 AND MASK_AND 8577: 51 DE 522 EOR (CHAR_LINE7),Y 8579: 91 DE 522 STA (CHAR_LINE7),Y 522 <<< 523 MASK_LINEZ CHAR_LINE0 857B: A5 C1 523 LDA MASK_EOR 857D: 51 D0 523 EOR (CHAR_LINE0),Y 857F: 25 C0 523 AND MASK_AND 8581: 51 D0 523 EOR (CHAR_LINE0),Y 8583: 91 D0 523 STA (CHAR_LINE0),Y 523 <<< 524 525 MASK_LINE FONT_BYT0L1;CHAR_LINE1 8585: BD 00 8A 525 LDA FONT_BYT0L1,X 8588: 4D 08 83 525 EOR INV_NORM 858B: 51 D2 525 EOR (CHAR_LINE1),Y 858D: 25 C0 525 AND MASK_AND 858F: 51 D2 525 EOR (CHAR_LINE1),Y 8591: 91 D2 525 STA (CHAR_LINE1),Y 525 <<< 526 MASK_LINE FONT_BYT0L2;CHAR_LINE2 8593: BD 00 8C 526 LDA FONT_BYT0L2,X 8596: 4D 08 83 526 EOR INV_NORM 8599: 51 D4 526 EOR (CHAR_LINE2),Y 859B: 25 C0 526 AND MASK_AND 859D: 51 D4 526 EOR (CHAR_LINE2),Y 859F: 91 D4 526 STA (CHAR_LINE2),Y 526 <<< 527 MASK_LINE FONT_BYT0L3;CHAR_LINE3 85A1: BD 00 8E 527 LDA FONT_BYT0L3,X 85A4: 4D 08 83 527 EOR INV_NORM 85A7: 51 D6 527 EOR (CHAR_LINE3),Y 85A9: 25 C0 527 AND MASK_AND 85AB: 51 D6 527 EOR (CHAR_LINE3),Y 85AD: 91 D6 527 STA (CHAR_LINE3),Y 527 <<< 528 MASK_LINE FONT_BYT0L4;CHAR_LINE4 85AF: BD 00 90 528 LDA FONT_BYT0L4,X 85B2: 4D 08 83 528 EOR INV_NORM 85B5: 51 D8 528 EOR (CHAR_LINE4),Y 85B7: 25 C0 528 AND MASK_AND 85B9: 51 D8 528 EOR (CHAR_LINE4),Y 85BB: 91 D8 528 STA (CHAR_LINE4),Y 528 <<< 529 MASK_LINE FONT_BYT0L5;CHAR_LINE5 85BD: BD 00 92 529 LDA FONT_BYT0L5,X 85C0: 4D 08 83 529 EOR INV_NORM 85C3: 51 DA 529 EOR (CHAR_LINE5),Y 85C5: 25 C0 529 AND MASK_AND 85C7: 51 DA 529 EOR (CHAR_LINE5),Y 85C9: 91 DA 529 STA (CHAR_LINE5),Y 529 <<< 530 MASK_LINE FONT_BYT0L6;CHAR_LINE6 85CB: BD 00 94 530 LDA FONT_BYT0L6,X 85CE: 4D 08 83 530 EOR INV_NORM 85D1: 51 DC 530 EOR (CHAR_LINE6),Y 85D3: 25 C0 530 AND MASK_AND 85D5: 51 DC 530 EOR (CHAR_LINE6),Y 85D7: 91 DC 530 STA (CHAR_LINE6),Y 530 <<< 531 85D9: 60 532 RTS 533 534 535 *------------------------------- 536 * Case 1 537 *------------------------------- 538 539 * In : X = character 540 * Y = first col 541 * acc = mask byte 0 542 85DA: 20 68 85 543 CASE_1 JSR CASE_0 544 85DD: C8 545 INY 85DE: A5 C2 546 LDA SV_MK_BYTE_B ; mask byte 1 547 548 549 *------------------------------- 550 * Case 2 551 *------------------------------- 552 553 * In : X = character 554 * Y = first col 555 * acc = mask byte 1 556 557 CASE_2 SET_MASKS 85E0: 85 C0 557 STA MASK_AND ; for AND 85E2: 49 7F 557 EOR #$7F ; inverse all useful bits 85E4: 4D 08 83 557 EOR INV_NORM ; inverse or normal 85E7: 85 C1 557 STA MASK_EOR ; for EOR 557 <<< 558 559 MASK_LINEZ CHAR_LINE7 85E9: A5 C1 559 LDA MASK_EOR 85EB: 51 DE 559 EOR (CHAR_LINE7),Y 85ED: 25 C0 559 AND MASK_AND 85EF: 51 DE 559 EOR (CHAR_LINE7),Y 85F1: 91 DE 559 STA (CHAR_LINE7),Y 559 <<< 560 MASK_LINEZ CHAR_LINE0 85F3: A5 C1 560 LDA MASK_EOR 85F5: 51 D0 560 EOR (CHAR_LINE0),Y 85F7: 25 C0 560 AND MASK_AND 85F9: 51 D0 560 EOR (CHAR_LINE0),Y 85FB: 91 D0 560 STA (CHAR_LINE0),Y 560 <<< 561 562 MASK_LINE FONT_BYT1L1;CHAR_LINE1 85FD: BD 80 8A 562 LDA FONT_BYT1L1,X 8600: 4D 08 83 562 EOR INV_NORM 8603: 51 D2 562 EOR (CHAR_LINE1),Y 8605: 25 C0 562 AND MASK_AND 8607: 51 D2 562 EOR (CHAR_LINE1),Y 8609: 91 D2 562 STA (CHAR_LINE1),Y 562 <<< 563 MASK_LINE FONT_BYT1L2;CHAR_LINE2 860B: BD 80 8C 563 LDA FONT_BYT1L2,X 860E: 4D 08 83 563 EOR INV_NORM 8611: 51 D4 563 EOR (CHAR_LINE2),Y 8613: 25 C0 563 AND MASK_AND 8615: 51 D4 563 EOR (CHAR_LINE2),Y 8617: 91 D4 563 STA (CHAR_LINE2),Y 563 <<< 564 MASK_LINE FONT_BYT1L3;CHAR_LINE3 8619: BD 80 8E 564 LDA FONT_BYT1L3,X 861C: 4D 08 83 564 EOR INV_NORM 861F: 51 D6 564 EOR (CHAR_LINE3),Y 8621: 25 C0 564 AND MASK_AND 8623: 51 D6 564 EOR (CHAR_LINE3),Y 8625: 91 D6 564 STA (CHAR_LINE3),Y 564 <<< 565 MASK_LINE FONT_BYT1L4;CHAR_LINE4 8627: BD 80 90 565 LDA FONT_BYT1L4,X 862A: 4D 08 83 565 EOR INV_NORM 862D: 51 D8 565 EOR (CHAR_LINE4),Y 862F: 25 C0 565 AND MASK_AND 8631: 51 D8 565 EOR (CHAR_LINE4),Y 8633: 91 D8 565 STA (CHAR_LINE4),Y 565 <<< 566 MASK_LINE FONT_BYT1L5;CHAR_LINE5 8635: BD 80 92 566 LDA FONT_BYT1L5,X 8638: 4D 08 83 566 EOR INV_NORM 863B: 51 DA 566 EOR (CHAR_LINE5),Y 863D: 25 C0 566 AND MASK_AND 863F: 51 DA 566 EOR (CHAR_LINE5),Y 8641: 91 DA 566 STA (CHAR_LINE5),Y 566 <<< 567 MASK_LINE FONT_BYT1L6;CHAR_LINE6 8643: BD 80 94 567 LDA FONT_BYT1L6,X 8646: 4D 08 83 567 EOR INV_NORM 8649: 51 DC 567 EOR (CHAR_LINE6),Y 864B: 25 C0 567 AND MASK_AND 864D: 51 DC 567 EOR (CHAR_LINE6),Y 864F: 91 DC 567 STA (CHAR_LINE6),Y 567 <<< 568 8651: 60 569 RTS 570 571 572 *------------------------------- 573 * Case 3 574 *------------------------------- 575 576 * In : X = character 577 * Y = first col 578 * acc = mask byte 1 579 8652: 20 E0 85 580 CASE_3 JSR CASE_2 581 8655: C8 582 INY 8656: A5 C2 583 LDA SV_MK_BYTE_B ; mask byte 2 584 585 586 *------------------------------- 587 * Case 4 588 *------------------------------- 589 590 * In : X = character 591 * Y = first col 592 * acc = mask byte 2 593 594 CASE_4 SET_MASKS 8658: 85 C0 594 STA MASK_AND ; for AND 865A: 49 7F 594 EOR #$7F ; inverse all useful bits 865C: 4D 08 83 594 EOR INV_NORM ; inverse or normal 865F: 85 C1 594 STA MASK_EOR ; for EOR 594 <<< 595 596 MASK_LINEZ CHAR_LINE7 8661: A5 C1 596 LDA MASK_EOR 8663: 51 DE 596 EOR (CHAR_LINE7),Y 8665: 25 C0 596 AND MASK_AND 8667: 51 DE 596 EOR (CHAR_LINE7),Y 8669: 91 DE 596 STA (CHAR_LINE7),Y 596 <<< 597 MASK_LINEZ CHAR_LINE0 866B: A5 C1 597 LDA MASK_EOR 866D: 51 D0 597 EOR (CHAR_LINE0),Y 866F: 25 C0 597 AND MASK_AND 8671: 51 D0 597 EOR (CHAR_LINE0),Y 8673: 91 D0 597 STA (CHAR_LINE0),Y 597 <<< 598 599 MASK_LINE FONT_BYT2L1;CHAR_LINE1 8675: BD 00 8B 599 LDA FONT_BYT2L1,X 8678: 4D 08 83 599 EOR INV_NORM 867B: 51 D2 599 EOR (CHAR_LINE1),Y 867D: 25 C0 599 AND MASK_AND 867F: 51 D2 599 EOR (CHAR_LINE1),Y 8681: 91 D2 599 STA (CHAR_LINE1),Y 599 <<< 600 MASK_LINE FONT_BYT2L2;CHAR_LINE2 8683: BD 00 8D 600 LDA FONT_BYT2L2,X 8686: 4D 08 83 600 EOR INV_NORM 8689: 51 D4 600 EOR (CHAR_LINE2),Y 868B: 25 C0 600 AND MASK_AND 868D: 51 D4 600 EOR (CHAR_LINE2),Y 868F: 91 D4 600 STA (CHAR_LINE2),Y 600 <<< 601 MASK_LINE FONT_BYT2L3;CHAR_LINE3 8691: BD 00 8F 601 LDA FONT_BYT2L3,X 8694: 4D 08 83 601 EOR INV_NORM 8697: 51 D6 601 EOR (CHAR_LINE3),Y 8699: 25 C0 601 AND MASK_AND 869B: 51 D6 601 EOR (CHAR_LINE3),Y 869D: 91 D6 601 STA (CHAR_LINE3),Y 601 <<< 602 MASK_LINE FONT_BYT2L4;CHAR_LINE4 869F: BD 00 91 602 LDA FONT_BYT2L4,X 86A2: 4D 08 83 602 EOR INV_NORM 86A5: 51 D8 602 EOR (CHAR_LINE4),Y 86A7: 25 C0 602 AND MASK_AND 86A9: 51 D8 602 EOR (CHAR_LINE4),Y 86AB: 91 D8 602 STA (CHAR_LINE4),Y 602 <<< 603 MASK_LINE FONT_BYT2L5;CHAR_LINE5 86AD: BD 00 93 603 LDA FONT_BYT2L5,X 86B0: 4D 08 83 603 EOR INV_NORM 86B3: 51 DA 603 EOR (CHAR_LINE5),Y 86B5: 25 C0 603 AND MASK_AND 86B7: 51 DA 603 EOR (CHAR_LINE5),Y 86B9: 91 DA 603 STA (CHAR_LINE5),Y 603 <<< 604 MASK_LINE FONT_BYT2L6;CHAR_LINE6 86BB: BD 00 95 604 LDA FONT_BYT2L6,X 86BE: 4D 08 83 604 EOR INV_NORM 86C1: 51 DC 604 EOR (CHAR_LINE6),Y 86C3: 25 C0 604 AND MASK_AND 86C5: 51 DC 604 EOR (CHAR_LINE6),Y 86C7: 91 DC 604 STA (CHAR_LINE6),Y 604 <<< 605 86C9: 60 606 RTS 607 608 609 *------------------------------- 610 * Case 5 611 *------------------------------- 612 613 * In : X = character 614 * Y = first col 615 * acc = mask byte 2 616 86CA: 20 58 86 617 CASE_5 JSR CASE_4 618 86CD: C8 619 INY 86CE: A5 C2 620 LDA SV_MK_BYTE_B ; mask byte 3 621 622 623 *------------------------------- 624 * Case 6 625 *------------------------------- 626 627 * In : X = character 628 * Y = first col 629 * acc = mask byte 3 630 631 CASE_6 SET_MASKS 86D0: 85 C0 631 STA MASK_AND ; for AND 86D2: 49 7F 631 EOR #$7F ; inverse all useful bits 86D4: 4D 08 83 631 EOR INV_NORM ; inverse or normal 86D7: 85 C1 631 STA MASK_EOR ; for EOR 631 <<< 632 633 MASK_LINEZ CHAR_LINE7 86D9: A5 C1 633 LDA MASK_EOR 86DB: 51 DE 633 EOR (CHAR_LINE7),Y 86DD: 25 C0 633 AND MASK_AND 86DF: 51 DE 633 EOR (CHAR_LINE7),Y 86E1: 91 DE 633 STA (CHAR_LINE7),Y 633 <<< 634 MASK_LINEZ CHAR_LINE0 86E3: A5 C1 634 LDA MASK_EOR 86E5: 51 D0 634 EOR (CHAR_LINE0),Y 86E7: 25 C0 634 AND MASK_AND 86E9: 51 D0 634 EOR (CHAR_LINE0),Y 86EB: 91 D0 634 STA (CHAR_LINE0),Y 634 <<< 635 636 MASK_LINE FONT_BYT3L1;CHAR_LINE1 86ED: BD 80 8B 636 LDA FONT_BYT3L1,X 86F0: 4D 08 83 636 EOR INV_NORM 86F3: 51 D2 636 EOR (CHAR_LINE1),Y 86F5: 25 C0 636 AND MASK_AND 86F7: 51 D2 636 EOR (CHAR_LINE1),Y 86F9: 91 D2 636 STA (CHAR_LINE1),Y 636 <<< 637 MASK_LINE FONT_BYT3L2;CHAR_LINE2 86FB: BD 80 8D 637 LDA FONT_BYT3L2,X 86FE: 4D 08 83 637 EOR INV_NORM 8701: 51 D4 637 EOR (CHAR_LINE2),Y 8703: 25 C0 637 AND MASK_AND 8705: 51 D4 637 EOR (CHAR_LINE2),Y 8707: 91 D4 637 STA (CHAR_LINE2),Y 637 <<< 638 MASK_LINE FONT_BYT3L3;CHAR_LINE3 8709: BD 80 8F 638 LDA FONT_BYT3L3,X 870C: 4D 08 83 638 EOR INV_NORM 870F: 51 D6 638 EOR (CHAR_LINE3),Y 8711: 25 C0 638 AND MASK_AND 8713: 51 D6 638 EOR (CHAR_LINE3),Y 8715: 91 D6 638 STA (CHAR_LINE3),Y 638 <<< 639 MASK_LINE FONT_BYT3L4;CHAR_LINE4 8717: BD 80 91 639 LDA FONT_BYT3L4,X 871A: 4D 08 83 639 EOR INV_NORM 871D: 51 D8 639 EOR (CHAR_LINE4),Y 871F: 25 C0 639 AND MASK_AND 8721: 51 D8 639 EOR (CHAR_LINE4),Y 8723: 91 D8 639 STA (CHAR_LINE4),Y 639 <<< 640 MASK_LINE FONT_BYT3L5;CHAR_LINE5 8725: BD 80 93 640 LDA FONT_BYT3L5,X 8728: 4D 08 83 640 EOR INV_NORM 872B: 51 DA 640 EOR (CHAR_LINE5),Y 872D: 25 C0 640 AND MASK_AND 872F: 51 DA 640 EOR (CHAR_LINE5),Y 8731: 91 DA 640 STA (CHAR_LINE5),Y 640 <<< 641 MASK_LINE FONT_BYT3L6;CHAR_LINE6 8733: BD 80 95 641 LDA FONT_BYT3L6,X 8736: 4D 08 83 641 EOR INV_NORM 8739: 51 DC 641 EOR (CHAR_LINE6),Y 873B: 25 C0 641 AND MASK_AND 873D: 51 DC 641 EOR (CHAR_LINE6),Y 873F: 91 DC 641 STA (CHAR_LINE6),Y 641 <<< 642 8741: 60 643 RTS 644 645 646 *------------------------------- 647 * Display a character on the 648 * screen 649 *------------------------------- 650 651 * In : acc = character 652 8742: 8D 75 87 653 DSP_CHAR STA CHAR_SAV 654 8745: A6 24 655 LDX CH ; X[0..69] 8747: BC 22 85 656 LDY CASE,X ; get case Y[0..6] 874A: B9 67 87 657 LDA CASE_LISTL,Y ; select routine according to case 874D: 8D 65 87 658 STA H8764+1 8750: B9 6E 87 659 LDA CASE_LISTH,Y 8753: 8D 66 87 660 STA H8764+2 661 8756: B9 D5 84 662 LDA MASK_BYTE_B,Y ; save mask for the 2nd byte 8759: 85 C2 663 STA SV_MK_BYTE_B 664 875B: B9 CE 84 665 LDA MASK_BYTE_A,Y ; load mask for the 1st byte 875E: BC DC 84 666 LDY FIRST_COL,X ; first column 8761: AE 75 87 667 LDX CHAR_SAV 668 8764: 4C 64 87 669 H8764 JMP H8764 ; JMP $???? 670 671 672 *------------------------------- 673 * Address for each case 674 *------------------------------- 675 8767: 68 676 CASE_LISTL DFB #CASE_0 876F: 85 685 DFB #>CASE_1 8770: 85 686 DFB #>CASE_2 8771: 86 687 DFB #>CASE_3 8772: 86 688 DFB #>CASE_4 8773: 86 689 DFB #>CASE_5 8774: 86 690 DFB #>CASE_6 691 8775: A0 692 CHAR_SAV ASC " " 693 694 695 *------------------------------- 696 * Set screen pointer 697 *------------------------------- 698 8776: A4 25 699 SET_SCRN_PTR2 LDY CV ; [0..23] 8778: B9 E2 83 700 LDA HGR_DATAL,Y ; low 877B: 85 D2 701 STA CHAR2_LINE0 877D: 85 D4 702 STA CHAR2_LINE1 877F: 85 D6 703 STA CHAR2_LINE2 8781: 85 D8 704 STA CHAR2_LINE3 8783: 85 DA 705 STA CHAR2_LINE4 8785: 85 DC 706 STA CHAR2_LINE5 8787: 85 DE 707 STA CHAR2_LINE6 8789: 85 D0 708 STA CHAR2_LINE7 709 878B: 98 710 TYA 878C: 0A 711 ASL ; *8 = [0..184] 878D: 0A 712 ASL 878E: 0A 713 ASL 878F: 29 3F 714 AND #%00111111 ; [0..56] 8791: A8 715 TAY 8792: B9 FA 83 716 LDA HGR_DATAH,Y ; high 8795: 85 D3 717 STA CHAR2_LINE0+1 8797: B9 FB 83 718 LDA HGR_DATAH+1,Y 879A: 85 D5 719 STA CHAR2_LINE1+1 879C: B9 FC 83 720 LDA HGR_DATAH+2,Y 879F: 85 D7 721 STA CHAR2_LINE2+1 87A1: B9 FD 83 722 LDA HGR_DATAH+3,Y 87A4: 85 D9 723 STA CHAR2_LINE3+1 87A6: B9 FE 83 724 LDA HGR_DATAH+4,Y 87A9: 85 DB 725 STA CHAR2_LINE4+1 87AB: B9 FF 83 726 LDA HGR_DATAH+5,Y 87AE: 85 DD 727 STA CHAR2_LINE5+1 87B0: B9 00 84 728 LDA HGR_DATAH+6,Y 87B3: 85 DF 729 STA CHAR2_LINE6+1 87B5: B9 01 84 730 LDA HGR_DATAH+7,Y 87B8: 85 D1 731 STA CHAR2_LINE7+1 87BA: 60 732 RTS 733 734 735 *------------------------------- 736 * Copy pointer (for scroll up) 737 * CHAR2_* to WORK_* 738 *------------------------------- 739 87BB: A5 D2 740 COPY_POINTER LDA CHAR2_LINE0 ; low (always the same value) 87BD: 85 C2 741 STA WORK_LINE0 87BF: 85 C4 742 STA WORK_LINE1 87C1: 85 C6 743 STA WORK_LINE2 87C3: 85 C8 744 STA WORK_LINE3 87C5: 85 CA 745 STA WORK_LINE4 87C7: 85 CC 746 STA WORK_LINE5 87C9: 85 CE 747 STA WORK_LINE6 87CB: 85 C0 748 STA WORK_LINE7 749 87CD: A5 D3 750 LDA CHAR2_LINE0+1 ; high 87CF: 85 C3 751 STA WORK_LINE0+1 87D1: A5 D5 752 LDA CHAR2_LINE1+1 87D3: 85 C5 753 STA WORK_LINE1+1 87D5: A5 D7 754 LDA CHAR2_LINE2+1 87D7: 85 C7 755 STA WORK_LINE2+1 87D9: A5 D9 756 LDA CHAR2_LINE3+1 87DB: 85 C9 757 STA WORK_LINE3+1 87DD: A5 DB 758 LDA CHAR2_LINE4+1 87DF: 85 CB 759 STA WORK_LINE4+1 87E1: A5 DD 760 LDA CHAR2_LINE5+1 87E3: 85 CD 761 STA WORK_LINE5+1 87E5: A5 DF 762 LDA CHAR2_LINE6+1 87E7: 85 CF 763 STA WORK_LINE6+1 87E9: A5 D1 764 LDA CHAR2_LINE7+1 87EB: 85 C1 765 STA WORK_LINE7+1 87ED: 60 766 RTS 767 768 769 *------------------------------- 770 * Copy the content of a line 771 * of characters to another 772 *------------------------------- 773 87EE: A0 27 774 COPY_LINE LDY #39 ; every column 87F0: B1 D2 775 H87F0 LDA (CHAR2_LINE0),Y ; every line 87F2: 91 C2 776 STA (WORK_LINE0),Y 87F4: B1 D4 777 LDA (CHAR2_LINE1),Y 87F6: 91 C4 778 STA (WORK_LINE1),Y 87F8: B1 D6 779 LDA (CHAR2_LINE2),Y 87FA: 91 C6 780 STA (WORK_LINE2),Y 87FC: B1 D8 781 LDA (CHAR2_LINE3),Y 87FE: 91 C8 782 STA (WORK_LINE3),Y 8800: B1 DA 783 LDA (CHAR2_LINE4),Y 8802: 91 CA 784 STA (WORK_LINE4),Y 8804: B1 DC 785 LDA (CHAR2_LINE5),Y 8806: 91 CC 786 STA (WORK_LINE5),Y 8808: B1 DE 787 LDA (CHAR2_LINE6),Y 880A: 91 CE 788 STA (WORK_LINE6),Y 880C: B1 D0 789 LDA (CHAR2_LINE7),Y 880E: 91 C0 790 STA (WORK_LINE7),Y 8810: 88 791 DEY ; previous column 8811: 10 DD 792 BPL H87F0 ; not finished 793 8813: 60 794 RTS 795 796 797 *------------------------------- 798 * Clear a line of characters 799 *------------------------------- 800 8814: 20 76 87 801 CLEAR_LINE JSR SET_SCRN_PTR2 802 8817: A0 00 803 LDY #0 ; start of line 804 8819: A9 00 805 CLREOL_FROMY LDA #0 ; erase all informations (1 character 881B: 91 D2 806 H881B STA (CHAR2_LINE0),Y 881D: 91 D4 807 STA (CHAR2_LINE1),Y 881F: 91 D6 808 STA (CHAR2_LINE2),Y 8821: 91 D8 809 STA (CHAR2_LINE3),Y 8823: 91 DA 810 STA (CHAR2_LINE4),Y 8825: 91 DC 811 STA (CHAR2_LINE5),Y 8827: 91 DE 812 STA (CHAR2_LINE6),Y 8829: 91 D0 813 STA (CHAR2_LINE7),Y 882B: C8 814 INY ; next character 882C: C0 28 815 CPY #40 ; until end of horizontal line 882E: 90 EB 816 BCC H881B 8830: 60 817 RTS 818 819 820 *------------------------------- 821 * Clear current line of char 822 * and get ready for a new output 823 *------------------------------- 824 8831: 20 14 88 825 READY_NEXT JSR CLEAR_LINE 8834: 4C 3A 84 826 JMP SET_SCRN_PTR ; new pointer 827 828 829 *------------------------------- 830 * Clear end of line 831 * (CTRL-]) 832 *------------------------------- 833 8837: A5 24 834 CLREOL LDA CH ; save CH 8839: 48 835 PHA 883A: AD 08 83 836 LDA INV_NORM ; and save mode 883D: 48 837 PHA 838 883E: A9 00 839 LDA #0 ; normal 8840: 8D 08 83 840 STA INV_NORM 8843: A9 20 841 H8843 LDA #$20 ; print space character 8845: 20 42 87 842 JSR DSP_CHAR 8848: E6 24 843 INC CH ; next position 884A: A4 24 844 LDY CH 884C: B9 22 85 845 LDA CASE,Y ; case 0? 884F: D0 0A 846 BNE H885B ; no, don't erase 847 848 ; case 0 8851: B9 DC 84 849 LDA FIRST_COL,Y ; erase everything from here 8854: A8 850 TAY 8855: 20 19 88 851 JSR CLREOL_FROMY 8858: 4C 5F 88 852 JMP H885F ; end of routine 853 885B: C4 21 854 H885B CPY WNDWDTH ; EOL? 885D: 90 E4 855 BCC H8843 ; not yet 856 885F: 68 857 H885F PLA ; restore mode 8860: 8D 08 83 858 STA INV_NORM 8863: 68 859 PLA ; and restore CH 8864: 85 24 860 STA CH 8866: 60 861 RTS 862 863 864 *------------------------------- 865 * Clear end of page 866 * (CTRL-K) 867 *------------------------------- 868 8867: A5 25 869 CLREOP LDA CV ; save current Y position 8869: 48 870 PHA 886A: 20 37 88 871 JSR CLREOL ; clear current line 872 886D: E6 25 873 H886D INC CV ; next line 886F: A5 25 874 LDA CV ; is line 8871: C5 23 875 CMP WNDBTM ; out of screen? 8873: B0 05 876 BCS H887A ; yes 877 8875: 20 14 88 878 JSR CLEAR_LINE ; clear the line 8878: 30 F3 879 BMI H886D ; BUG!!!! Should be BEQ! 880 887A: 68 881 H887A PLA ; restore current Y position 887B: 85 25 882 STA CV 887D: 4C 3A 84 883 JMP SET_SCRN_PTR ; new pointer 884 885 886 *------------------------------- 887 * Scroll up the screen 888 *------------------------------- 889 8880: A5 22 890 SCROLL_UP LDA WNDTOP ; 1st line 8882: 85 25 891 STA CV 8884: 20 76 87 892 JSR SET_SCRN_PTR2 ; ptr CHAR2_LINE[0..7] for CV 8887: D0 09 893 BNE H8892 ; always 894 8889: 20 BB 87 895 H8889 JSR COPY_POINTER ; WORK_LINE[0..7] = CHAR2_LINE[0..7] 888C: 20 76 87 896 JSR SET_SCRN_PTR2 ; ptr CHAR2_LINE[0..7] for new position 888F: 20 EE 87 897 JSR COPY_LINE ; copy CHAR2_LINE[0..7] (CV line) 898 ; to WORK_LINE[0..7] (CV-1 line) 899 8892: E6 25 900 H8892 INC CV ; position on next line 8894: A5 25 901 LDA CV 8896: C5 23 902 CMP WNDBTM ; out of screen (or window) 8898: 90 EF 903 BCC H8889 ; no, continue 904 889A: C6 25 905 DEC CV ; return to last valid line 906 889C: 4C 31 88 907 JMP READY_NEXT 908 909 910 *------------------------------- 911 * Clear screen and cursor=(0,0) 912 * (CTRL-L) 913 *------------------------------- 914 889F: A5 22 915 CLEAR_SCREEN LDA WNDTOP ; start on the first line 88A1: 85 25 916 STA CV 917 88A3: 20 14 88 918 H88A3 JSR CLEAR_LINE ; clear it 88A6: E6 25 919 INC CV ; is next line 88A8: A5 25 920 LDA CV ; out of 88AA: C5 23 921 CMP WNDBTM ; screen? 88AC: 90 F5 922 BCC H88A3 ; no: continue with this line 923 88AE: A5 22 924 LDA WNDTOP ; cursor on top 88B0: 85 25 925 STA CV 88B2: A9 00 926 LDA #0 ; left position 88B4: 85 24 927 STA CH 88B6: 4C 3A 84 928 JMP SET_SCRN_PTR ; new pointer 929 930 931 *------------------------------- 932 * Key in 933 *------------------------------- 934 88B9: 8E 06 83 935 IN_70 STX SAVE_X ; save registers 88BC: 8C 07 83 936 STY SAVE_Y 88BF: 8D 05 83 937 STA SAVE_ACC 938 88C2: A0 7F 939 LDY #$7F ; inverse mode 88C4: 8C 08 83 940 STY INV_NORM 88C7: 29 7F 941 AND #$7F 88C9: 20 42 87 942 JSR DSP_CHAR ; display cursor 943 88CC: 2C 00 C0 944 H88CC BIT KEY 88CF: 10 FB 945 BPL H88CC ; wait for valid key 946 ; $C000 filled 947 88D1: A0 00 948 LDY #0 ; normal mode 88D3: 8C 08 83 949 STY INV_NORM 950 88D6: AD 05 83 951 LDA SAVE_ACC 88D9: 29 7F 952 AND #$7F 88DB: 20 42 87 953 JSR DSP_CHAR ; erase cursor 954 88DE: AE 06 83 955 LDX SAVE_X 88E1: AC 07 83 956 LDY SAVE_Y 88E4: AD 05 83 957 LDA SAVE_ACC 88E7: 91 28 958 STA (KEY_BUFF_PTR),Y ; same in keyboard buffer 959 88E9: AD 00 C0 960 LDA KEY ; load pressed key 88EC: 2C 10 C0 961 BIT STROBE 88EF: 60 962 RTS ; display it with OUT_70 963 964 965 *------------------------------- 966 * Keyboard buffer 967 *------------------------------- 968 969 * Txt echo of an input 970 88F0: A0 A0 A0 971 KEY_BUFF DS 70," " 88F3: A0 A0 A0 A0 A0 A0 A0 A0 88FB: A0 A0 A0 A0 A0 A0 A0 A0 8903: A0 A0 A0 A0 A0 A0 A0 A0 890B: A0 A0 A0 A0 A0 A0 A0 A0 8913: A0 A0 A0 A0 A0 A0 A0 A0 891B: A0 A0 A0 A0 A0 A0 A0 A0 8923: A0 A0 A0 A0 A0 A0 A0 A0 892B: A0 A0 A0 A0 A0 A0 A0 A0 8933: A0 A0 A0 8936: 8D 8D 8D 972 DS 202,$8D 8939: 8D 8D 8D 8D 8D 8D 8D 8D 8941: 8D 8D 8D 8D 8D 8D 8D 8D 8949: 8D 8D 8D 8D 8D 8D 8D 8D 8951: 8D 8D 8D 8D 8D 8D 8D 8D 8959: 8D 8D 8D 8D 8D 8D 8D 8D 8961: 8D 8D 8D 8D 8D 8D 8D 8D 8969: 8D 8D 8D 8D 8D 8D 8D 8D 8971: 8D 8D 8D 8D 8D 8D 8D 8D 8979: 8D 8D 8D 8D 8D 8D 8D 8D 8981: 8D 8D 8D 8D 8D 8D 8D 8D 8989: 8D 8D 8D 8D 8D 8D 8D 8D 8991: 8D 8D 8D 8D 8D 8D 8D 8D 8999: 8D 8D 8D 8D 8D 8D 8D 8D 89A1: 8D 8D 8D 8D 8D 8D 8D 8D 89A9: 8D 8D 8D 8D 8D 8D 8D 8D 89B1: 8D 8D 8D 8D 8D 8D 8D 8D 89B9: 8D 8D 8D 8D 8D 8D 8D 8D 89C1: 8D 8D 8D 8D 8D 8D 8D 8D 89C9: 8D 8D 8D 8D 8D 8D 8D 8D 89D1: 8D 8D 8D 8D 8D 8D 8D 8D 89D9: 8D 8D 8D 8D 8D 8D 8D 8D 89E1: 8D 8D 8D 8D 8D 8D 8D 8D 89E9: 8D 8D 8D 8D 8D 8D 8D 8D 89F1: 8D 8D 8D 8D 8D 8D 8D 8D 89F9: 8D 8D 8D 8D 8D 8D 8D 973 974 975 *------------------------------- 976 * Font 977 *------------------------------- 978 979 * 24 blocks (4 bytes for the 7 cases * 6 lines) 980 * of 128 bytes each (128 characters) 981 * 982 * Block's name: 983 * 984 * FONT_ 985 * BYT[byte #:0..3] 986 * L[line of the character:1..6] 987 * 988 * NOTE: for every character of the font, lines 0 989 * and 7 are always empty, so no datas 990 8A00: 5D 5D 4C 991 FONT_BYT0L1 HEX 5D5D4C5D4C0808192A083B2A6E2A2A5D 8A03: 5D 4C 08 08 19 2A 08 3B 8A0B: 2A 6E 2A 2A 5D 8A10: 4C 5D 4C 992 HEX 4C5D4C19082A2A2A2A2A08086E087F7F 8A13: 19 08 2A 2A 2A 2A 2A 08 8A1B: 08 6E 08 7F 7F 8A20: 00 22 55 993 HEX 00225555225566442222550000000044 8A23: 55 22 55 66 44 22 22 55 8A2B: 00 00 00 00 44 8A30: 77 22 77 994 HEX 77227777557777777777000044001122 8A33: 77 55 77 77 77 77 77 00 8A3B: 00 44 00 11 22 8A40: 22 22 33 995 HEX 22223322337777665577445511555522 8A43: 22 33 77 77 66 55 77 44 8A4B: 55 11 55 55 22 8A50: 33 22 33 996 HEX 33223366775555555555777711770000 8A53: 66 77 55 55 55 55 55 77 8A5B: 77 11 77 00 00 8A60: 11 00 11 997 HEX 11001100440066001122441122000000 8A63: 00 44 00 66 00 11 22 44 8A6B: 11 22 00 00 00 8A70: 00 00 00 998 HEX 00000000220000000000006622330000 8A73: 00 22 00 00 00 00 00 00 8A7B: 66 22 33 00 00 999 8A80: 3B 3B 19 1000 FONT_BYT1L1 HEX 3B3B193B19111133551177555D55553B 8A83: 3B 19 11 11 33 55 11 77 8A8B: 55 5D 55 55 3B 8A90: 19 3B 19 1001 HEX 193B193311555555555511115D117F7F 8A93: 33 11 55 55 55 55 55 11 8A9B: 11 5D 11 7F 7F 8AA0: 00 44 2A 1002 HEX 00442A2A442A4C0844442A0000000008 8AA3: 2A 44 2A 4C 08 44 44 2A 8AAB: 00 00 00 00 08 8AB0: 6E 44 6E 1003 HEX 6E446E6E2A6E6E6E6E6E000008002244 8AB3: 6E 2A 6E 6E 6E 6E 6E 00 8ABB: 00 08 00 22 44 8AC0: 44 44 66 1004 HEX 44446644666E6E4C2A6E082A222A2A44 8AC3: 44 66 6E 6E 4C 2A 6E 08 8ACB: 2A 22 2A 2A 44 8AD0: 66 44 66 1005 HEX 6644664C6E2A2A2A2A2A6E6E226E0000 8AD3: 4C 6E 2A 2A 2A 2A 2A 6E 8ADB: 6E 22 6E 00 00 8AE0: 22 00 22 1006 HEX 2200220008004C002244082244000000 8AE3: 00 08 00 4C 00 22 44 08 8AEB: 22 44 00 00 00 8AF0: 00 00 00 1007 HEX 00000000440000000000004C44660000 8AF3: 00 44 00 00 00 00 00 00 8AFB: 4C 44 66 00 00 1008 8B00: 77 77 33 1009 FONT_BYT2L1 HEX 77773377332222662A226E2A3B2A2A77 8B03: 77 33 22 22 66 2A 22 6E 8B0B: 2A 3B 2A 2A 77 8B10: 33 77 33 1010 HEX 33773366222A2A2A2A2A22223B227F7F 8B13: 66 22 2A 2A 2A 2A 2A 22 8B1B: 22 3B 22 7F 7F 8B20: 00 08 55 1011 HEX 00085555085519110808550000000011 8B23: 55 08 55 19 11 08 08 55 8B2B: 00 00 00 00 11 8B30: 5D 08 5D 1012 HEX 5D085D5D555D5D5D5D5D000011004408 8B33: 5D 55 5D 5D 5D 5D 5D 00 8B3B: 00 11 00 44 08 8B40: 08 08 4C 1013 HEX 08084C084C5D5D19555D115544555508 8B43: 08 4C 5D 5D 19 55 5D 11 8B4B: 55 44 55 55 08 8B50: 4C 08 4C 1014 HEX 4C084C195D55555555555D5D445D0000 8B53: 19 5D 55 55 55 55 55 5D 8B5B: 5D 44 5D 00 00 8B60: 44 00 44 1015 HEX 44004400110019004408114408000000 8B63: 00 11 00 19 00 44 08 11 8B6B: 44 08 00 00 00 8B70: 00 00 00 1016 HEX 000000000800000000000019084C0000 8B73: 00 08 00 00 00 00 00 00 8B7B: 19 08 4C 00 00 1017 8B80: 6E 6E 66 1018 FONT_BYT3L1 HEX 6E6E666E6644444C55445D557755556E 8B83: 6E 66 44 44 4C 55 44 5D 8B8B: 55 77 55 55 6E 8B90: 66 6E 66 1019 HEX 666E664C445555555555444477447F7F 8B93: 4C 44 55 55 55 55 55 44 8B9B: 44 77 44 7F 7F 8BA0: 00 11 2A 1020 HEX 00112A2A112A332211112A0000000022 8BA3: 2A 11 2A 33 22 11 11 2A 8BAB: 00 00 00 00 22 8BB0: 3B 11 3B 1021 HEX 3B113B3B2A3B3B3B3B3B000022000811 8BB3: 3B 2A 3B 3B 3B 3B 3B 00 8BBB: 00 22 00 08 11 8BC0: 11 11 19 1022 HEX 11111911193B3B332A3B222A082A2A11 8BC3: 11 19 3B 3B 33 2A 3B 22 8BCB: 2A 08 2A 2A 11 8BD0: 19 11 19 1023 HEX 191119333B2A2A2A2A2A3B3B083B0000 8BD3: 33 3B 2A 2A 2A 2A 2A 3B 8BDB: 3B 08 3B 00 00 8BE0: 08 00 08 1024 HEX 08000800220033000811220811000000 8BE3: 00 22 00 33 00 08 11 22 8BEB: 08 11 00 00 00 8BF0: 00 00 00 1025 HEX 00000000110000000000003311190000 8BF3: 00 11 00 00 00 00 00 00 8BFB: 33 11 19 00 00 1026 8C00: 08 2A 2A 1027 FONT_BYT0L2 HEX 082A2A2A2A6E6E6E2A5D3B4C6E08082A 8C03: 2A 2A 6E 6E 6E 2A 5D 3B 8C0B: 4C 6E 08 08 2A 8C10: 2A 2A 2A 1028 HEX 2A2A2A6E5D2A2A2A2A2A3B4C6E195D7F 8C13: 6E 5D 2A 2A 2A 2A 2A 3B 8C1B: 4C 6E 19 5D 7F 8C20: 00 22 55 1029 HEX 00225577664466221144222200000044 8C23: 77 66 44 66 22 11 44 22 8C2B: 22 00 00 00 44 8C30: 55 33 44 1030 HEX 55334444551111445555220022772255 8C33: 44 55 11 11 44 55 55 22 8C3B: 00 22 77 22 55 8C40: 77 55 55 1031 HEX 77555555551111115522443311777755 8C43: 55 55 11 11 11 55 22 44 8C4B: 33 11 77 77 55 8C50: 55 55 55 1032 HEX 55555511225555555555443311662200 8C53: 11 22 55 55 55 55 55 44 8C5B: 33 11 66 22 00 8C60: 22 33 33 1033 HEX 22333366666611223300001122772222 8C63: 66 66 66 11 22 33 00 00 8C6B: 11 22 77 22 22 8C70: 33 66 22 1034 HEX 33662266775555555555772222224477 8C73: 66 77 55 55 55 55 55 77 8C7B: 22 22 22 44 77 1035 8C80: 11 55 55 1036 FONT_BYT1L2 HEX 11555555555D5D5D553B77195D111155 8C83: 55 55 5D 5D 5D 55 3B 77 8C8B: 19 5D 11 11 55 8C90: 55 55 55 1037 HEX 5555555D3B555555555577195D333B7F 8C93: 5D 3B 55 55 55 55 55 77 8C9B: 19 5D 33 3B 7F 8CA0: 00 44 2A 1038 HEX 00442A6E4C084C442208444400000008 8CA3: 6E 4C 08 4C 44 22 08 44 8CAB: 44 00 00 00 08 8CB0: 2A 66 08 1039 HEX 2A6608082A2222082A2A4400446E442A 8CB3: 08 2A 22 22 08 2A 2A 44 8CBB: 00 44 6E 44 2A 8CC0: 6E 2A 2A 1040 HEX 6E2A2A2A2A2222222A440866226E6E2A 8CC3: 2A 2A 22 22 22 2A 44 08 8CCB: 66 22 6E 6E 2A 8CD0: 2A 2A 2A 1041 HEX 2A2A2A22442A2A2A2A2A0866224C4400 8CD3: 22 44 2A 2A 2A 2A 2A 08 8CDB: 66 22 4C 44 00 8CE0: 44 66 66 1042 HEX 4466664C4C4C224466000022446E4444 8CE3: 4C 4C 4C 22 44 66 00 00 8CEB: 22 44 6E 44 44 8CF0: 66 4C 44 1043 HEX 664C444C6E2A2A2A2A2A6E444444086E 8CF3: 4C 6E 2A 2A 2A 2A 2A 6E 8CFB: 44 44 44 08 6E 1044 8D00: 22 2A 2A 1045 FONT_BYT2L2 HEX 222A2A2A2A3B3B3B2A776E333B22222A 8D03: 2A 2A 3B 3B 3B 2A 77 6E 8D0B: 33 3B 22 22 2A 8D10: 2A 2A 2A 1046 HEX 2A2A2A3B772A2A2A2A2A6E333B66777F 8D13: 3B 77 2A 2A 2A 2A 2A 6E 8D1B: 33 3B 66 77 7F 8D20: 00 08 55 1047 HEX 0008555D191119084411080800000011 8D23: 5D 19 11 19 08 44 11 08 8D2B: 08 00 00 00 11 8D30: 55 4C 11 1048 HEX 554C11115544441155550800085D0855 8D33: 11 55 44 44 11 55 55 08 8D3B: 00 08 5D 08 55 8D40: 5D 55 55 1049 HEX 5D555555554444445508114C445D5D55 8D43: 55 55 44 44 44 55 08 11 8D4B: 4C 44 5D 5D 55 8D50: 55 55 55 1050 HEX 55555544085555555555114C44190800 8D53: 44 08 55 55 55 55 55 11 8D5B: 4C 44 19 08 00 8D60: 08 4C 4C 1051 HEX 084C4C19191944084C000044085D0808 8D63: 19 19 19 44 08 4C 00 00 8D6B: 44 08 5D 08 08 8D70: 4C 19 08 1052 HEX 4C1908195D55555555555D080808115D 8D73: 19 5D 55 55 55 55 55 5D 8D7B: 08 08 08 11 5D 1053 8D80: 44 55 55 1054 FONT_BYT3L2 HEX 4455555555777777556E5D6677444455 8D83: 55 55 77 77 77 55 6E 5D 8D8B: 66 77 44 44 55 8D90: 55 55 55 1055 HEX 555555776E55555555555D66774C6E7F 8D93: 77 6E 55 55 55 55 55 5D 8D9B: 66 77 4C 6E 7F 8DA0: 00 11 2A 1056 HEX 00112A3B332233110822111100000022 8DA3: 3B 33 22 33 11 08 22 11 8DAB: 11 00 00 00 22 8DB0: 2A 19 22 1057 HEX 2A1922222A0808222A2A1100113B112A 8DB3: 22 2A 08 08 22 2A 2A 11 8DBB: 00 11 3B 11 2A 8DC0: 3B 2A 2A 1058 HEX 3B2A2A2A2A0808082A112219083B3B2A 8DC3: 2A 2A 08 08 08 2A 11 22 8DCB: 19 08 3B 3B 2A 8DD0: 2A 2A 2A 1059 HEX 2A2A2A08112A2A2A2A2A221908331100 8DD3: 08 11 2A 2A 2A 2A 2A 22 8DDB: 19 08 33 11 00 8DE0: 11 19 19 1060 HEX 111919333333081119000008113B1111 8DE3: 33 33 33 08 11 19 00 00 8DEB: 08 11 3B 11 11 8DF0: 19 33 11 1061 HEX 193311333B2A2A2A2A2A3B111111223B 8DF3: 33 3B 2A 2A 2A 2A 2A 3B 8DFB: 11 11 11 22 3B 1062 8E00: 08 2A 4C 1063 FONT_BYT0L3 HEX 082A4C6E2A4C4C6E085D3B6E6E08082A 8E03: 6E 2A 4C 4C 6E 08 5D 3B 8E0B: 6E 6E 08 08 2A 8E10: 4C 2A 4C 1064 HEX 4C2A4C5D5D2A2A085D5D5D4C5D192A7F 8E13: 5D 5D 2A 2A 08 5D 5D 5D 8E1B: 4C 5D 19 2A 7F 8E20: 00 22 00 1065 HEX 00220055332222001144777700770022 8E23: 55 33 22 22 00 11 44 77 8E2B: 77 00 77 00 22 8E30: 55 22 77 1066 HEX 55227766777777227777002211004444 8E33: 66 77 77 77 22 77 77 00 8E3B: 22 11 00 44 44 8E40: 77 55 33 1067 HEX 77553311553333117722441111777755 8E43: 11 55 33 33 11 77 22 44 8E4B: 11 11 77 77 55 8E50: 33 55 33 1068 HEX 33553322225555772222223322665500 8E53: 22 22 55 55 77 22 22 22 8E5B: 33 22 66 55 00 8E60: 00 66 55 1069 HEX 00665511555533555522445522775555 8E63: 11 55 55 33 55 55 22 44 8E6B: 55 22 77 55 55 8E70: 55 55 55 1070 HEX 55555533225555772255661100447777 8E73: 33 22 55 55 77 22 55 66 8E7B: 11 00 44 77 77 1071 8E80: 11 55 19 1072 FONT_BYT1L3 HEX 1155195D5519195D113B775D5D111155 8E83: 5D 55 19 19 5D 11 3B 77 8E8B: 5D 5D 11 11 55 8E90: 19 55 19 1073 HEX 1955193B3B5555113B3B3B193B33557F 8E93: 3B 3B 55 55 11 3B 3B 3B 8E9B: 19 3B 33 55 7F 8EA0: 00 44 00 1074 HEX 0044002A6644440022086E6E006E0044 8EA3: 2A 66 44 44 00 22 08 6E 8EAB: 6E 00 6E 00 44 8EB0: 2A 44 6E 1075 HEX 2A446E4C6E6E6E446E6E004422000808 8EB3: 4C 6E 6E 6E 44 6E 6E 00 8EBB: 44 22 00 08 08 8EC0: 6E 2A 66 1076 HEX 6E2A66222A6666226E440822226E6E2A 8EC3: 22 2A 66 66 22 6E 44 08 8ECB: 22 22 6E 6E 2A 8ED0: 66 2A 66 1077 HEX 662A6644442A2A6E44444466444C2A00 8ED3: 44 44 2A 2A 6E 44 44 44 8EDB: 66 44 4C 2A 00 8EE0: 00 4C 2A 1078 HEX 004C2A222A2A662A2A44082A446E2A2A 8EE3: 22 2A 2A 66 2A 2A 44 08 8EEB: 2A 44 6E 2A 2A 8EF0: 2A 2A 2A 1079 HEX 2A2A2A66442A2A6E442A4C2200086E6E 8EF3: 66 44 2A 2A 6E 44 2A 4C 8EFB: 22 00 08 6E 6E 1080 8F00: 22 2A 33 1081 FONT_BYT2L3 HEX 222A333B2A33333B22776E3B3B22222A 8F03: 3B 2A 33 33 3B 22 77 6E 8F0B: 3B 3B 22 22 2A 8F10: 33 2A 33 1082 HEX 332A3377772A2A227777773377662A7F 8F13: 77 77 2A 2A 22 77 77 77 8F1B: 33 77 66 2A 7F 8F20: 00 08 00 1083 HEX 000800554C08080044115D5D005D0008 8F23: 55 4C 08 08 00 44 11 5D 8F2B: 5D 00 5D 00 08 8F30: 55 08 5D 1084 HEX 55085D195D5D5D085D5D000844001111 8F33: 19 5D 5D 5D 08 5D 5D 00 8F3B: 08 44 00 11 11 8F40: 5D 55 4C 1085 HEX 5D554C44554C4C445D081144445D5D55 8F43: 44 55 4C 4C 44 5D 08 11 8F4B: 44 44 5D 5D 55 8F50: 4C 55 4C 1086 HEX 4C554C080855555D0808084C08195500 8F53: 08 08 55 55 5D 08 08 08 8F5B: 4C 08 19 55 00 8F60: 00 19 55 1087 HEX 0019554455554C5555081155085D5555 8F63: 44 55 55 4C 55 55 08 11 8F6B: 55 08 5D 55 55 8F70: 55 55 55 1088 HEX 5555554C0855555D0855194400115D5D 8F73: 4C 08 55 55 5D 08 55 19 8F7B: 44 00 11 5D 5D 1089 8F80: 44 55 66 1090 FONT_BYT3L3 HEX 4455667755666677446E5D7777444455 8F83: 77 55 66 66 77 44 6E 5D 8F8B: 77 77 44 44 55 8F90: 66 55 66 1091 HEX 6655666E6E5555446E6E6E666E4C557F 8F93: 6E 6E 55 55 44 6E 6E 6E 8F9B: 66 6E 4C 55 7F 8FA0: 00 11 00 1092 HEX 0011002A1911110008223B3B003B0011 8FA3: 2A 19 11 11 00 08 22 3B 8FAB: 3B 00 3B 00 11 8FB0: 2A 11 3B 1093 HEX 2A113B333B3B3B113B3B001108002222 8FB3: 33 3B 3B 3B 11 3B 3B 00 8FBB: 11 08 00 22 22 8FC0: 3B 2A 19 1094 HEX 3B2A19082A1919083B112208083B3B2A 8FC3: 08 2A 19 19 08 3B 11 22 8FCB: 08 08 3B 3B 2A 8FD0: 19 2A 19 1095 HEX 192A1911112A2A3B1111111911332A00 8FD3: 11 11 2A 2A 3B 11 11 11 8FDB: 19 11 33 2A 00 8FE0: 00 33 2A 1096 HEX 00332A082A2A192A2A11222A113B2A2A 8FE3: 08 2A 2A 19 2A 2A 11 22 8FEB: 2A 11 3B 2A 2A 8FF0: 2A 2A 2A 1097 HEX 2A2A2A19112A2A3B112A330800223B3B 8FF3: 19 11 2A 2A 3B 11 2A 33 8FFB: 08 00 22 3B 3B 1098 9000: 6E 08 2A 1099 FONT_BYT0L4 HEX 6E082A2A2A6E6E2A2A5D2A4C6E2A082A 9003: 2A 2A 6E 6E 2A 2A 5D 2A 900B: 4C 6E 2A 08 2A 9010: 6E 08 2A 1100 HEX 6E082A3B5D2A2A082A5D6E4C3B197F7F 9013: 3B 5D 2A 2A 08 2A 5D 6E 901B: 4C 3B 19 7F 7F 9020: 00 00 00 1101 HEX 00000077661155001144222200000011 9023: 77 66 11 55 00 11 44 22 902B: 22 00 00 00 11 9030: 55 22 11 1102 HEX 55221144444455225544220022772222 9033: 44 44 44 55 22 55 44 22 903B: 00 22 77 22 22 9040: 11 77 55 1103 HEX 11775555551111555522553311557755 9043: 55 55 11 11 55 55 22 55 904B: 33 11 55 77 55 9050: 11 77 55 1104 HEX 11775544225555775522113344660000 9053: 44 22 55 55 77 55 22 11 905B: 33 44 66 00 00 9060: 00 55 55 1105 HEX 00555511553311665522443322775555 9063: 11 55 33 11 66 55 22 44 906B: 33 22 77 55 55 9070: 55 55 11 1106 HEX 55551166225555772266332222221177 9073: 66 22 55 55 77 22 66 33 907B: 22 22 22 11 77 1107 9080: 5D 11 55 1108 FONT_BYT1L4 HEX 5D115555555D5D55553B55195D551155 9083: 55 55 5D 5D 55 55 3B 55 908B: 19 5D 55 11 55 9090: 5D 11 55 1109 HEX 5D1155773B555511553B5D1977337F7F 9093: 77 3B 55 55 11 55 3B 5D 909B: 19 77 33 7F 7F 90A0: 00 00 00 1110 HEX 0000006E4C222A002208444400000022 90A3: 6E 4C 22 2A 00 22 08 44 90AB: 44 00 00 00 22 90B0: 2A 44 22 1111 HEX 2A44220808082A442A084400446E4444 90B3: 08 08 08 2A 44 2A 08 44 90BB: 00 44 6E 44 44 90C0: 22 6E 2A 1112 HEX 226E2A2A2A22222A2A442A66222A6E2A 90C3: 2A 2A 22 22 2A 2A 44 2A 90CB: 66 22 2A 6E 2A 90D0: 22 6E 2A 1113 HEX 226E2A08442A2A6E2A442266084C0000 90D3: 08 44 2A 2A 6E 2A 44 22 90DB: 66 08 4C 00 00 90E0: 00 2A 2A 1114 HEX 002A2A222A66224C2A440866446E2A2A 90E3: 22 2A 66 22 4C 2A 44 08 90EB: 66 44 6E 2A 2A 90F0: 2A 2A 22 1115 HEX 2A2A224C442A2A6E444C66444444226E 90F3: 4C 44 2A 2A 6E 44 4C 66 90FB: 44 44 44 22 6E 1116 9100: 3B 22 2A 1117 FONT_BYT2L4 HEX 3B222A2A2A3B3B2A2A772A333B2A222A 9103: 2A 2A 3B 3B 2A 2A 77 2A 910B: 33 3B 2A 22 2A 9110: 3B 22 2A 1118 HEX 3B222A6E772A2A222A773B336E667F7F 9113: 6E 77 2A 2A 22 2A 77 3B 911B: 33 6E 66 7F 7F 9120: 00 00 00 1119 HEX 0000005D194455004411080800000044 9123: 5D 19 44 55 00 44 11 08 912B: 08 00 00 00 44 9130: 55 08 44 1120 HEX 550844111111550855110800085D0808 9133: 11 11 11 55 08 55 11 08 913B: 00 08 5D 08 08 9140: 44 5D 55 1121 HEX 445D5555554444555508554C44555D55 9143: 55 55 44 44 55 55 08 55 914B: 4C 44 55 5D 55 9150: 44 5D 55 1122 HEX 445D55110855555D5508444C11190000 9153: 11 08 55 55 5D 55 08 44 915B: 4C 11 19 00 00 9160: 00 55 55 1123 HEX 00555544554C44195508114C085D5555 9163: 44 55 4C 44 19 55 08 11 916B: 4C 08 5D 55 55 9170: 55 55 44 1124 HEX 555544190855555D08194C080808445D 9173: 19 08 55 55 5D 08 19 4C 917B: 08 08 08 44 5D 1125 9180: 77 44 55 1126 FONT_BYT3L4 HEX 7744555555777755556E556677554455 9183: 55 55 77 77 55 55 6E 55 918B: 66 77 55 44 55 9190: 77 44 55 1127 HEX 7744555D6E555544556E77665D4C7F7F 9193: 5D 6E 55 55 44 55 6E 77 919B: 66 5D 4C 7F 7F 91A0: 00 00 00 1128 HEX 0000003B33082A000822111100000008 91A3: 3B 33 08 2A 00 08 22 11 91AB: 11 00 00 00 08 91B0: 2A 11 08 1129 HEX 2A11082222222A112A221100113B1111 91B3: 22 22 22 2A 11 2A 22 11 91BB: 00 11 3B 11 11 91C0: 08 3B 2A 1130 HEX 083B2A2A2A08082A2A112A19082A3B2A 91C3: 2A 2A 08 08 2A 2A 11 2A 91CB: 19 08 2A 3B 2A 91D0: 08 3B 2A 1131 HEX 083B2A22112A2A3B2A11081922330000 91D3: 22 11 2A 2A 3B 2A 11 08 91DB: 19 22 33 00 00 91E0: 00 2A 2A 1132 HEX 002A2A082A1908332A112219113B2A2A 91E3: 08 2A 19 08 33 2A 11 22 91EB: 19 11 3B 2A 2A 91F0: 2A 2A 08 1133 HEX 2A2A0833112A2A3B113319111111083B 91F3: 33 11 2A 2A 3B 11 33 19 91FB: 11 11 11 08 3B 1134 9200: 5D 2A 4C 1135 FONT_BYT0L5 HEX 5D2A4C5D4C086E192A085D2A082A2A5D 9203: 5D 4C 08 6E 19 2A 08 5D 920B: 2A 08 2A 2A 5D 9210: 6E 19 2A 1136 HEX 6E192A4C5D085D2A2A5D08083B087F08 9213: 4C 5D 08 5D 2A 2A 5D 08 921B: 08 3B 08 7F 08 9220: 00 22 00 1137 HEX 0022005533553B002222550022002211 9223: 55 33 55 3B 00 22 22 55 922B: 00 22 00 22 11 9230: 77 77 77 1138 HEX 77777777447777227777002244001100 9233: 77 44 77 77 22 77 77 00 923B: 22 44 00 11 00 9240: 22 55 33 1139 HEX 22553322337711665577225577555522 9243: 22 33 77 11 66 55 77 22 924B: 55 77 55 55 22 9250: 11 66 55 1140 HEX 11665533227722555522777744770077 9253: 33 22 77 22 55 55 22 77 925B: 77 44 77 00 77 9260: 00 66 33 1141 HEX 00663366666611445522555522555522 9263: 66 66 66 11 44 55 22 55 926B: 55 22 55 55 22 9270: 33 66 11 1142 HEX 33661133227722775544776622330000 9273: 33 22 77 22 77 55 44 77 927B: 66 22 33 00 00 1143 9280: 3B 55 19 1144 FONT_BYT1L5 HEX 3B55193B19115D3355113B551155553B 9283: 3B 19 11 5D 33 55 11 3B 928B: 55 11 55 55 3B 9290: 5D 33 55 1145 HEX 5D3355193B113B55553B111177117F11 9293: 19 3B 11 3B 55 55 3B 11 929B: 11 77 11 7F 11 92A0: 00 44 00 1146 HEX 0044002A662A770044442A0044004422 92A3: 2A 66 2A 77 00 44 44 2A 92AB: 00 44 00 44 22 92B0: 6E 6E 6E 1147 HEX 6E6E6E6E086E6E446E6E004408002200 92B3: 6E 08 6E 6E 44 6E 6E 00 92BB: 44 08 00 22 00 92C0: 44 2A 66 1148 HEX 442A6644666E224C2A6E442A6E2A2A44 92C3: 44 66 6E 22 4C 2A 6E 44 92CB: 2A 6E 2A 2A 44 92D0: 22 4C 2A 1149 HEX 224C2A66446E442A2A446E6E086E006E 92D3: 66 44 6E 44 2A 2A 44 6E 92DB: 6E 08 6E 00 6E 92E0: 00 4C 66 1150 HEX 004C664C4C4C22082A442A2A442A2A44 92E3: 4C 4C 4C 22 08 2A 44 2A 92EB: 2A 44 2A 2A 44 92F0: 66 4C 22 1151 HEX 664C2266446E446E2A086E4C44660000 92F3: 66 44 6E 44 6E 2A 08 6E 92FB: 4C 44 66 00 00 1152 9300: 77 2A 33 1153 FONT_BYT2L5 HEX 772A337733223B662A22772A222A2A77 9303: 77 33 22 3B 66 2A 22 77 930B: 2A 22 2A 2A 77 9310: 3B 66 2A 1154 HEX 3B662A337722772A2A7722226E227F22 9313: 33 77 22 77 2A 2A 77 22 931B: 22 6E 22 7F 22 9320: 00 08 00 1155 HEX 000800554C556E000808550008000844 9323: 55 4C 55 6E 00 08 08 55 932B: 00 08 00 08 44 9330: 5D 5D 5D 1156 HEX 5D5D5D5D115D5D085D5D000811004400 9333: 5D 11 5D 5D 08 5D 5D 00 933B: 08 11 00 44 00 9340: 08 55 4C 1157 HEX 08554C084C5D4419555D08555D555508 9343: 08 4C 5D 44 19 55 5D 08 934B: 55 5D 55 55 08 9350: 44 19 55 1158 HEX 4419554C085D085555085D5D115D005D 9353: 4C 08 5D 08 55 55 08 5D 935B: 5D 11 5D 00 5D 9360: 00 19 4C 1159 HEX 00194C19191944115508555508555508 9363: 19 19 19 44 11 55 08 55 936B: 55 08 55 55 08 9370: 4C 19 44 1160 HEX 4C19444C085D085D55115D19084C0000 9373: 4C 08 5D 08 5D 55 11 5D 937B: 19 08 4C 00 00 1161 9380: 6E 55 66 1162 FONT_BYT3L5 HEX 6E55666E6644774C55446E554455556E 9383: 6E 66 44 77 4C 55 44 6E 938B: 55 44 55 55 6E 9390: 77 4C 55 1163 HEX 774C55666E446E55556E44445D447F44 9393: 66 6E 44 6E 55 55 6E 44 939B: 44 5D 44 7F 44 93A0: 00 11 00 1164 HEX 0011002A192A5D0011112A0011001108 93A3: 2A 19 2A 5D 00 11 11 2A 93AB: 00 11 00 11 08 93B0: 3B 3B 3B 1165 HEX 3B3B3B3B223B3B113B3B001122000800 93B3: 3B 22 3B 3B 11 3B 3B 00 93BB: 11 22 00 08 00 93C0: 11 2A 19 1166 HEX 112A1911193B08332A3B112A3B2A2A11 93C3: 11 19 3B 08 33 2A 3B 11 93CB: 2A 3B 2A 2A 11 93D0: 08 33 2A 1167 HEX 08332A19113B112A2A113B3B223B003B 93D3: 19 11 3B 11 2A 2A 11 3B 93DB: 3B 22 3B 00 3B 93E0: 00 33 19 1168 HEX 00331933333308222A112A2A112A2A11 93E3: 33 33 33 08 22 2A 11 2A 93EB: 2A 11 2A 2A 11 93F0: 19 33 08 1169 HEX 19330819113B113B2A223B3311190000 93F3: 19 11 3B 11 3B 2A 22 3B 93FB: 33 11 19 00 00 1170 9400: 7F 7F 7F 1171 FONT_BYT0L6 HEX 7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F 9403: 7F 7F 7F 7F 7F 7F 7F 7F 940B: 7F 7F 7F 7F 7F 9410: 7F 77 7F 1172 HEX 7F777F7F7F7F7F7F7F7F7F7F7F7F7F7F 9413: 7F 7F 7F 7F 7F 7F 7F 7F 941B: 7F 7F 7F 7F 7F 9420: 00 00 00 1173 HEX 00000000220000000000000011000000 9423: 00 22 00 00 00 00 00 00 942B: 00 11 00 00 00 9430: 00 00 00 1174 HEX 00000000000000000000001100000022 9433: 00 00 00 00 00 00 00 00 943B: 11 00 00 00 22 9440: 00 00 00 1175 HEX 00000000000000000000000000000000 9443: 00 00 00 00 00 00 00 00 944B: 00 00 00 00 00 9450: 00 08 00 1176 HEX 00080000000000000000000000000000 9453: 00 00 00 00 00 00 00 00 945B: 00 00 00 00 00 9460: 00 00 00 1177 HEX 00000000000000330000220000000000 9463: 00 00 00 00 33 00 00 22 946B: 00 00 00 00 00 9470: 11 44 00 1178 HEX 11440000000000000033000000000000 9473: 00 00 00 00 00 00 33 00 947B: 00 00 00 00 00 1179 9480: 7F 7F 7F 1180 FONT_BYT1L6 HEX 7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F 9483: 7F 7F 7F 7F 7F 7F 7F 7F 948B: 7F 7F 7F 7F 7F 9490: 7F 6E 7F 1181 HEX 7F6E7F7F7F7F7F7F7F7F7F7F7F7F7F7F 9493: 7F 7F 7F 7F 7F 7F 7F 7F 949B: 7F 7F 7F 7F 7F 94A0: 00 00 00 1182 HEX 00000000440000000000000022000000 94A3: 00 44 00 00 00 00 00 00 94AB: 00 22 00 00 00 94B0: 00 00 00 1183 HEX 00000000000000000000002200000044 94B3: 00 00 00 00 00 00 00 00 94BB: 22 00 00 00 44 94C0: 00 00 00 1184 HEX 00000000000000000000000000000000 94C3: 00 00 00 00 00 00 00 00 94CB: 00 00 00 00 00 94D0: 00 11 00 1185 HEX 00110000000000000000000000000000 94D3: 00 00 00 00 00 00 00 00 94DB: 00 00 00 00 00 94E0: 00 00 00 1186 HEX 00000000000000660000440000000000 94E3: 00 00 00 00 66 00 00 44 94EB: 00 00 00 00 00 94F0: 22 08 00 1187 HEX 22080000000000000066000000000000 94F3: 00 00 00 00 00 00 66 00 94FB: 00 00 00 00 00 1188 9500: 7F 7F 7F 1189 FONT_BYT2L6 HEX 7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F 9503: 7F 7F 7F 7F 7F 7F 7F 7F 950B: 7F 7F 7F 7F 7F 9510: 7F 5D 7F 1190 HEX 7F5D7F7F7F7F7F7F7F7F7F7F7F7F7F7F 9513: 7F 7F 7F 7F 7F 7F 7F 7F 951B: 7F 7F 7F 7F 7F 9520: 00 00 00 1191 HEX 00000000080000000000000044000000 9523: 00 08 00 00 00 00 00 00 952B: 00 44 00 00 00 9530: 00 00 00 1192 HEX 00000000000000000000004400000008 9533: 00 00 00 00 00 00 00 00 953B: 44 00 00 00 08 9540: 00 00 00 1193 HEX 00000000000000000000000000000000 9543: 00 00 00 00 00 00 00 00 954B: 00 00 00 00 00 9550: 00 22 00 1194 HEX 00220000000000000000000000000000 9553: 00 00 00 00 00 00 00 00 955B: 00 00 00 00 00 9560: 00 00 00 1195 HEX 000000000000004C0000080000000000 9563: 00 00 00 00 4C 00 00 08 956B: 00 00 00 00 00 9570: 44 11 00 1196 HEX 4411000000000000004C000000000000 9573: 00 00 00 00 00 00 4C 00 957B: 00 00 00 00 00 1197 9580: 7F 7F 7F 1198 FONT_BYT3L6 HEX 7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F7F 9583: 7F 7F 7F 7F 7F 7F 7F 7F 958B: 7F 7F 7F 7F 7F 9590: 7F 3B 7F 1199 HEX 7F3B7F7F7F7F7F7F7F7F7F7F7F7F7F7F 9593: 7F 7F 7F 7F 7F 7F 7F 7F 959B: 7F 7F 7F 7F 7F 95A0: 00 00 00 1200 HEX 00000000110000000000000008000000 95A3: 00 11 00 00 00 00 00 00 95AB: 00 08 00 00 00 95B0: 00 00 00 1201 HEX 00000000000000000000000800000011 95B3: 00 00 00 00 00 00 00 00 95BB: 08 00 00 00 11 95C0: 00 00 00 1202 HEX 00000000000000000000000000000000 95C3: 00 00 00 00 00 00 00 00 95CB: 00 00 00 00 00 95D0: 00 44 00 1203 HEX 00440000000000000000000000000000 95D3: 00 00 00 00 00 00 00 00 95DB: 00 00 00 00 00 95E0: 00 00 00 1204 HEX 00000000000000190000110000000000 95E3: 00 00 00 00 19 00 00 11 95EB: 00 00 00 00 00 95F0: 08 22 00 1205 HEX 08220000000000000019000000000000 95F3: 00 00 00 00 00 00 19 00 95FB: 00 00 00 00 00 1206 1207 SAV ARTSCI70 Object saved as ARTSCI70,A$8300,L$1300 --End assembly, 4864 bytes, Errors: 0 Symbol table - alphabetical order: ? ARTSCI70 =$8300 CASE =$8522 CASE_0 =$8568 CASE_1 =$85DA CASE_2 =$85E0 CASE_3 =$8652 CASE_4 =$8658 CASE_5 =$86CA CASE_6 =$86D0 CASE_LISTH =$876E CASE_LISTL =$8767 CH =$24 CHAR2_LINE0 =$D2 CHAR2_LINE1 =$D4 CHAR2_LINE2 =$D6 CHAR2_LINE3 =$D8 CHAR2_LINE4 =$DA CHAR2_LINE5 =$DC CHAR2_LINE6 =$DE CHAR2_LINE7 =$D0 CHAR_LINE0 =$D0 CHAR_LINE1 =$D2 CHAR_LINE2 =$D4 CHAR_LINE3 =$D6 CHAR_LINE4 =$D8 CHAR_LINE5 =$DA CHAR_LINE6 =$DC CHAR_LINE7 =$DE CHAR_SAV =$8775 CLEAR_LINE =$8814 CLEAR_SCREEN =$889F CLREOL =$8837 CLREOL_FROMY =$8819 CLREOP =$8867 COPY_LINE =$87EE COPY_POINTER =$87BB COUT1 =$FDF0 CSWH =$37 CSWL =$36 CURSOR_0_0 =$84A9 CV =$25 CV_SAVE =$8309 DOWN =$849A DO_INIT =$830A DO_SPEC_KEYS =$83AF DSP_CHAR =$8742 FIRST_COL =$84DC FONT_BYT0L1 =$8A00 FONT_BYT0L2 =$8C00 FONT_BYT0L3 =$8E00 FONT_BYT0L4 =$9000 FONT_BYT0L5 =$9200 FONT_BYT0L6 =$9400 FONT_BYT1L1 =$8A80 FONT_BYT1L2 =$8C80 FONT_BYT1L3 =$8E80 FONT_BYT1L4 =$9080 FONT_BYT1L5 =$9280 FONT_BYT1L6 =$9480 FONT_BYT2L1 =$8B00 FONT_BYT2L2 =$8D00 FONT_BYT2L3 =$8F00 FONT_BYT2L4 =$9100 FONT_BYT2L5 =$9300 FONT_BYT2L6 =$9500 FONT_BYT3L1 =$8B80 FONT_BYT3L2 =$8D80 FONT_BYT3L3 =$8F80 FONT_BYT3L4 =$9180 FONT_BYT3L5 =$9380 FONT_BYT3L6 =$9580 GO_SCROLL_UP =$84A6 H832B =$832B ? H835D =$835D H8379 =$8379 H8388 =$8388 H8393 =$8393 H83B1 =$83B1 H83BB =$83BB H83C6 =$83C6 H843E =$843E H8764 =$8764 H87F0 =$87F0 H881B =$881B H8843 =$8843 H885B =$885B H885F =$885F H886D =$886D H887A =$887A H8889 =$8889 H8892 =$8892 H88A3 =$88A3 H88CC =$88CC HGR_DATAH =$83FA HGR_DATAL =$83E2 HIRES =$C057 INVFLG =$32 INV_NORM =$8308 IN_70 =$88B9 KEY =$C000 KEY_BUFF =$88F0 KEY_BUFF_PTR =$28 KNOWN_RTS =$FF58 KSWH =$39 KSWL =$38 LC_VIDEO =$0AC2 LOWSCR =$C054 MASK_AND =$C0 MASK_BYTE_A =$84CE MASK_BYTE_B =$84D5 MASK_EOR =$C1 MD MASK_LINE =$8000 MD MASK_LINEZ =$8000 MIXCLR =$C052 NEXT_LINE =$8496 OUT_40 =$84B2 OUT_70 =$8366 READY_NEXT =$8831 REST_REG =$83A5 SAVE_ACC =$8305 SAVE_X =$8306 SAVE_Y =$8307 SCREEN =$2000 SCROLL_UP =$8880 ? SET_INV =$84C2 MD SET_MASKS =$8000 SET_NORM =$84C8 SET_SCRN_PTR =$843A SET_SCRN_PTR2=$8776 SPECIAL_KEYS =$83C7 SPEC_KEYS_SUB=$83D0 STROBE =$C010 SV_MK_BYTE_B =$C2 TXTCLR =$C050 TXTSET =$C051 WNDBTM =$23 WNDLFT =$20 WNDTOP =$22 WNDWDTH =$21 WORK_LINE0 =$C2 WORK_LINE1 =$C4 WORK_LINE2 =$C6 WORK_LINE3 =$C8 WORK_LINE4 =$CA WORK_LINE5 =$CC WORK_LINE6 =$CE WORK_LINE7 =$C0 Symbol table - numerical order: WNDLFT =$20 WNDWDTH =$21 WNDTOP =$22 WNDBTM =$23 CH =$24 CV =$25 KEY_BUFF_PTR =$28 INVFLG =$32 CSWL =$36 CSWH =$37 KSWL =$38 KSWH =$39 MASK_AND =$C0 WORK_LINE7 =$C0 MASK_EOR =$C1 SV_MK_BYTE_B =$C2 WORK_LINE0 =$C2 WORK_LINE1 =$C4 WORK_LINE2 =$C6 WORK_LINE3 =$C8 WORK_LINE4 =$CA WORK_LINE5 =$CC WORK_LINE6 =$CE CHAR_LINE0 =$D0 CHAR2_LINE7 =$D0 CHAR_LINE1 =$D2 CHAR2_LINE0 =$D2 CHAR_LINE2 =$D4 CHAR2_LINE1 =$D4 CHAR_LINE3 =$D6 CHAR2_LINE2 =$D6 CHAR_LINE4 =$D8 CHAR2_LINE3 =$D8 CHAR_LINE5 =$DA CHAR2_LINE4 =$DA CHAR_LINE6 =$DC CHAR2_LINE5 =$DC CHAR_LINE7 =$DE CHAR2_LINE6 =$DE LC_VIDEO =$0AC2 SCREEN =$2000 MD SET_MASKS =$8000 MD MASK_LINEZ =$8000 MD MASK_LINE =$8000 ? ARTSCI70 =$8300 SAVE_ACC =$8305 SAVE_X =$8306 SAVE_Y =$8307 INV_NORM =$8308 CV_SAVE =$8309 DO_INIT =$830A H832B =$832B ? H835D =$835D OUT_70 =$8366 H8379 =$8379 H8388 =$8388 H8393 =$8393 REST_REG =$83A5 DO_SPEC_KEYS =$83AF H83B1 =$83B1 H83BB =$83BB H83C6 =$83C6 SPECIAL_KEYS =$83C7 SPEC_KEYS_SUB=$83D0 HGR_DATAL =$83E2 HGR_DATAH =$83FA SET_SCRN_PTR =$843A H843E =$843E NEXT_LINE =$8496 DOWN =$849A GO_SCROLL_UP =$84A6 CURSOR_0_0 =$84A9 OUT_40 =$84B2 ? SET_INV =$84C2 SET_NORM =$84C8 MASK_BYTE_A =$84CE MASK_BYTE_B =$84D5 FIRST_COL =$84DC CASE =$8522 CASE_0 =$8568 CASE_1 =$85DA CASE_2 =$85E0 CASE_3 =$8652 CASE_4 =$8658 CASE_5 =$86CA CASE_6 =$86D0 DSP_CHAR =$8742 H8764 =$8764 CASE_LISTL =$8767 CASE_LISTH =$876E CHAR_SAV =$8775 SET_SCRN_PTR2=$8776 COPY_POINTER =$87BB COPY_LINE =$87EE H87F0 =$87F0 CLEAR_LINE =$8814 CLREOL_FROMY =$8819 H881B =$881B READY_NEXT =$8831 CLREOL =$8837 H8843 =$8843 H885B =$885B H885F =$885F CLREOP =$8867 H886D =$886D H887A =$887A SCROLL_UP =$8880 H8889 =$8889 H8892 =$8892 CLEAR_SCREEN =$889F H88A3 =$88A3 IN_70 =$88B9 H88CC =$88CC KEY_BUFF =$88F0 FONT_BYT0L1 =$8A00 FONT_BYT1L1 =$8A80 FONT_BYT2L1 =$8B00 FONT_BYT3L1 =$8B80 FONT_BYT0L2 =$8C00 FONT_BYT1L2 =$8C80 FONT_BYT2L2 =$8D00 FONT_BYT3L2 =$8D80 FONT_BYT0L3 =$8E00 FONT_BYT1L3 =$8E80 FONT_BYT2L3 =$8F00 FONT_BYT3L3 =$8F80 FONT_BYT0L4 =$9000 FONT_BYT1L4 =$9080 FONT_BYT2L4 =$9100 FONT_BYT3L4 =$9180 FONT_BYT0L5 =$9200 FONT_BYT1L5 =$9280 FONT_BYT2L5 =$9300 FONT_BYT3L5 =$9380 FONT_BYT0L6 =$9400 FONT_BYT1L6 =$9480 FONT_BYT2L6 =$9500 FONT_BYT3L6 =$9580 KEY =$C000 STROBE =$C010 TXTCLR =$C050 TXTSET =$C051 MIXCLR =$C052 LOWSCR =$C054 HIRES =$C057 COUT1 =$FDF0 KNOWN_RTS =$FF58