diff --git a/README.md b/README.md index 90bec37..44568ad 100644 --- a/README.md +++ b/README.md @@ -24,8 +24,8 @@ with what made the layout easier. ## Parts List -* A 74HCT245 octal bus transceiver (U1) -* A 28C256 EEPROM (U2) +* A 74LS245 octal bus transceiver (non-TTL appears to have issues with the ROM address decode logic) (U1) +* A 28C256 EEPROM (28-pin JEDEC EPROMs such as the 27128 also work) (U2) * A 1.8432 MHz 5V oscillator (U3) * A 22V10 GAL (any speed or variety should work) (U4) * A W65C51N ACIA (U5) diff --git a/gal/ssc-cr-2023030903.jed b/gal/ssc-cr-2023030903.jed new file mode 100644 index 0000000..b56a562 --- /dev/null +++ b/gal/ssc-cr-2023030903.jed @@ -0,0 +1,60 @@ + +CUPL(WM) 5.0a Serial# 60008009 +Device g22v10 Library DLIB-h-40-1 +Created Fri Mar 10 06:33:40 2023 +Name Simple Serial Card +Partno SSC0001 +Revision 01 +Date 3/9/23 +Designer Chris RYU +Company RyuCats +Assembly None +Location None +*QP24 +*QF5892 +*G0 +*F0 +*L00896 00000000000000000000000000001111 +*L00928 11111111111111111111111111111111 +*L00960 11111111111111111111101111111111 +*L00992 11111111111111111111000000000000 +*L01472 00000000000000000000000011111111 +*L01504 11111111111111111111111111111111 +*L01536 11111111111111111111011111111111 +*L01568 11111111110111110000000000000000 +*L02144 00000000000011111111111111111111 +*L02176 11111111111111111111111111111111 +*L02208 11111111111111111111011111111111 +*L02240 11111111111111111111111111111011 +*L02272 11111111111111110000000000000000 +*L02880 00000000000000000000000011111111 +*L02912 11111111111111111111111111111111 +*L02944 11111111111111111111111111111111 +*L02976 11110111111111111111111111111111 +*L03008 11111111101111111111111111110000 +*L03648 00001111111111111111111111111111 +*L03680 11111111111111111111111111111111 +*L03712 11111111111111111111011111111111 +*L03744 11111111111111111111101111111111 +*L03776 11111111000000000000000000000000 +*L04288 00000000000000000000000011111111 +*L04320 11111111111111111111111111111111 +*L04352 11111111111111110111011111111111 +*L04384 11111111110111110000000000000000 +*L04864 00000000000000000000111111111111 +*L04896 11111111111111111111111111111111 +*L04928 11111111111111110111111111111111 +*L04960 11011111111110111111111111111111 +*L04992 11111111111111111111111111111111 +*L05024 10111111111111111111011101110111 +*L05056 11110000000000000000000000000000 +*L05344 00000000000000000000000011111111 +*L05376 11111111111111111111111111111111 +*L05408 11111111111111111111111111111111 +*L05440 11111101111111111111111101111111 +*L05472 11111111111111111111111111110000 +*L05792 00000000000000000000111111111111 +*L05824 11110101001101010011010000110011 +*L05856 00000011000000110000001100010000 +*C7DCD +*9C8B \ No newline at end of file diff --git a/gal/ssc_gal_wincupl.pld b/gal/ssc_gal_wincupl.pld new file mode 100755 index 0000000..30e5e7b --- /dev/null +++ b/gal/ssc_gal_wincupl.pld @@ -0,0 +1,61 @@ +Name Simple Serial Card; +Partno SSC0001; +Revision 01; +Date 3/9/23; +Designer Chris RYU; +Company RyuCats; +Location None; +Assembly None; +Device g22v10; + +/* Inputs */ + +Pin 1 = reset; +Pin 2 = CTS; +Pin 3 = io_C800; +Pin 4 = slot_select; +Pin 5 = io_slot_access; +Pin 6 = RW; +Pin 7 = A11; +Pin 8 = A10; +Pin 9 = A9; +Pin 10 = A8; +Pin 11 = A3; + +/* Outputs */ + +Pin 14 = rom_c800_enable; +Pin 15 = rom_latch; +Pin 16 = ls245_enable; +Pin 17 = eprom_a8; +Pin 18 = eprom_a9; +Pin 19 = eprom_a10; +Pin 20 = rom_enable; +Pin 21 = PHI2; + + +/* Latch (RS flip-flop) definition: + Q = (Q & RESET) # !SET; +*/ + +PHI2 = !slot_select; /* per schematic */ + +cf00_access = io_C800 # !(A8 & A9 & A10); /* CF00 access, pull low */ + +/* + if either reset or cf00 access is pulled low, then rom_latch = 1 + if io_slot_access is 0, then rom_latch = 0 + if io_slot_access is 1, then rom_latch = no change +*/ + +/* Q = ROM_LATCH RESET = io_slot_access SET = (reset & cf00_access) */ +rom_latch = (rom_latch & io_slot_access) # !(reset & cf00_access); + +rom_c800_enable = rom_latch # io_C800; /* enable if both pulled low */ + +ls245_enable = ( io_slot_access & rom_c800_enable & slot_select); /* c800 ? */ +rom_enable = (io_slot_access & rom_c800_enable); + +eprom_a8 = A8 # !A11; +eprom_a9 = A9 # !A11; +eprom_a10 = A10 # !A11; diff --git a/rom/Makefile b/rom/Makefile new file mode 100644 index 0000000..de4501c --- /dev/null +++ b/rom/Makefile @@ -0,0 +1,16 @@ +# Simple makefile to snarf the Apple SuperSerialCard ROM image and patch it +# for ADTPro bootstrapping + +ROM_SOURCE = https://mirrors.apple2.org.za/Apple%20II%20Documentation%20Project/Interface%20Cards/Serial/Apple%20II%20Super%20Serial%20Card/ROM%20Images/Apple%20II%20Super%20Serial%20Card%20ROM%20-%20341-0065-A.bin + +all: 341-0065.bin adtpro-patch-341-0065.bin + +adtpro-patch-341-0065.bin: adtpro-patch-341-0065.xdelta + xdelta3 -d -s 341-0065.bin adtpro-patch-341-0065.xdelta \ + adtpro-patch-341-0065.bin + +341-0065.bin: + curl -o 341-0065.bin $(ROM_SOURCE) + +clean: + rm -f 341-0065.bin adtpro-patch-341-0065.bin diff --git a/rom/adtpro-patch-341-0065.xdelta b/rom/adtpro-patch-341-0065.xdelta new file mode 100644 index 0000000..5a62e71 Binary files /dev/null and b/rom/adtpro-patch-341-0065.xdelta differ