Houston, we have an image!

Any discussions related to the creation of new hardware or software for the ZX80 or ZX81
User avatar
RetroTechie
Posts: 379
Joined: Tue Nov 01, 2011 12:16 am
Location: Hengelo, NL
Contact:

Slowly getting there...

Post by RetroTechie »

Whoohoo! Managed to grab some pattern data, and shift that out to the screen serially. Resulting in an actual recognizable image:
ZX81 ULA development.jpg
ZX81 ULA development.jpg (167.63 KiB) Viewed 8471 times
(what you see is entirely produced by the CPLD)

Outer black is my TV, picture doesn't show it but on screen colors are nice bright white & black, crisp individual pixels. As you see there are still some things to sort out (garbage in the border, left pixel of characters blacked out, etc) but I'm slowly getting there... :D (screenshot is from Psion's "bomber" game as you probably recognized).

To do-list is getting shorter:
  • Feed-NOP-to-Z80 circuitry.
  • Some minor bits like keyboard inputs, inverted video etc.
  • Finally remove ULA, followed by lots of cleanup. ;)
sirmorris
Posts: 2812
Joined: Thu May 08, 2008 5:45 pm

Re: Houston, we have an image!

Post by sirmorris »

Congratulations! You must be very proud :D
User avatar
Andy Rea
Posts: 1606
Joined: Fri May 09, 2008 2:48 pm
Location: Planet Earth
Contact:

Re: Houston, we have an image!

Post by Andy Rea »

Very Well done, it's no easy feat I know ! Still think my 74xx version was a Killer !

Image

Only connected to the 40 pins of the original ULA... Took me a While to get that working...

Keep plugging away it's quite rewarding to see something you've created work :D

Andy
what's that Smell.... smells like fresh flux and solder fumes...
zx80nut
Posts: 108
Joined: Mon May 23, 2011 2:10 pm
Location: A bit north of Cardiff, Wales.
Contact:

Re: Houston, we have an image!

Post by zx80nut »

Brill :)

I've never tried any CPLD stuff - I've programmed GALs and microcontrollers (AVR,PIC etc.).
I have a programmer (Presto) that can do JTAG, so I think it can do the CPLDs, so the more I see on this forum, the more tempted I am :)

If any of you have any pointers on getting started with the devices that you have been using, and best/cheap devices to use to do a "ULA" then please let me know. I think Farnell sell various ones, but I wouldn't know which to pick.

Keep up the great work all of you !

Grant
User avatar
RetroTechie
Posts: 379
Joined: Tue Nov 01, 2011 12:16 am
Location: Hengelo, NL
Contact:

Re: Houston, we have an image!

Post by RetroTechie »

Andy Rea wrote:Very Well done, it's no easy feat I know ! Still think my 74xx version was a Killer !
Yes very impressive - esp. that such a wire mess actually works... ;)
zx80nut wrote:If any of you have any pointers on getting started with the devices that you have been using, and best/cheap devices to use to do a "ULA" then please let me know.
Some good pointers would be my page on the subject, or some relevant threads over on EDAboard.com. Be sure to check linked threads & Google a bit for mentioned boards - there's a wide variety of interesting boards out there.

