Zikzak - crummiest 8bit console/computer ever .. but I'm making it!


I think I've got a scrap of time, so going to look at the RAM I/O back to the cpu side; in my schematic I've got just a buffer in there, but need to think on it a bit. Thats the only 'dangerous' part of the design I think .. if the cpu is writing out, and the buffer is pointing back to the cpu, contention and killed buffer and/or cpu, right?

So timing and order of operations need to be careful..

Going from write to read:

- close buffer (?)

- disable write (so no read/write flagged at all)

- switch buffer direction

- enable OE on vram

- open buffer

Something like that.

For boot time, I've been figuring a couple rudimentary startup tests..

- set to write mode (write mode, buffer right direction, etc) so we have no contention going on . read mode is the riskier one

- clear vram1, switch

- clear vram2, switch

- colour bars page, wait a sec, switch

- maybe a black and white grid, wait a sec, switch

- toggle between the two for a sec

hmm..

jeff
 
As I read the datasheet (for the first time, so no guarantees here) it looks like raising ^OE should isolate the two buses, so you could try doing that when reading and see if anything still comes out over the next few cycles.


Not really thought this through, but would having two buffers work better? One for in, one for out. I suspect the way you're coding at the moment it wouldn't make a difference, but if you start being clever and issue new read/write requests before the old one is completed (filling in those NOOPs perhaps) you could be issuing a write request while the last read is still shuffling through the write buffer.
 
Last edited by a moderator:
I've gotten to Ludicrous Level I think.

Only about.. 5 wires to go for this big stage .. to complete the cpu+gpu+double-buffering/etc stuff (only missing would be serial and joysticks and audio, as on schematic.) I can't just fire this up though, it might pop -- need to write some code for the cpu side, so that it starts up and sets all ram to read-mode and sets buffers in right direction, so that it can run the flipping static test; then start with the proper boot up and stest code.. ie: boot up, set everything to write mode, clear both vrams to some defined (different) colours, do some flips to make sure vram is working, and then do some grid tests, etc. Maybe some bouncing bars, showing tearing on single vram and smooth scrolling using both, etc

Good times :eek:

Check out this monster image:

995818_592307510801559_19109906_n.jpg
 
@skeezix, man I should ship you my surface mount components to solder.. my first attempt yesterday at it went horrible wrong.. Looks like I need to order a new ADC and adapter..
 
Last edited by a moderator:
SMD to PCB is a piece of cake; use a flat iron tip or whatever, and away you go .. 'look up Drag Soldering' and call it a day (just very little solder on the tip, and drag it across .. it'll like magic stick, as long as there is solder mask.) If you're soldering SMD to a pcb without solder mask .. stinks! Doable, but you have to be careful suddenly, and keep that solder wick ahndy :eek:

But soldering SMD to _wires_ .. thats annoying; its certainly doable (I've done a pile of SOIC32 to socket soldering, ptuting 32 teeny wires in there.) You need a little desk vice or something, to hold it tight (third hand isn't heavy enough usually). A really fine tip iron, since its so easy to just touch two pins and unsolder the previous pin(s) wire, or worse -- ground them all together :/

Nowadays, for SOIC32 type stuff, I just order $3 adaptor pcb's from a relatively-local shop -- I can order them, they arrive 3-4 days later. Totally worth it for this BB work .. I've lost patience with sitting there for 2 hours doing one SMD to wire solder (no time for 28 wires, but at least 4 will take half an hour to un-screw-up :)

And TQFP64 or TQFP100 -- I've done that, but it makes me pretty unhappy :)

So yeah, order a small stock of little adapters/break-out-boards; lose a few $$, but save your hair :)

jeff
 
The adapter I had had no solder mask, just plain copper..

I'm curious where do you buy your adapters?
 
Lol :)

TrashyMG .. I've shopped around all over; hit up ebay for one, and also .. on ebay, zoom in on the pics to find the company name who actually made the adaptors and check their site and affiliates out; often find other options not currently on ebay or stores, and often way better deals; I ordered a bunch of stuff from Thailand :eek:

But this guy here is 'mid to very pricey', but here's right near by me, so in a pinch worth it; very good quality work:

http://www.proto-advantage.com/store/index.php?cPath=2200_2221

The SOIC32's seem to vary in price; I picked them up for I think $2.50 from here awhile back, ordered a half dozen; but some of their stuff, like for 64pin adaptors etc are like $20+ each .. forget it.

I've got a bookmark lis there of about 20 places to get adaptors at, but prices vary wildly.

Theres some you can get for free (overstocked!), but killer shipping; trying ot think.. theres a place in China (that actually makes good stuff), but they made like 10,000 instead of 1000 somethings, so gave them away free ..

Remind me next week, I can maybe make up a list of places, but hit up ebay and forums and google :)
 
Status update so far ..

