HDD firmware: switched assembler from A65 1.06 to ACME 0.96.4

This commit is contained in:
tomcw 2019-10-05 15:18:41 +01:00
parent 25496d3a52
commit 826dc6625e
4 changed files with 25 additions and 13 deletions

Binary file not shown.

Binary file not shown.

View File

@ -1,4 +1,11 @@
a65_w32 -b -l HDDRVR.A65 >hddrvr.lst @REM ACME only ever returns 0!
@del HDDRVR.BIN acme.exe hddrvr.a65
rename 6502.bin HDDRVR.BIN @IF %ERRORLEVEL% NEQ 0 goto error
copy HDDRVR.BIN ..\..\resource
copy hddrvr.bin ..\..\resource
@goto end
:error
@echo "ACME failed"
:end

View File

@ -26,14 +26,14 @@
; ;
; Modified by Tom Charlesworth: ; Modified by Tom Charlesworth:
; . Fixed so it can be assembled by a65 v1.06 ; . Updated so it can be assembled by ACME 0.96.4
; . Fixed so that ProDOS entrypoint is $c70a (26 Dev 2007) (Bug #12723) ; . Fixed so that ProDOS entrypoint is $c70a (26 Dev 2007) (Bug #12723)
; . Modified to support Apple Oasis' entrypoint: $c761 (8 Sept 2012) (Feature #5557) ; . Modified to support Apple Oasis' entrypoint: $c761 (8 Sept 2012) (Feature #5557)
; . Added support for SmartPort entrypoint (20 Oct 2012) ; . Added support for SmartPort entrypoint (20 Oct 2012)
; - EG. "Prince of Persia (Original 3.5 floppy for IIc+).2mg" ; - EG. "Prince of Persia (Original 3.5 floppy for IIc+).2mg"
; . GH#370 (Robert Hoem, 27 Oct 2016): ; . GH#370 (Robert Hoem, 27 Oct 2016):
. Added a check against open-apple during boot to route boot to slot 6 ; . Added a check against open-apple during boot to route boot to slot 6
. This happens after the first two blocks are loaded from the HD. ; . This happens after the first two blocks are loaded from the HD.
; TODO: ; TODO:
; . Make code relocatable (so HDD controller card can go into any slot) ; . Make code relocatable (so HDD controller card can go into any slot)
; . Remove support for Entrypoint_C746 (old AppleWin) & Entrypoint_C761 (Apple Oasis) ; . Remove support for Entrypoint_C746 (old AppleWin) & Entrypoint_C761 (Apple Oasis)
@ -41,6 +41,10 @@
; . Check SmartPort: Is it OK to trash Y and $42,..,$47 ? ; . Check SmartPort: Is it OK to trash Y and $42,..,$47 ?
; ;
!cpu 6502 ; Compatible with all Apple2's
!to "hddrvr.bin", plain
!sl "hddrvr.labels"
; constants ; constants
hd_execute = $c0f0 hd_execute = $c0f0
hd_error = $c0f1 hd_error = $c0f1
@ -65,6 +69,8 @@ BUTTON0 = $C061
;; code ;; code
*= $c700 ; org $c700 *= $c700 ; org $c700
!zone code
start start
; Autoboot and ProDOS look at the following few opcodes to detect block devices ; Autoboot and ProDOS look at the following few opcodes to detect block devices
@ -295,6 +301,8 @@ SmartPort3
;====================================== ;======================================
; 12 unused bytes ; 12 unused bytes
!zone data
; $CsFE = status bits (BAP p7-14) ; $CsFE = status bits (BAP p7-14)
; 7 = medium is removable ; 7 = medium is removable
; 6 = device is interruptable ; 6 = device is interruptable
@ -308,12 +316,9 @@ SmartPort3
; $D7 = Removable, Interruptable, #Volumes=2, Supports write/read/status ; $D7 = Removable, Interruptable, #Volumes=2, Supports write/read/status
; $BF = Removable, Interruptable, #Volumes=4, Supports format/write/read/status (KEGS / IIGS) ; $BF = Removable, Interruptable, #Volumes=4, Supports format/write/read/status (KEGS / IIGS)
; datablock. This starts near the end of the firmware (at offset $FC) ; datablock. This starts near the end of the firmware (at offset $FC)
;; data ;; data
*= $c7fc ; org $c7fc *= $c7fc ; org $c7fc
.word $7fff ; how many blocks are on the device. !word $7fff ; how many blocks are on the device.
.byte $D7 ; specifics about the device (number of drives, read/write/format capability, etc) !byte $D7 ; specifics about the device (number of drives, read/write/format capability, etc)
.byte <Entrypoint_ProDOS ; entry point offset for ProDOS (must be $0a) !byte <Entrypoint_ProDOS ; entry point offset for ProDOS (must be $0a)
.end