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        ; <ESC>
  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         ; <RETURN>
  402 e226 d0 03              BNE Be22b
  403 e228 4c b6 e3           JMP ScreenReturn
  404 e22b c9 20    Be22b     CMP #$20        ; <SPACE>
  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        ; <DEL>
  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        ; <RVS>
  435 e26b d0 02              BNE Be26f
  436 e26d 85 9f              STA ReverseFlag
  437 e26f c9 13    Be26f     CMP #$13        ; <HOME>
  438 e271 d0 10              BNE Be283
  439 e273 a5 e8              LDA HOMECT      ; 2 x <HOME> 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        ; <CURSOR RIGHT>
  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        ; <CURSOR DOWN>
  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          ; <TAB>
  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        ; <Ctrl V> : 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        ; <Ctrl U>
  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         ; <Shift RETURN>
  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        ; <INS>
  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        ; <CURSOR UP>
  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        ; <RVS OFF>
  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        ; <CURSOR LEFT>
  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        ; <CLR>
  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          ; <Shift TAB>
  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        ; <Shift Ctrl V>
  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
  927 e623 85 90              STA CINV
  928 e625 a9 e4              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
  962 e675 a2 e1              LDX #>DEFAULT_SCREEN_VECTOR
  963 e677 85 e9              STA SCRIV
  964 e679 86 ea              STX SCRIV+1
  965 e67b a9 0c              LDA #<ChrOutNormal
  966 e67d a2 e2              LDX #>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        ; #<SAL
 1029 e6d4 d0 06              BNE Be6dc

; **********
  Cursor_BOL
; **********

 1035 e6d6 a4 e2              LDY LefMargin
 1036 e6d8 88                 DEY

; *************
  Update_ScrPtr
; *************

 1042 e6d9 8a                 TXA
 1043 e6da a2 c4              LDX #<ScrPtr
 1044 e6dc 48       Be6dc     PHA
 1045 e6dd 95 00              STA USRPOK,X
 1046 e6df a9 00              LDA #>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 <shift> and no <ctrl>
 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  ; <shift> 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  ; <ctrl> pressed
 1220 e967 e0 0f              CPX #15         ; <RVS = CTRL>
 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 <STOP>
 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 <ctrl>
 1257 e9ac 10 01              BPL Be9af       ; Branch if <shift>
 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 <STOP>
 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          ; <STOP>
 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        ; <STOP>
 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
 1656 ebd8 a2 e7              LDX #>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
 1668 ebe8 a2 e7              LDX #>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
 1672 ebf1 a2 e7              LDX #>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
 1698 ec07 a2 e7              LDX #>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