To be honest, so far I'm not convinced actual development (trying out design changes) goes faster than re-wiring heaps of 74xx circuitry - there's other advantages though:
  • All the inter-circuit wiring is in the CPLD - so only wiring needed are signals going in, and signals coming out. Normally I only need soldering iron to connect a signal that I haven't used before.
  • Don't need to go out to a shop / order parts when I need a 74xx that's not in my parts box - CPLD / FPGA design uses very generic logic constructs so you can 'emulate' any 74xx part (or whatever you can think of).
  • Any design cooked up is much easier to reproduce (just buy another CPLD & program the part, vs. needing to build an entire circuit board when design consists of 74xx IC's). As soon as you exceed a few 74xx parts, CPLD's are smaller, cheaper & likely more power-efficient too.
  • Design becomes much easier to move from board to board (like from CPLD -> FPGA board), or include as a building block in other projects. That flexibility is a biggie for me personally...
For ZX81 ULA development, XC9500 series is the most hassle-free (single 5V parts) but on their way of being phased out, and more expensive than 3.3V (5V tolerant) XC9500XL series. XC9572 should be big enough to contain all ULA logic, and XC9572 is available in PLCC-84 package which has all the I/O you'd want for this application. It's possible to find XC95108 in PLCC package, but it's quite expensive.

Beyond that you're looking at IC housings that are near-impossible to hand solder, breakout boards with 100/144-pin QFP IC's (0.5mm pitch) and low-end FPGA boards. It's just a matter of what you want to do, budget, and how much DIY is acceptable. For an overview of the architecture & available packages, check the XC9500 and XC9500XL families datasheets.

Altera has similar parts, and using .SVF / .XSVF files as workaround, you should be able to program them with your Presto programmer.
Andy Rea wrote:Keep plugging away it's quite rewarding to see something you've created work :D
Indeed it is! :D (and never doubted that when I started this project).
zx80nut
Posts: 108
Joined: Mon May 23, 2011 2:10 pm
Location: A bit north of Cardiff, Wales.
Contact:

Re: Houston, we have an image!

Post by zx80nut »

Hi RetroTechie.
Thanks for that detailed post - that's great info for me to get on with.

Grant
User avatar
RetroTechie
Posts: 379
Joined: Tue Nov 01, 2011 12:16 am
Location: Hengelo, NL
Contact:

Re: Houston, we have an image!

Post by RetroTechie »

zx80nut wrote:Thanks for that detailed post - that's great info for me to get on with.
You're welcome. :) IMO the barrier to entry into programmable logic is pretty high, so I'm glad if I can help lower that barrier for someone. The more builders / developers, the more interesting projects around for others (including myself!) to enjoy.

Things moving along - just implemented force-NOP circuitry, and applied it to 1 dataline (D0). Disconnected ULA's D0 pin, machine works normal (so the forced NOP seems to be applied correctly). Only data the ULA grabs lacks D0 now, causing vertical black lines on ULA-generated screen output. OTOH the CPLD-generated screen output improved, because I fixed that 'left pixel from characters missing' - somehow a pin designation got commented out... :oops: :mrgreen:

And a row of keyboard keys isn't read anymore, that's up next. When reading the keyboard signal works for D0, I'll move on to hook other datalines up to the force-NOP circuit, with most of those done it'll be time to finally remove the ULA. :D :D
User avatar
PokeMon
Posts: 2264
Joined: Sat Sep 17, 2011 6:48 pm

Re: Houston, we have an image!

Post by PokeMon »

This picture of your work looks really crazy. :mrgreen:
http://bitcycle.org/electronics/1st_CPL ... loseup.jpg

Okay I wouldn't say my soldering work is better but it's maybe more useful to have an adapter board for the smd packages.

I think this cost about 20 GBP / EUR as standard board (4 x 6,3 inch) but has many available options for nearly all packages could be found in the world.
IMG_3764k.jpg
IMG_3764k.jpg (247.15 KiB) Viewed 8368 times


My actual project or let's say a part of it. ;)
This is a TQFP 32 package
IMG_3765k.jpg
IMG_3765k.jpg (215.45 KiB) Viewed 8366 times
zx80nut
Posts: 108
Joined: Mon May 23, 2011 2:10 pm
Location: A bit north of Cardiff, Wales.
Contact:

Re: Houston, we have an image!

Post by zx80nut »

I thought I would be able to go to bed early now I've completed the ZX80 stuff - I think I have now found something else to keep me going into the early hours ;)

Both Andy's and RetroTechies achievements are inspiring :)

Thanks !

Grant
User avatar
RetroTechie
Posts: 379
Joined: Tue Nov 01, 2011 12:16 am
Location: Hengelo, NL
Contact:

ULA replacement is alive!

Post by RetroTechie »

Went full steam ahead today, databit by databit completing force-NOP circuitry, keyboard inputs, and then disconnect that dataline from ULA. Until ULA was only outputting D6, A0', A1' and Z80 clock. At that point I updated the design to produce those signals as well, did some soldering & took the jump. :arrow:

At first some problems with same RC delay I used earlier as a hack, and I had to fiddle a bit with clock signals / inverse clock signals (for the video shift-to-screen register), but: IT WORKS! Bye bye ULA! :D :D :D 8-)

Image looks a lot like what I posted earlier, a little higher & with left pixel of characters as they should be. Keyboard works, and (after a small mod) tape loading too. Ran some games: Bomber, Space Raiders, Mazogs and Rocket Man. Hi-res doesn't look very good (perhaps because I didn't implement the video invert bit yet), but game items are very recognizable.

Machine runs very stable too - no lockups or anything. Total power consumption is under 1.5W ...

I'd call this version 0.5 since there's still a lot of cleanup & fixes to do, but for further development there's no ULA anymore to get in the way. The XC9572 CPLD's macrocells are about 90% used, so there's not much room left for add-ons like a clock doubler. But this CPLD does the job, and that's what counts.

To be continued... :geek:
Post Reply