├── F-RAM.bin ├── Lisa GALSCSI Card Gerbers.zip ├── Lisa GALSCSI Card Schematic.pdf ├── README.md ├── SCSIGALEquations Source.pld └── SCSIGALEquations.jed /F-RAM.bin: -------------------------------------------------------------------------------- 1 |  -------------------------------------------------------------------------------- /Lisa GALSCSI Card Gerbers.zip: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexthecat123/Lisa-GALSCSI-Card/d95ad3932b7b81f6b1d1a7dd0569dfbdabf74876/Lisa GALSCSI Card Gerbers.zip -------------------------------------------------------------------------------- /Lisa GALSCSI Card Schematic.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/alexthecat123/Lisa-GALSCSI-Card/d95ad3932b7b81f6b1d1a7dd0569dfbdabf74876/Lisa GALSCSI Card Schematic.pdf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Lisa GALSCSI Card 2 | A newly designed GAL-based SCSI card for the Apple Lisa.

3 | ![GALSCSI Card](https://user-images.githubusercontent.com/16897189/178311915-48b6edca-5454-464b-a7d8-3b317f6e618e.png) 4 | # Introduction 5 | A few months ago, I decided to try and reverse-engineer the Sun Remarketing SCSI card for the Lisa, but I had to give up on making an exact replica of it for intellectual property reasons. So instead I ended up designing my own SCSI card that replaces all of the glue logic with a GAL16V8. I've also replaced the original EPROM with an F-RAM chip, which allows the user to reprogram the ROM straight from the Lisa without having to go through the painful process of removing the chip, using an external programmer, and reinstalling it in the Lisa, which can really come in handy when developing new software for expansion card ROMs. 6 | 7 | F-RAM (ferroelectric RAM) is a special type of memory that combines the fast read and write speeds of RAM with the non-volatility of a ROM, essentially giving you the best of both worlds. I originally wanted to use a 28CXX-series EEPROM for this project, but the 5ms write speed was just too slow. 8 | 9 | # Total Price 10 | Using [JLCPCB](https://jlcpcb.com/), I was able to get 5 SCSI cards for $19.10. Shipping will add to this, but not by much if you choose the really slow option. Since the minimum order quantity is 5 boards, you can just keep the others for future Lisa projects or give/sell them to others in the community who might want some. The parts cost comes out to $57.49, making the total cost of the card around $76.59. Of course, these prices will fluctuate over time, but this should give you a decent idea of how much things will cost. 11 | 12 | 13 | # PCB Fabrication 14 | I use [JLCPCB](https://jlcpcb.com/) for all of my boards due to the low price and high quality, but of course you can use any manufacturer that you want. There's really nothing special to say about fabricating the SCSI card, except that you might want to select the "Gold Fingers" option in order for the edge connector to be gold plated. This will likely increase the longevity of your card and makes it look cooler, but it also significantly increases the price and I just chose to use the standard silver fingers on my boards because of this. The silver fingers seem to be pretty durable though; I've inserted and removed this card hundreds of times during testing and it seems no worse for wear. 15 | 16 | # Board Customization 17 | I designed this SCSI card using EasyEDA. If you want to customize the board to your own needs, the design files can be found [here](https://oshwlab.com/AlexTheCat123/custom-lisa-scsi-card). 18 | 19 | # Required Parts 20 | Check [this DigiKey cart](https://www.digikey.com/short/3rd0c23v) for most of the required parts. Everything else can be found on eBay: The F-RAM chip (an FM1608) can be found [here](https://www.ebay.com/itm/401858081542), the 5380 SCSI controller chip can be found [here](https://www.ebay.com/itm/164880421011), and the two resistor networks for termination can be found [here](https://www.ebay.com/itm/223907117513). 21 | 22 | 23 | # Assembly and Use 24 | - Assembly should be pretty simple; the silkscreen on the board tells you exactly where each component goes. 25 | - After you've got the card put together, you'll need to write the SCSIGALEquations.jed file to your GAL16V8. Since there are a bunch of different tools for programming GALs, I'm not going to go into much detail about how to do that here. If you're using a TL866 and Xgpro for this process, it's pretty much the same as writing an EEPROM: select your chip, load the JEDEC file, and program the device. Note that I've had some trouble getting the minipro command line tool for the TL866 to program the GALs, so try the GUI-based Xgpro if minipro won't work. 26 | - Once the GAL is programmed, we need to program the F-RAM chip that replaces the EPROM on the original card using the F-RAM.bin file. Assuming you're not using a custom ROM like Quickboot, this file's contents should just be a $1B in the second byte and zeros everywhere else. You can put the chip in an EEPROM programmer to program it, but I would recommend using my serial programmer tool that I'll discuss in a second. 27 | - IMPORTANT: If you do end up using an EEPROM programmer to burn the F-RAM, make sure that it doesn't write protect the chip when it's done programming! If it does, you won't be able to modify the chip's contents once it's back in the Lisa. I made this mistake and spent hours trying to figure out why my Lisa couldn't write to the chip anymore! 28 | - To modify the contents of the F-RAM once it's installed in the Lisa, just write to the low decode of the slot that it's installed in just like you would with any memory location. This can be automated for you with my [serial loader program](https://github.com/alexthecat123/Lisa-Expansion-ROM-Programmer), which automatically detects what slot your F-RAM is installed in and lets you send a 4K ROM image straight to the card over the Lisa's serial port. 29 | -------------------------------------------------------------------------------- /SCSIGALEquations Source.pld: -------------------------------------------------------------------------------- 1 | Name SCSIGALEquations ; 2 | PartNo 00 ; 3 | Date 10/10/10 ; 4 | Revision 01 ; 5 | Designer Engineer ; 6 | Company None ; 7 | Assembly None ; 8 | Location ; 9 | Device g16v8; 10 | 11 | 12 | /* Inputs */ 13 | PIN 2 = NOT_LDS; 14 | PIN 3 = NOT_UDS; 15 | PIN 4 = READ; 16 | PIN 5 = NOT_SLN; 17 | PIN 6 = NOT_SHN; 18 | PIN 7 = BA10; 19 | PIN 8 = BA9; 20 | PIN 1 = CPUCK; 21 | 22 | /* Outputs */ 23 | PIN 12 = INT1; 24 | PIN 13 = INT2; 25 | PIN 14 = NOT_DTACK; 26 | PIN 15 = NOT_CS; 27 | PIN 16 = NOT_DACK; 28 | PIN 17 = WR; 29 | PIN 18 = RD; 30 | PIN 19 = HIGH_EN; 31 | 32 | /*FIELD FF_OUT = [INT2,INT1]; 33 | 34 | 35 | $DEFINE s0 'b'10 36 | $DEFINE s1 'b'11 37 | $DEFINE s2 'b'01 38 | 39 | sequence FF_OUT { 40 | present s0 41 | if NOT_SLN next s0; 42 | if !NOT_SLN next s1; 43 | present s1 44 | if NOT_SLN next s0; 45 | if !NOT_SLN next s2; 46 | present s2 47 | if NOT_SLN next s0; 48 | if !NOT_SLN next s2; 49 | }*/ 50 | 51 | /*1. FF Out is off (s0) 52 | 2. If D is high and CPUCK pulses, go to s1 (same as s0) 53 | 3. If D is high and CPUCK pulses again, go to s2 (which sets FF to on) 54 | 4. If D is still high and CPUCK pulses, ignore it and stay in s2. If D goes low IN ANY STATE; NOT JUST S2 (regardless of CPUCK), go back to s0 and start over.*/ 55 | 56 | /*HIGH_EN = !NOT_LDS # NOT_UDS;*/ 57 | 58 | HIGH_EN = !(NOT_LDS & !NOT_UDS); 59 | RD = !READ # (NOT_SLN & !(!NOT_SHN & BA10)); 60 | WR = READ # (NOT_SLN & !(!NOT_SHN & BA10)); 61 | NOT_DACK = !BA9 # !(!NOT_SHN & BA10); 62 | NOT_CS = BA9 # !(!NOT_SHN & BA10); 63 | 64 | INT1.D = !NOT_SLN; 65 | /*INT1.AR = NOT_SLN; 66 | INT1.CK = CPUCK;*/ 67 | 68 | INT2.D = INT1; 69 | /*INT2.AR = NOT_SLN; 70 | INT2.CK = CPUCK;*/ 71 | 72 | 73 | /*INT1 = (!(!NOT_SLN NAND CPUCK) NOR PRESET) NAND*/ 74 | NOT_DTACK = NOT_DACK & NOT_CS & ((!NOT_SLN & !INT2) # (NOT_SLN & 'b'1)); 75 | /*NOT_DTACK = NOT_DACK & NOT_CS & INT2;*/ -------------------------------------------------------------------------------- /SCSIGALEquations.jed: -------------------------------------------------------------------------------- 1 |  2 | CUPL(WM) 5.0a Serial# MW-10400000 3 | Device g16v8ms Library DLIB-h-40-11 4 | Created Thu Jun 30 19:04:56 2022 5 | Name SCSIGALEquations 6 | Partno 00 7 | Revision 01 8 | Date 10/10/10 9 | Designer Engineer 10 | Company None 11 | Assembly None 12 | Location 13 | *QP20 14 | *QF2194 15 | *G0 16 | *F0 17 | *L00000 11111111111111111111111111111111 18 | *L00032 01111011111111111111111111111111 19 | *L00256 11111111111111111111111111111111 20 | *L00288 11111111101111111111111111111111 21 | *L00320 11111111111101111111101111111111 22 | *L00352 11111111111101110111111111111111 23 | *L00512 11111111111111111111111111111111 24 | *L00544 11111111011111111111111111111111 25 | *L00576 11111111111101111111101111111111 26 | *L00608 11111111111101110111111111111111 27 | *L00768 11111111111111111111111111111111 28 | *L00800 11111111111111111111111110111111 29 | *L00832 11111111111111111111101111111111 30 | *L00864 11111111111111110111111111111111 31 | *L01024 11111111111111111111111111111111 32 | *L01056 11111111111111111111111101111111 33 | *L01088 11111111111111111111101111111111 34 | *L01120 11111111111111110111111111111111 35 | *L01280 11111111111111111111111111111111 36 | *L01312 11111111111111011101111111101111 37 | *L01344 11111111111101011101111111111111 38 | *L01536 11111111111111111111111111111101 39 | *L01792 11111111111110111111111111111111 40 | *L02048 01111111001100000011000000100000 41 | *L02112 00000000111111001111111111111111 42 | *L02144 11111111111111111111111111111111 43 | *L02176 111111111111111101 44 | *C630C 45 | *2365 --------------------------------------------------------------------------------