Arnitech controller: the TOD set at boot, and a jump table at $FF00
A new option, ARNITECH_CONTROLLER, on in the mc64 configuration only. IOINIT starts timer A with CIA #1's TOD on 50 Hz, the mc64's mains, and if the Arnitech controller's signature "ARNI" is at $DE80, latches its clock and copies its real time into the TOD, hours first and tenths last, flipping bit 7 of an hour of 12 first, since the CIA flips it back when 12 is written. Without the signature the TOD is left alone. The Arnitech jump table at $FF00: "ARNI", version $01, two entries, and JMPs from $FF06: $FF06 finds the first Card slot holding a Card of the type in A (carry clear, the slot in A, its Card window's low byte in X; carry set if none or no controller), $FF09 sets the TOD as IOINIT does. $FF48-$FF80 stay clear. The code is in new files under src/kernal/arnitech; other configurations build as before.
This commit is contained in:
1 parent
0ec343a727
commit
03e2d4a4b8
8 files changed
+208
No files matched your search
@@ -0,0 +1,26 @@
|
||||
|
||||
;
|
||||
; 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
|
||||
}
|
||||
Reference in new issue
Block a user