Sorted by Squirrels.

Tuesday, 15 March 2011



I always use this program as the benchmark test. If you've ever owned a ZX81 then you know what it is. It has such a strong resonance with me. The first time it loaded from tape after the tense 6 minutes of FSK madness it almost stopped my heart. And then I played it.

Fast forward 30 years...

Ladies and Gentlemen.

ZXpand.


Allow 28 days for delivery...




See previous post for links to further information.

ZXpand Issue 1

Rex lies in wait.




More details and a draft manual appear on http://www.rwapsoftware.co.uk/zx812.html

Monday, 14 March 2011

Making things

I love making things. Tonight I made this thing:



It's a twin ROM switcher, or rather 2 twin ROM switchers, one of which is destined for a C64. JiffyDOS enhanced kernal in one side, regular kernal ROM in the other. SPDT switch added to the pads with a common centre and it's cake time! I'll post a minimal entry when it's looking a little more complete.

I've been making PCBs for a few months now and I'm getting to the stage where I need to start investing in some beginner++ equipment. I have a ghetto UV exposure box that some kind soul freecycled a few years back. It just about does the job but it only has one tube and that makes getting an even exposure hard. You can see on this board that one side is either overexposed, overdeveloped, overunderdeveloped or underoverexposed. Or something. I'll never know, I guess. I suppose seeing that the traces have disappeared then either the negative wasn't pressed closely enough to the PCB or it was overexposed. Reviewing what I did this evening I find it hard to see how I could overexpose one edge like that. That is the mystery and marvel of this process - you have to aim for a zen-like approach otherwise it will end in tears.

Still I think it'll work. I designed this mainly so that I could try out the new PCB material that I sourced. It's a lot cheaper than the usual gear that I score . Even with my relatively inexperienced dabbling I know I have to get a feel for how it reacts to the chemicals. See? Zen again. The design has a lot of traces weaving through the space between pads. It scared me a little while I was eagling it. Ha but now who's the daddy eh?!

Anyway now I've rambled and the board appears to have dried of natural causes I'm off to drill it. Super!

Friday, 11 March 2011

Presenting: ZXpand!



It's only taken me about 3 years.

This is the test fitting of ZXpander prototype 1. You can clearly see that there are some sockets empty. Well, I didn't want to overwhelm the poor old chap.

And yes, it worked! Eventually. After being hacked around so badly that the poor thing's mother didn't even recognise it. It ended up carrying another chip and looking somewhat like Joseph Merrick. But let's not get ahead of ourselves! This was P1, after all. Things are supposed to change. So to P2! Fast forward to only 9 months ago!

My good friend and inspiration Ramoth had been extolling the virtue of programmable logic. He has made the transition to the state of the art while I, comme d'habitude, crept in at the lower, and rather more obsolete level. I decided that I could just about cope with GALs and maybe, just maybe these would provide the answer to my overcrowded board problem! For that is what I had. I couldn't lay out the board to any degree of satisfaction now that 7 TTL chips were required.

So one eBay purchase of the most basic programmer capable of writing GAL fuse maps later, I was dipping my toe into the confusing and contrary world of programmable logic.

The best thing about setting out to work with obsolete technology is the complete lack of any decent documentation and sample code. Oh hang on, that's not the best thing is it. That's the _worst_ thing. Ho hum. Still, after having crawled inch by bloody inch up the steepest learning curve I've ever encountered since girls, I managed to make P2 work.

Here's its good side...


5 TTL chips lighter, this one only required some very delicate hacking...


JESUS! What have you done to it man!

Well it needed some ICSPing. And an extra AND gate. And the 'get it quick' prototype board from PCBTrain doesn't get solder mask, so ... it's not pretty. I realise this. But you know what?


P3 is immanent. Watch this space!

Thursday, 18 February 2010

DMAybe

This little cutie is the dogs dinner pudding.



