diff --git a/firmware/HDD/a65_w32.exe b/firmware/HDD/a65_w32.exe deleted file mode 100644 index 5316c33e..00000000 Binary files a/firmware/HDD/a65_w32.exe and /dev/null differ diff --git a/firmware/HDD/a65v106_w32.zip b/firmware/HDD/a65v106_w32.zip deleted file mode 100644 index 8793ec91..00000000 Binary files a/firmware/HDD/a65v106_w32.zip and /dev/null differ diff --git a/firmware/HDD/build.bat b/firmware/HDD/build.bat index c412496c..c9d47c0a 100644 --- a/firmware/HDD/build.bat +++ b/firmware/HDD/build.bat @@ -1,4 +1,11 @@ -a65_w32 -b -l HDDRVR.A65 >hddrvr.lst -@del HDDRVR.BIN -rename 6502.bin HDDRVR.BIN -copy HDDRVR.BIN ..\..\resource \ No newline at end of file +@REM ACME only ever returns 0! +acme.exe hddrvr.a65 +@IF %ERRORLEVEL% NEQ 0 goto error + +copy hddrvr.bin ..\..\resource +@goto end + +:error +@echo "ACME failed" + +:end diff --git a/firmware/HDD/hddrvr.a65 b/firmware/HDD/hddrvr.a65 index d3362df5..fc750587 100644 --- a/firmware/HDD/hddrvr.a65 +++ b/firmware/HDD/hddrvr.a65 @@ -26,14 +26,14 @@ ; ; 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) ; . Modified to support Apple Oasis' entrypoint: $c761 (8 Sept 2012) (Feature #5557) ; . Added support for SmartPort entrypoint (20 Oct 2012) ; - EG. "Prince of Persia (Original 3.5 floppy for IIc+).2mg" ; . GH#370 (Robert Hoem, 27 Oct 2016): - . 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. +; . 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. ; TODO: ; . Make code relocatable (so HDD controller card can go into any slot) ; . 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 ? ; +!cpu 6502 ; Compatible with all Apple2's +!to "hddrvr.bin", plain +!sl "hddrvr.labels" + ; constants hd_execute = $c0f0 hd_error = $c0f1 @@ -65,6 +69,8 @@ BUTTON0 = $C061 ;; code *= $c700 ; org $c700 +!zone code + start ; Autoboot and ProDOS look at the following few opcodes to detect block devices @@ -295,6 +301,8 @@ SmartPort3 ;====================================== ; 12 unused bytes +!zone data + ; $CsFE = status bits (BAP p7-14) ; 7 = medium is removable ; 6 = device is interruptable @@ -308,12 +316,9 @@ SmartPort3 ; $D7 = Removable, Interruptable, #Volumes=2, Supports write/read/status ; $BF = Removable, Interruptable, #Volumes=4, Supports format/write/read/status (KEGS / IIGS) - ; datablock. This starts near the end of the firmware (at offset $FC) ;; data *= $c7fc ; org $c7fc - .word $7fff ; how many blocks are on the device. - .byte $D7 ; specifics about the device (number of drives, read/write/format capability, etc) - .byte