tirsdag den 30. september 2014

Diode matrix ROM for the Z80, or: How a silly, not-so optimized idea became a main design choice.

Ok, so the phase one hardware design for the z80 system B is almost done. Even started on expanding, but I would like to have it running first. But alas: having no EPROM's, and no burner for them, i had to think of something for a complete hardware test. So i decided to code three small program snips into a diode matrix ROM for it.

What a beauty! I've expanded the design (see last post) for 32 bytes, using 2 74154 4-16 decoders, and then feeding the lower 4 addresses into those. the next two addresses are fed to a 2-4 decoder, whose 1 and 2 output enables either chip 1 or 2.
The design of the diode matrix itself was a bit tricky. Most designs needs either multiple boards, or 3d arrays of wires, but eventually, i landed on having each trace (32 of them) for each line run all the length of the left half of the board. then, soldering tin/copper wire across the top of the board, and connecting those to the data lines, with pull ups. the result is rather neat, in its own right.
The bytes are read upwards, meaning that A0 is the lowest row, and so on. A diode indicates a 0, while a missing diode is 1. This is stupid, in terms of saving diodes, since 00 is used more often than FF, but yeah. Still needs some bytes, though, i ran out of diodes.


It should be able to mimic a 2716, or any device, really. I may need a tri-state buffer on DATA bus, and have the gate tied to /CS, to keep the bus floating from the pull ups. We'll see.

Once again, the sample programs are some counters and stuff i found on Donn Stewart's z80 page. I still haven't gotten around programming yet.

onsdag den 10. september 2014

A ROM substitute / development tool

So, I have run into the problem of needed programmed devices for my computer projects. A CPU cannot (mostly) start proper operation without some lines of code. Thus raising the problem: how to test your system without a ROM? Well, i was reading up on the 74154 IC. It's a 4 to 16 line decoder. So i got the idea, of making a diode prom with it, using four address lines, eight data lines, and dip switches with diodes. The solution looks like this:

An address is entered on the An to An+3 (you can use whichever four addresses the system reads first, it varies with processor) and then, the two chip select and output enable (they're not called that on the 154, i've made the pinout compatible with the 2716), connected as well as the data lines, and then on the 16 x 8 dip switches, you can enter the programs or routines you want. 16 bytes seems infinitely small, but plenty of room for some test, and a HLT or so. a counter maybe. The 74ls240 is just an 8 bit inverting tru state buffer. You might need to connect the /G lines which disables output to /READ. 

Note: This is kinda WIP, i haven't tested or even built this yet, so I'm just throwing it out here for the interested.

tirsdag den 9. september 2014

EUREKA! - HARDWARE HELLO WORLD!

And thus, without any bugs (so far), the V.1 hardware of the Z80 SYSTEM B is complete.


Ain't that pretty? I have no idea what it's doing, though, it's clearly doing something, and at one point, it read data from port 0, and as you see, it displays something on ports as well. There is no system ROM, so I'm guessing it must be random data stored in the RAM... Anyway the hardware is behaving as expected, so all good so far. Now; for the ROM..

And as a side note: step 2 hardware includes qwerty keyboard and LCD from a early 80's electronic typewriter.

lørdag den 6. september 2014

Z80 System B update

So, the only thing lacking hardwarewise on the Z80 system I'm building, is the I/O. Once more, I was very inspired by Donn Stewarts z80 project in my port control logic, though I've made a connector for an external "terminal".
As you see, the "terminal" is really just two ports of LEDS as output and slide switches as input. The cable goes to a 40 pin DIL ribbon connector and socket, to port select and latching, etc.

This is the interface board, using the 74LS139 as address decoder/port selector, and 74LS244 for input buffers, 74LS373 for display latches. Still needs wiring.


And Wouldn't you know: The board cracked! when i was scoring the rectangular cutouts for the switches! The pcb material were.. not good; had a consistency as wet crackers, and flaked like slate, meaning when it cracked (the entire bottom right quarter) it sliced  the palm of my hand right up! but i was able to fix it (the board, that is; the hand takes care of itself) by means of screwing on a little piece of pcb on the underside, and solder some of the traces back. Holds quite well. 


fredag den 5. september 2014

Historic PROM burner: The DATAIO model IX

So, i bought this some time ago, a really interesting artifact of computer/digital electronics history.

