diff --git a/AppleIISd.bin b/AppleIISd.bin index ceff2d6..bed1614 100644 Binary files a/AppleIISd.bin and b/AppleIISd.bin differ diff --git a/AppleIISd.hex b/AppleIISd.hex index 13779fa..b5a017a 100644 --- a/AppleIISd.hex +++ b/AppleIISd.hex @@ -58,7 +58,7 @@ :1003900005D01A18A9000848A9FF9D80C0BD80C0DB :1003A000F0F6BD83C009019D83C068286038A92785 :1003B00080E438A92B80DF20204170706C655D5B84 -:1003C00053642076302E382028632932303137208C +:1003C00053642076312E3020286329323031372093 :1003D000466C6F7269616E20526569747A004000E4 :1003E000000000954100000000F948000001AA87C4 :1003F0005000000200FF7700000000656940000027 diff --git a/AppleIISd.vcxproj b/AppleIISd.vcxproj index a15ae28..b3f344d 100644 --- a/AppleIISd.vcxproj +++ b/AppleIISd.vcxproj @@ -12,6 +12,8 @@ </ItemGroup> <ItemGroup> <None Include="makefile" /> + <None Include="obj\AppleIISd.lst" /> + <None Include="README.md" /> <None Include="src\AppleIISd.cfg" /> <None Include="src\AppleIISd.s" /> </ItemGroup> diff --git a/AppleIISd.vcxproj.filters b/AppleIISd.vcxproj.filters index bbd9f28..2f91e44 100644 --- a/AppleIISd.vcxproj.filters +++ b/AppleIISd.vcxproj.filters @@ -8,6 +8,8 @@ <None Include="src\AppleIISd.s"> <Filter>src</Filter> </None> + <None Include="README.md" /> + <None Include="obj\AppleIISd.lst" /> </ItemGroup> <ItemGroup> <Filter Include="src"> diff --git a/README.md b/README.md index 611fb37..7bbb50d 100644 --- a/README.md +++ b/README.md @@ -1,24 +1,41 @@ -# Apple][Sd -SD card based ProFile replacement for enhanced Apple IIe computers +# AppleIISd +SD card based ProFile replacement for enhanced Apple IIe and IIgs computers -The **Apple][Sd** is a SD card based replaced for the ProFile harddrive. In contrast to other SD card based devices, this card does not replace a Disk II drive. Data is saved directly onto the SD card, not via images on a FAT system, like on other cards. The SD card is accessable with [CiderPress](http://a2ciderpress.com/). +The **AppleIISd** is a SD card based replaced for the ProFile harddrive. In contrast to other SD card based devices, this card does not replace a Disk II drive. Data is saved directly onto the SD card, not via images on a FAT system, like on other cards. The SD card is accessable with [CiderPress](http://a2ciderpress.com/). A Xilinx CPLD is used as a SPI controller and translates, together with the ROM driver, SD card data to/from the Apple IIe. The VHDL source is based on [SPI65/B](http://www.6502.org/users/andre/spi65b) by André Fachat. -The assembler sources were written in Merlin-8. The [schematics](AppleIISd.pdf) are available as PDF. +The assembler sources are written for CC65. The [schematics](AppleIISd.pdf) are available as PDF. ## Features +* works with ProDOS and GS/OS * up to 64MB storage space (2x 65535 blocks) * ProDOS driver in ROM * Auto boot * Access LED * Card detect and write protect sensing +* Skip boot when Open-Apple key is pressed ## Requirements -The Apple][Sd requires and has been tested on an enhanced IIe computer. The ROM code uses some 65c02 opcodes and will therefore not work on a II, II+ or unenhanced IIe. ProDOS versions 1.1 to 2.4.1 seem to work. +The AppleIISd requires an enhanced IIe or IIgs computer. The ROM code uses some 65c02 opcodes and will therefore not work on a II, II+ or unenhanced IIe. It has been tested in the following combinations: +* Apple IIgs Rom 01, GS/OS 6.0.4 +* Apple IIgs Rom 01, Prodos 2.4.1 +* Apple IIgs Rom 01, Prodos 1.9 +* Apple IIe enhanced, 128k, Prodos 2.4.1 +* Apple IIe enhanced, 128k, Prodos 1.9 +* Apple IIe enhanced, 64k, Prodos 1.9 When a 2732 type ROM is used, the binary image has to be programmed at offset 0x800, because A11 is always high for compatibility with 2716 type ROMs. +## Building the sources +Be sure to have the newest version of CC65 (V2.16) and some kind of Make instaled, then type one of the following comands: +``` +make # generate binaries +make OPTIONS=mapfile,listing # generate mapfile and listing, too +make clean # delete binaries +``` +Alternatively use the VisualStudio solution. + ## Timing The clock of the SPI bus *SCK* may be derived from either *Phi0* or the *7M* clock. Additionally, the divisor may be 2 to 8. @@ -56,12 +73,11 @@ LDA $C0C0 ## TODOs * Much more testing * SRAM option (may never work, though) -* Find a use for the IRQ pin +* Enable 4 or 6 volumes under GS/OS * Use 28 pin socket to support other EPROMS than 2716 and 2732 ## Known Bugs -* Does not always boot in slot 7 (may be a faulty connector, though) -* Does not work, when a Z80 card is present +* Does not work with some Z80 cards present  diff --git a/src/AppleIISd.s b/src/AppleIISd.s index ef020a1..28e6426 100644 --- a/src/AppleIISd.s +++ b/src/AppleIISd.s @@ -1,7 +1,7 @@ ;******************************* ; ; Apple][Sd Firmware -; Version 0.8 +; Version 1.0 ; ; (c) Florian Reitz, 2017 ; @@ -10,7 +10,7 @@ ; ;******************************* -;DEBUG := 0 +.define DEBUG 0 ; Memory defines @@ -56,7 +56,7 @@ INITED = $80 ; find slot nr - .ifdef DEBUG + .if DEBUG LDA #$04 STA SLOT LDA #$C4 @@ -113,7 +113,7 @@ INITED = $80 ; ;******************************* - .ifdef DEBUG + .if DEBUG ; see if slot has a driver already @@ -209,7 +209,7 @@ DRIVER: CLD LDA CMDHI PHA - .ifdef DEBUG + .if DEBUG LDA #$04 STA SLOT LDA #$C4 @@ -252,7 +252,7 @@ DRIVER: CLD BEQ @READ CMP #2 BEQ @WRITE - .ifdef DEBUG + .if DEBUG CMP #$FF BEQ @TEST .endif @@ -266,7 +266,7 @@ DRIVER: CLD BRA @RESTZP @WRITE: JSR WRITE BRA @RESTZP - .ifdef DEBUG + .if DEBUG @TEST: JSR TEST ; do device test BRA @RESTZP .endif @@ -801,7 +801,7 @@ WRITE: JSR WRPROT ; ;******************************* - .ifdef DEBUG + .if DEBUG TEST: LDA SLOT16 PHA LDA SLOT @@ -869,7 +869,7 @@ TEST: LDA SLOT16 .endif -TEXT: .asciiz " Apple][Sd v0.8 (c)2017 Florian Reitz" +TEXT: .asciiz " Apple][Sd v1.0 (c)2017 Florian Reitz" CMD0: .byt $40, $00, $00 .byt $00, $00, $95