I've wired and programmed the controller to assert /BUSRQ, wait for /BUSAK and then have its wicked wicked way with the address, data and /WR lines. Thus effecting some access to memory directly for the uC.

It's not enough unfortunately. I'd forgotten that my internal 32K expansion requires /MREQ to be asserted in order to enable the memory decoder. Which would explain why it doesn't work :)

That and the phantom blips on the /RD line that I'm seeing.



I don't know yet whether this is the ZX81's ULA interfering or some pedigree chum-based effect that would go away if I soldered the thing more carefully..!

I'm glad I've built a prototype - even if it is kind of awful.

I'm off to do some more soldering and a bit of firmware tweaking. Be right back.

Sunday, 14 February 2010

Laid out cold

Here is the manually routed board according to the schematic posted last week.



I've learned a lot in the past few weeks. This layout is the result of having the patience to rip it up and start again. Multiple times. I think this is the 4th iteration so far.

I've broken a few rules along the way, I'm sure, but having looked at the Gerber files in a suitable viewer I think, at least electrically, it might work. When I say work I mean not go on fire. There are no bits overlapping when they shouldn't, no vias encroaching uncomfortably on one another's personal space, and no wires with insufficient clearance.

Having two layers to work on at board-house resolution makes things significantly easier than working at home-brew resolution on single-side designs. Sticking to a few rules which at first seemed punitive and arbitrary has produced a good result. One layer has tracks running horizontally, the other has them vertical. It's hard to describe how this makes things easier but once you start routing it surely does. Some board houses restrict the number of vias you can use, but the one I intend to use has no limit.

I find this activity strangely relaxing. If I knew what a zen-like state was then I think this may approach that. It's rare these days that I get into any kind of zone but taking time out to sit with Eagle for an hour gets me really close.

I finished routing this board despite the fact that I decided to use a different IO expander halfway through due to the fact that:
  • MAX6956 are nearly £10 each to buy...
  • ...when you can actually source them from somewhere.
The MAX has some nice features, not merely the fact that the IO pins line up reasonably neatly with the address lines on the RAM chip. And the fact I've used it before helps too.

I have aligned myself with the Microchip MCP23x17. It's a 16 port expander with either I2C or SPI interfaces. If the SPI version can live peacefully with the MMC interface then I'll choose that - it can be driven faster than the I2C version. There will be times when I'll be reading from MMC and simultaneously driving address lines via the expander. The MMC transfers have to happen in a stream and unless I can cache an entire sector's worth of data in one go then the actions will have to be interleaved. If that's not possible then I'll be looking out for a bit-banged I2C implementation. The I2C and SPI pins and registers are shared on the PIC.

Of course I'll have to try all this out before I commit to FR4. This is the dogs-dinner prototype.





There's not going to be any MMC on there for the moment - the idea is that I'll be using the board to try some elementary DMA by driving the address and data lines on the ZX81. Once I get that working I'll turn my attention to trying simultaneous expander and card access. That can be done on a breadboard though.

Monday, 8 February 2010

ZX81 MMC Redux

I like a good faff and I suspect you do too. Don't be ashamed. We all do it. However I've done rather too much of it recently and I'm going a little blind.

I want one of these:



Eagle schematic here (you might need to right-click-save-as)

So I'm going to have to bite the bullet and make one. I've decided that the simplicity of bit-banging is all very well and good but sometimes ambition should be allowed free reign.

With that in mind may I present 'The ZX81MMCRAMANDIO Board'!!

Ahem I'll be sacking the marketing man later.

It's a combined 32K RAM, SD/MMC and IO interface for a ZX81. 32K of static ram from 8K-40K will give true hires capability. A jumper will allow the on-board RAM to be disabled on those machines already internally expanded. It will be able to perform some basic DMA and be able to fill the machine's RAM with code and data from the SD/MMC card. This eliminates the need for loading of firmware from cassette or having external ROM.