So all the main wiring is in; its toggling between pages very nicely and solidly (for 1x600 mode anyway, since I'm still doing it all in C code until the wiring is proven.)

I set up a clear-to-blue (or white, black, whatever) routine on the cpu, having it run every time the bank switches, and setting the swithcing to occur say every 30s instead of on VBLank, so I can have an easier time seeing whats going on.

Bank-2 seems to clear fully blue (awesome, success!)

Bank-1 seems to clear mostly blue (poop :/)

Problems:

- the shark-fin type SMD adaptor board I'm using isn't seating well; I mean, it just comes with two rows of holes, so I put in right-angle headers; headers long enough to do it aren't very common, so I've had to stretch and wrestle a bit, and in the end.. getting the spacing just-so didn't work out perfectly.. so this thing standing up seems not to get contacts in for address-lines sometimes; if I rock it back and forth, it seems to shudder and funk out depending which way I touch it. (Mind you, since theres only one set of address lines, and they're switcvhing back and forth between two banks, and one bank clears right.. it stands to reason that the cpu is wired up right.. no?)

- 9V battery .. I'm using a 7805, so its spitting out 5V; but these things need about 7+V so it can down to 5V at all; a 9V battery, being used here, will drop to about 7V after only an hour or two of runtime (I've not measured current draw here at all recently.. but must be significant..); so I don't leave it going all the time, just when flashing or running it, but still. uses up 9V 'enough' fast; I'm sure these batteries could run other stuff just fine for many more hous, but my board requires a good 7.5V+ or so..

Guess I should wire into my power supply mini-board a 9V wall wort adaptor... keep it running on mains indefinately; I've been lazy, but I think I bought the socket and wall wort already, just need to connect it :p

The o-scope is showing its value here (again); its had to get a probe in through this dense forest of wires, but I can at least see which address lines and I/O lines are active and when; ie: as the banks switch, one chip should go fairly quiet on the I/O lines and many of the address lines.

ie: cpu facing ram bank - I'm doing full 16bit blanking, so every I/O and address line should be hit

gpu-facing ram bank -- its address lines from 1-600 are being set, with I/O going to DAC->VGA; so bottom 10 address lines should be busy (perhaps I should rig it to slide up through the top bits as well, so I can test all address lines there too..)

It'll take awhile, but the goal here is to find out.. where the problem is; is it cpu seating issue (Doesn't _Sound_ like it, but I know it does loosen up 10% of the times.. so its a problem across the board now; just blinking a LED is always solid, but other operations are flaky.. but that'll go away if I solder things down; or maybe I need to pop out the sharkfin, and solder right to a perfboard, and then jumper over to the breadboard, or something.. just to make it solid. (Actually, I have male/female jumper wires, maybe I should just jumper it over nice and floppy, but that sounds like another disaster waiting.. can't move anythign without that popping out, and I like to tilt it to look at connections and probe, etc.)

- or is it the I/O or address lines to one bank or the other; seems like one bank is the naughty one (at least in the 1-600 address lines), so sounds like a low-10 address problem to me.

.... if so, could be a MUX isn't hooked up right or loose, or jumper to/from MUX or to/from RAM is funky; thats still about what, 30 wires to chekc, and on a BB its very hard to tell.. but doable

So need a half day to probe this all to hell with the o-scope :eek:

Still, the basic design _is working_, just fighting breadboard wrinkles here!

jeff

I suppose.. given one bank works perfect, and the other is got holes;; I could write a single-bank boucning-bar demo or something, should work fine. But I really want both banks to work, damnit, as that is the point of all this :)

If I just wanted a single bank system, I coudl toss what, 80% of these chips out :)
 
Last edited by a moderator:
Maybe next step should just be to go to perfboard of some sort; it annoys me they are expensive for any useful size..

Mind, I did pick up a pack of 50 (!!) 4x3" ones from China some time ago (for about $5 with shipping!) .. but theyu're too small for anything other than small experiments or power supplies or the like.

I'd like to get thoe 8"x5" or larger sizes  .. for local shops or most online shops seem to price them about $20 for a single sheet (ouch!) .. or as low as about $10 pe sheet for some mid-size breadboard style.

Proto advantage has some nifty ones: http://www.proto-advantage.com/store/product_info.php?products_id=200060

But you can't beat ebay and China; heres a 5 pack for $18 (free shipping):

http://www.ebay.ca/itm/5-Breadboard-Bread-Board-Prototype-13-5-25-5cm-4416-Points-PCB-/120859828340?pt=LH_DefaultDomain_0&hash=item1c23cea074

Maybe I should order a pack of that, just to have 'in stock' when needed, but they wouldn't arrive for about 1-2 months .. no good! /me sick of delays!

