jmetal88 wrote:I gotta say, that board does look a whole lot better than what I've got so far. I think I'll wait to hear your results with this before I proceed with anything else.

Don't let me stop you. The CPLD approach was just an experiment. But for what little it will cost vs the time I already invested, I kinda want to see if it will work now. Your 74xx design is way more authentic to the period. I know a lot of people care more about that than I. I'm currently planning on using an Atmel ATF1508 CPLD, though a 1504 may work and pin compatible. I also added a smaller PLD to do dual 7-segment latching/decoding/PWM driving. I couldn't find a suitable replacement that would do all of that for even a single digit as well as hex numbers in addition to BCD (the POST numbers on PCjr start at 0xFF and count down). So the ATF750 combined all of that into one chip - and that will probably be replaced with a 22V10 in the final changes (also pin compatible). It's functionality is simple enough, that it should never need changing and it can easily be left out of the BOM for people who don't want POST display (most people I would imagine). And most EEPROM programmers will also write it if one didn't want to buy it pre-burned.
My tentative plans are: Tonight clean-up and post the schematic to get a couple more pairs of eyes on it to check for any glaring problems. By Tuesday night, put together a final BOM, recheck all the data sheets and mechanicals, and order a parts kit from Digikey 2-day. By Thursday night, write up a short design doc on the basic board design and CPLD functionality (using what I already have as a basis). By the weekend, check actual parts vs print outs, integrate any changes/suggestions, perform a final check of the board, place order. I also plan on ordering the same number of DB-25M to 6 pin JTAG PCBs as there is a '245 and a resistor network and array in the middle of the two. It will take 2-3 weeks for boards to come in after order. A weekend to solder one up and do basic testing before sending out the extras to anyone else.
Lastly I just what to throw out my design as it stands today and see if anyone has anything they would like to add or would like changed.
- 44-pin 2mm IDE header - female / right angle flush mount to the board. There are two holes on the board near the connector that line up with a drive footprint. The idea was two mounting options. A) slip an actual drive into the connector and screw it down through the bottom of the PCB. It would protrude through the opening in the back of the sidecar about .8". But it would be an all-in-one 'hardcard' solution. B) Stuff a vertical 44 pin male connector instead and run a ribbon cable out through the back of the sidecar to a drive. I'm hitting the limits of my current version of Eagle. So unless I upgrade just for this project, I'm not sure if I have real-estate to co-layout a .1" 40 pin header along side the 2mm 44 pin holes. I'll check tonight.
- Card serves up a 16 KB option ROM image at one of 4 configurable locations via dip switches (C0000, C4000, C8000, CC000). The upper 128 bytes of the ROM window contains 16 bytes for IDE registers separated on word boundaries, 4 bytes for the RTC (more on that later), 2 internal registers for ROM/RAM remapping, and 106 bytes of scratch RAM.
- All IDE register access must be done through 16-bit memory store/load instructions. On reads from even addresses, A3..1 will be shifted down to A2..0, the appropriate IDE CS will go active, the lower byte will be returned and the upper byte latched. Reads from odd addresses will return the latched contents only. Writes to even addresses will only latch the written byte. Writes to odd addresses will perform the address shift, present the latched byte as the lower IDE byte, steer the bus data lines to the upper IDE byte, and assert the appropriate IDE CS.
- Via register bits, the option BIOS can turn on RAM back-fill for 8 regions depending on the results of a ROM signature check or other method of probing. The regions as of now are: 64->128 range, 16K at C0000, 16K at C4000, 16K at C8000, 16K at CC000, 32+32K at D0000 & E0000 (cartridge #1 ROM area), 32+32K at E0000 & E8000 (cartridge #2 ROM area), and 32K at F0000 (see below). 128K->736K RAM fill is always on. Areas occupied by on-card flash windows (also see below) implicitly disable RAM fill (by CS strobe XOR).
- Up to 512K on-card flash organized in 16K pages. A14..18 on the flash part are rewritten by the CPLD. The Microchip/SST parts come in 128K, 256K, and 512Kbyte densities in the same pin/package footprint. It's not CFI, but it's an early version of it. It doesn't have ID, but it is NOR, sectored, and supports page erase (4K) and burst programming. The IDE BIOS would always be served up into the configured address window from a fixed page number (probably 5 - +64K). Optionally addresses F8000 - FFFFF (32K) can be served up from pages 0 & 1 or 2 & 3 depending on DIP switch settings (also optionally turning off IDE BIOS). This allows adventurous people to replace their system ROMs with on-card flash that allows software upgrading/patching while still keeping a golden image you can revert to with a flip of a switch (vs re-inserting the original ROM chips). I know there are a few patches that people have made for JR ROM. And since the original ROM was less than 16KB, there's plenty of room to combine the IDE and system BIOS if you want even more UMB/RAM.
- A 16KB flash/ROM remap window can be enabled at anytime at C0000, C4000, C8000, or CC000. This window can be panned around in the on-card flash by setting a 5-bit target page number in a register. This allows the BIOS design to get creative in future possibilities. E.g. a boot menu with cartridge ROM images or a virtual A & B ROM floppy image / diskless boot.
- There are HD activity LED pads on board (for diagnostics) and a header so that one could run the LED out to a hole drilled in the front of the sidecar and glued in-place.
- Uses standard Dallas/Maxim all-in-one RTC module which allows for 190-something bytes of battery backed NVRAM - though I have no idea what it could be used for since there's up to 512K of flash on-card.
- Master/slave IDE cable select via dip-switch
- Bridging of IDE & PCjr bus READY signals via dip switch.
- Configurable routing of IRQs from IDE & RTC to IRQ 1, 2, or 7 via dip switches.
- All dip switch settings printed on board silkscreen
- All connector pin-outs on back of PCB silkscreen for reference.
- CPLD is JTAG in-circuit programmable with parallel port cable and free WinXP software from Atmel so that most of the above functionality can be changed or tweaked.
- Most of the board traces are 16 mil or larger with many being 24mil. The only exceptions being address line feeds to the CPLD (12 mil) and necking around the IDE header (10 mil). 10 mil global clearance / isolation. Most power traces are 32 mil (some 24). I have no clue on a power estimate at this point. TBD. All vias are .6mm drill w/ 8mil ring. All board drills are .6mm (vias), .7mm (IDE conn), .8mm (most everything else) and 1mm (JTAG & LED headers).
- Everything is through hole for the joy of those who have masochistic tendencies (pads, stencils, and paste = win imo).
- Only 4 signal VIAs. About 8 GND coupling VIAs (probably more later).
Any other input welcome!