It is, as far as my research go, nothing less than the worlds first microprocessor controlled PROM burner!

Yup, that's it. Pretty good condition, except for one missing button cover on the EDIT. It can check memory, copy it, browse through addresses, and many other functions. It has a parallel Dsub25 connector on the back, for "remote operation" - whether that means having "slave" programmers for multiple chips, or the unit being able to be controlled by other systems. I haven't found ANY documentation on this; no manual, nothing. the only reference to it is a note on DATA IO's website, under a company history timeline.

On the same timeline, they state that model 19 is the first microprocessor controlled burner (with MC6800) - That is wrong, since this model is earlier, and IS controlled by a 6800, making THIS the first. Though, whether it's the worlds first or the company's, I really haven't the foggiest.

THE GUTS

The case is in fiberglass, and split color blue/white, and is mounted on a 8 mm aluminum bottom plate - really adds some weight.

The computer part, which is what we want, is mounted in a little rack system, with a backplane bus of chained card-edge connectors on ribbon cable. There are 4 boards, with those lovely "ears" for releasing them from the rack.

************************THE PROCESSOR BOARD************************


If that ain't retro, I don't know what is! The memory is shared over 4 chips - 2x 2708 1K EPROMs, the white ceramic with gold windowframe/legs! i had to cover them, i were afraid the flash of the camera could damage the memory, so the windows are covered with masking tape. The plastic DIP24 with the sticker must be system ROM, and the MC6810 is the typical RAM to go with the MC6800. This RAM, is probably system RAM, there must be a reason why the RAM is split on two boards - more on that later. The shiny can is the MC6871A - an oscillator / two phase clock for the 6800. Not much else, a little logic and some jumpers. Notice how the address range of the memory is labeled in the silk screen: C600-C7FF and so on. That's neat!

************************MEMORY BOARD************************ 


 This is the RAM board. Little more than 2 AM9131ADC 1024x4 SRAM chips - yes, Advanced Micro Devices, AMD. Apparently, This can be expanded, by the two empty sockets. The RAM IC's is in the purple/grey/gold packages - same as the 6800 itself. I believe this RAM is for holding the PROM code in memory.

************************ I/O ************************

The I/O is again, as far as i can tell, very much standard 6800 peripheral stuff:


The 24 pin DIP package is the MC6850 ACIA Asynchronous Communications Interface Adapter, acting as an UART. The 40 pin package is the MC6821 peripherals adapter, driving, by the looks of the bus, the header connector top left, which goes to the front panel. The smaller second card edge connector (right) goes to the DSUB 25 connector. And a baud rate switch for the ACIA - what would happen if you activated more than one?

The main programming cards and IC sockets are connected directly to the main system bus, and consists of a set of two chip specific cards: A digital, dealing with timing and such, and an analog, setting voltages. I have yet to find any references as to what PROM my system is set up for, but changing chip for this model of burner must be quite a challenge. The analog board also needed calibration.

There's much more, so I'll probably do a follow up, but this is a brief description (ha. BRIEF) of the microprocessor/computer based parts.     

Burning EPROMS the stupid way

So I'm reaching a point where I'll need to work on my ROM. Step one involves little more than some tests and the ability to punch in programs via the input ports. The system ROM is a 2716 EPROM, because i think it's neat because it's pin compatible with my RAM, so i can reuse the board later on. I found my EPROM burner, and wept. I completely forgot, it works, but it is.. not my fines piece of DIY gear. ADDR and DATA is set with a sharp pencil and DIP-switches, and binary data readout on the little floating board.

The only thing even remotely nice about it is the genuine 3M TEXTOOL socket, (not installed on the pic).


Since I'm only at 60-100 bytes at the moment, this abomination is adequate, but i really need to make a more optimized one. With HEX rotary switches, 7seg readouts, and "jump to next address" button.

torsdag den 4. september 2014

Z80 computer update

It ALMOST lives. I'm currently working on the IO interface, which is just some latches and buffer logic with two ports of 8 LEDS and 8 switches. This "terminal" is connected via rainbow ribbon to a socket on the IO board:
The board is yet to be wired, which will be done in the style of the memory board.

The system as of writing looks like this:



The card labeled "memory card" is the memory card, and likewise with the others. You probably guessed that, though. I haven't made/bought the PSU yet, so it is powered by a variable psu, adjusted with a DMM. The ribbon is supposed to go to an angled front plate.