diff --git a/src/aliases/,aliases_hardware_arnitech.s b/src/aliases/,aliases_hardware_arnitech.s index 4013b724..820e2e30 100644 --- a/src/aliases/,aliases_hardware_arnitech.s +++ b/src/aliases/,aliases_hardware_arnitech.s @@ -36,6 +36,28 @@ !ifdef CONFIG_ARNITECH_BLADE { + ; The Terminal Card, a Blade's screen and keyboard (arnitech's ADR 0031): its type in the Slot + ; table, and its registers indexed by its Card window's low byte, as ARNI_FINDCARD gives it in X + + !set TERMINAL_CARD_TYPE = $04 + + !addr TERMINAL_OUTPUT = $DE00 ; a PETSCII byte, printed as the screen editor prints it + !addr TERMINAL_LITERAL = $DE01 ; a byte drawn as its glyph, for quote and insert mode + !addr TERMINAL_STATUS = $DE02 + !addr TERMINAL_KEY = $DE03 ; the next key; a read takes it, $00 if none + !addr TERMINAL_COMMAND = $DE04 + !addr TERMINAL_LINE = $DE05 ; the taken line's next byte, RETURN at its end + !addr TERMINAL_COLUMN = $DE06 + !addr TERMINAL_ROW = $DE07 + + !set TERMINAL_KEY_WAITING = %00000001 ; status bits + !set TERMINAL_STOP_HELD = %00000010 + !set TERMINAL_INSERTED = %00001000 ; the last byte was an INS that opened a space + + !set TERMINAL_TAKE_LINE = $01 ; commands + !set TERMINAL_RESET = $02 + !set TERMINAL_INPUT_START = $03 + ; The 65816's native-mode vectors, which a Blade reads from the RAM under the KERNAL (ADR 0029) !addr NATIVE_VECTORS = $FFE4 ; COP, BRK, ABORT, NMI, reserved, IRQ diff --git a/src/kernal/arnitech/arnitech_terminal.s b/src/kernal/arnitech/arnitech_terminal.s new file mode 100644 index 00000000..3bcbebc7 --- /dev/null +++ b/src/kernal/arnitech/arnitech_terminal.s @@ -0,0 +1,256 @@ +;; #LAYOUT# STD * #TAKE +;; #LAYOUT# * * #IGNORE + +; +; The Terminal Card driver of the Blade Firmware (mc64blade only, arnitech's ADR 0030 and 0031) +; +; A Blade has no VIC-II and no keyboard: its screen and keyboard, devices 3 and 0, are the +; Terminal Card, which holds the 80x25 screen and the screen editor itself. CHROUT writes each +; byte to it, as a glyph while quote or insert mode is on; CHRIN echoes the keys typed and, on +; RETURN, reads back the logical line under the cursor; the IRQ moves its keys into the keyboard +; buffer and its RUN/STOP into STKEY. Quote and insert mode stay the KERNAL's, in QTSW and INSRT, +; as the Card cannot see them. With no Terminal Card, bytes printed go nowhere and no key comes. +; + +!ifdef CONFIG_ARNITECH_BLADE { + +; +; Finds the Terminal Card. Out: carry clear and X = its Card window's low byte, carry set if +; there is none. A is not kept, Y is. +; + +terminal_find: + + lda #TERMINAL_CARD_TYPE + jmp arnitech_find_card + +; +; CHROUT for device 3. SCHAR holds the byte; CHROUT has saved X, Y, and P. +; +; Outside quote and insert mode the byte goes to Output. While either is on, every control code +; but RETURN, SHIFT+RETURN, and STOP goes to Literal, which draws it as a glyph; so does DEL +; while INSRT is not 0, which a DEL between quotes leaves to delete. RETURN, SHIFT+RETURN, and +; STOP end both modes. A glyph drawn counts INSRT down, a quote toggles QTSW, and an INS that +; opened a space (status bit 3) counts INSRT up. +; + +chrout_terminal: + + jsr terminal_find + bcs chrout_terminal_done ; no Terminal Card: the byte goes nowhere + + lda SCHAR + and #$60 + beq chrout_terminal_control ; $00-$1F and $80-$9F are control codes + + lda SCHAR + sta TERMINAL_OUTPUT, x + + ; FALLTROUGH + +chrout_terminal_glyph: + + lda INSRT + beq @1 + dec INSRT +@1: + lda SCHAR + cmp #$22 + bne chrout_terminal_done + lda QTSW + eor #$80 + sta QTSW + + ; FALLTROUGH + +chrout_terminal_done: + + jmp chrout_done_success + +chrout_terminal_control: + + lda SCHAR + cmp #KEY_RETURN + beq chrout_terminal_end_modes + cmp #KEY_SHIFT_RETURN + beq chrout_terminal_end_modes + cmp #KEY_STOP + beq chrout_terminal_end_modes + + ldy INSRT + bne chrout_terminal_literal ; in the spaces INS opened, DEL too is a glyph + ldy QTSW + beq chrout_terminal_code + cmp #KEY_DEL + beq chrout_terminal_code ; between quotes DEL still deletes + + ; FALLTROUGH + +chrout_terminal_literal: + + sta TERMINAL_LITERAL, x + jmp chrout_terminal_glyph + +chrout_terminal_code: + + sta TERMINAL_OUTPUT, x + cmp #KEY_INS + bne chrout_terminal_done + lda TERMINAL_STATUS, x + and #TERMINAL_INSERTED + beq chrout_terminal_done + inc INSRT + bne chrout_terminal_done ; branch always + +chrout_terminal_end_modes: + + sta TERMINAL_OUTPUT, x + lda #$00 + sta QTSW + sta INSRT + beq chrout_terminal_done ; branch always + +; +; CHRIN for device 0, the keyboard. X and Y are kept. +; +; The first call marks where input starts on the Terminal, echoes each key typed through CHROUT, +; and on RETURN has the Card take the logical line under the cursor; it and the calls after +; return the line's bytes, then RETURN, which ends it. +; + +chrin_terminal: + + stx XSAV + +phy_trash_a + + lda CRSW + bne chrin_terminal_next ; a line is being returned + + jsr terminal_find + bcs chrin_terminal_wait + lda #TERMINAL_INPUT_START + sta TERMINAL_COMMAND, x + +chrin_terminal_wait: + + lda NDX + beq chrin_terminal_wait + jsr get_from_keyboard_buffer + cmp #KEY_RETURN + beq chrin_terminal_take + jsr JCHROUT ; the Terminal Card edits + jmp chrin_terminal_wait + +chrin_terminal_take: + + jsr terminal_find + bcs chrin_terminal_end ; the Card is gone: an empty line + lda #TERMINAL_TAKE_LINE + sta TERMINAL_COMMAND, x + inc CRSW + +chrin_terminal_next: + + jsr terminal_find + bcs chrin_terminal_end + lda TERMINAL_LINE, x + cmp #KEY_RETURN + bne chrin_terminal_return + + ; FALLTROUGH + +chrin_terminal_end: + + lda #$00 + sta CRSW + sta QTSW + sta INSRT + lda #KEY_RETURN + + ; FALLTROUGH + +chrin_terminal_return: + + tax + +ply_trash_a + txa + ldx XSAV + clc + rts + +; +; SCNKEY: moves the Terminal Card's keys into the keyboard buffer, while it has room; the rest +; wait in the Card. +; + +SCNKEY: + + jsr terminal_find + bcs @2 +@1: + lda TERMINAL_STATUS, x + lsr ; bit 0, a key waiting, into carry + bcc @2 + ldy NDX + cpy XMAX + bcs @2 + lda TERMINAL_KEY, x + sta KEYD, y + inc NDX + bne @1 ; branch always +@2: + rts + +; +; The part of UDTIM that reads the STOP key: STKEY is $7F while the Terminal Card's RUN/STOP is +; held, $FF otherwise. Y is kept. +; + +udtim_terminal_stop: + + jsr terminal_find + lda #$00 ; no Terminal Card, no RUN/STOP + bcs @1 + lda TERMINAL_STATUS, x +@1: + and #TERMINAL_STOP_HELD + lsr + lsr ; held into carry + ror ; ... and into bit 7 + eor #$FF + sta STKEY + rts + +; +; SCREEN: the Terminal's 80 columns in X and 25 rows in Y. +; + +SCREEN: + + ldx #80 + ldy #25 + rts + +; +; CINT's work on a Blade: the keyboard and the screen as the input and output devices (as +; vicii_init does on a C64), the keyboard buffer's size, a reset of the Terminal and of quote and +; insert mode, the native-mode vectors, and CIA1's timer A for the jiffy IRQ. +; + +cint_terminal: + + jsr clrchn_reset + ldx #10 + stx XMAX + lda #$00 + sta CRSW + sta QTSW + sta INSRT + jsr terminal_find + bcs @1 + lda #TERMINAL_RESET + sta TERMINAL_COMMAND, x +@1: + jsr native_vectors_init + jmp setup_pal_ntsc +} diff --git a/src/kernal/init/cint_screen_keyboard.s b/src/kernal/init/cint_screen_keyboard.s index b85557ae..b3fb1566 100644 --- a/src/kernal/init/cint_screen_keyboard.s +++ b/src/kernal/init/cint_screen_keyboard.s @@ -2,6 +2,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; This is a part CINT which initializes screen and keyboard ; @@ -49,3 +52,5 @@ cint_screen_keyboard: ; Fallthrough/jump to screen clear routine (Computes Mapping the 64 p215) jmp clear_screen + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/init/e518.cint_legacy.s b/src/kernal/init/e518.cint_legacy.s index b986e07b..9c3054b4 100644 --- a/src/kernal/init/e518.cint_legacy.s +++ b/src/kernal/init/e518.cint_legacy.s @@ -2,6 +2,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Part of the official Kernal routine, described in: ; @@ -37,3 +40,5 @@ cint_legacy_end: ; Game 'Operacja Proboszcz' is one example. jmp cint_screen_keyboard ; XXX try to fit the code here + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/init/e5a0.vicii_init.s b/src/kernal/init/e5a0.vicii_init.s index 60537743..daa3fb52 100644 --- a/src/kernal/init/e5a0.vicii_init.s +++ b/src/kernal/init/e5a0.vicii_init.s @@ -5,6 +5,9 @@ ;; #LAYOUT# X16 * #IGNORE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, which has no VIC-II +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Well-known Kernal routine, described in: ; @@ -28,3 +31,5 @@ vicii_init: jmp vicii_init_registers } ; ROM layout + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/init/ff5b.cint.s b/src/kernal/init/ff5b.cint.s index 47f7eee9..cd1704de 100644 --- a/src/kernal/init/ff5b.cint.s +++ b/src/kernal/init/ff5b.cint.s @@ -13,5 +13,9 @@ CINT: +!ifndef CONFIG_ARNITECH_BLADE { jsr cint_legacy jmp setup_pal_ntsc +} else { + jmp cint_terminal +} diff --git a/src/kernal/init/vicii_init_registers.s b/src/kernal/init/vicii_init_registers.s index 4921ee01..0ca427fb 100644 --- a/src/kernal/init/vicii_init_registers.s +++ b/src/kernal/init/vicii_init_registers.s @@ -3,6 +3,9 @@ ;; #LAYOUT# M65 KERNAL_1 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, which has no VIC-II +!ifndef CONFIG_ARNITECH_BLADE { + ; ; The VIC-II set-up of vicii_init (e5a0.vicii_init.s), moved out of $E5A0-$E5C8 ; so that $E5B4 is free @@ -50,3 +53,4 @@ vicii_init_registers: jmp CLRCHN } +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/interrupts/ea31.default_irq_handler.s b/src/kernal/interrupts/ea31.default_irq_handler.s index 05784c7f..6d8a87ef 100644 --- a/src/kernal/interrupts/ea31.default_irq_handler.s +++ b/src/kernal/interrupts/ea31.default_irq_handler.s @@ -47,7 +47,9 @@ default_irq_handler_common: } else { +!ifndef CONFIG_ARNITECH_BLADE { jsr cursor_blink +} jsr JSCNKEY jsr JUDTIM ; update jiffy clock } diff --git a/src/kernal/iostack/e50a.plot.s b/src/kernal/iostack/e50a.plot.s index d060398e..ec8a4a60 100644 --- a/src/kernal/iostack/e50a.plot.s +++ b/src/kernal/iostack/e50a.plot.s @@ -26,12 +26,39 @@ plot_set: sty PNTR stx TBLX +!ifndef CONFIG_ARNITECH_BLADE { + jsr screen_calculate_pointers +} else { + + ; On a Blade the cursor is the Terminal Card's, which clamps it to the 80x25 screen; + ; PNTR and TBLX keep the last place set or read, which is all there is without a Card + + jsr terminal_find + bcs plot_get_kept + lda PNTR + sta TERMINAL_COLUMN, x + lda TBLX + sta TERMINAL_ROW, x +} + ; FALLTROUGH to save one byte on RTS plot_get: +!ifdef CONFIG_ARNITECH_BLADE { + + jsr terminal_find + bcs plot_get_kept + lda TERMINAL_COLUMN, x + sta PNTR + lda TERMINAL_ROW, x + sta TBLX + +plot_get_kept: +} + ldy PNTR ldx TBLX rts diff --git a/src/kernal/iostack/f157.chrin.s b/src/kernal/iostack/f157.chrin.s index 018decc0..f57a14ca 100644 --- a/src/kernal/iostack/f157.chrin.s +++ b/src/kernal/iostack/f157.chrin.s @@ -22,7 +22,11 @@ CHRIN: lda DFLTN ; Try $00 - keyboard +!ifndef CONFIG_ARNITECH_BLADE { +beq chrin_keyboard +} else { + +beq chrin_terminal +} ; XXX Try $03 - screen ; cmp #$03 diff --git a/src/kernal/iostack/f1ca.chrout.s b/src/kernal/iostack/f1ca.chrout.s index a9685588..84c62e4e 100644 --- a/src/kernal/iostack/f1ca.chrout.s +++ b/src/kernal/iostack/f1ca.chrout.s @@ -30,7 +30,11 @@ CHROUT: lda DFLTO cmp #$03 ; screen +!ifndef CONFIG_ARNITECH_BLADE { +beq chrout_screen +} else { + +beq chrout_terminal +} !ifdef HAS_RS232 { cmp #$02 diff --git a/src/kernal/keyboard/eb48.scnkey_set_keytab.s b/src/kernal/keyboard/eb48.scnkey_set_keytab.s index f81723d1..411b11c5 100644 --- a/src/kernal/keyboard/eb48.scnkey_set_keytab.s +++ b/src/kernal/keyboard/eb48.scnkey_set_keytab.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, which has no keyboard matrix: its keys come from the Terminal Card (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Well-known Kernal routine, described in: ; @@ -96,4 +99,6 @@ scnkey_toggle_if_needed: ; entry for SCNKEY (TWW/CTR version) sta VIC_YMCSB @1: rts -} \ No newline at end of file +} + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/keyboard/kb_matrix.s b/src/kernal/keyboard/kb_matrix.s index 2405b202..eb7df4cd 100644 --- a/src/kernal/keyboard/kb_matrix.s +++ b/src/kernal/keyboard/kb_matrix.s @@ -4,6 +4,9 @@ ;; #LAYOUT# M65 KERNAL_C #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, which has no keyboard matrix: its keys come from the Terminal Card (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Keyboard matrix, based on ; @@ -93,3 +96,5 @@ __kb_matrix_ctrl: !byte $90,$06,$00,$05,$00,$00,$11,$00 !byte $00,$00,$00,$84,$00,$00,$00,$1B } + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/keyboard/kb_matrix_128.s b/src/kernal/keyboard/kb_matrix_128.s index 6e2fc8ef..ed0cd058 100644 --- a/src/kernal/keyboard/kb_matrix_128.s +++ b/src/kernal/keyboard/kb_matrix_128.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, which has no keyboard matrix: its keys come from the Terminal Card (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Extended keyboard matrix for Commodore 128 keyboards, based on ; @@ -29,3 +32,5 @@ kb_matrix_128_bucky_filter: !byte %00000000 !byte %10000001 ; ALT, NO_SCRL } + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/keyboard/kb_matrix_alwaysrepeat.s b/src/kernal/keyboard/kb_matrix_alwaysrepeat.s index 42ee5395..6570f93d 100644 --- a/src/kernal/keyboard/kb_matrix_alwaysrepeat.s +++ b/src/kernal/keyboard/kb_matrix_alwaysrepeat.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, which has no keyboard matrix: its keys come from the Terminal Card (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Matrix ids of keys which should be repeated regardless of RPTFLG ; @@ -25,3 +28,5 @@ __kb_matrix_alwaysrepeat_end: } + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/keyboard/kb_matrix_bucky.s b/src/kernal/keyboard/kb_matrix_bucky.s index eaf33854..a5c861e3 100644 --- a/src/kernal/keyboard/kb_matrix_bucky.s +++ b/src/kernal/keyboard/kb_matrix_bucky.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, which has no keyboard matrix: its keys come from the Terminal Card (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Matrix for retrieving bucky key status on the C64 keyboard ; @@ -63,3 +66,5 @@ kb_matrix_bucky_shflag: ; mask to be ORed to SHFLAG to mark key status !byte KEY_FLAG_ALT !byte KEY_FLAG_NO_SCRL } + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/keyboard/kb_matrix_bucky_filter.s b/src/kernal/keyboard/kb_matrix_bucky_filter.s index bb4ba735..2fce38fb 100644 --- a/src/kernal/keyboard/kb_matrix_bucky_filter.s +++ b/src/kernal/keyboard/kb_matrix_bucky_filter.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, which has no keyboard matrix: its keys come from the Terminal Card (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Matrix for filtering out bucky keys while scanning the C64 keyboard ; @@ -23,3 +26,5 @@ kb_matrix_bucky_filter: !byte %00000000 !byte %00010000 ; SHIFT (right) !byte %00100100 ; VENDOR + CONTROL + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/keyboard/kb_matrix_joy.s b/src/kernal/keyboard/kb_matrix_joy.s index af17b875..3f99191c 100644 --- a/src/kernal/keyboard/kb_matrix_joy.s +++ b/src/kernal/keyboard/kb_matrix_joy.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, which has no keyboard matrix: its keys come from the Terminal Card (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Matrix for retrieving C64 joystick status and inject is as keyboard event ; @@ -40,3 +43,5 @@ kb_matrix_joy_keytab_hi: !byte >__kb_matrix_normal ; right } + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/keyboard/kb_matrix_lookup.s b/src/kernal/keyboard/kb_matrix_lookup.s index 0840f6fa..46de3f94 100644 --- a/src/kernal/keyboard/kb_matrix_lookup.s +++ b/src/kernal/keyboard/kb_matrix_lookup.s @@ -4,6 +4,9 @@ ;; #LAYOUT# M65 KERNAL_C #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, which has no keyboard matrix: its keys come from the Terminal Card (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Helper table for determining keyboard matrix decoding table on the C64 keyboard ; @@ -49,3 +52,5 @@ kb_matrix_lookup: !word $0000 ; %1.110 VENDOR+CTRL !word $0000 ; %1.111 SHIFT+VENDOR+CTRL } + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/keyboard/kb_matrix_row_keys.s b/src/kernal/keyboard/kb_matrix_row_keys.s index a550b83a..7231ed04 100644 --- a/src/kernal/keyboard/kb_matrix_row_keys.s +++ b/src/kernal/keyboard/kb_matrix_row_keys.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, which has no keyboard matrix: its keys come from the Terminal Card (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Single row key codes for scanning the C64 keyboard ; @@ -25,3 +28,5 @@ kb_matrix_row_keys: !byte %11011111 !byte %10111111 !byte %01111111 + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/keyboard/kb_matrix_row_offsets.s b/src/kernal/keyboard/kb_matrix_row_offsets.s index 39192b58..6af05dd0 100644 --- a/src/kernal/keyboard/kb_matrix_row_offsets.s +++ b/src/kernal/keyboard/kb_matrix_row_offsets.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, which has no keyboard matrix: its keys come from the Terminal Card (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Helper values to quickly determine row offset from the start of keyboard matrix ; @@ -20,3 +23,5 @@ kb_matrix_row_offsets: !byte 5*8 !byte 6*8 !byte 7*8 + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/keyboard/keyboard_disconnect.s b/src/kernal/keyboard/keyboard_disconnect.s index b3b140ef..87658472 100644 --- a/src/kernal/keyboard/keyboard_disconnect.s +++ b/src/kernal/keyboard/keyboard_disconnect.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, which has no keyboard matrix: its keys come from the Terminal Card (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Helper routine - disconnects the keyboard from CIA1_PRB, ; leaves $FF in .X (behavior needed in some places) @@ -18,3 +21,5 @@ keyboard_disconnect: } rts + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/keyboard/scnkey.s b/src/kernal/keyboard/scnkey.s index 677c4726..5032c10c 100644 --- a/src/kernal/keyboard/scnkey.s +++ b/src/kernal/keyboard/scnkey.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, which has no keyboard matrix: its keys come from the Terminal Card (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Official Kernal routine, described in: ; @@ -431,3 +434,5 @@ scnkey_buffer_full: sta KOUNT rts + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/keyboard/scnkey_128.s b/src/kernal/keyboard/scnkey_128.s index f2bcf90b..02807692 100644 --- a/src/kernal/keyboard/scnkey_128.s +++ b/src/kernal/keyboard/scnkey_128.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, which has no keyboard matrix: its keys come from the Terminal Card (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Keyboard scanning routine extension for C128 keyboards ; @@ -67,3 +70,5 @@ scnkey_128_no_keys: jmp scnkey_no_keys ; pass controll to original routine } + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/keyboard/scnkey_via_keylog.s b/src/kernal/keyboard/scnkey_via_keylog.s index 3b141824..b6698f0e 100644 --- a/src/kernal/keyboard/scnkey_via_keylog.s +++ b/src/kernal/keyboard/scnkey_via_keylog.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, which has no keyboard matrix: its keys come from the Terminal Card (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; Short helper jump-via-vector routine, to set the keyboard matrix !ifndef HAS_OPCODES_65CE02 { @@ -11,3 +14,5 @@ scnkey_via_keylog: jmp (KEYLOG) } + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/chrin_keyboard.s b/src/kernal/screen/chrin_keyboard.s index 752a281a..3f392f08 100644 --- a/src/kernal/screen/chrin_keyboard.s +++ b/src/kernal/screen/chrin_keyboard.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Keyboard part of the CHRIN routine ; @@ -167,3 +170,5 @@ chrkn_keyboard_not_enter: jsr CHROUT jsr pop_keyboard_buffer +bra chrin_keyboard_read + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/chrin_programmable_keys.s b/src/kernal/screen/chrin_programmable_keys.s index 05b55ba1..4a8aff49 100644 --- a/src/kernal/screen/chrin_programmable_keys.s +++ b/src/kernal/screen/chrin_programmable_keys.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Keyboard part of the CHRIN routine - programmable keys support ; Output: if Carry clear, programmable key was handled @@ -50,3 +53,5 @@ chrin_programmable_keys: rts } ; CONFIG_PROGRAMMABLE_KEYS + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/chrout_screen.s b/src/kernal/screen/chrout_screen.s index 8aae371a..c0eb779f 100644 --- a/src/kernal/screen/chrout_screen.s +++ b/src/kernal/screen/chrout_screen.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; CHROUT routine - screen support (character output) ; @@ -99,3 +102,5 @@ chrout_screen_done: jsr cursor_show_if_enabled jmp chrout_done_success + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/chrout_screen_clr.s b/src/kernal/screen/chrout_screen_clr.s index 21c15f7a..990e1aa5 100644 --- a/src/kernal/screen/chrout_screen_clr.s +++ b/src/kernal/screen/chrout_screen_clr.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; CLR key handling within CHROUT ; @@ -12,3 +15,5 @@ chrout_screen_CLR: jsr clear_screen jmp chrout_screen_calc_lptr_done + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/chrout_screen_control.s b/src/kernal/screen/chrout_screen_control.s index 10355eb2..feb3f0cf 100644 --- a/src/kernal/screen/chrout_screen_control.s +++ b/src/kernal/screen/chrout_screen_control.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; CHROUT routine - screen support, control codes ; @@ -70,3 +73,5 @@ chrout_try_color_loop: ; Unknown code, or key not requiring any handling jmp chrout_screen_done + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/chrout_screen_crsr.s b/src/kernal/screen/chrout_screen_crsr.s index b9ae5308..aa4d72e2 100644 --- a/src/kernal/screen/chrout_screen_crsr.s +++ b/src/kernal/screen/chrout_screen_crsr.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Cursor keys handling within CHROUT ; @@ -61,3 +64,5 @@ chrout_screen_CRSR_LEFT: lda #39 sta PNTR bne chrout_screen_CRSR_done ; branch always + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/chrout_screen_del.s b/src/kernal/screen/chrout_screen_del.s index 0ca97edf..d41c13b1 100644 --- a/src/kernal/screen/chrout_screen_del.s +++ b/src/kernal/screen/chrout_screen_del.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; CHROUT routine - screen support, DEL key handling ; @@ -120,3 +123,5 @@ chrout_screen_del_column_0: ; Finish with recalculating all the variables bne chrout_screen_del_done + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/chrout_screen_gfxtxt.s b/src/kernal/screen/chrout_screen_gfxtxt.s index 37cfbf4e..2c324d60 100644 --- a/src/kernal/screen/chrout_screen_gfxtxt.s +++ b/src/kernal/screen/chrout_screen_gfxtxt.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; GFX/TXT mode switch handling within CHROUT ; @@ -25,3 +28,5 @@ chrout_screen_TXT: lda VIC_YMCSB ora #$02 ; to lower case bne chrout_screen_GFX_TXT_end ; branch always + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/chrout_screen_home.s b/src/kernal/screen/chrout_screen_home.s index bd2a6712..1e544ce2 100644 --- a/src/kernal/screen/chrout_screen_home.s +++ b/src/kernal/screen/chrout_screen_home.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; HOME key handling within CHROUT ; @@ -12,3 +15,5 @@ chrout_screen_HOME: jsr cursor_home jmp chrout_screen_calc_lptr_done + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/chrout_screen_ins.s b/src/kernal/screen/chrout_screen_ins.s index 96c5ba4d..24728a89 100644 --- a/src/kernal/screen/chrout_screen_ins.s +++ b/src/kernal/screen/chrout_screen_ins.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; CHROUT routine - screen support, INS key handling ; @@ -95,3 +98,5 @@ chrout_screen_ins_copy_loop: ; Return from loop rts + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/chrout_screen_jumptable_codes.s b/src/kernal/screen/chrout_screen_jumptable_codes.s index e408e7ea..12d0021e 100644 --- a/src/kernal/screen/chrout_screen_jumptable_codes.s +++ b/src/kernal/screen/chrout_screen_jumptable_codes.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Jumptable for screen control codes support. To improve performance, should be sorted ; starting from the least probable routine. @@ -111,3 +114,5 @@ chrout_screen_jumptable: !word chrout_screen_RETURN !word chrout_screen_RETURN } + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/chrout_screen_quote.s b/src/kernal/screen/chrout_screen_quote.s index 084c639d..1f828b61 100644 --- a/src/kernal/screen/chrout_screen_quote.s +++ b/src/kernal/screen/chrout_screen_quote.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; CHROUT routine - screen support, control codes in quote mode ; @@ -22,3 +25,5 @@ chrout_screen_quote: adc #$BF ; C=1, so adding $BF + C = add $C0 @1: jmp chrout_screen_literal + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/chrout_screen_return.s b/src/kernal/screen/chrout_screen_return.s index ec9b2c57..5e86f476 100644 --- a/src/kernal/screen/chrout_screen_return.s +++ b/src/kernal/screen/chrout_screen_return.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; RETURN key handling within CHROUT ; @@ -31,3 +34,5 @@ chrout_screen_RETURN: jsr screen_calculate_PNT_USER @1: jmp screen_advance_to_next_line + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/chrout_screen_rvs.s b/src/kernal/screen/chrout_screen_rvs.s index fed019ec..9cbbf8a3 100644 --- a/src/kernal/screen/chrout_screen_rvs.s +++ b/src/kernal/screen/chrout_screen_rvs.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; RVS ON/OFF handling within CHROUT ; @@ -21,3 +24,5 @@ chrout_screen_RVS_OFF: sta RVS jmp chrout_screen_done + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/chrout_screen_shift_onoff.s b/src/kernal/screen/chrout_screen_shift_onoff.s index 0104f812..5e2c7e33 100644 --- a/src/kernal/screen/chrout_screen_shift_onoff.s +++ b/src/kernal/screen/chrout_screen_shift_onoff.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; SHIFT ON/OFF handling within CHROUT ; @@ -21,3 +24,5 @@ chrout_screen_SHIFT_OFF: sta MODE jmp chrout_screen_done + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/chrout_screen_stop.s b/src/kernal/screen/chrout_screen_stop.s index 243db941..9702c332 100644 --- a/src/kernal/screen/chrout_screen_stop.s +++ b/src/kernal/screen/chrout_screen_stop.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; STOP key handling within CHROUT ; @@ -18,3 +21,5 @@ chrout_screen_STOP: sta INSRT jmp chrout_screen_done } + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/chrout_to_screen_code.s b/src/kernal/screen/chrout_to_screen_code.s index 3c29d43c..c4641399 100644 --- a/src/kernal/screen/chrout_to_screen_code.s +++ b/src/kernal/screen/chrout_to_screen_code.s @@ -2,6 +2,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; CHROUT routine - convert PETSCII to screen code ; @@ -50,3 +53,5 @@ chrout_to_screen_code: @done: rts + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/cursor.s b/src/kernal/screen/cursor.s index 3e19d327..68e0607e 100644 --- a/src/kernal/screen/cursor.s +++ b/src/kernal/screen/cursor.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Variables used: ; - BLNSW (cursor blink switch) @@ -101,3 +104,5 @@ cursor_timer_reset: cursor_blink_end: rts + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/cursor_enable.s b/src/kernal/screen/cursor_enable.s index 88c22c21..dfe3f725 100644 --- a/src/kernal/screen/cursor_enable.s +++ b/src/kernal/screen/cursor_enable.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Variables used: ; - BLNSW (cursor blink switch) @@ -15,3 +18,5 @@ cursor_enable: sta BLNSW rts + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/cursor_show.s b/src/kernal/screen/cursor_show.s index 98a3c139..aa94e00e 100644 --- a/src/kernal/screen/cursor_show.s +++ b/src/kernal/screen/cursor_show.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Variables used: ; - BLNSW (cursor blink switch) @@ -35,3 +38,5 @@ cursor_show: cursor_show_done: rts + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/e536.init_screen.s b/src/kernal/screen/e536.init_screen.s index 0f52345c..1d32c324 100644 --- a/src/kernal/screen/e536.init_screen.s +++ b/src/kernal/screen/e536.init_screen.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Init screen at reset ; @@ -19,3 +22,5 @@ init_screen: sta $0286 jmp clear_screen + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/e544.clear_screen.s b/src/kernal/screen/e544.clear_screen.s index e5ed73fe..f9c988e7 100644 --- a/src/kernal/screen/e544.clear_screen.s +++ b/src/kernal/screen/e544.clear_screen.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Clear screen and initialise line link table, described in: ; @@ -39,3 +42,5 @@ clear_screen: ; Fall to cursor home routine jmp cursor_home + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/e566.cursor_home.s b/src/kernal/screen/e566.cursor_home.s index 2b08ef7b..3e4e1fc8 100644 --- a/src/kernal/screen/e566.cursor_home.s +++ b/src/kernal/screen/e566.cursor_home.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Home the cursor, described in: ; @@ -17,3 +20,5 @@ cursor_home: sta TBLX ; current row ; FALLTROUGH to the next routine + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/e56c.screen_calculate_pointers.s b/src/kernal/screen/e56c.screen_calculate_pointers.s index 2103d1fc..54a6e091 100644 --- a/src/kernal/screen/e56c.screen_calculate_pointers.s +++ b/src/kernal/screen/e56c.screen_calculate_pointers.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Set pointer (PNT) to current screen line , described in: ; @@ -23,3 +26,5 @@ screen_calculate_pointers: jsr screen_calculate_PNT_USER jmp screen_calculate_PNTR_LNMX + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/e8ea.screen_scroll_up.s b/src/kernal/screen/e8ea.screen_scroll_up.s index b236e0cf..027e04cf 100644 --- a/src/kernal/screen/e8ea.screen_scroll_up.s +++ b/src/kernal/screen/e8ea.screen_scroll_up.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Scroll the whole screen up by 1 logical line, described in: ; @@ -130,3 +133,5 @@ screen_scroll_up_loop_done: ; Recalculate PNT and USER jmp screen_calculate_PNT_USER + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/e9ff.screen_clear_line.s b/src/kernal/screen/e9ff.screen_clear_line.s index b969e618..ad59aa3a 100644 --- a/src/kernal/screen/e9ff.screen_clear_line.s +++ b/src/kernal/screen/e9ff.screen_clear_line.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Well-known routine, described in: ; @@ -36,3 +39,5 @@ screen_clear_line: ; Done rts + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/ea24.screen_calculate_user.s b/src/kernal/screen/ea24.screen_calculate_user.s index 75f2d743..9352c88c 100644 --- a/src/kernal/screen/ea24.screen_calculate_user.s +++ b/src/kernal/screen/ea24.screen_calculate_user.s @@ -1,6 +1,9 @@ ;; #LAYOUT# STD * #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Well-known Kernal routine, described in: ; @@ -22,3 +25,5 @@ screen_calculate_USER: sta USER+1 rts + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/ecf0.screen_line_lo_bytes.s b/src/kernal/screen/ecf0.screen_line_lo_bytes.s index 37d7b611..269e9d97 100644 --- a/src/kernal/screen/ecf0.screen_line_lo_bytes.s +++ b/src/kernal/screen/ecf0.screen_line_lo_bytes.s @@ -1,6 +1,9 @@ ;; #LAYOUT# STD * #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Well-known Kernal table, described in: ; @@ -15,3 +18,5 @@ screen_line_lo_bytes: !for line, 0, 24 { !byte <(line * 40) } + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/screen.s b/src/kernal/screen/screen.s index c84cc23c..7cc53226 100644 --- a/src/kernal/screen/screen.s +++ b/src/kernal/screen/screen.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Official Kernal routine, described in: ; @@ -50,4 +53,6 @@ SCREEN: pla rts -} \ No newline at end of file +} + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/screen_advance_to_next_line.s b/src/kernal/screen/screen_advance_to_next_line.s index eb2e7c21..56d19352 100644 --- a/src/kernal/screen/screen_advance_to_next_line.s +++ b/src/kernal/screen/screen_advance_to_next_line.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + screen_advance_to_next_line: @@ -21,3 +24,5 @@ screen_advance_to_next_line: sta PNTR jmp chrout_screen_calc_lptr_done + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/screen_calculate_pnt_user.s b/src/kernal/screen/screen_calculate_pnt_user.s index 59d8632d..cdbc5253 100644 --- a/src/kernal/screen/screen_calculate_pnt_user.s +++ b/src/kernal/screen/screen_calculate_pnt_user.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Set pointers PNT and USER to current screen line ; @@ -60,3 +63,5 @@ screen_calculate_USER: rts } + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/screen_calculate_pntr_lnmx.s b/src/kernal/screen/screen_calculate_pntr_lnmx.s index 3ed7ccae..41d934e9 100644 --- a/src/kernal/screen/screen_calculate_pntr_lnmx.s +++ b/src/kernal/screen/screen_calculate_pntr_lnmx.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Sets PNTR in a proper range (0-39 or 40-79) ; Sets LNMX to 39 or 79 @@ -62,3 +65,5 @@ screen_calculate_lnmx_79: lda #79 sta LNMX rts + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/screen_check_space_ends_line.s b/src/kernal/screen/screen_check_space_ends_line.s index b6ce85bb..607321d7 100644 --- a/src/kernal/screen/screen_check_space_ends_line.s +++ b/src/kernal/screen/screen_check_space_ends_line.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + screen_check_space_ends_line: @@ -12,3 +15,5 @@ screen_check_space_ends_line: cmp #$20 rts + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/screen_check_toggle_quote.s b/src/kernal/screen/screen_check_toggle_quote.s index 73899019..382fe5ba 100644 --- a/src/kernal/screen/screen_check_toggle_quote.s +++ b/src/kernal/screen/screen_check_toggle_quote.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Helper routine - check character in .A, toggles quote flag if needed ; @@ -19,3 +22,5 @@ screen_check_toggle_quote: lda #$22 ; restore previous .A valuee @1: rts + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/screen_code_to_petscii.s b/src/kernal/screen/screen_code_to_petscii.s index e72c63ac..18c78df9 100644 --- a/src/kernal/screen/screen_code_to_petscii.s +++ b/src/kernal/screen/screen_code_to_petscii.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Screen code to PETSCII conversion - see: ; @@ -70,3 +73,5 @@ s2p_adc_C0: adc #$C0 ; Carry already clear rts + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/screen_get_cliped_pntr.s b/src/kernal/screen/screen_get_cliped_pntr.s index 6839ecf1..5201095d 100644 --- a/src/kernal/screen/screen_get_cliped_pntr.s +++ b/src/kernal/screen/screen_get_cliped_pntr.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Get PNTR value clipped to 0-39 range in .Y, sets flags to compare with 0, can trash .A ; @@ -18,3 +21,5 @@ screen_get_clipped_PNTR: @1: cpy #$00 rts + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/screen_get_logical_line_end_ptr.s b/src/kernal/screen/screen_get_logical_line_end_ptr.s index 63ef357d..ab7e74d5 100644 --- a/src/kernal/screen/screen_get_logical_line_end_ptr.s +++ b/src/kernal/screen/screen_get_logical_line_end_ptr.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + screen_get_logical_line_end_ptr: @@ -27,3 +30,5 @@ screen_get_logical_line_end_39: ldy #39 rts + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/screen_grow_logical_line.s b/src/kernal/screen/screen_grow_logical_line.s index 72552579..2fcf9e06 100644 --- a/src/kernal/screen/screen_grow_logical_line.s +++ b/src/kernal/screen/screen_grow_logical_line.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + screen_grow_logical_line_done_scroll: @@ -142,3 +145,5 @@ screen_grow_logical_line_copy_done: inx jsr screen_clear_line jmp screen_calculate_PNTR_LNMX + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/screen_off.s b/src/kernal/screen/screen_off.s index 664bdb6f..ab02ccad 100644 --- a/src/kernal/screen/screen_off.s +++ b/src/kernal/screen/screen_off.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Helper routine to blank screen ; @@ -31,3 +34,5 @@ screen_off: rts } + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/screen_on.s b/src/kernal/screen/screen_on.s index f3409e5a..3c2c0da3 100644 --- a/src/kernal/screen/screen_on.s +++ b/src/kernal/screen/screen_on.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + ; ; Helper routine to show screen ; @@ -22,3 +25,5 @@ screen_on: rts } + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/screen_preserve_sal_eal.s b/src/kernal/screen/screen_preserve_sal_eal.s index 3f31ed29..580ea4ae 100644 --- a/src/kernal/screen/screen_preserve_sal_eal.s +++ b/src/kernal/screen/screen_preserve_sal_eal.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + screen_preserve_sal_eal: @@ -33,3 +36,5 @@ screen_common_sal_eal: +phy_trash_a +phx_trash_a rts + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/screen/screen_restore_sal_eal.s b/src/kernal/screen/screen_restore_sal_eal.s index 6e822740..cc162fc7 100644 --- a/src/kernal/screen/screen_restore_sal_eal.s +++ b/src/kernal/screen/screen_restore_sal_eal.s @@ -3,6 +3,9 @@ ;; #LAYOUT# * KERNAL_0 #TAKE ;; #LAYOUT# * * #IGNORE +; Not on a Blade, whose Terminal Card holds the screen editor (src/kernal/arnitech) +!ifndef CONFIG_ARNITECH_BLADE { + screen_restore_sal_eal: @@ -27,4 +30,6 @@ screen_restore_sal_eal: sta SAL+0 jmp screen_common_sal_eal - \ No newline at end of file + + +} ; CONFIG_ARNITECH_BLADE diff --git a/src/kernal/time/udtim.s b/src/kernal/time/udtim.s index ec51e798..864a1772 100644 --- a/src/kernal/time/udtim.s +++ b/src/kernal/time/udtim.s @@ -63,6 +63,10 @@ udtim_keyboard: +STUB_IMPLEMENTATION +} else ifdef CONFIG_ARNITECH_BLADE { + + jmp udtim_terminal_stop + } else { ; According to [CM64], page 27, the action we have to perform is to copy