; ; 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 }