I'd like to use (say) 4 large perfboards; I could get by with 2 maybe, but I've learnt with my giant 10-breadboard-monster that even that is pretty tight; I end up with a few tight runs of wires, and then the rest are just big arches all over; I want ease of debugging, and the ability to correct mistakes still, so all wiring should route flat along the board, and between the chips in nice tidy runs; maybe use zip-ties or something to hold the wiring together.. or small bits of wire looped over a band, and soldered underneath to form a strap :p

Anyway, so, if I use (say) 4 boards, it'd give me about the size of my monster BB or a bit lartger; with better planning, maybe I can get it a bit more airy. (and given solid connections with solder joints, maybe could play more with the wiring management. Still, it gets out of control pretty fast, and once you're commited, can't back out. (At least using sockets instead of ICs, so no real risk.. but the board costs are so high, it'd make you mnad to cock up too badly.)

So .. maybe printing out the IC-sockets on pieces of paper, and then cutting them out and laying them out on a piece of cardboard or vconstruction paper, would be a way to try and get a rough layout down, and a real feel for size.. I dunno. Will think about it.

(Going to 'stripboard' etc is probably out.. hurts my brain :)

Anyway, going to perfboard of some sort makes it a bit more permanent (solid connections!) while stll being able to make corrections (move a jumper over a pin, etc), without too many disadvantages. May end up costing more than a pcb, due to the cost of the prototyping boards though.

Imagine having to spend $15+ per board, and wanting 4+ for one unit. Dayum!

Anyone got a line to cheap fast boards? :)

jeff
 
Be careful, most of the cheap perfboards from china aren't tinned. They oxidise awfully fast…

I searched the price of cold tinning agents, that's not cheap at all.
 
Just a little double post.


I got a modern Z80 CPU, from Zilog, running at 20MHz (free samples are great!). It's a Z84C0020 in a PLCC form factor (really nice packages : surface mounted, solderable, socketable and small) fully compatible with old Z80.


Now, I need to :


- understand how to work with it


- buy a PLCC to DIP adapter with a socket (I want to be able to use the CPU on many PCB, using its original form factor)
 
Last edited by a moderator:
PLCC sockets are thru-hole spaced pins; what I've done recently is stick it onto a perfboard, and then run wires from the PLCC socket to the edge of the perfboard onto a header; then just stick it into breadboard :p

(My PLCC guy is an 84pin one.. the z80 shoudl be much less)

I really want to get some Z80s, 6502s, and 6809s, and 8080s.. all still available new :)

I never did get free samples... is that easy? I only get a half dozen of each component, maybe they'd send me some :eek:

jeff
 
Well, to get samples, you need to register an account on the maker's website, then go to the page of the product you want and click the "sample" button.
Usually, they only allow a few of the same component to be ordered.

Zilog isn't really the most generous, I was only allowed to get one Z84C0020 for free :p (that's why I want to use sockets)
And their website is less user-friendly than the Ti one.

EDIT : At first, I wanted a DIP Z84, but they were not available on their "sample shop".
 
Last edited by a moderator:
Pretty fun stuff; I think its groovy as hell that these 'original era' processors are still widely available and manufactured .. a testement to their quality design (or a testiment to how slow some things move on? ;)

I did some basic designs with z80 and 6809 and such .. all fairly similar to wire up these days; not hard to use a flash as rom, and ram of course, and some basic tricks to make a memory map.

The avr's and Ti's make things so easy on one hand, but actually make things harder on another..

I wonder what the fastes z80, 6809, 8080, 6502 you can get are .. and how much you can overclock them ;) Be pretty sweet to run a z80 at 24 or 28 MHz or something :)

jeff
 
Yeah, 'original era' processors are nice piece of hardware. They're trustworthy technology proven by time.

(looks like Z80 is mostly used in modem, fax and photocopiers …)

But I'm a bit lost with the "old" way of doing things.

I'm so used to use "all-in-one" micro-controllers that facing a "simple" processor is a bit confusing  :p

I "just" have to understand how the Z80 works with external ROM and RAM.
 
I worked it out some months ago, but never drew up a solid schematic; didn't seem too bad..

The I/O separate peripheral chips sort of blew my mind, though :)

I can dig out some notes and thoughts if you get stuck, but I'm sure there are good things turning up in google for you :eek:
 
Okay, looks like I understood (more or less) how to work with "real" CPU like the Z80 I got.


Now I just need some EEPROM, an EEPROM burner and some RAM chips… I can't afford any of that right now :D


So I'll keep playing with my MSP430 micro-controllers and my 4021 CMOS chips for a while.


I've soldered a (quite nasty) perfboard version of my "SNES" controller with tact switches. It works on a Pal SNES.


Now I have to finish the "decoder" I started.
 
Last edited by a moderator:
Meh, get an old EPROM with a silica window for erasing, so you have to go out on a sunny day to erase it, and get some vit-D while you're at it ;)


Jeff, regarding your bank 1 flakiness and your sharkfin troubles, are the two related? What is it you've got mounted up on that sharkfin that's not connecting well?
 
Back
Top