From 4fd6b7b91e02105f4eabd1db7a7bede276643fc5 Mon Sep 17 00:00:00 2001 From: Terence Boldt Date: Wed, 17 Apr 2024 10:23:32 -0400 Subject: [PATCH] Add assembly of clock driver --- Apple2/Clock.Driver.asm | 48 +++++++++++++++++++++++++++++++++++++++++ Apple2/assemble.cmd | 7 +++++- Apple2/assemble.sh | 3 +++ 3 files changed, 57 insertions(+), 1 deletion(-) create mode 100644 Apple2/Clock.Driver.asm diff --git a/Apple2/Clock.Driver.asm b/Apple2/Clock.Driver.asm new file mode 100644 index 0000000..c238ab2 --- /dev/null +++ b/Apple2/Clock.Driver.asm @@ -0,0 +1,48 @@ +enableWriteLang = $C088 +disableWriteLang = $C082 + +prodosJump = $BF06 +prodosClockCode = $BF07 +prodosMachineId = $BF98 + +; Find Apple2-IO-RPi card + +; Change driver code to point to the card + +; Change destination to be ProDOS clock code location + lda prodosClockCode + sta DriverDestination+1 + lda prodosClockCode+1 + sta DriverDestination+2 + +; Changing RTS to JMP enables clock driver + lda #$4C ; jump instruction + sta prodosJump + +; Enable writing to language card RAM +; by triggering switch twice + lda enableWriteLang + lda enableWriteLang + +; write driver code to language card RAM +WriteDriver: + ldy #EndDriver-Driver+1 + lda Driver,y +DriverDestination: + sta $D000,y ; this address gets modified above + dey + bne WriteDriver + +; Disable writing to language card RAM + lda disableWriteLang + +; Update ProDOS Machine ID to mark clock as enabled + lda prodosMachineId + ora #$01 + sta prodosMachineId + + rts + +Driver: +EndDriver: + rts diff --git a/Apple2/assemble.cmd b/Apple2/assemble.cmd index f2b075a..bdd55c1 100644 --- a/Apple2/assemble.cmd +++ b/Apple2/assemble.cmd @@ -88,7 +88,12 @@ ca65 RPi.Command.asm -D HW_TYPE=%HW_TYPE% -o RPi.Command.o --listing RPi.Command ld65 RPi.Command.o -o RPi.Command.bin -C ../.cicd/none.cfg @if errorlevel 1 goto exit -del *.o +ca65 Clock.Driver.asm -D HW_TYPE=%HW_TYPE% -o Clock.Driver.o --listing Clock.Driver.lst +@if errorlevel 1 goto exit +ld65 Clock.Driver.o -o Clock.Driver.bin -C ../.cicd/none.cfg +@if errorlevel 1 goto exit + +cdel *.o del DriveFirmware.bin del MenuFirmware.bin del CommandFirmware.bin diff --git a/Apple2/assemble.sh b/Apple2/assemble.sh index 48c667d..685aa85 100755 --- a/Apple2/assemble.sh +++ b/Apple2/assemble.sh @@ -51,6 +51,9 @@ ld65 Shell.o -o ../RaspberryPi/driveimage/Shell.bin -C ../.cicd/none.cfg || exi ca65 RPi.Command.asm -D HW_TYPE=$HW_TYPE -o RPi.Command.o --listing RPi.Command.lst || exit 1 ld65 RPi.Command.o -o ../RaspberryPi/driveimage/RPi.Command.bin -C ../.cicd/none.cfg || exit 1 +ca65 Clock.Driver.asm -D HW_TYPE=$HW_TYPE -o Clock.Driver.o --listing Clock.Driver.lst || exit 1 +ld65 Clock.Driver.o -o ../RaspberryPi/driveimage/Clock.Driver.bin -C ../.cicd/none.cfg || exit 1 + rm ./*.o rm DriveFirmware.bin rm MenuFirmware.bin