Edilbert Kirk 01-Nov-2012 * = $e000 ; *** e000 *** Commodore 8296 ; ****** EDITOR ; ****** 8 e000 4c 4b e0 JMP RESET_EDITOR 9 e003 4c a7 e0 JMP GETKEY 10 e006 4c 16 e1 JMP INPUT_CHARACTER 11 e009 4c 02 e2 JMP ChrOutScreen 12 e00c 4c 42 e4 JMP IRQ_MAIN 13 e00f 4c 55 e4 JMP IRQ_NORMAL 14 e012 4c 00 e6 JMP END_OF_IRQ 15 e015 4c 51 e0 JMP CLEAR_WINDOW 16 e018 4c ca eb JMP CRT_TEXT_MODE 17 e01b 4c df eb JMP SET_CRT_GRAPHICS 18 e01e 4c c2 eb JMP PROGRAM_CRT 19 e021 4c c8 e3 JMP SCROLL_WINDOW_DOWN 20 e024 4c e3 e3 JMP SCROLL_WINDOW_UP 21 e027 4c be e4 JMP OLD_SCAN_KEYBOARD 22 e02a 4c a7 e6 JMP BEEP 23 e02d 4c a7 e6 JMP BEEP 24 e030 4c e1 e1 JMP SET_TOP_LEFT_CORNER 25 e033 4c dc e1 JMP SET_BOTTOM_RIGHT_CORNER ; *************** SET_REPEAT_MODE ; *************** 31 e036 ea NOP 32 e037 ea NOP 33 e038 60 RTS 34 e039 aa aa aa .FILL $e04b-* ($aa) ; 18 bytes ; ************ RESET_EDITOR ; ************ 40 e04b 20 0f e6 JSR INIT_EDITOR 41 e04e 20 d0 eb JSR SET_CRT_TXT_NEW ; ************ CLEAR_WINDOW ; ************ 47 e051 a6 e0 LDX TopMargin 48 e053 ca DEX 49 e054 e8 Be054 INX 50 e055 20 d6 e6 JSR Cursor_BOL 51 e058 20 c1 e1 JSR Erase_To_EOL 52 e05b e4 e1 CPX BotMargin 53 e05d 90 f5 BCC Be054 ; *********** CURSOR_HOME ; *********** 59 e05f a6 e0 LDX TopMargin 60 e061 86 d8 STX CursorRow ; ****************** CURSOR_LEFT_MARGIN ; ****************** 66 e063 a4 e2 LDY LefMargin 67 e065 84 c6 STY CursorCol ; ***************** UPDATE_CURSOR_ROW ; ***************** 73 e067 a6 d8 LDX CursorRow 74 e069 4c d9 e6 JMP Update_ScrPtr 75 e06c 4c d6 e6 JMP Cursor_BOL ; ********** UPDATE_PNT ; ********** 81 e06f 4c d9 e6 JMP Update_ScrPtr 82 e072 c8 Me072 INY 83 e073 84 c6 STY CursorCol 84 e075 4c 99 e1 JMP IRQ_EPILOG 85 e078 aa TAX 86 e079 aa TAX ; ***************** OLD_CRT_TEXT_MODE ; ***************** 92 e07a 4c ca eb JMP CRT_TEXT_MODE 93 e07d ea NOP 94 e07e ea NOP 95 e07f ea NOP 96 e080 ea NOP 97 e081 ea NOP ; ********************* OLD_CRT_GRAPHICS_MODE ; ********************* 103 e082 4c df eb JMP SET_CRT_GRAPHICS 104 e085 ea NOP 105 e086 ea NOP 106 e087 ea NOP ; *************** OLD_PROGRAM_CRT ; *************** 112 e088 85 c7 STA SAL 113 e08a 86 c8 STX SAL+1 114 e08c ad 4c e8 LDA VIA_PCR 115 e08f 29 f0 AND #$f0 116 e091 85 d1 STA FNLEN 117 e093 98 TYA 118 e094 05 d1 ORA FNLEN 119 e096 8d 4c e8 STA VIA_PCR 120 e099 a0 11 LDY #$11 121 e09b b1 c7 Be09b LDA (SAL),Y 122 e09d 8c 80 e8 STY CRT_Address 123 e0a0 8d 81 e8 STA CRT_Status 124 e0a3 88 DEY 125 e0a4 10 f5 BPL Be09b 126 e0a6 60 RTS ; ****** GETKEY ; ****** 132 e0a7 ac 6f 02 LDY KEYD 133 e0aa a2 00 LDX #0 ; scroll keyboard buffer 134 e0ac bd 70 02 Getkey_1 LDA KEYD+1,X 135 e0af 9d 6f 02 STA KEYD,X 136 e0b2 e8 INX 137 e0b3 e4 9e CPX CharsInBuffer 138 e0b5 d0 f5 BNE Getkey_1 139 e0b7 c6 9e DEC CharsInBuffer 140 e0b9 98 TYA 141 e0ba 58 CLI 142 e0bb 60 RTS ; ******* GetLine ; ******* 148 e0bc 20 8c e6 JSR ChrOutMarginBeep ; ******** GetLin10 ; ******** 154 e0bf a5 9e LDA CharsInBuffer 155 e0c1 85 a7 STA Blink ; 0 chars -> blink cursor 156 e0c3 f0 fa BEQ GetLin10 ; loop until char in buffer 157 e0c5 78 SEI 158 e0c6 a5 aa LDA BlinkPhase 159 e0c8 f0 09 BEQ Be0d3 160 e0ca a5 a9 LDA CursorChar 161 e0cc a0 00 LDY #0 162 e0ce 84 aa STY BlinkPhase 163 e0d0 20 06 e6 JSR Restore_Char_at_Cursor 164 e0d3 20 a7 e0 Be0d3 JSR GETKEY 165 e0d6 c9 83 CMP #$83 ; RUN key ? 166 e0d8 d0 10 BNE Be0ea 167 e0da 78 SEI 168 e0db a2 09 LDX #9 169 e0dd 86 9e STX CharsInBuffer 170 e0df bd 20 e7 Be0df LDA RUN_String-1,X 171 e0e2 9d 6e 02 STA KEYD-1,X 172 e0e5 ca DEX 173 e0e6 d0 f7 BNE Be0df 174 e0e8 f0 d5 BEQ GetLin10 175 e0ea c9 0d Be0ea CMP #13 ; RETURN ? 176 e0ec d0 ce BNE GetLine 177 e0ee a4 d5 LDY RigMargin 178 e0f0 84 ac STY InputFlag ; # 0 -> Screen Input 179 e0f2 b1 c4 Be0f2 LDA (ScrPtr),Y 180 e0f4 c9 20 CMP #$20 ; Ignore trailing blanks 181 e0f6 d0 03 BNE Be0fb 182 e0f8 88 DEY 183 e0f9 d0 f7 BNE Be0f2 184 e0fb c8 Be0fb INY 185 e0fc 84 a1 STY LastInputCol 186 e0fe 20 cb e1 JSR CURSOR_TO_LEFT_MARGIN 187 e101 ea NOP 188 e102 84 cd STY QuoteMode ; = 0 (off) 189 e104 a5 a3 LDA InputRow 190 e106 30 19 BMI Screen_Input 191 e108 c5 d8 CMP CursorRow 192 e10a d0 15 BNE Screen_Input 193 e10c a5 a4 LDA InputCol 194 e10e 85 c6 STA CursorCol 195 e110 c5 a1 CMP LastInputCol 196 e112 90 0d BCC Screen_Input 197 e114 b0 2e BCS Be144 ; *************** INPUT_CHARACTER ; *************** 203 e116 98 TYA 204 e117 48 PHA 205 e118 8a TXA 206 e119 48 PHA 207 e11a 6c e9 00 JMP (SCRIV) ; ********************* DEFAULT_SCREEN_VECTOR ; ********************* 213 e11d a5 ac LDA InputFlag 214 e11f f0 9e BEQ GetLin10 ; ************ Screen_Input ; ************ 220 e121 20 3a eb JSR Jeb3a 221 e124 70 15 BVS Be13b 222 e126 ea NOP 223 e127 29 3f AND #$3f ; '?' 224 e129 06 d9 ASL DATAX 225 e12b 24 d9 BIT DATAX 226 e12d 10 02 BPL Be131 227 e12f 09 80 ORA #$80 228 e131 90 04 Be131 BCC Be137 229 e133 a6 cd LDX QuoteMode 230 e135 d0 04 BNE Be13b 231 e137 70 02 Be137 BVS Be13b 232 e139 09 40 ORA #$40 ; '@' 233 e13b ea Be13b NOP 234 e13c ea NOP 235 e13d 20 31 eb JSR Jeb31 236 e140 c4 a1 CPY LastInputCol 237 e142 d0 17 BNE Be15b 238 e144 a9 00 Be144 LDA #0 239 e146 85 ac STA InputFlag 240 e148 a9 0d LDA #13 241 e14a a6 af LDX DFLTN 242 e14c e0 03 CPX #3 243 e14e f0 06 BEQ Be156 244 e150 a6 b0 LDX DFLTO 245 e152 e0 03 CPX #3 246 e154 f0 03 BEQ Be159 247 e156 20 02 e2 Be156 JSR ChrOutScreen 248 e159 a9 0d Be159 LDA #13 249 e15b 85 d9 Be15b STA DATAX 250 e15d 68 PLA 251 e15e aa TAX 252 e15f 68 PLA 253 e160 a8 TAY 254 e161 a5 d9 LDA DATAX 255 e163 c9 de CMP #$de 256 e165 d0 02 BNE Be169 257 e167 a9 ff LDA #$ff 258 e169 60 Be169 RTS ; ********** CheckQuote ; ********** 264 e16a c9 22 CMP #$22 ; '"' 265 e16c d0 08 BNE Be176 266 e16e a5 cd LDA QuoteMode 267 e170 49 01 EOR #1 268 e172 85 cd STA QuoteMode 269 e174 a9 22 LDA #$22 ; '"' 270 e176 60 Be176 RTS ; ******************* CHARACTER_TO_SCREEN ; ******************* 276 e177 09 40 ORA #$40 ; '@' 277 e179 a6 9f Me179 LDX ReverseFlag 278 e17b f0 02 BEQ Be17f 279 e17d 09 80 Me17d ORA #$80 280 e17f 20 87 ea Be17f JSR CHROUT_WITH_DIACRITICS 281 e182 70 15 BVS IRQ_EPILOG 282 e184 ea NOP 283 e185 20 06 e6 JSR Restore_Char_at_Cursor 284 e188 e6 c6 INC CursorCol 285 e18a a4 d5 LDY RigMargin 286 e18c c4 c6 CPY CursorCol 287 e18e b0 09 BCS IRQ_EPILOG 288 e190 a6 d8 LDX CursorRow 289 e192 20 a3 e3 Me192 JSR Cursor_Down 290 e195 a4 e2 LDY LefMargin 291 e197 84 c6 STY CursorCol ; ********** IRQ_EPILOG ; ********** 297 e199 a9 00 LDA #0 298 e19b 85 e8 STA HOMECT 299 e19d 68 Me19d PLA 300 e19e a8 TAY 301 e19f a5 dc LDA INSRT 302 e1a1 f0 02 BEQ Be1a5 303 e1a3 46 cd LSR QuoteMode 304 e1a5 68 Be1a5 PLA 305 e1a6 aa TAX 306 e1a7 68 PLA 307 e1a8 58 CLI 308 e1a9 60 RTS ; ****************************** CURSOR_TO_END_OF_PREVIOUS_LINE ; ****************************** 314 e1aa a4 d5 LDY RigMargin 315 e1ac a6 e0 LDX TopMargin 316 e1ae e4 d8 CPX CursorRow 317 e1b0 90 08 BCC Be1ba 318 e1b2 a4 e2 LDY LefMargin 319 e1b4 84 c6 STY CursorCol 320 e1b6 68 PLA 321 e1b7 68 PLA 322 e1b8 d0 df BNE IRQ_EPILOG 323 e1ba c6 d8 Be1ba DEC CursorRow 324 e1bc 84 c6 STY CursorCol 325 e1be 4c 67 e0 JMP UPDATE_CURSOR_ROW ; ************ Erase_To_EOL ; ************ 331 e1c1 a9 20 LDA #$20 ; ' ' 332 e1c3 c8 Be1c3 INY 333 e1c4 91 c4 STA (ScrPtr),Y 334 e1c6 c4 d5 CPY RigMargin 335 e1c8 90 f9 BCC Be1c3 336 e1ca 60 RTS ; ********************* CURSOR_TO_LEFT_MARGIN ; ********************* 342 e1cb a4 e2 LDY LefMargin 343 e1cd 84 c6 STY CursorCol 344 e1cf a0 00 LDY #0 345 e1d1 60 RTS ; ****************** FULL_SCREEN_WINDOW ; ****************** 351 e1d2 a9 00 LDA #0 352 e1d4 aa TAX 353 e1d5 20 e1 e1 JSR SET_TOP_LEFT_CORNER 354 e1d8 a9 18 LDA #$18 355 e1da a2 4f LDX #$4f ; 'O' ; *********************** SET_BOTTOM_RIGHT_CORNER ; *********************** 361 e1dc 85 e1 STA BotMargin 362 e1de 86 d5 STX RigMargin 363 e1e0 60 RTS ; ******************* SET_TOP_LEFT_CORNER ; ******************* 369 e1e1 85 e0 STA TopMargin 370 e1e3 86 e2 STX LefMargin 371 e1e5 60 RTS 372 e1e6 aa aa aa .FILL $e202-* ($aa) ; 28 bytes ; ************ ChrOutScreen ; ************ 378 e202 48 PHA 379 e203 85 d9 STA DATAX 380 e205 8a TXA 381 e206 48 PHA 382 e207 98 TYA 383 e208 48 PHA 384 e209 6c eb 00 JMP (SCROV) ; -> ChrOutNormal ; ************ ChrOutNormal ; ************ 390 e20c a9 00 LDA #0 391 e20e 85 ac STA InputFlag 392 e210 20 27 ea JSR Jea27 393 e213 70 84 BVS IRQ_EPILOG 394 e215 ea NOP 395 e216 c9 1b CMP #$1b ; 396 e218 d0 03 BNE Be21d 397 e21a 4c bd e3 JMP Escape 398 e21d a5 d9 Be21d LDA DATAX 399 e21f 10 03 BPL Be224 400 e221 4c f4 e2 JMP ChrOutHighBitSet 401 e224 c9 0d Be224 CMP #13 ; 402 e226 d0 03 BNE Be22b 403 e228 4c b6 e3 JMP ScreenReturn 404 e22b c9 20 Be22b CMP #$20 ; 405 e22d 90 08 BCC Be237 ; -> Control code 406 e22f 29 3f AND #$3f ; '?' 407 e231 20 6a e1 JSR CheckQuote 408 e234 4c 79 e1 JMP Me179 ; -> Print to screen 409 e237 a6 dc Be237 LDX INSRT 410 e239 f0 03 BEQ Be23e 411 e23b 4c 7d e1 JMP Me17d ; -> Print reverse to screen 412 e23e c9 14 Be23e CMP #$14 ; 413 e240 d0 20 BNE Be262 414 e242 a4 e2 LDY LefMargin 415 e244 c4 c6 CPY CursorCol 416 e246 90 05 BCC Be24d 417 e248 20 aa e1 JSR CURSOR_TO_END_OF_PREVIOUS_LINE 418 e24b 10 0f BPL Be25c 419 e24d c6 c6 Be24d DEC CursorCol 420 e24f a4 c6 LDY CursorCol 421 e251 c8 Be251 INY 422 e252 b1 c4 LDA (ScrPtr),Y 423 e254 88 DEY 424 e255 91 c4 STA (ScrPtr),Y 425 e257 c8 INY 426 e258 c4 d5 CPY RigMargin 427 e25a d0 f5 BNE Be251 428 e25c a9 20 Be25c LDA #$20 ; ' ' 429 e25e 91 c4 STA (ScrPtr),Y 430 e260 d0 37 BNE Be299 431 e262 a6 cd Be262 LDX QuoteMode 432 e264 f0 03 BEQ Be269 433 e266 4c 7d e1 JMP Me17d 434 e269 c9 12 Be269 CMP #$12 ; 435 e26b d0 02 BNE Be26f 436 e26d 85 9f STA ReverseFlag 437 e26f c9 13 Be26f CMP #$13 ; 438 e271 d0 10 BNE Be283 439 e273 a5 e8 LDA HOMECT ; 2 x sets window to full screen 440 e275 10 04 BPL Be27b 441 e277 20 d2 e1 JSR FULL_SCREEN_WINDOW 442 e27a 18 CLC 443 e27b 66 e8 Be27b ROR HOMECT 444 e27d 20 5f e0 JSR CURSOR_HOME 445 e280 4c 9d e1 JMP Me19d 446 e283 c9 1d Be283 CMP #$1d ; 447 e285 d0 0b BNE Be292 448 e287 c8 INY 449 e288 84 c6 STY CursorCol 450 e28a 88 DEY 451 e28b c4 d5 CPY RigMargin 452 e28d 90 0a BCC Be299 453 e28f 4c 92 e1 JMP Me192 454 e292 c9 11 Be292 CMP #$11 ; 455 e294 d0 06 BNE Be29c 456 e296 20 a3 e3 JSR Cursor_Down 457 e299 4c 99 e1 Be299 JMP IRQ_EPILOG 458 e29c c9 09 Be29c CMP #9 ; 459 e29e d0 30 BNE Be2d0 460 e2a0 20 70 e5 JSR JUMP_TO_TAB 461 e2a3 ac 3a 03 Be2a3 LDY NextTab 462 e2a6 ee 3a 03 INC NextTab 463 e2a9 c4 d5 CPY RigMargin 464 e2ab 90 09 BCC Be2b6 465 e2ad a5 d5 LDA RigMargin 466 e2af 85 c6 STA CursorCol 467 e2b1 ce 3a 03 DEC NextTab 468 e2b4 d0 e3 BNE Be299 469 e2b6 0e 3e 03 Be2b6 ASL DOS_Syntax 470 e2b9 d0 0a BNE Be2c5 471 e2bb e8 INX 472 e2bc e0 0a CPX #10 473 e2be f0 d9 BEQ Be299 474 e2c0 a9 01 LDA #1 475 e2c2 8d 3e 03 STA DOS_Syntax 476 e2c5 bd ee 03 Be2c5 LDA TABS_SET,X 477 e2c8 2d 3e 03 AND DOS_Syntax 478 e2cb f0 d6 BEQ Be2a3 479 e2cd 4c 72 e0 JMP Me072 480 e2d0 c9 16 Be2d0 CMP #$16 ; : Erase to EOL 481 e2d2 d0 0c BNE Be2e0 482 e2d4 a9 20 LDA #$20 ; ' ' 483 e2d6 88 DEY 484 e2d7 c8 Be2d7 INY 485 e2d8 91 c4 STA (ScrPtr),Y 486 e2da c4 d5 CPY RigMargin 487 e2dc 90 f9 BCC Be2d7 488 e2de b0 b9 BCS Be299 489 e2e0 c9 15 Be2e0 CMP #$15 ; 490 e2e2 f0 03 BEQ Be2e7 491 e2e4 4c 91 e5 JMP Scroll_Or-Select_Charset 492 e2e7 a5 e0 Be2e7 LDA TopMargin 493 e2e9 48 PHA 494 e2ea a5 d8 LDA CursorRow 495 e2ec 85 e0 STA TopMargin 496 e2ee 20 e3 e3 JSR SCROLL_WINDOW_UP 497 e2f1 4c ca e5 JMP Me5ca ; **************** ChrOutHighBitSet ; **************** 503 e2f4 29 7f AND #$7f 504 e2f6 c9 7f CMP #$7f 505 e2f8 d0 02 BNE Be2fc 506 e2fa a9 5e LDA #$5e ; '^' 507 e2fc c9 20 Be2fc CMP #$20 ; ' ' 508 e2fe 90 03 BCC Be303 509 e300 4c 77 e1 JMP CHARACTER_TO_SCREEN 510 e303 c9 0d Be303 CMP #13 ; 511 e305 d0 03 BNE Be30a 512 e307 4c b6 e3 JMP ScreenReturn 513 e30a a6 cd Be30a LDX QuoteMode 514 e30c d0 34 BNE Be342 515 e30e c9 14 CMP #$14 ; 516 e310 d0 2c BNE Be33e 517 e312 a4 d5 LDY RigMargin 518 e314 b1 c4 LDA (ScrPtr),Y 519 e316 c9 20 CMP #$20 ; ' ' 520 e318 d0 72 BNE Be38c 521 e31a c4 c6 CPY CursorCol 522 e31c 90 6e BCC Be38c 523 e31e f0 6c BEQ Be38c 524 e320 a4 d5 LDY RigMargin 525 e322 88 Be322 DEY 526 e323 b1 c4 LDA (ScrPtr),Y 527 e325 c8 INY 528 e326 91 c4 STA (ScrPtr),Y 529 e328 88 DEY 530 e329 c4 c6 CPY CursorCol 531 e32b d0 f5 BNE Be322 532 e32d a9 20 LDA #$20 ; ' ' 533 e32f 91 c4 STA (ScrPtr),Y 534 e331 a5 d5 LDA RigMargin 535 e333 38 SEC 536 e334 e5 c6 SBC CursorCol 537 e336 e5 dc SBC INSRT 538 e338 30 52 BMI Be38c 539 e33a e6 dc INC INSRT 540 e33c d0 4e BNE Be38c 541 e33e a6 dc Be33e LDX INSRT 542 e340 f0 05 BEQ Be347 543 e342 09 40 Be342 ORA #$40 ; '@' 544 e344 4c 7d e1 JMP Me17d 545 e347 c9 11 Be347 CMP #$11 ; 546 e349 d0 0d BNE Be358 547 e34b a6 e0 LDX TopMargin 548 e34d e4 d8 CPX CursorRow 549 e34f b0 3b BCS Be38c 550 e351 c6 d8 DEC CursorRow 551 e353 20 67 e0 JSR UPDATE_CURSOR_ROW 552 e356 d0 34 BNE Be38c 553 e358 c9 12 Be358 CMP #$12 ; 554 e35a d0 04 BNE Be360 555 e35c a9 00 LDA #0 556 e35e 85 9f STA ReverseFlag 557 e360 c9 1d Be360 CMP #$1d ; 558 e362 d0 0f BNE Be373 559 e364 a4 e2 LDY LefMargin 560 e366 c4 c6 CPY CursorCol 561 e368 90 05 BCC Be36f 562 e36a 20 aa e1 JSR CURSOR_TO_END_OF_PREVIOUS_LINE 563 e36d 10 1d BPL Be38c 564 e36f c6 c6 Be36f DEC CursorCol 565 e371 10 19 BPL Be38c 566 e373 c9 13 Be373 CMP #$13 ; 567 e375 d0 05 BNE Be37c 568 e377 20 51 e0 JSR CLEAR_WINDOW 569 e37a d0 10 BNE Be38c 570 e37c c9 09 Be37c CMP #9 ; 571 e37e d0 0f BNE Be38f 572 e380 20 70 e5 JSR JUMP_TO_TAB 573 e383 bd ee 03 LDA TABS_SET,X 574 e386 4d 3e 03 EOR DOS_Syntax 575 e389 9d ee 03 STA TABS_SET,X 576 e38c 4c 99 e1 Be38c JMP IRQ_EPILOG 577 e38f c9 16 Be38f CMP #$16 ; 578 e391 f0 03 BEQ Be396 579 e393 4c bc e5 JMP ProcControl_A 580 e396 a9 20 Be396 LDA #$20 ; ' ' 581 e398 a4 e2 LDY LefMargin 582 e39a c4 c6 Be39a CPY CursorCol 583 e39c b0 ee BCS Be38c 584 e39e 91 c4 STA (ScrPtr),Y 585 e3a0 c8 INY 586 e3a1 d0 f7 BNE Be39a ; *********** Cursor_Down ; *********** 592 e3a3 46 a3 LSR InputRow 593 e3a5 a6 d8 LDX CursorRow 594 e3a7 e4 e1 CPX BotMargin 595 e3a9 90 06 BCC Be3b1 596 e3ab 20 e3 e3 JSR SCROLL_WINDOW_UP 597 e3ae 4c 67 e0 JMP UPDATE_CURSOR_ROW 598 e3b1 e6 d8 Be3b1 INC CursorRow 599 e3b3 4c 67 e0 JMP UPDATE_CURSOR_ROW ; ************ ScreenReturn ; ************ 605 e3b6 a4 e2 LDY LefMargin 606 e3b8 84 c6 STY CursorCol 607 e3ba 20 a3 e3 JSR Cursor_Down ; ****** Escape ; ****** 613 e3bd a9 00 LDA #0 614 e3bf 85 dc STA INSRT 615 e3c1 85 9f STA ReverseFlag 616 e3c3 85 cd STA QuoteMode 617 e3c5 4c 99 e1 JMP IRQ_EPILOG ; ****************** SCROLL_WINDOW_DOWN ; ****************** 623 e3c8 a6 e1 LDX BotMargin 624 e3ca e8 INX 625 e3cb ca Be3cb DEX 626 e3cc 20 d6 e6 JSR Cursor_BOL 627 e3cf e4 e0 CPX TopMargin 628 e3d1 f0 2b BEQ Be3fe 629 e3d3 ca DEX 630 e3d4 20 d1 e6 JSR Set_Screen_SAL 631 e3d7 e8 INX 632 e3d8 c8 Be3d8 INY 633 e3d9 b1 c7 LDA (SAL),Y 634 e3db 91 c4 STA (ScrPtr),Y 635 e3dd c4 d5 CPY RigMargin 636 e3df 90 f7 BCC Be3d8 637 e3e1 b0 e8 BCS Be3cb ; **************** SCROLL_WINDOW_UP ; **************** 643 e3e3 a6 e0 LDX TopMargin 644 e3e5 ca DEX 645 e3e6 e8 Be3e6 INX 646 e3e7 20 d6 e6 JSR Cursor_BOL 647 e3ea e4 e1 CPX BotMargin 648 e3ec b0 10 BCS Be3fe 649 e3ee e8 INX 650 e3ef 20 d1 e6 JSR Set_Screen_SAL 651 e3f2 ca DEX 652 e3f3 c8 Be3f3 INY 653 e3f4 b1 c7 LDA (SAL),Y 654 e3f6 91 c4 STA (ScrPtr),Y 655 e3f8 c4 d5 CPY RigMargin 656 e3fa 90 f7 BCC Be3f3 657 e3fc b0 e8 BCS Be3e6 658 e3fe 20 c1 e1 Be3fe JSR Erase_To_EOL 659 e401 a5 9b LDA STKEY 660 e403 a2 ff LDX #$ff 661 e405 a0 00 LDY #0 662 e407 c9 a0 CMP #$a0 663 e409 d0 10 BNE Be41b 664 e40b e4 9b Be40b CPX STKEY 665 e40d d0 fc BNE Be40b 666 e40f a5 9b Be40f LDA STKEY 667 e411 0a ASL A 668 e412 c9 40 CMP #$40 ; '@' 669 e414 f0 09 BEQ Be41f 670 e416 20 35 f3 JSR Jf335 671 e419 d0 f4 BNE Be40f 672 e41b c9 20 Be41b CMP #$20 ; ' ' 673 e41d d0 08 BNE Be427 674 e41f ca Be41f DEX 675 e420 d0 fd BNE Be41f 676 e422 88 DEY 677 e423 d0 fa BNE Be41f 678 e425 84 9e STY CharsInBuffer 679 e427 60 Be427 RTS 680 e428 a9 06 Be428 LDA #6 681 e42a 85 f8 STA TMPCOUNT ; ***** Je42c ; ***** 687 e42c 20 0e ec JSR Jec0e 688 e42f c6 f8 DEC TMPCOUNT 689 e431 f0 f5 BEQ Be428 690 e433 60 RTS 691 e434 aa aa aa .FILL $e442-* ($aa) ; 14 bytes ; ******** IRQ_MAIN ; ******** 697 e442 48 PHA 698 e443 8a TXA 699 e444 48 PHA 700 e445 98 TYA 701 e446 48 PHA 702 e447 ba TSX 703 e448 bd 04 01 LDA V0104,X 704 e44b 29 10 AND #16 705 e44d f0 03 BEQ Be452 706 e44f 6c 92 00 JMP (CBINV) 707 e452 6c 90 00 Be452 JMP (CINV) ; ********** IRQ_NORMAL ; ********** 713 e455 20 2c e4 JSR Je42c 714 e458 a5 a7 LDA Blink 715 e45a d0 18 BNE Be474 716 e45c c6 a8 DEC BLNCT 717 e45e d0 14 BNE Be474 718 e460 a9 14 LDA #$14 719 e462 85 a8 STA BLNCT 720 e464 a4 c6 LDY CursorCol 721 e466 46 aa LSR BlinkPhase 722 e468 b1 c4 LDA (ScrPtr),Y 723 e46a b0 04 BCS Be470 724 e46c e6 aa INC BlinkPhase 725 e46e 85 a9 STA CursorChar 726 e470 49 80 Be470 EOR #$80 727 e472 91 c4 STA (ScrPtr),Y 728 e474 a0 00 Be474 LDY #0 729 e476 ad 10 e8 LDA PIA1_Port_A ; Keyboard row select 730 e479 0a ASL A 731 e47a 0a ASL A 732 e47b 0a ASL A 733 e47c 10 09 BPL Be487 734 e47e 84 f9 STY CAS1 735 e480 ad 13 e8 LDA PIA1_Cont_B 736 e483 09 08 ORA #8 737 e485 d0 09 BNE Be490 738 e487 a5 f9 Be487 LDA CAS1 739 e489 d0 08 BNE Be493 740 e48b ad 13 e8 LDA PIA1_Cont_B 741 e48e 29 f7 AND #$f7 742 e490 8d 13 e8 Be490 STA PIA1_Cont_B 743 e493 90 09 Be493 BCC Be49e 744 e495 84 fa STY CAS2 745 e497 ad 40 e8 LDA VIA_Port_B 746 e49a 09 10 ORA #16 747 e49c d0 09 BNE Be4a7 748 e49e a5 fa Be49e LDA CAS2 749 e4a0 d0 08 BNE Be4aa 750 e4a2 ad 40 e8 LDA VIA_Port_B 751 e4a5 29 ef AND #$ef 752 e4a7 8d 40 e8 Be4a7 STA VIA_Port_B 753 e4aa 20 24 e9 Be4aa JSR SCAN_KEYBOARD 754 e4ad 4c 00 e6 JMP END_OF_IRQ 755 e4b0 aa aa aa .FILL $e4be-* ($aa) ; 14 bytes ; ***************** OLD_SCAN_KEYBOARD ; ***************** 761 e4be a9 ff LDA #$ff 762 e4c0 85 a6 STA Key_Image 763 e4c2 a5 9e LDA CharsInBuffer 764 e4c4 48 PHA 765 e4c5 20 24 e9 JSR SCAN_KEYBOARD 766 e4c8 68 PLA 767 e4c9 c5 9e CMP CharsInBuffer 768 e4cb 90 18 BCC Be4e5 769 e4cd aa TAX 770 e4ce a5 a6 LDA Key_Image 771 e4d0 c9 ff CMP #$ff 772 e4d2 f0 11 BEQ Be4e5 773 e4d4 e4 e3 CPX XMAX 774 e4d6 b0 05 BCS Be4dd 775 e4d8 9d 6f 02 STA KEYD,X 776 e4db e6 9e INC CharsInBuffer 777 e4dd c9 03 Be4dd CMP #3 ; STOP 778 e4df d0 04 BNE Be4e5 779 e4e1 a9 ef LDA #$ef 780 e4e3 85 9b STA STKEY 781 e4e5 60 Be4e5 RTS 782 e4e6 aa aa aa .FILL $e54e-* ($aa) ; 104 bytes ; *************** SELECT_CHAR_SET ; *************** 788 e54e c9 01 CMP #1 789 e550 d0 05 BNE Be557 790 e552 20 d0 eb Be552 JSR SET_CRT_TXT_NEW 791 e555 30 50 BMI Be5a7 792 e557 c9 02 Be557 CMP #2 793 e559 f0 f7 BEQ Be552 794 e55b d0 3e BNE Be59b ; ************* ProcControl_B ; ************* 800 e55d c9 01 CMP #1 801 e55f d0 06 BNE Be567 802 e561 20 f8 eb JSR CLEAR_KEYFLAGS_210 803 e564 4c 99 e1 JMP IRQ_EPILOG 804 e567 c9 02 Be567 CMP #2 ; $82: Switch to old (PET) char set 805 e569 d0 67 BNE ProcControl_C 806 e56b 20 ff eb JSR SET_CRT_TXT_OLD 807 e56e 30 37 BMI Be5a7 ; *********** JUMP_TO_TAB ; *********** 813 e570 a5 c6 LDA CursorCol 814 e572 29 f8 AND #$f8 815 e574 8d 3a 03 STA NextTab 816 e577 4a LSR A 817 e578 4a LSR A 818 e579 4a LSR A 819 e57a aa TAX 820 e57b a9 01 LDA #1 821 e57d 8d 3e 03 STA DOS_Syntax 822 e580 a4 c6 LDY CursorCol 823 e582 cc 3a 03 Me582 CPY NextTab 824 e585 f0 09 BEQ Be590 825 e587 0e 3e 03 ASL DOS_Syntax 826 e58a ee 3a 03 INC NextTab 827 e58d 4c 82 e5 JMP Me582 828 e590 60 Be590 RTS ; ************************ Scroll_Or-Select_Charset ; ************************ 834 e591 c9 19 CMP #$19 ; Ctrl Y -> Scroll window up 835 e593 d0 b9 BNE SELECT_CHAR_SET 836 e595 20 e3 e3 JSR SCROLL_WINDOW_UP 837 e598 4c d9 e5 JMP Me5d9 838 e59b c9 0f Be59b CMP #15 ; Ctrl O -> Set top left window corner 839 e59d d0 0b BNE Be5aa 840 e59f a5 d8 LDA CursorRow 841 e5a1 85 e0 STA TopMargin 842 e5a3 a5 c6 LDA CursorCol 843 e5a5 85 e2 STA LefMargin 844 e5a7 4c 99 e1 Be5a7 JMP IRQ_EPILOG 845 e5aa c9 0e Be5aa CMP #14 ; Ctrl N -> Text mode 846 e5ac d0 05 BNE Be5b3 847 e5ae 20 ca eb JSR CRT_TEXT_MODE 848 e5b1 30 f4 BMI Be5a7 849 e5b3 c9 07 Be5b3 CMP #7 ; Ctrl G -> Bell 850 e5b5 d0 f0 BNE Be5a7 851 e5b7 20 a7 e6 JSR BEEP 852 e5ba f0 eb BEQ Be5a7 ; ************* ProcControl_A ; ************* 858 e5bc c9 15 CMP #$15 ; Ctrl U -> Delete line 859 e5be d0 9d BNE ProcControl_B 860 e5c0 a5 e0 LDA TopMargin 861 e5c2 48 PHA 862 e5c3 a5 d8 LDA CursorRow 863 e5c5 85 e0 STA TopMargin 864 e5c7 20 c8 e3 JSR SCROLL_WINDOW_DOWN 865 e5ca 68 Me5ca PLA 866 e5cb 85 e0 STA TopMargin 867 e5cd 20 63 e0 JSR CURSOR_LEFT_MARGIN 868 e5d0 d0 18 BNE Be5ea ; ************* ProcControl_C ; ************* 874 e5d2 c9 19 CMP #$19 ; 155 -> Scroll window down 875 e5d4 d0 08 BNE Be5de 876 e5d6 20 c8 e3 JSR SCROLL_WINDOW_DOWN 877 e5d9 20 67 e0 Me5d9 JSR UPDATE_CURSOR_ROW 878 e5dc d0 0c BNE Be5ea 879 e5de c9 0f Be5de CMP #15 ; 143: -> Set lower right window corner 880 e5e0 d0 0b BNE Be5ed 881 e5e2 a5 d8 LDA CursorRow 882 e5e4 85 e1 STA BotMargin 883 e5e6 a5 c6 LDA CursorCol 884 e5e8 85 d5 STA RigMargin 885 e5ea 4c 99 e1 Be5ea JMP IRQ_EPILOG 886 e5ed c9 0e Be5ed CMP #14 ; 142: -> Graphics mode 887 e5ef d0 c2 BNE Be5b3 888 e5f1 20 df eb JSR SET_CRT_GRAPHICS 889 e5f4 30 f4 BMI Be5ea 890 e5f6 aa aa aa .FILL $e600-* ($aa) ; 10 bytes ; ********** END_OF_IRQ ; ********** 896 e600 68 PLA 897 e601 a8 TAY 898 e602 68 PLA 899 e603 aa TAX 900 e604 68 PLA 901 e605 40 RTI ; ********************** Restore_Char_at_Cursor ; ********************** 907 e606 a4 c6 LDY CursorCol 908 e608 91 c4 STA (ScrPtr),Y 909 e60a a9 02 LDA #2 910 e60c 85 a8 STA BLNCT 911 e60e 60 RTS ; *********** INIT_EDITOR ; *********** 917 e60f a9 7f LDA #$7f 918 e611 8d 4e e8 STA VIA_IER 919 e614 a2 6d LDX #$6d 920 e616 a9 00 LDA #0 921 e618 85 e8 STA HOMECT 922 e61a 95 8d Be61a STA TIME,X 923 e61c ca DEX 924 e61d 10 fb BPL Be61a 925 e61f 86 98 STX KEYFLAGS ; Set all flags 926 e621 a9 55 LDA #IRQ_NORMAL 929 e627 85 91 STA CINV+1 930 e629 a9 09 LDA #9 931 e62b 85 e3 STA XMAX 932 e62d a9 03 LDA #3 933 e62f 85 b0 STA DFLTO 934 e631 a9 0f LDA #15 935 e633 8d 10 e8 STA PIA1_Port_A ; Keyboard row select 936 e636 0a ASL A 937 e637 8d 40 e8 STA VIA_Port_B 938 e63a 8d 42 e8 STA VIA_DDR_B 939 e63d 8e 22 e8 STX PIA1_Port_B 940 e640 8e 45 e8 STX VIA_Timer_1_Hi 941 e643 a9 3d LDA #$3d ; '=' 942 e645 8d 13 e8 STA PIA1_Cont_B 943 e648 2c 12 e8 BIT PIA1_Port_B ; Keyboard row 944 e64b a9 3c LDA #$3c ; '<' 945 e64d 8d 21 e8 STA PIA1_Cont_A 946 e650 8d 23 e8 STA PIA1_Cont_B 947 e653 8d 11 e8 STA PIA1_Cont_A 948 e656 8e 22 e8 STX PIA1_Port_B 949 e659 a9 0e LDA #14 950 e65b 85 a8 STA BLNCT 951 e65d 85 a7 STA Blink 952 e65f 85 e6 STA DELAY 953 e661 85 e5 STA KOUNT 954 e663 8d 4e e8 STA VIA_IER 955 e666 20 d2 e1 JSR FULL_SCREEN_WINDOW 956 e669 a2 0c LDX #12 957 e66b a9 00 LDA #0 958 e66d 9d ee 03 Be66d STA TABS_SET,X 959 e670 ca DEX 960 e671 10 fa BPL Be66d 961 e673 a9 1d LDA #DEFAULT_SCREEN_VECTOR 963 e677 85 e9 STA SCRIV 964 e679 86 ea STX SCRIV+1 965 e67b a9 0c LDA #ChrOutNormal 967 e67f 85 eb STA SCROV 968 e681 86 ec STX SCROV+1 969 e683 a9 10 LDA #16 970 e685 85 e7 STA CHIME 971 e687 20 a4 e6 JSR Double_Beep 972 e68a f0 18 BEQ Double_Beep ; **************** ChrOutMarginBeep ; **************** 978 e68c 20 02 e2 JSR ChrOutScreen 979 e68f aa TAX 980 e690 a5 d5 LDA RigMargin 981 e692 38 SEC 982 e693 e5 c6 SBC CursorCol 983 e695 c9 05 CMP #5 984 e697 d0 37 BNE Be6d0 985 e699 8a TXA 986 e69a c9 1d CMP #$1d ; Cursor Right ? 987 e69c f0 06 BEQ Double_Beep 988 e69e 29 7f AND #$7f 989 e6a0 c9 20 CMP #$20 ; ' ' 990 e6a2 90 2c BCC Be6d0 ; *********** Double_Beep ; *********** 996 e6a4 20 a7 e6 JSR BEEP ; **** BEEP ; **** 1002 e6a7 a4 e7 LDY CHIME 1003 e6a9 f0 25 BEQ Be6d0 1004 e6ab a9 10 LDA #16 1005 e6ad 8d 4b e8 STA VIA_ACR 1006 e6b0 a9 0f LDA #15 1007 e6b2 8d 4a e8 STA VIA_Shift 1008 e6b5 a2 07 LDX #7 1009 e6b7 bd 4d e7 Be6b7 LDA SOUND_TAB-1,X 1010 e6ba 8d 48 e8 STA VIA_Timer_2_Lo 1011 e6bd a5 e7 LDA CHIME 1012 e6bf 88 Be6bf DEY 1013 e6c0 d0 fd BNE Be6bf 1014 e6c2 38 SEC 1015 e6c3 e9 01 SBC #1 1016 e6c5 d0 f8 BNE Be6bf 1017 e6c7 ca DEX 1018 e6c8 d0 ed BNE Be6b7 1019 e6ca 8e 4a e8 STX VIA_Shift 1020 e6cd 8e 4b e8 STX VIA_ACR 1021 e6d0 60 Be6d0 RTS ; ************** Set_Screen_SAL ; ************** 1027 e6d1 8a TXA 1028 e6d2 a2 c7 LDX #$c7 ; #ScrPtr 1047 e6e1 95 01 STA USRADD,X 1048 e6e3 98 TYA 1049 e6e4 48 PHA 1050 e6e5 b5 00 LDA USRPOK,X 1051 e6e7 a0 02 LDY #2 1052 e6e9 20 fe e6 JSR Shift_ZPX_Left_Y ; Row * 4 1053 e6ec 20 06 e7 JSR Add_ZPX_AY ; Row * 5 1054 e6ef a0 04 LDY #4 1055 e6f1 20 fe e6 JSR Shift_ZPX_Left_Y ; Row * 80 1056 e6f4 a0 80 LDY #$80 1057 e6f6 20 06 e7 JSR Add_ZPX_AY ; $8000 + Row * 80 + Col 1058 e6f9 68 PLA 1059 e6fa a8 TAY 1060 e6fb 68 PLA 1061 e6fc aa TAX 1062 e6fd 60 RTS ; **************** Shift_ZPX_Left_Y ; **************** 1068 e6fe 16 00 ASL USRPOK,X 1069 e700 36 01 ROL USRADD,X 1070 e702 88 DEY 1071 e703 d0 f9 BNE Shift_ZPX_Left_Y 1072 e705 60 RTS ; ********** Add_ZPX_AY ; ********** 1078 e706 75 00 ADC USRPOK,X 1079 e708 95 00 STA USRPOK,X 1080 e70a 98 TYA 1081 e70b 75 01 ADC USRADD,X 1082 e70d 95 01 STA USRADD,X 1083 e70f 60 RTS ; ************ ModifierKeys ; ************ 1089 e710 00 00 00 .BYTE $00,$00,$00,$00,$00,$00,$41,$00 1090 e718 01 00 .BYTE $01,$00 1091 e71a aa aa aa .FILL $e721-* ($aa) ; 7 bytes ; ********** RUN_String ; ********** 1097 e721 44 cc 22 .BYTE "Dl\"*\rRUN\r" ; ****************** CRT_CONFIG_TXT_NEW ; ****************** 1103 e72a 3a 28 2c .BYTE $3a,$28,$2c,$08,$20,$09,$19,$1d 1104 e732 00 09 00 .BYTE $00,$09,$00,$00,$10,$00,$00,$00 1105 e73a 00 00 .BYTE $00,$00 ; ****************** CRT_CONFIG_GRA_NEW ; ****************** 1111 e73c 3a 28 2c .BYTE $3a,$28,$2c,$08,$29,$03,$19,$22 1112 e744 00 07 00 .BYTE $00,$07,$00,$00,$10,$00,$00,$00 1113 e74c 00 00 .BYTE $00,$00 ; ********* SOUND_TAB ; ********* 1119 e74e 0e 1e 3e .BYTE $0e,$1e,$3e,$7e,$3e,$1e,$0e ; ************ Line_Addr_Lo ; ************ 1125 e755 00 50 a0 .BYTE $00,$50,$a0,$f0,$40,$90,$e0,$30 1126 e75d 80 d0 20 .BYTE $80,$d0,$20,$70,$c0,$10,$60,$b0 1127 e765 00 50 a0 .BYTE $00,$50,$a0,$f0,$40,$90,$e0,$30 1128 e76d 80 .BYTE $80 ; ************ Line_Addr_Hi ; ************ 1134 e76e 80 80 80 .BYTE $80,$80,$80,$80,$81,$81,$81,$82 1135 e776 82 82 83 .BYTE $82,$82,$83,$83,$83,$84,$84,$84 1136 e77e 85 85 85 .BYTE $85,$85,$85,$85,$86,$86,$86,$87 1137 e786 87 .BYTE $87 ; ****************** CRT_CONFIG_TXT_OLD ; ****************** 1143 e787 3a 28 2c .BYTE $3a,$28,$2c,$08,$20,$09,$19,$1d 1144 e78f 00 09 00 .BYTE $00,$09,$00,$00,$30,$00,$00,$00 1145 e797 00 00 .BYTE $00,$00 ; ****************** CRT_CONFIG_GRA_OLD ; ****************** 1151 e799 3a 28 2c .BYTE $3a,$28,$2c,$08,$29,$03,$19,$22 1152 e7a1 00 07 00 .BYTE $00,$07,$00,$00,$30,$00,$00,$00 1153 e7a9 00 00 .BYTE $00,$00 1154 e7ab 28 .BYTE $28 1156 e7ac ff ff ff .FILL $e800-* ($ff) ; 84 bytes 1158 e800 43 42 4d .BYTE "CBM 8296D EUROSCREEN EDITOR 4V4E " ; *********** PIA1_Cont_A ; *********** 1164 e821 28 45 2d .BYTE "(E-324243-04) (C) 1982 COMMODORE " ; ********* VIA_DDR_B ; ********* 1170 e842 45 4c 45 .BYTE "ELECTRONICS LTD D " 1171 e855 07 01 .BYTE $07,$01 1172 e857 ff ff ff .FILL $e900-* ($ff) ; 169 bytes 1173 e900 16 44 20 .BYTE $16,$44,$20,$20,$07,$01 1174 e906 4c 87 ea JMP CHROUT_WITH_DIACRITICS 1175 e909 4c a9 ea JMP IS_DIACRITIC_CHAR 1176 e90c 4c 3a eb JMP Jeb3a 1177 e90f 4c 44 eb JMP Jeb44 1178 e912 4c 80 eb JMP IS_SPECIAL_KEY 1179 e915 4c 8b eb JMP IS_VOCAL 1180 e918 4c 96 eb JMP PET_TO_ASCII 1181 e91b 4c 24 e9 JMP SCAN_KEYBOARD 1182 e91e aa aa aa .FILL $e924-* ($aa) ; 6 bytes ; ************* SCAN_KEYBOARD ; ************* 1188 e924 ad 10 e8 LDA PIA1_Port_A ; Keyboard row select 1189 e927 29 f0 AND #%11110000 ; Select row 0 1190 e929 8d 10 e8 STA PIA1_Port_A ; Keyboard row select 1191 e92c a5 98 LDA KEYFLAGS 1192 e92e 09 c0 ORA #%11000000 ; no and no 1193 e930 85 98 STA KEYFLAGS 1194 e932 a5 e4 LDA RPTFLG 1195 e934 48 PHA 1196 e935 a2 4f LDX #$4f ; 80 keys to check 1197 e937 a0 ff LDY #$ff 1198 e939 84 97 STY KEYPRESSED 1199 e93b c8 INY ; Y = Keyboard row = 0 1200 e93c b9 d0 87 Be93c LDA KBD_MATRIX,Y 1201 e93f 19 10 e7 ORA ModifierKeys,Y 1202 e942 49 ff EOR #$ff 1203 e944 85 e4 STA RPTFLG ; 1: pressed & not modifier 1204 e946 ad 12 e8 Be946 LDA PIA1_Port_B ; Keyboard row 1205 e949 99 d0 87 STA KBD_MATRIX,Y 1206 e94c cd 12 e8 CMP PIA1_Port_B ; Keyboard row 1207 e94f d0 f5 BNE Be946 1208 e951 05 e4 ORA RPTFLG ; Remove bouncing 1209 e953 84 e4 STY RPTFLG ; Save Y 1210 e955 a0 08 LDY #8 ; Test the 8 keys of the row 1211 e957 4a SCLOOP_Y LSR A ; check next key 1212 e958 b0 1f BCS Be979 ; 1 -> not pressed 1213 e95a 48 PHA ; Save row 1214 e95b a9 7f LDA #%01111111 ; pressed 1215 e95d e0 19 CPX #$19 ; Right Shift 1216 e95f f0 13 BEQ Be974 1217 e961 e0 1f CPX #$1f ; Left Shift 1218 e963 f0 0f BEQ Be974 1219 e965 a9 bf LDA #%10111111 ; pressed 1220 e967 e0 0f CPX #15 ; 1221 e969 f0 09 BEQ Be974 1222 e96b a9 ff LDA #$ff 1223 e96d c5 97 CMP KEYPRESSED 1224 e96f f0 01 BEQ Be972 1225 e971 aa TAX 1226 e972 86 97 Be972 STX KEYPRESSED 1227 e974 25 98 Be974 AND KEYFLAGS 1228 e976 85 98 STA KEYFLAGS 1229 e978 68 PLA ; Restore row 1230 e979 ca Be979 DEX ; Next key 1231 e97a 30 0b BMI Be987 1232 e97c 88 DEY ; Next column 1233 e97d d0 d8 BNE SCLOOP_Y 1234 e97f ee 10 e8 INC PIA1_Port_A ; Keyboard row select 1235 e982 a4 e4 LDY RPTFLG ; Restore Y = row 1236 e984 c8 INY 1237 e985 d0 b5 BNE Be93c ; Branch always 1238 e987 68 Be987 PLA ; Finished scan of keyboard matrix 1239 e988 85 e4 STA RPTFLG ; Restore repeat flag 1240 e98a a6 97 LDX KEYPRESSED 1241 e98c 30 11 BMI SC_Nokey 1242 e98e a9 15 LDA #$15 1243 e990 85 e6 STA DELAY 1244 e992 20 05 ea JSR GETPETSCII 1245 e995 70 5b BVS Be9f2 ; Branch if 1246 e997 a6 9e LDX CharsInBuffer 1247 e999 e4 e3 CPX XMAX 1248 e99b 90 42 BCC Be9df 1249 e99d b0 45 BCS Be9e4 1250 e99f a0 0a SC_Nokey LDY #10 1251 e9a1 20 f7 e9 JSR ModifyerActive 1252 e9a4 d0 14 BNE Be9ba 1253 e9a6 88 DEY 1254 e9a7 98 TYA 1255 e9a8 24 98 BIT KEYFLAGS 1256 e9aa 70 05 BVS Be9b1 ; Branch if not 1257 e9ac 10 01 BPL Be9af ; Branch if 1258 e9ae 4a LSR A 1259 e9af 29 92 Be9af AND #%10010010 1260 e9b1 20 f0 e9 Be9b1 JSR StoreKey 1261 e9b4 a0 16 LDY #$16 1262 e9b6 88 Be9b6 DEY 1263 e9b7 84 e6 STY DELAY 1264 e9b9 60 RTS 1265 e9ba be 4a ec Be9ba LDX TABSTOPS-1,Y 1266 e9bd ca Be9bd DEX 1267 e9be 4a LSR A 1268 e9bf 90 fc BCC Be9bd 1269 e9c1 20 ff e9 JSR Je9ff 1270 e9c4 d0 30 BNE Be9f6 1271 e9c6 a4 e6 LDY DELAY 1272 e9c8 d0 ec BNE Be9b6 1273 e9ca c6 e5 DEC KOUNT 1274 e9cc d0 28 BNE Be9f6 1275 e9ce a9 04 LDA #4 1276 e9d0 85 e5 STA KOUNT 1277 e9d2 20 05 ea JSR GETPETSCII 1278 e9d5 70 1b BVS Be9f2 ; Branch if 1279 e9d7 c5 a6 CMP Key_Image 1280 e9d9 d0 d6 BNE Be9b1 1281 e9db a6 9e LDX CharsInBuffer 1282 e9dd d0 05 BNE Be9e4 1283 e9df 9d 6f 02 Be9df STA KEYD,X 1284 e9e2 e6 9e INC CharsInBuffer 1285 e9e4 c9 03 Be9e4 CMP #3 ; 1286 e9e6 d0 02 BNE Be9ea 1287 e9e8 a0 ef LDY #%11101111 ; Set STOP flag 1288 e9ea c9 e0 Be9ea CMP #$e0 1289 e9ec 90 02 BCC StoreKey 1290 e9ee a0 fe LDY #%11111110 ; ******** StoreKey ; ******** 1296 e9f0 84 9b STY STKEY 1297 e9f2 85 a6 Be9f2 STA Key_Image 1298 e9f4 85 97 STA KEYPRESSED 1299 e9f6 60 Be9f6 RTS ; ************** ModifyerActive ; ************** 1305 e9f7 b9 cf 87 LDA KBD_MATRIX-1,Y 1306 e9fa 19 0f e7 ORA ModifierKeys-1,Y 1307 e9fd 49 ff EOR #$ff ; ***** Je9ff ; ***** 1313 e9ff d0 03 BNE Bea04 1314 ea01 88 DEY 1315 ea02 d0 f3 BNE ModifyerActive 1316 ea04 60 Bea04 RTS ; ********** GETPETSCII ; ********** 1322 ea05 bd 5f ef LDA KEYBOARD_NORMAL,X 1323 ea08 24 98 BIT KEYFLAGS 1324 ea0a 30 03 BMI Bea0f 1325 ea0c bd af ef LDA KEYBOARD_SHIFTED,X 1326 ea0f a8 Bea0f TAY 1327 ea10 70 0e BVS Bea20 1328 ea12 29 7f AND #$7f 1329 ea14 c9 41 CMP #$41 ; 'A' 1330 ea16 90 0d BCC Bea25 1331 ea18 c9 5b CMP #$5b ; '[' 1332 ea1a b0 09 BCS Bea25 1333 ea1c 98 TYA 1334 ea1d 29 bf AND #$bf 1335 ea1f a8 TAY 1336 ea20 e0 11 Bea20 CPX #$11 ; 1337 ea22 f0 01 BEQ Bea25 1338 ea24 b8 CLV 1339 ea25 98 Bea25 TYA 1340 ea26 60 RTS ; ***** Jea27 ; ***** 1346 ea27 b8 CLV 1347 ea28 a5 d9 LDA DATAX 1348 ea2a aa TAX 1349 ea2b 29 7f AND #$7f 1350 ea2d 48 PHA 1351 ea2e c9 20 CMP #$20 ; ' ' 1352 ea30 b0 51 BCS Bea83 1353 ea32 a5 98 LDA KEYFLAGS 1354 ea34 a8 TAY 1355 ea35 29 f9 AND #%11111001 1356 ea37 85 98 STA KEYFLAGS 1357 ea39 98 TYA 1358 ea3a 4a LSR A 1359 ea3b 90 46 BCC Bea83 1360 ea3d 4a LSR A 1361 ea3e b0 2d BCS Bea6d 1362 ea40 4a LSR A 1363 ea41 90 40 BCC Bea83 1364 ea43 e0 9d CPX #$9d 1365 ea45 d0 3c BNE Bea83 1366 ea47 20 4d ea JSR Jea4d 1367 ea4a 4c 80 ea JMP Mea80 ; ***** Jea4d ; ***** 1373 ea4d a4 e2 LDY LefMargin 1374 ea4f c4 c6 CPY CursorCol 1375 ea51 90 16 BCC Bea69 1376 ea53 a4 d5 LDY RigMargin 1377 ea55 a6 e0 LDX TopMargin 1378 ea57 e4 d8 CPX CursorRow 1379 ea59 b0 09 BCS Bea64 1380 ea5b c6 d8 DEC CursorRow 1381 ea5d 84 c6 STY CursorCol 1382 ea5f a6 d8 LDX CursorRow 1383 ea61 4c d9 e6 JMP Update_ScrPtr 1384 ea64 a4 e2 Bea64 LDY LefMargin 1385 ea66 84 c6 STY CursorCol 1386 ea68 60 RTS 1387 ea69 c6 c6 Bea69 DEC CursorCol 1388 ea6b 60 RTS ; ************** ADVANCE_CURSOR ; ************** 1394 ea6c 48 PHA 1395 ea6d e0 1d Bea6d CPX #$1d 1396 ea6f d0 12 BNE Bea83 1397 ea71 a4 c6 LDY CursorCol 1398 ea73 e6 c6 INC CursorCol 1399 ea75 c4 d5 CPY RigMargin 1400 ea77 90 07 BCC Mea80 1401 ea79 20 a3 e3 JSR Cursor_Down 1402 ea7c a4 e2 LDY LefMargin 1403 ea7e 84 c6 STY CursorCol 1404 ea80 2c b5 ee Mea80 BIT Veeb5 ; SOV Set overflow flag 1405 ea83 68 Bea83 PLA 1406 ea84 a4 c6 LDY CursorCol 1407 ea86 60 RTS ; ********************** CHROUT_WITH_DIACRITICS ; ********************** 1413 ea87 b8 CLV 1414 ea88 aa TAX 1415 ea89 a5 98 LDA KEYFLAGS 1416 ea8b 4a LSR A 1417 ea8c 8a TXA 1418 ea8d 90 13 BCC Beaa2 ; branch if bit 0 = 0 1419 ea8f a4 c6 LDY CursorCol 1420 ea91 b1 c4 LDA (ScrPtr),Y 1421 ea93 20 a9 ea JSR IS_DIACRITIC_CHAR 1422 ea96 50 03 BVC Bea9b 1423 ea98 4c 06 e6 JMP Restore_Char_at_Cursor 1424 ea9b 90 05 Bea9b BCC Beaa2 1425 ea9d a2 1d LDX #$1d 1426 ea9f 20 6c ea JSR ADVANCE_CURSOR 1427 eaa2 a6 dc Beaa2 LDX INSRT 1428 eaa4 f0 02 BEQ Beaa8 1429 eaa6 c6 dc DEC INSRT 1430 eaa8 60 Beaa8 RTS ; ***************** IS_DIACRITIC_CHAR ; ***************** 1436 eaa9 a8 TAY 1437 eaaa 8a TXA 1438 eaab 48 PHA 1439 eaac 29 7f AND #$7f 1440 eaae aa TAX 1441 eaaf 98 TYA 1442 eab0 29 7f AND #$7f 1443 eab2 48 PHA 1444 eab3 8a TXA 1445 eab4 b8 CLV 1446 eab5 c9 20 CMP #$20 ; ' ' 1447 eab7 f0 61 BEQ Beb1a 1448 eab9 20 29 eb JSR CLEAR_KEYFLAGS_21 1449 eabc 20 80 eb JSR IS_SPECIAL_KEY 1450 eabf f0 2d BEQ Beaee 1451 eac1 20 8b eb JSR IS_VOCAL 1452 eac4 d0 47 BNE Beb0d 1453 eac6 68 PLA 1454 eac7 20 80 eb JSR IS_SPECIAL_KEY 1455 eaca d0 42 BNE Beb0e 1456 eacc bd 9d ee Beacc LDA Vee9d,X 1457 eacf 48 PHA 1458 ead0 39 af ee AND BITMASK,Y 1459 ead3 f0 38 BEQ Beb0d 1460 ead5 bd b7 ee LDA Veeb7,X 1461 ead8 aa TAX 1462 ead9 68 PLA 1463 eada 4a Beada LSR A 1464 eadb 90 01 BCC Beade 1465 eadd e8 INX 1466 eade 88 Beade DEY 1467 eadf 10 f9 BPL Beada 1468 eae1 68 PLA 1469 eae2 0a ASL A 1470 eae3 bd c6 ee LDA Veec6,X 1471 eae6 29 7f AND #$7f 1472 eae8 90 02 BCC Beaec 1473 eaea 09 80 ORA #$80 1474 eaec 18 Beaec CLC 1475 eaed 60 RTS 1476 eaee ad ad ee Beaee LDA Veead 1477 eaf1 39 af ee AND BITMASK,Y 1478 eaf4 f0 10 BEQ Beb06 1479 eaf6 a2 04 LDX #4 1480 eaf8 2d ae ee AND Veeae 1481 eafb f0 04 BEQ Beb01 1482 eafd ca DEX 1483 eafe 2c b5 ee BIT Veeb5 1484 eb01 8a Beb01 TXA 1485 eb02 05 98 ORA KEYFLAGS 1486 eb04 85 98 STA KEYFLAGS 1487 eb06 68 Beb06 PLA 1488 eb07 20 8b eb JSR IS_VOCAL 1489 eb0a f0 c0 BEQ Beacc 1490 eb0c 48 PHA 1491 eb0d 68 Beb0d PLA 1492 eb0e 68 Beb0e PLA 1493 eb0f 18 CLC 1494 eb10 60 RTS 1495 eb11 a5 d9 LDA DATAX 1496 eb13 29 7f AND #$7f 1497 eb15 c9 20 CMP #$20 ; ' ' 1498 eb17 90 0f BCC Beb28 1499 eb19 60 RTS 1500 eb1a 68 Beb1a PLA 1501 eb1b 20 80 eb JSR IS_SPECIAL_KEY 1502 eb1e d0 06 BNE Beb26 1503 eb20 a5 98 LDA KEYFLAGS 1504 eb22 29 02 AND #2 1505 eb24 d0 01 BNE Beb27 1506 eb26 18 Beb26 CLC 1507 eb27 68 Beb27 PLA 1508 eb28 aa Beb28 TAX ; ***************** CLEAR_KEYFLAGS_21 ; ***************** 1514 eb29 a9 f9 LDA #%11111001 1515 eb2b 25 98 AND KEYFLAGS 1516 eb2d 85 98 STA KEYFLAGS 1517 eb2f 8a TXA 1518 eb30 60 RTS ; ***** Jeb31 ; ***** 1524 eb31 a6 e4 LDX RPTFLG 1525 eb33 d0 0e BNE Beb43 1526 eb35 e6 c6 INC CursorCol 1527 eb37 4c 6a e1 JMP CheckQuote ; ***** Jeb3a ; ***** 1533 eb3a a4 c6 LDY CursorCol 1534 eb3c b1 c4 LDA (ScrPtr),Y 1535 eb3e 20 44 eb JSR Jeb44 1536 eb41 85 d9 STA DATAX 1537 eb43 60 Beb43 RTS ; ***** Jeb44 ; ***** 1543 eb44 b8 CLV 1544 eb45 aa TAX 1545 eb46 a5 98 LDA KEYFLAGS 1546 eb48 4a LSR A 1547 eb49 8a TXA 1548 eb4a 90 2f BCC Beb7b 1549 eb4c 48 PHA 1550 eb4d a6 e4 LDX RPTFLG 1551 eb4f d0 15 BNE Beb66 1552 eb51 29 7f AND #$7f 1553 eb53 a2 0c LDX #12 1554 eb55 dd c7 ee Beb55 CMP Veec7,X 1555 eb58 f0 06 BEQ Beb60 1556 eb5a ca DEX 1557 eb5b 10 f8 BPL Beb55 1558 eb5d 68 PLA 1559 eb5e 18 CLC 1560 eb5f 60 RTS 1561 eb60 bd df ee Beb60 LDA Veedf,X 1562 eb63 85 e4 STA RPTFLG 1563 eb65 aa TAX 1564 eb66 bd f6 ee Beb66 LDA Veef6,X 1565 eb69 c6 e4 DEC RPTFLG 1566 eb6b 4a LSR A 1567 eb6c 90 03 BCC Beb71 1568 eb6e 2c b5 ee BIT Veeb5 1569 eb71 4a Beb71 LSR A 1570 eb72 aa TAX 1571 eb73 68 PLA 1572 eb74 29 80 AND #$80 1573 eb76 1d 85 ee ORA VOCALS,X 1574 eb79 b0 04 BCS Beb7f 1575 eb7b a2 00 Beb7b LDX #0 1576 eb7d 86 e4 STX RPTFLG 1577 eb7f 60 Beb7f RTS ; ************** IS_SPECIAL_KEY ; ************** 1583 eb80 a0 04 LDY #4 1584 eb82 d9 8f ee Beb82 CMP KEYFLAG_TRIGGER,Y 1585 eb85 f0 03 BEQ Beb8a 1586 eb87 88 DEY 1587 eb88 10 f8 BPL Beb82 1588 eb8a 60 Beb8a RTS ; ******** IS_VOCAL ; ******** 1594 eb8b a2 09 LDX #9 1595 eb8d dd 85 ee Beb8d CMP VOCALS,X 1596 eb90 f0 03 BEQ Beb95 1597 eb92 ca DEX 1598 eb93 10 f8 BPL Beb8d 1599 eb95 60 Beb95 RTS ; ************ PET_TO_ASCII ; ************ 1605 eb96 a2 0d LDX #13 1606 eb98 dd 37 ef Beb98 CMP PET_REP,X 1607 eb9b f0 21 BEQ Bebbe 1608 eb9d ca DEX 1609 eb9e 10 f8 BPL Beb98 1610 eba0 aa TAX 1611 eba1 29 7f AND #$7f 1612 eba3 c9 20 CMP #$20 ; ' ' 1613 eba5 90 15 BCC Bebbc 1614 eba7 c9 41 CMP #$41 ; 'A' 1615 eba9 90 0c BCC Bebb7 1616 ebab c9 5b CMP #$5b ; '[' 1617 ebad b0 08 BCS Bebb7 1618 ebaf 8a TXA 1619 ebb0 30 02 BMI Bebb4 1620 ebb2 09 20 ORA #$20 ; ' ' 1621 ebb4 29 7f Bebb4 AND #$7f 1622 ebb6 60 RTS 1623 ebb7 8a Bebb7 TXA 1624 ebb8 10 03 BPL Bebbd 1625 ebba a2 20 LDX #$20 ; ' ' 1626 ebbc 8a Bebbc TXA 1627 ebbd 60 Bebbd RTS 1628 ebbe bd 45 ef Bebbe LDA ASC_REP,X 1629 ebc1 60 RTS ; *********** PROGRAM_CRT ; *********** 1635 ebc2 48 PHA 1636 ebc3 20 f8 eb JSR CLEAR_KEYFLAGS_210 1637 ebc6 68 PLA 1638 ebc7 4c 88 e0 JMP OLD_PROGRAM_CRT ; ************* CRT_TEXT_MODE ; ************* 1644 ebca a5 98 LDA KEYFLAGS 1645 ebcc 29 08 AND #%00001000 ; Bit 4 set: new char set (low ROM) 1646 ebce f0 35 BEQ SET_CRT_TXT_OLD_1 ; *************** SET_CRT_TXT_NEW ; *************** 1652 ebd0 a5 98 LDA KEYFLAGS 1653 ebd2 09 09 ORA #%00001001 1654 ebd4 85 98 STA KEYFLAGS 1655 ebd6 a9 2a LDA #CRT_CONFIG_TXT_NEW 1657 ebda a0 0e LDY #14 1658 ebdc 4c 88 e0 JMP OLD_PROGRAM_CRT ; **************** SET_CRT_GRAPHICS ; **************** 1664 ebdf 20 f8 eb JSR CLEAR_KEYFLAGS_210 1665 ebe2 29 08 AND #%00001000 ; Bit 4 set: new char set (low ROM) 1666 ebe4 f0 09 BEQ Bebef 1667 ebe6 a9 3c LDA #CRT_CONFIG_GRA_NEW 1669 ebea a0 0c LDY #12 1670 ebec 4c 88 e0 JMP OLD_PROGRAM_CRT 1671 ebef a9 99 Bebef LDA #CRT_CONFIG_GRA_OLD 1673 ebf3 a0 0c LDY #12 1674 ebf5 4c 88 e0 JMP OLD_PROGRAM_CRT ; ****************** CLEAR_KEYFLAGS_210 ; ****************** 1680 ebf8 a5 98 LDA KEYFLAGS 1681 ebfa 29 f8 AND #%11111000 1682 ebfc 85 98 STA KEYFLAGS 1683 ebfe 60 RTS ; *************** SET_CRT_TXT_OLD ; *************** 1689 ebff a5 98 LDA KEYFLAGS 1690 ec01 29 f0 AND #%11110000 1691 ec03 85 98 STA KEYFLAGS ; ***************** SET_CRT_TXT_OLD_1 ; ***************** 1697 ec05 a9 87 LDA #CRT_CONFIG_TXT_OLD 1699 ec09 a0 0e LDY #14 1700 ec0b 4c 88 e0 JMP OLD_PROGRAM_CRT ; ***** Jec0e ; ***** 1706 ec0e e6 99 INC Z99 1707 ec10 a5 99 LDA Z99 1708 ec12 d0 02 BNE Bec16 1709 ec14 e6 9a INC Z9a 1710 ec16 c9 6f Bec16 CMP #$6f 1711 ec18 d0 06 BNE Bec20 1712 ec1a a5 9a LDA Z9a 1713 ec1c c9 02 CMP #2 1714 ec1e f0 21 BEQ Bec41 1715 ec20 e6 8f Bec20 INC Z8f 1716 ec22 d0 06 BNE Bec2a 1717 ec24 e6 8e INC Z8e 1718 ec26 d0 02 BNE Bec2a 1719 ec28 e6 8d INC TIME 1720 ec2a a2 00 Bec2a LDX #0 1721 ec2c b5 8d Bec2c LDA TIME,X 1722 ec2e dd 48 ec CMP Vec48,X 1723 ec31 90 14 BCC Bec47 1724 ec33 e8 INX 1725 ec34 e0 03 CPX #3 1726 ec36 d0 f4 BNE Bec2c 1727 ec38 a9 00 LDA #0 1728 ec3a 95 8c Bec3a STA Z8c,X 1729 ec3c ca DEX 1730 ec3d d0 fb BNE Bec3a 1731 ec3f f0 06 BEQ Bec47 1732 ec41 a9 00 Bec41 LDA #0 1733 ec43 85 99 STA Z99 1734 ec45 85 9a STA Z9a 1735 ec47 60 Bec47 RTS ; ***** Vec48 ; ***** 1741 ec48 4f 1a 01 .BYTE $4f,$1a,$01 1743 ec4b 50 48 40 TABSTOPS .BYTE $50,$48,$40,$38,$30,$28,$20,$18 1744 ec53 10 08 .BYTE $10,$08 1745 ec55 ff ff ff .FILL $ee85-* ($ff) ; 560 bytes 1747 ee85 01 05 09 VOCALS .BYTE $01,$05,$09,$0f,$15,$61,$66,$20 1748 ee8d 40 6f .BYTE $40,$6f ; *************** KEYFLAG_TRIGGER ; *************** 1754 ee8f 40 6f 7f .BYTE $40,$6f,$7f,$61,$66 1755 ee94 9d aa aa .BYTE $9d,$aa,$aa,$aa,$aa,$aa,$aa,$aa 1756 ee9c aa .BYTE $aa 1757 ee9d 05 07 04 Vee9d .BYTE $05,$07,$04,$04,$05,$10,$08,$07 1758 eea5 02 01 .BYTE $02,$01 1759 eea7 aa aa aa .BYTE $aa,$aa,$aa,$aa,$aa,$aa 1760 eead 07 Veead .BYTE $07 1761 eeae 07 Veeae .BYTE $07 1762 eeaf 01 02 04 BITMASK .BYTE $01,$02,$04,$08,$10,$20,$40,$80 1763 eeb7 00 02 05 Veeb7 .BYTE $00,$02,$05,$06,$07,$09,$09,$0a 1764 eebf 0c 0c aa .BYTE $0c,$0c,$aa,$aa,$aa,$aa,$aa,$aa 1765 eec7 72 74 6e Veec7 .BYTE $72,$74,$6e,$6c,$75,$76,$77,$73 1766 eecf 78 eb 40 .BYTE $78,$eb,$40,$6f,$7f 1767 eed4 aa aa aa .BYTE $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa 1768 eedc aa aa aa .BYTE $aa,$aa,$aa 1769 eedf 02 05 07 Veedf .BYTE $02,$05,$07,$09,$0c,$0f,$12,$14 1770 eee7 17 00 19 .BYTE $17,$00,$19,$1b,$1e,$aa,$aa,$aa 1771 eeef aa aa aa .BYTE $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa 1772 eef7 00 2a 00 .BYTE $00,$2a,$00,$2a,$2e,$04,$2a,$04 1773 eeff 2e 04 2a .BYTE $2e,$04,$2a,$2e,$08,$2a,$2e,$0c 1774 ef07 2a 2e 10 .BYTE $2a,$2e,$10,$2a,$10,$2a,$2e,$1c 1775 ef0f 2a 1c 2e .BYTE $2a,$1c,$2e,$1c,$2a,$2e,$aa,$aa 1776 ef17 aa aa aa .BYTE $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa 1777 ef1f aa aa aa .BYTE $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa 1778 ef27 aa aa aa .BYTE $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa 1779 ef2f aa aa aa .BYTE $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa 1780 ef37 1d 9d ad PET_REP .BYTE $1d,$9d,$ad,$af,$b0,$bb,$bc,$bd 1781 ef3f be c0 db .BYTE $be,$c0,$db,$dc,$dd,$df 1782 ef45 20 08 23 ASC_REP .BYTE $20,$08,$23,$5e,$40,$7b,$7c,$7d 1783 ef4d 7e 5e 5b .BYTE $7e,$5e,$5b,$5c,$5d,$5f 1784 ef53 aa aa aa .BYTE $aa,$aa,$aa,$aa,$aa,$aa,$aa,$aa 1785 ef5b aa aa aa .BYTE $aa,$aa,$aa,$aa ; *************** KEYBOARD_NORMAL ; *************** 1791 ef5f 16 .BYTE $16 ; Ctrl V 10h -------- 1792 ef60 00 .BYTE $00 ; SHIFT 10g -------- 1793 ef61 be .BYTE $be ; SZ 10f SZ GRAVE 1794 ef62 13 .BYTE $13 ; HOME 10e HOME CLR 1795 ef63 39 .TEXT "9" ; 9 10d 9 ) 1796 ef64 36 .TEXT "6" ; 6 10c 6 & 1797 ef65 33 .TEXT "3" ; 3 10b 3 Paragraph 1798 ef66 3c .TEXT "<" ; < 10a ARROW LEFT 1800 ef67 31 .TEXT "1" ; 1 9h KP 1 1801 ef68 2d .TEXT "-" ; - 9g / ? 1802 ef69 15 .BYTE $15 ; Ctrl U 9f -------- 1803 ef6a 14 .BYTE $14 ; DEL 9e DEL INST 1804 ef6b 4d .TEXT "m" ; m 9d M 1805 ef6c 20 .TEXT " " ; 9c SPACE 1806 ef6d 58 .TEXT "x" ; x 9b X 1807 ef6e 00 .BYTE $00 ; SHIFT 9a RVS OFF 1809 ef6f 32 .TEXT "2" ; 2 8h KP 2 1810 ef70 03 .BYTE $03 ; STOP 8g STOP RUN 1811 ef71 0f .BYTE $0f ; Ctrl O 8f -------- 1812 ef72 30 .TEXT "0" ; 0 8e KP 0 1813 ef73 2c .TEXT "," ; , 8d , < 1814 ef74 4e .TEXT "n" ; n 8c N 1815 ef75 56 .TEXT "v" ; v 8b V 1816 ef76 59 .TEXT "y" ; y 8a Z 1818 ef77 33 .TEXT "3" ; 3 7h KP 3 1819 ef78 00 .BYTE $00 ; SHIFT 7g RIGHT SHIFT 1820 ef79 19 .BYTE $19 ; Ctrl Y 7f ------- 1821 ef7a 2e .TEXT "." ; . 7e KP . 1822 ef7b 2e .TEXT "." ; . 7d . > 1823 ef7c 42 .TEXT "b" ; b 7c B 1824 ef7d 43 .TEXT "c" ; c 7b C 1825 ef7e 00 .BYTE $00 ; SHIFT 7a LEFT SHIFT 1827 ef7f 34 .TEXT "4" ; 4 6h KP 4 1828 ef80 bd .BYTE $bd ; Graph bd 6g UE 1829 ef81 4f .TEXT "o" ; o 6f O 1830 ef82 5b .TEXT "[" ; { 6e ARROW UP 1831 ef83 55 .TEXT "u" ; u 6d U 1832 ef84 54 .TEXT "t" ; t 6c T 1833 ef85 45 .TEXT "e" ; e 6b E 1834 ef86 51 .TEXT "q" ; q 6a Q 1836 ef87 5d .TEXT "]" ; } 5h REPEAT 1837 ef88 50 .TEXT "p" ; p 5g P 1838 ef89 49 .TEXT "i" ; i 5f I 1839 ef8a 2b .TEXT "+" ; + 5e : * 1840 ef8b 5a .TEXT "z" ; z 5d Y 1841 ef8c 52 .TEXT "r" ; r 5c R 1842 ef8d 57 .TEXT "w" ; w 5b W 1843 ef8e 09 .BYTE $09 ; TAB 5a TAB 1845 ef8f 36 .TEXT "6" ; 6 4h KP 6 1846 ef90 bb .BYTE $bb ; Graph bb 4g OE 1847 ef91 4c .TEXT "l" ; l 4f L 1848 ef92 0d .BYTE $0d ; RETURN 4e RETURN 1849 ef93 4a .TEXT "j" ; j 4d J 1850 ef94 47 .TEXT "g" ; g 4c G 1851 ef95 44 .TEXT "d" ; d 4b D 1852 ef96 41 .TEXT "a" ; a 4a A 1854 ef97 35 .TEXT "5" ; 5 3h KP 5 1855 ef98 bc .BYTE $bc ; Graph bc 3g OE 1856 ef99 4b .TEXT "k" ; k 3f K 1857 ef9a 23 .TEXT "#" ; # 3e Semicolon + 1858 ef9b 48 .TEXT "h" ; h 3d H 1859 ef9c 46 .TEXT "f" ; f 3c F 1860 ef9d 53 .TEXT "s" ; s 3b S 1861 ef9e 1b .BYTE $1b ; ESC 3a ESC 1863 ef9f 39 .TEXT "9" ; 9 2h KP 9 1864 efa0 00 .BYTE $00 ; SHIFT 2g ------ 1865 efa1 11 .BYTE $11 ; DOWN 2f DOWN UP 1866 efa2 37 .TEXT "7" ; 7 2e KP 7 1867 efa3 30 .TEXT "0" ; 0 2d 0 1868 efa4 37 .TEXT "7" ; 7 2c 7 1869 efa5 34 .TEXT "4" ; 4 2b 4 1870 efa6 31 .TEXT "1" ; 1 2a 1 1872 efa7 00 .BYTE $00 ; SHIFT 1h ------ 1873 efa8 0e .BYTE $0e ; Ctrl N 1g ------ 1874 efa9 1d .BYTE $1d ; RIGHT 1f RIGHT LEFT 1875 efaa 38 .TEXT "8" ; 8 1e KP 8 1876 efab af .BYTE $af ; ACUTE 1d ACUTE CIRCUMFLEX 1877 efac 38 .TEXT "8" ; 8 1c 8 1878 efad 35 .TEXT "5" ; 5 1b 5 1879 efae 32 .TEXT "2" ; 2 1a 2 ; **************** KEYBOARD_SHIFTED ; **************** 1885 efaf 96 .BYTE $96 ; Shift Ctrl V 10h ------- 1886 efb0 00 .BYTE $00 ; SHIFT 10g ------- 1887 efb1 3f .TEXT "?" ; ? 10f SZ GRAVE 1888 efb2 93 .BYTE $93 ; CLR 10e HOME CLR 1889 efb3 29 .TEXT ")" ; ) 10d 9 ) 1890 efb4 26 .TEXT "&" ; & 10c 6 & 1891 efb5 40 .TEXT "@" ; ` 10b 3 Paragraph 1892 efb6 3e .TEXT ">" ; > 10a ARROW LEFT 1894 efb7 a2 .BYTE $a2 ; Graph a2 9h KP 1 1895 efb8 5f .BYTE $5f ; UNDERLINE 9g / ? 1896 efb9 95 .BYTE $95 ; Shift Ctrl U 9f ------- 1897 efba 94 .BYTE $94 ; INS 9e DEL INS 1898 efbb cd .BYTE $cd ; Graph cd 9d M 1899 efbc a0 .BYTE $a0 ; SHIFT SPC 9c SPACE 1900 efbd d8 .BYTE $d8 ; Graph d8 9b X 1901 efbe 00 .BYTE $00 ; SHIFT 9a RVS OFF 1903 efbf a3 .BYTE $a3 ; Graph a3 8h KP 2 1904 efc0 83 .BYTE $83 ; RUN 8g STOP RUN 1905 efc1 8f .BYTE $8f ; Shift Ctrl O 8f ------- 1906 efc2 a1 .BYTE $a1 ; Graph a1 8e KP 0 1907 efc3 3b .TEXT ";" ; ; 8d , < 1908 efc4 ce .BYTE $ce ; Graph ce 8c N 1909 efc5 d6 .BYTE $d6 ; Graph d6 8b V 1910 efc6 d9 .BYTE $d9 ; Graph d9 8a Z 1912 efc7 a4 .BYTE $a4 ; Graph a4 7h KP 3 1913 efc8 00 .BYTE $00 ; SHIFT 7g RIGHT SHIFT 1914 efc9 99 .BYTE $99 ; Shift Ctrl Y 7f ------- 1915 efca de .BYTE $de ; Graph de 7e KP . 1916 efcb 3a .TEXT ":" ; : 7d . > 1917 efcc c2 .BYTE $c2 ; Graph c2 7c B 1918 efcd c3 .BYTE $c3 ; Graph c3 7b C 1919 efce 00 .BYTE $00 ; SHIFT 7a LEFT SHIFT 1921 efcf a5 .BYTE $a5 ; Graph a5 6h KP 4 1922 efd0 dd .BYTE $dd ; Graph dd 6g UE 1923 efd1 cf .BYTE $cf ; Graph cf 6f O 1924 efd2 5e .BYTE $5e ; ARROW UP 6e ARROW UP 1925 efd3 d5 .BYTE $d5 ; Graph d5 6d U 1926 efd4 d4 .BYTE $d4 ; Graph d4 6c T 1927 efd5 c5 .BYTE $c5 ; Graph c5 6b E 1928 efd6 d1 .BYTE $d1 ; Graph d1 6a Q 1930 efd7 5c .TEXT "\" ; | 5h REPEAT 1931 efd8 d0 .BYTE $d0 ; Graph d0 5g P 1932 efd9 c9 .BYTE $c9 ; Graph c9 5f I 1933 efda 2a .TEXT "*" ; * 5e : * 1934 efdb da .BYTE $da ; Graph da 5d Y 1935 efdc d2 .BYTE $d2 ; Graph d2 5c R 1936 efdd d7 .BYTE $d7 ; Graph d7 5b W 1937 efde 89 .BYTE $89 ; SET TAB 5a TAB 1939 efdf a7 .BYTE $a7 ; Graph a7 4h KP 6 1940 efe0 db .BYTE $db ; Graph db 4g OE 1941 efe1 cc .BYTE $cc ; Graph cc 4f L 1942 efe2 8d .BYTE $8d ; SHIFT RET 4e RETURN 1943 efe3 ca .BYTE $ca ; Graph ca 4d J 1944 efe4 c7 .BYTE $c7 ; Graph c7 4c G 1945 efe5 c4 .BYTE $c4 ; Graph c4 4b D 1946 efe6 c1 .BYTE $c1 ; Graph c1 4a A 1948 efe7 a6 .BYTE $a6 ; Graph a6 3h KP 5 1949 efe8 dc .BYTE $dc ; Graph dc 3g OE 1950 efe9 cb .BYTE $cb ; Graph cb 3f K 1951 efea 27 .TEXT "'" ; ' 3e Semicolon + 1952 efeb c8 .BYTE $c8 ; Graph c8 3d H 1953 efec c6 .BYTE $c6 ; Graph c6 3c F 1954 efed d3 .BYTE $d3 ; Graph d3 3b S 1955 efee 1b .BYTE $1b ; ESC 3a ESC 1957 efef aa .BYTE $aa ; Graph aa 2h KP 9 1958 eff0 00 .BYTE $00 ; SHIFT 2g ------- 1959 eff1 91 .BYTE $91 ; UP 2f DOWN UP 1960 eff2 a8 .BYTE $a8 ; Graph a8 2e KP 7 1961 eff3 3d .TEXT "=" ; = 2d 0 = 1962 eff4 2f .TEXT "/" ; / 2c 7 / 1963 eff5 24 .TEXT "$" ; $ 2b 4 $ 1964 eff6 21 .TEXT "!" ; ! 2a 1 ! 1966 eff7 00 .BYTE $00 ; SHIFT 1h ------- 1967 eff8 8e .BYTE $8e ; Shift Ctrl N 1g ------- 1968 eff9 9d .BYTE $9d ; LEFT 1f RIGHT LEFT 1969 effa a9 .BYTE $a9 ; Graph a9 1e KP 8 1970 effb c0 .BYTE $c0 ; Graph c0 1d ACUTE CIRCUMFLEX 1971 effc 28 .TEXT "(" ; ( 1c 8 ( 1972 effd 25 .TEXT "%" ; % 1b 5 % 1973 effe 22 .TEXT """ ; " 1a 2 " 1974 efff 00 .BYTE $00 ; SHIFT