The Z80 processor has a rather endearing ability to hold itself off the bus when requested. I'll be using this facility to effect the DMA. Simply assert the BUSRQ line and the Z80 lifts its legs obligingly from the circuit. At this point the uC will use some chip or other (a MAX6965 in this first design but I'll have to change this - too expensive) to drive the address lines of the RAM whilst jeffing program data into its bytey cells. The ZX81 will need to be in FAST mode (ha!) whilst this in progress in order that the ULA be quieted and diverted from its usual NMI generation duties which would spoil things rather.

This is a project I've been promising for way too long now and finally I think it's time to commit a design to PCB for manufacture. Follow me if you will. I think it'll be rather fun :)

I'll publish all my materials along the way if you want to play too. As I'm planning to make some of these to sell I'm afraid I'll have to assert some rights though - these ones look quite nice.

Creative Commons License
This work is licensed under a Creative Commons Attribution-Noncommercial 2.5 Generic License.

Feel free to remix, rework or improve, doodle dawdle or derive. Comments welcomed.

TTFN!

Contact Form

Name

Email *

Message *

This is how we do it

MMC (9) acorn atom (7) sord m5 (7) zx81 (7) multicart (6) arduino (5) Sord (4) tatung einstein (4) Atari 800 (3) Chuckie egg (3) M5 (3) M5Multi (3) c128 (3) sd card (3) sd2iec (3) sio2sd (3) 6502 (2) Max6956 (2) QL (2) RCM (2) assembler (2) avr (2) c64 (2) cadsoft eagle (2) eeprom (2) einSDein (2) mmbeeb (2) multi-cart (2) spi (2) system 80 (2) ufat2 (2) vic20 (2) video genie (2) 6502 second processor (1) 6522 (1) 8255 (1) Acorn BBC Micro (1) Apple 2e (1) Apple ][ 2 two (1) BBC 6502 second processor (1) BBC micro (1) DevicePrint (1) Double Choc Chip Muffins (1) FAT (1) IO (1) Jupiter Ace (1) LED (1) Master 128 (1) PCB (1) PIC (1) POV (1) PROGMEM (1) Pineapple (1) ST (1) Spectrum 128 (1) antex (1) arcade spinner (1) arduino shield (1) atari (1) atmel (1) bakewell tart (1) beer (1) bird's nest (1) bitbucket (1) brokenated XC special (1) cake (1) cassette (1) cassette interface (1) colecovision (1) compact flash (1) convert (1) dac (1) de-yellowing (1) dev cart (1) development tool (1) eaca (1) efficient (1) einsdein. z80 (1) esp32 (1) esp8266 (1) eye strain (1) failosophy (1) filesystem (1) finally (1) fram (1) french polishing (1) fuse (1) fuses (1) game development (1) games (1) gaming (1) github (1) glue (1) google chrome (1) heroic failure (1) high voltage programming (1) hot irons (1) if (1) jiffydos (1) joey beltram (1) lego robot (1) library (1) lying (1) machine code (1) matron (1) microcode (1) mmc interface (1) mmc2iec (1) mmm (1) mouse guts (1) oscilloscopes (1) pcm (1) pic32mx (1) porn (1) proto shield (1) purple (1) repo (1) retro computer museum (1) retro hard-on (1) rom box (1) sd (1) sd-x (1) sd2mmc (1) seadragon (1) silliness (1) small (1) software master (1) soldering (1) spi software master (1) stray capacitance (1) string (1) techadventure (1) test equipment porn (1) ts1000 (1) turtle cheesecake (1) tweaking (1) vc20 (1) video head (1) video ram replacement (1) weewee (1) wingasm (1) wire library (1) wodges of IO (1) xilinx cpld (1) yellowing (1) z80 (1) zx spectrum (1) zxpander (1)
Unless otherwise stated all of the original work presented here is:

Creative Commons License
Licensed under a Creative Commons Attribution-Noncommercial 2.5 Generic License.

The work of others where referenced will be attributed appropriately. If I've failed to do this please let me know.