Files
open-roms/src/aliases/,aliases_hardware_arnitech.s
T
chris f809b9b7ea feat(arnitech): the Terminal Card is a Blade's screen and keyboard
With ARNITECH_BLADE the screen editor, the keyboard matrix scan, and the VIC-II
set-up are left out, and devices 3 and 0 are the Terminal Card the Arnitech
controller finds by its type, $04. CHROUT writes each byte to its Output, or
to its Literal while quote or insert mode is on, keeping QTSW and INSRT as the
screen editor does. CHRIN marks where input starts, echoes the keys typed, and
on RETURN has the Card take the logical line under the cursor and reads it
back. SCNKEY moves the Card's keys into the keyboard buffer up to XMAX, UDTIM
sets STKEY from its RUN/STOP, SCREEN answers 80x25, PLOT moves and reads its
cursor, and CINT resets it and puts the native-mode vectors in place. With no
Terminal Card, bytes printed go nowhere and no key comes.
2026-10-18 08:57:01 +02:00

65 lines
2.7 KiB
ArmAsm

;
; Names of the Arnitech controller's registers, on the expansion port's I/O1 (mc64 only)
;
; See arnitech's ADR 0023, "The Arnitech controller answers $DE80-$DE9F, and six Card windows
; follow it" (https://git.susdog.de/chris/arnitech, docs/adr/0023-arnitech-controller-register-map.md)
;
!ifdef CONFIG_ARNITECH_CONTROLLER {
!addr ARNITECH_SIGNATURE = $DE80 ; "ARNI", 4 bytes
!addr ARNITECH_VERSION = $DE84
!addr ARNITECH_SLOT_COUNT = $DE85 ; Card slots in this Case
!addr ARNITECH_IRQ_STATUS = $DE86
!addr ARNITECH_IRQ_MASK = $DE87
!addr ARNITECH_SLOT_TABLE = $DE88 ; the type of the Card in slots 0-5, $00 for none
!addr ARNITECH_CLOCK_LATCH = $DE90 ; a read copies the clock into $DE91-$DE9E
!addr ARNITECH_CLOCK_TEN = $DE91 ; real time as CIA1's TOD reads it: tenths,
!addr ARNITECH_CLOCK_SEC = $DE92 ; seconds,
!addr ARNITECH_CLOCK_MIN = $DE93 ; minutes,
!addr ARNITECH_CLOCK_HRS = $DE94 ; hours, BCD 1-12, bit 7 PM
!addr ARNITECH_CARD_WINDOW = $DEA0 ; slot n's Card window at $DEA0 + 16 * n
; The RR-Net socket: the CS8900A of the Network Card in the lowest slot, in RR-Net order
; (arnitech's ADR 0027; Cirrus Logic DS271F5 Table 18, each port's even byte the low one)
!addr RRNET_PP_POINTER = $DE02 ; PacketPage pointer
!addr RRNET_PP_DATA = $DE04 ; PacketPage data port 0
!addr RRNET_RX_TX_DATA = $DE08 ; receive and transmit data port 0
!addr RRNET_TX_CMD = $DE0C ; write-only
!addr RRNET_TX_LENGTH = $DE0E ; write-only
}
!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
}