mirror of
https://github.com/a2stuff/prodos-drivers.git
synced 2024-06-14 04:29:32 +00:00
ROMX: Update driver c/o Jeff Mazur
This ensures all of page 2 is preserved for full compatibility.
This commit is contained in:
parent
b1c3d52e0a
commit
c323b205bc
|
@ -1,10 +1,11 @@
|
|||
;;; ROMX ProDOS RTC Driver
|
||||
;;; Based on:
|
||||
;;; * Ver 0.91
|
||||
;;; * Ver 0.92 Added ZIP slowdowns - 11-Aug-2021 -
|
||||
;;; Ver 0.91
|
||||
;;; Ver 0.92 Added ZIP slowdowns
|
||||
;;; Ver 0.93 Moved StubLoc to $0110
|
||||
;;; Ver 0.94 Moved StubLoc to RTC_BUF + 7. Save/restore in stack
|
||||
;;;
|
||||
;;; Modifications by Joshua Bell inexorabletash@gmail.com
|
||||
;;; * Converted to ca65 syntax and adapted to driver wrapper.
|
||||
;;; * Driver core rewritten to ensure that $220 and up are saved/restored.
|
||||
|
||||
.setcpu "6502"
|
||||
.linecont +
|
||||
|
@ -171,17 +172,13 @@ loop: lda ClockDrv,y
|
|||
;;; ROMX RTC driver - Relocated into ProDOS clock driver space
|
||||
;;; ============================================================
|
||||
|
||||
;;; The first ~$20 bytes of $200 (input buffer) are safe to
|
||||
;;; overwrite. They are also used by the built-in Thunderclock
|
||||
;;; slot-clock driver in ProDOS ($200-$20C).
|
||||
|
||||
StubLoc := $0200 ; RAM stub for ROMX (<$20 bytes)
|
||||
|
||||
;;; ROMX Firmware writes RTC data into this fixed location.
|
||||
;;; It risks conflicting with some applications (e.g. A2DeskTop),
|
||||
;;; so the data is saved/restored around clock reads.
|
||||
|
||||
RTC_BUF := $02B0
|
||||
RTC_BUF := $02B0 ; use keyboard buffer
|
||||
StubLoc := RTC_BUF+7 ; RAM stub for ROMX
|
||||
|
||||
|
||||
ClockDrv:
|
||||
;; --------------------------------------------------
|
||||
|
@ -193,12 +190,12 @@ ClockDrv:
|
|||
;; --------------------------------------------------
|
||||
;; Copy the stub to RAM, and preserve RTC_BUF
|
||||
|
||||
ldx #RamStubEnd-RamStub-1 ; copy stub to RAM
|
||||
RELOC1 := *+1
|
||||
: lda RamStub - ClockDrv,x ; self-modified during relocation
|
||||
sta StubLoc,x
|
||||
lda RTC_BUF,x ; save `RTC_BUF` too (way more than needed)
|
||||
ldx #RamStubEnd-RamStub+7 ; preserve and copy stub to RAM
|
||||
: lda RTC_BUF,x
|
||||
pha
|
||||
RELOC1 := *+1
|
||||
lda RamStub-ClockDrv-7,x ; self-modified during relocation
|
||||
sta RTC_BUF,x
|
||||
dex
|
||||
bpl :-
|
||||
|
||||
|
@ -270,7 +267,7 @@ bufloop:
|
|||
: pla
|
||||
sta RTC_BUF,x
|
||||
inx
|
||||
cpx #RamStubEnd-RamStub
|
||||
cpx #RamStubEnd-RamStub+7+1
|
||||
bne :-
|
||||
|
||||
;; --------------------------------------------------
|
||||
|
|
Loading…
Reference in New Issue
Block a user