Sorted by Squirrels.

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!

Wednesday, 20 January 2010

Pinout heaven

I was thinking the other day about how difficult it can be to find information about a particular pinout for some obscure system or other. I was vaguely considering collecting these useful nuggets and publishing them myself but, for goodness' sake, I can't even add new items to my blog..!

It was with some relief that I found this site detailing vintage consoles and computers:


I'd love to know what a propellent actuated device is...

Friday, 20 November 2009

I didn't want to leave.

I visited an amazing shop a while ago. I wanted an oscilloscope and the local supermarket was right out, apparently, so a quick search on teh interwebs and this goldmine was revealed...



There was more around the corner and behind the outcrop on the right. And even then all stock wasn't accounted for. Despite this the owner knew every item intimately. Well, not in the biblical sense. Ahem.
This is what I went home with:


The top one - a Tektronix 465B. Yes, of course I wanted it *all*, but, you know, space. The prices were stupendous and it was obvious that the owner was a real true equipment geek. There were instruments in the rear recesses of the shop which were straight out of a gothic horror - brass spheres held aloft a glass tube encased in a brass and rosewood cabinet - an actual piece of test equipment used for measuring kilovolts on overhead wires. Huge knife bladed switches and variable resistors where the resistance was set by inserting plugs at intervals along parallel copper bars... And a pile of meters and programmers and signal generators and... what the... I have no idea what some of these things were.

And the smell... Divine.

Anyways. That was a while ago. I offered to advertise the establishment but the proprietor was busy enough without the additional traffic. But I'm sure that if you were within visiting distance of Reading, England and you asked...


Thursday, 8 October 2009

PL8-2, R2D2's Dad.

My children used to refer to C3PO as R2D2's dad. Funny how those minds work, isn't it.

I used to think that real fun could never be anything other than corporeal.

That just goes to show. This is the most fun that I've had in a while :)



It's the V2 incarnation (can that be right? There's no meat here..!) of the PL8 MMC interface.

Here she is, in full component-side glory.



The TTL is a simple read/write decoder. The port onto which this fits provides rough address decoding. I wish it would shave. I hate the chafing.



But I do so love the wiring.

It's a PIC - one of those manly sorts with the parallel slave port. I know it's terribly incorrect to use the word slave - oops I used it again! sorry! but that's just what it is. So the parallel slave port behaves like a chunk of selection logic and wakes the PIC when a read or write occurs. There are /RD and /WR lines. The microcode on the PIC latches data ready to be presented on a port when the /RD line is asserted. No delay, it behaves just as a latch would. Similarly asserting the /WR line will latch the values present on the data bus to a register. Interrupts ensure that these events are recognisable and the remainder of the uC code is shuffling data to and fro.

The performance of this type of interface is already documented in another post <> milliseconds to load programs <> so I won't go into it here.

Needless to say schematics and code, both micro and 6502, are available if you'd like them.

Atom VRAM mod

I have really struggled with the question 'should I modify this rare vintage micro or leave it as-is?'

Well. The thing about the Atom was that it invited modification.

So I came.

To the party that is, the one that the Atom invited me to. Honestly. Some people.



This is the truncated version of the ill-conceived all-in-one memory board that I started some while ago. It's simply VRAM. Nice. Witness the burned-off resist at or about pin 15. Ahem. Ah well, it's all for the greater good. 2114s are not exactly super-rare, but they use so much wattage. It's not green, it really isn't.

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.