DIY 8-Bit Z80 Single Board Computer

2024 ж. 22 Мам.
63 353 Рет қаралды

This is an awesome Z80 Single Board Computer project I finished last year. It went through a couple of revisions over a few years, this is the final one. It has Zilog Z80 10Mhz CPU, 8Kb ROM, 8Kb VRAM, 48Kb RAM (64Kb total), 2 serial ports (Zilog SIO IC), 2 Atari-compatible joystick ports (first Zilog PIO IC), AY-3 sound generator by General Instruments, built-in mechanical keyboard (second Zilog PIO IC) and Zilog CTC clock chip servicing blanking video interrupts. This is Sinclair ZX Spectrum personal computer reimagined - it's what I wanted it to be.
It has one demo game written for it - Boulder Dash clone, one application - graphics tile editor. And it has small debug monitor program built in the ROM. I plan to make BASIC interpreter for it and assembly language development environment after I finish making Window/Linux/Mac SDL-based emulator.
Project web page: solisted.net/projects/z80-sin...
Schematics, gerbers and CAD files: github.com/solisted/z80sbc
Emulator for Windows: solisted.net/projects/z80-sbc...
High quality manufactured PCBs of the mainboard and keyboard for sale: www.ebay.co.uk/itm/165783862203
It is very easy to build it yourself. No sophistication required to do it, it's completely made of through-hole components, very easy to solder at home. CPLD ICs are also very easy to program with inexpensive tools. I will make a separate video on how to work with Atmel CPLDs used in this project.

Пікірлер
  • Your board is so well laid out. Very compact, but yet it feels spacious!

    @adamkelly2256@adamkelly2256 Жыл бұрын
    • Thank you, Adam! This board was my first learning experience in relatively complex PCB routing and layout. First few revisions were autorouted and did not look so good :)

      @solisted@solisted Жыл бұрын
    • it's gorgeous

      @chaoticsystem2211@chaoticsystem22114 ай бұрын
  • This presentation has a coffee shop musician feel to it, but instead of saying "this next song I wrote when I was living on my best friend's couch" it's "this next program I wrote on my own computer. I hope you like it." 😄

    @davidgood840@davidgood840 Жыл бұрын
    • Thank you, David! You got it right :)

      @solisted@solisted Жыл бұрын
    • This is what KZhead used to be like, and it was better for it. New KZhead is a bunch of stupid editing and graphics and dumb memes and bad acting stuck in for no reason. He's talking about his computer, so he talks about his computer.

      @cygil1@cygil12 ай бұрын
  • This is fantastic! Only missing items are: A) a storage microSD unit ; B) a BASIC compiler and a Disassembler . Pretty awesome!

    @up2tech@up2tech Жыл бұрын
    • Thank you, Luis! A and B items are somthing I plan to work on in the near future.

      @solisted@solisted Жыл бұрын
  • The video output seems very clean. Good job. Great to see the Z80 chip still rockin' after all these years.

    @SpikeBlighty@SpikeBlighty Жыл бұрын
    • Thank you! It was captured with a decent VGA to HDMI converter/upscaler. But on the real CRT VGA monitor I have it looks much much better.

      @solisted@solisted Жыл бұрын
  • This is a very nice project. Ive been looking for a while now for a ZX80 project that I can build with easy available components, and this is it! I cannot wait for your project files. Well done!!

    @WessieNC@WessieNC Жыл бұрын
    • Thank you Jaco! Project files are published on GitHub in the description of the video.

      @solisted@solisted Жыл бұрын
    • Holy smokes me too

      @malx1289@malx1289 Жыл бұрын
  • Your video stability is fantastic... no jitter, no tearing, no weird colour artifacts, rock solid! Looking forward to the future installments of this project!

    @cadmilus@cadmilus Жыл бұрын
    • Thank you Clayton! It was not so stable initially and took some time to optimize PLD file to maintain low input-to-output gate delays in CPLD. But overall, this is due to 4 layer board design and relatively high speed capabilities of ATF1508 CPLD (>100 Mhz when VGA clock is 25.175 Mhz) and IDC7005 dual port SRAM (15ns). Additional inverters/buffers before the R2R DAC also helped to clean up signals fed into the DAC from the CPLD. VGA signal is a bit smeared and wavy if you feed sync and color outputs of the CPLD into the DAC directly.

      @solisted@solisted Жыл бұрын
    • Color, not col- "hour"

      @midixiewrecked7011@midixiewrecked7011 Жыл бұрын
  • What an absolute beauty! Classic but with real keyboard. I have been a software developer my whole life but I cannot understand how you hardware guys can create things this complicated! I have have incredible respect for that kind of work! Modern computer have CPUs 1000 times as fast but feels 10 times as slow. Thanks for sharing this. I really enjoyed it! 😀👍

    @mortengreenhermansen4489@mortengreenhermansen4489 Жыл бұрын
    • Thank you, Morten! Unlike old 8-bit computers where you work with hardware directly, modern computer has 1000s layers of abstraction between hardware and end-user programs. This way corporate offshore teams of developers can quickly put out various applications with minimal development effort :) These abstraction layers are not optimized well, usually and that's why modern computers don't feel as snappy as 8-bit ones with instant launch times and reaction to input.

      @solisted@solisted Жыл бұрын
    • Thanks for the reply! And because all young people mostly learn stuff at the top of the abstraction layers, if something breaks below they have no clue how to fix it. So when all you lower-level guys gets to pension this world is doomed! So Ivan PLEASE wear a bicycle helmet… all the time! Please! 😅

      @mortengreenhermansen4489@mortengreenhermansen4489 Жыл бұрын
  • All your PCBs look so neat and clean! By looking at this I'm getting aesthetic pleasure even if I don't understand how it works.

    @user-ox9wg1jj9w@user-ox9wg1jj9w Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • You are criminally under subscribed. Really cool project and first video of yours I've watched.

    @ro.7427@ro.7427 Жыл бұрын
    • Thank you, R O!

      @solisted@solisted Жыл бұрын
  • Very nice! It really takes me back. A great way to honor those early home computers.

    @tolkienfan1972@tolkienfan1972 Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • Absolutely lovely. Beautiful format and layout. Thanks for sharing it with us!

    @cristianstoica4544@cristianstoica454411 ай бұрын
    • Thank you!

      @solisted@solisted10 ай бұрын
  • Excellent video. I designed and programmed many top Spectrum games back in the day and I admire your work on this project. Rearranging the order of the video frame buffer is a huge improvement.

    @TheDradge@TheDradge Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
    • @@solisted you're welcome. Are you going to be publishing/selling the code for the CPLD chip? Which chip(s) are you using?

      @TheDradge@TheDradge Жыл бұрын
    • I used Microchip/Atmel ATF1508 for the graphics and ATF1502 for the chipset. Not decided yet if I want to share PLD files.

      @solisted@solisted Жыл бұрын
    • @@solisted Interesting. Are you familiar with the Harlequin Spectrum clone? They essentially did the graphics/ULA in discrete TTL.

      @TheDradge@TheDradge Жыл бұрын
    • @@TheDradge Yes, very nice project. It can even fit in the original enclosure if I remember correctly.

      @solisted@solisted Жыл бұрын
  • Fantastic work! I love the case, all the connectivity, tight PCB design. You really have done a wonderful job! The only thing I would have done differently is the keyboard. I really would have tried hard to include some cursor keys in an inverted T in the bottom right. But overall; wow, I am so impressed!!

    @MarkOfBitcoin@MarkOfBitcoin Жыл бұрын
    • Thank you Mark! Actually, everything was designed around the keyboard. Mainboard PCB has the same footprint so both keyboard and mainboard can be stacked together with standard hex standoffs. I did not include cursor keys, because I did not want them to be in a single row like some computers in 80's had. In my opinion, the most convinient layout with T-shaped cursor keys required an additional column on the right. But I wanted as compact design as possible for people to be able to print parts of the enclosure on a regular FDM printer in one piece :) But still, my 3D printer has little bit smaller working area, so I had to order this case from 3D printing company.

      @solisted@solisted Жыл бұрын
    • @@solisted makes sense and I agree the compact design is essential. But I reckon the huge Shift key on the right could have been split into 2 keys, one being Up cursor. 😉

      @MarkOfBitcoin@MarkOfBitcoin Жыл бұрын
    • @@MarkOfBitcoin Then you would cripple the keyboard from the standpoint of typing.

      @TheUtuber999@TheUtuber999 Жыл бұрын
    • ​​@@MarkOfBitcoin Agreed, I would totally rework the keyboard. Placing the inverted T in the bottom right, and removing the right CTRL, FN, and Pn keys; I rarely use my right hand with those keys.

      @MattKasdorf@MattKasdorf Жыл бұрын
  • That's the sweetest motherboard I have seen in a long while, super clean design!

    @homeopathicfossil-fuels4789@homeopathicfossil-fuels47896 ай бұрын
    • Thank you!

      @solisted@solisted5 ай бұрын
  • You are giving me a lot of inspiration to continue with mine, but you are way ahead of me.

    @SteveRaynerMakes@SteveRaynerMakes Жыл бұрын
    • Thank you Steve! It took me a few years to get to the final design I showed in the video. Many revisions, first on the breadboard then 4 revisions on PCB with different layouts and perepherials.

      @solisted@solisted Жыл бұрын
  • What a brilliant little machine ! I'm setting up to try make a similar project, is always nice to find sutch inspiring projects

    @MrVinicius5000@MrVinicius5000 Жыл бұрын
    • Thank you, Silvestre!

      @solisted@solisted Жыл бұрын
    • Sutch???

      @midixiewrecked7011@midixiewrecked7011 Жыл бұрын
  • Very nice, I remember the good old Z80 days. It was very nice CPU.

    @MaciejKollo@MaciejKollo Жыл бұрын
    • Thank you, Maciej! I do agree - Z80 is very nice CPU to work with and to program. Instruction set is good, bunch of handy 16-bit operations. Index registers are also very helpful. And block move instructions too.

      @solisted@solisted Жыл бұрын
  • This is a thing of beauty. Congrats, amazing work!

    @AndyGraceMedia@AndyGraceMedia Жыл бұрын
    • Thank you, Andy!

      @solisted@solisted Жыл бұрын
  • fantastic project! really clean layout and implementation

    @OIP_1@OIP_1 Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • Just a most beautiful, excellent design and full build! Just beautiful and perfect. I'd stick a few 8255 devices on the buss, though. I can't help myself. Maybe 10 of them....

    @Theineluctable_SOME_CANT@Theineluctable_SOME_CANT Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • Beautiful improvement on the Z80 flat keyboard

    @TheZeofobic73Channel@TheZeofobic73Channel Жыл бұрын
    • Thank you! Yes, this one feels much better :)

      @solisted@solisted Жыл бұрын
  • This is a very elegant design. Congratulations

    @devcybiko@devcybiko Жыл бұрын
    • Thank you, Gregory!

      @solisted@solisted Жыл бұрын
  • Very nice work! Thanks for sharing it with us.

    @Nichetronix@Nichetronix Жыл бұрын
    • Thank you, Steve!

      @solisted@solisted Жыл бұрын
  • Stunningly well done, sir.

    @blurigard447@blurigard4476 ай бұрын
    • Thank you!

      @solisted@solisted5 ай бұрын
  • Impressive computer, looks like a well finished product.

    @beforth@beforth Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • Very cool, was looking forward to this video, and interested in building one.

    @jumhig@jumhig Жыл бұрын
    • Thank you, James!

      @solisted@solisted Жыл бұрын
  • This is truly excellent. Keep up the good work.

    @CodexPermutatio@CodexPermutatio Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • Can't wait till you release the build info for this. Thank you for sharing!

    @TheSillyshyguy@TheSillyshyguy Жыл бұрын
    • Thank you Terry! Will share soon schematics, gerbers, jedec and CAD files for this project.

      @solisted@solisted Жыл бұрын
    • Terry, I updated description of the video to link project files on GitHub. Can't wait to see some feedback on the design.

      @solisted@solisted Жыл бұрын
  • Excellent work!! Thanks for sharing.

    @tseckwr3783@tseckwr3783 Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • Beautifully done. Thanks!

    @lawrencerubanka7087@lawrencerubanka7087 Жыл бұрын
    • Thank you, Lawrence!

      @solisted@solisted Жыл бұрын
  • I've had my share with moderately complex PCB routing, but the top layer looks extremely tidy. Well done :) Also interesting choice with the AY-3-8913, which makes perfect sense at it's usually exclusively used as a sound generator - yet that variant being quite unknown til a few years ago.

    @1337Shockwav3@1337Shockwav34 ай бұрын
    • Thank you!

      @solisted@solisted3 ай бұрын
  • This is amazing. Nice work.

    @marklowe7431@marklowe7431 Жыл бұрын
    • Thank you, Mark!

      @solisted@solisted Жыл бұрын
  • Really nice ASMR Voice!! And your Computer is Great! I Love that thing.

    @djthashock@djthashock Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • If this had a cart port for expansion and roms, it would be straight out of the 80's. Amazing job.

    @robertdutcher8081@robertdutcher8081 Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • Very nice project and well done.

    @bartameele6885@bartameele6885 Жыл бұрын
    • Thank you Bart!

      @solisted@solisted Жыл бұрын
  • OMG! It doesn't look like a homebrew project but a professional high end machine from the era :O

    @AntonioBarba_TheKaneB@AntonioBarba_TheKaneB4 ай бұрын
    • Thank you, I tried to replicate that look and feel of 8-bit home computer era.

      @solisted@solisted3 ай бұрын
  • So cool. Great design. There is a new AY compatible chip available with the same pinout, it's designed as a replacement in old computers like the Speccy. :)

    @frankowalker4662@frankowalker4662 Жыл бұрын
    • Thank you! Is it the actual DIP chip or an FPGA on a small board with DIP footprint? Could you please post a link - interesting.

      @solisted@solisted Жыл бұрын
    • @@solisted I think it might be an FPGA on a DIP board. Check out the 'AY-3-8910 clone vs. original AY-3-8912 sound chip' video from ByteDelight on YT. Ben does a demo of it.

      @frankowalker4662@frankowalker4662 Жыл бұрын
  • Wow. wonderful project and cute game.

    @janlavcharivmakhgalsuren6127@janlavcharivmakhgalsuren61274 ай бұрын
    • Hi! Thank you!

      @solisted@solisted3 ай бұрын
  • Thanks Ivan, great work.

    @artoheino7315@artoheino7315 Жыл бұрын
    • Thank you, Arto!

      @solisted@solisted Жыл бұрын
  • Amazing, wonderful! I love how everything is clean and compact. What about an on/off LED?

    @pi4630@pi4630 Жыл бұрын
    • Thank you, Pasqualino! Just did't think about it at the time.

      @solisted@solisted Жыл бұрын
  • I was expecting OPQA but WASD is ok too. Thanks for the video!

    @AutoFirePad@AutoFirePad Жыл бұрын
    • Thank you! Also Atari joystick works, I just forgot to show it in the video.

      @solisted@solisted Жыл бұрын
  • Very neat!! I'm working on a retro project currently with a Z180 which is an odd variant of the Z80.

    @kenturkey1971@kenturkey1971 Жыл бұрын
    • Thank you! Cool!

      @solisted@solisted10 ай бұрын
  • This looks amazing!

    @ant64b@ant64b Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • Cool project. Not dissimilar from what I did with my computer - heavily inspired by the MSX architecture. I’ll have to look at your GitHub when I’m in front of the PC.

    @RetroDepot@RetroDepot Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • Very nice work.

    @Ty_Mathieson@Ty_Mathieson Жыл бұрын
    • Thank you, Tyler!

      @solisted@solisted Жыл бұрын
  • Very interesting project, kudos, perhaps in a next revision an edge connector with all the data and address lines of CPU for expansion?

    @sublimemauser5904@sublimemauser5904 Жыл бұрын
    • Thank you! I wanted to make one, but also I needed to keep system compact and stable. The choice was - make unbuffered card edge connector with all bus signals exposed and risk having some peripheral devices drawing to much power to cause stability issues or increase mainboard footprint and add buffers between system bus and connector. Did not like both variants. I like the way 8-bit Atari periphery worked - through daisy chained serial port. That's I want to try, since SIO/0 IC has two serial ports and both a available on the back on the case via compact RG45 connector.

      @solisted@solisted Жыл бұрын
  • Would totally buy one.

    @sqlcactuss@sqlcactuss Жыл бұрын
    • Thank you Wes!

      @solisted@solisted Жыл бұрын
    • It is a very nice build. Added one to my fantasy shopping list

      @edabean007@edabean007 Жыл бұрын
    • @@edabean007 Thank you! I may start selling kits of this computer, not decided yet.

      @solisted@solisted Жыл бұрын
  • Nostalgia for me since my first year project at Uni was based on a z80

    @lanceharvie@lanceharvie Жыл бұрын
    • Yes, Z80 was an obvious choice for my first build for the same reason :) Not 6502, not 8088 :)

      @solisted@solisted Жыл бұрын
  • Would love to see how you made the CPLD’s work, I’ve been interesting in trying some but have read about many challenges using them, mainly trying to program them from a modern host computer.

    @c1ph3rpunk@c1ph3rpunk Жыл бұрын
    • Thank you, Darren! These particular CPLDs from Atmel/Microchip (ATF150x) are not very difficult to work with. You will need simple WinCUPL CUPL language editor/compiler, ATMISP 7.3 programmer software and Atmel's USB JTAG programming cable: ATDH1150USB. All works perfect in Windows 10. Please, check here: www.microchip.com/en-us/products/fpgas-and-plds/spld-cplds/pld-design-resources

      @solisted@solisted Жыл бұрын
  • Since learning arm assembly, I’m reluctant to put time to the simpler cpus these days .. I like the llvm linker for build chain and options from that! Still, nice work!

    @kippie80@kippie808 ай бұрын
    • Thank you!

      @solisted@solisted3 ай бұрын
  • Duuude! You're a maniac! and i mean that in the best way..ahaha. Sheesh.. reeally impressive mountain of work u did. Z80 Timex/Sinclair was also my 1st computer as a kid and soldered it as a kit..wrote a defenders game on it but also did digital art (unknowingly) for my awesome gf at the time.... Thx for the blast from the late 70s past ...really nice feeling it gave me. Big up yourself as we say over here!

    @gregdee9085@gregdee9085 Жыл бұрын
    • Thank you, Greg!

      @solisted@solisted Жыл бұрын
  • Beautiful!

    @yafz@yafz Жыл бұрын
    • Thank you, Emre!

      @solisted@solisted Жыл бұрын
  • Great work. It must have taken a lot of effort.

    @mheermance@mheermance Жыл бұрын
    • Thank you! Yes, a lot of learning, a lot of trial and error.

      @solisted@solisted Жыл бұрын
  • Good job! Is perfect if it able to run the CP/M system.😀

    @m00iwi00m@m00iwi00m Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • very nice work!

    @stanleyyyyyyyyyyy@stanleyyyyyyyyyyy Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • A watered down Supaplex game, cool. That looks like a fun project, though, very clean.

    @SaarN1337@SaarN1337 Жыл бұрын
    • Thank you, Saar! I would say, Supaplex is beefed up version of the original Boulder Dash game which is replicated for this computer :)

      @solisted@solisted Жыл бұрын
  • Really amazing ! Congats !

    @samuelcorreabueno9784@samuelcorreabueno9784 Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • Elegant design!

    @jps99@jps99 Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • What a beauty!

    @MadsonOnTheWeb@MadsonOnTheWeb Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • Superb device!

    @romanm.4763@romanm.4763 Жыл бұрын
    • Thank you, Roman!

      @solisted@solisted Жыл бұрын
  • Very impressive!

    @sabotrax@sabotrax Жыл бұрын
    • Thank you, Marcus!

      @solisted@solisted Жыл бұрын
  • Nice, your design very similar to my own KAPE 8bit homebrew target design. I'm not there yet tho. Gz on finishing the project! You use a CPLD to output to VGA? What CPLD are you using for it? My original idea for my own GPU was to use dualport RAM but getting those chips relatively cheaply for the amount I needed (I wanted to go full 256x192 16 color display, so the framebuffer would've needed to be 24k minimum, so in the end opted for a somewhat unorthodox kludge of AVR MCUs and a bunch of FIFO chips - and also the GPU itself is tile/sprite-based due to memory constraints, but the output FIFO buffer is big enough to handle the full image). Also it seems you have the brown-fix implemented? I decided to go for "mathematically correct" 16 color RGBI, just for the simplicity of outputting the RGB lines from a color bit line + intensity bit line, as everything would be symmetrical. The method of ROM having a monitor to load games to RAM is what I'm going to go for too. Currently I have only RAM installed in my breadboard prototype, and uploading to RAM is done with an additional Arduino UNO that also handles the proper signals for bus hijacking. My choice of system was a 6502 CPU and that ecosystem, so 6551 for UART and 6522 for peripherals. I'll be using an YM2149F for audio output and gameport reading. Awesome project, great stuff!

    @zment@zment Жыл бұрын
    • Thank you! Yes, I use Microchip (Atmel) ATF1508 CPLD and Renesas (IDC) 7005 8Kb dual port SRAM as a base for the video system. Dual port SRAM is expensive, but simplifies system design by a lot. Only thing you need is to feed BUSY output of the SRAM into WAIT input of the CPU to avoid "snow" effect when address collision happens between CPLD and CPU on opposite ports of the SRAM. I also have 256x192 16 color prototype graphics implemented using the same CPLD and 7008 64k dual port SRAM for 2 flippable pages (x86 SBC prototype briefly shown in my other video). It is possible to implement tiled graphics using the same CPLD, but without sprites - 128 is not enough macrocells/flip-flops available in it. Generally speaking, I've managed to implement 3 types of graphics engines with this awesome CPLD. Speccy like monochrome linear buffer with color attributes (8k buffer), 16-color linear framebuffer (24k buffer) and 256-color tiled graphics (8k + 16k buffers = 20k total). I think, it is possible to make full featured tile/sprite graphics engine by stacking multiple CPLD and dividing responsibilities between them. One renders tiles, another one overlays sprites, third one renders text-based layer for a scoreboard, for example. I have one more SBC prototype of 65c816-based computer with 320x240 8bpp color 8x8 tiled graphics with smooth scrolling (no sprites). But approach there was a bit different. Instead of reading from SRAM and sequencing pixels inside CPLD, that CPLD is driving address bus of one dual port SRAM dedicated to character memory which in turn drives part of the address bus (alongside with CPLD) of another dual port SRAM that holds tile pixels. And second SRAM data bus is directly fed into the R2R DAC (through buffers also). Brown/dark gray fix was easy to implement with CPLD, just changed boolean equation that converts IRGB to RRGGBB from: R1.d = R; R0.d = R & I; G1.d = G; G0.d = G & I; B1.d = B; B0.d = B & I; to: R1.d = R; R0.d = I & !G & !B # I & R; G1.d = !R & G # I & G # G & B; G0.d = I & !R & !B # R & G & !B # I & G; B1.d = B; B0.d = I & !R & !G # I & B; Like I mentioned above, I'm also interested in 65c02/65c816 series of CPUs by Western Design Center and made another prototype with enhanced 256-color tiled graphics with that CPU and 65c51/65c22 peripherals IC.

      @solisted@solisted Жыл бұрын
    • ​@@solisted Thanks for the detailed answer! Been looking into PLD's, tho mainly for address decoding (like ATF16V8 or ATF22V10), but doing a whole VDP/GPU out of a ATF1508 sounds dope! Great stuff!

      @zment@zment Жыл бұрын
    • @@solisted I'd be very interested in learning more about your video circuit design and how you work with CLPD devices to make it come to life.

      @sohl947@sohl947 Жыл бұрын
  • Unbelievable how fast it is compared to a modern computer.

    @apojoga@apojoga Жыл бұрын
    • Thank you! This is because all software is written in an assembly language and directly accessing computer hardware. Zero abstraction layers between end-user software and computer hardware makes it feel really snappy.

      @solisted@solisted Жыл бұрын
  • This is very cool, I think I'm going to have to build myself one! I've downloaded the emulator - have you published any of the demo code anywhere to have a play around with?

    @spacetrucker62@spacetrucker622 ай бұрын
  • Very interesting, Good explanaition and great project! Where did you get the Keyboard from?

    @TheDesignDevil@TheDesignDevil Жыл бұрын
    • Thank you, Thomas! Keycaps for the keyboard are ordered separately from WASD Keyboards. You can design your own keycaps on their web site and they will manufacture them for you. PCB for the keyboard is DIY, made in KiCad and manufactured by JLCPCB (like the mainboard). Cherry MX linear switches are ordered from mouser.com. Everything is DIY, hand-soldered.

      @solisted@solisted Жыл бұрын
    • @@solisted useful information, thsts the biggest hurdle ie problem with resurrecting ZX81 or Spectrum, their standard keyboards are yuck. and there no third party around these days making and selling complete ZX keyboards. a mere 35 years late lol. I haver an intact ZX81 , no idea if it wotks, best to keep it as a display item methinks.

      @joefish6091@joefish6091 Жыл бұрын
  • 面白そう!色も15色使えていいね。Z80だけど10MHz出るんですね。 Looks interesting! I am interested to see what the specs are. Nice to have 15 colors to work with!

    @agencyx1turbo443@agencyx1turbo443 Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • Nice, Waiting for that Windows Emulator.

    @rdalemd76@rdalemd76 Жыл бұрын
    • Thank you! Currently, making Z80 CPU emulator library in ANSI C.

      @solisted@solisted Жыл бұрын
  • Very nice, complex serious design, well above the common Z80 sbc most people make, so one question why not use HD64180 or Z8S180. these are super Z80 ,fast and feature packed. Using the 180 type of Z80 with their dual channel inbuilt DMA that just inserts into normal machine cycles, , it's possible to have invisible screen memory transfer to a separate frame buffer and GPU,

    @joefish6091@joefish6091 Жыл бұрын
    • Thank you Joe! I was looking into various 8-bit CPUs including Z180 and decided to go with Z80 to replicate (with some convinience tweaks) look, feel and architecture of home computers of that era. Most of the inspiration was taken from the first computer I had when I was a kid - Sinclair ZX Spectrum. Also, I wanted to use parts that are DIY friendly (DIP/PLCC) and easily obtainable. Z180 variants in PLCC packages are usually not stocked at major IC vendors, unlike Z80 that is always availabile in huge quantities. I suspect it is still widely used a lot in automation controllers. Third, I did not implement any hardware blitters, sprite engines and DMAs to make it more fun and challenging writing software for this computer :) At least, In my view. I like programming graphics in software. Do cycle counting to optimize graphics, music and game logic routines :)

      @solisted@solisted Жыл бұрын
    • Z180 is nice, however if you plan to run/port existing Z80 software, you're in trouble, IIRC for example Z180 does not support some "unofficial" Z80 features used by many software like the ability to use IX and IY as two 8 bit registers in the form of IXL/IXH and IYL/IYH. At least I have already run into this problem once, while I tried to use Z180 inside an Enterprise-128 (Z80 based) computer just to fun to try another kind of "Z80-like" CPU to be fancy for just fun.

      Жыл бұрын
    • Toshiba do one with serial ports built in and timers for interrupts.

      @wayland7150@wayland7150 Жыл бұрын
  • Very nice 🙂

    @10p6@10p6 Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • Well that certainly kicked the ass of my old Tandy (Radio Shack) Model 1. I am also impressed by the tile editor. In my experiance tools written for a particular purpose, tend to really do the job,. I would be interested in the ROM soft/firmware. Do share if and when you get the opportunity. I look forward to you sharing your work the "IDE" you have planned. I am interested in you choosing BASIC rather than python; were you trying to keep the retro vibe? Well done for what you have acheived. Now, where do they put the subscribe button on this thing?

    @willofirony@willofirony Жыл бұрын
    • Thank you! This project is 50% nostalgia driven in any aspect - hardware and software, so BASIC is a choice for programming language. Maybe, with built-in compiler to add some juice :)

      @solisted@solisted Жыл бұрын
  • very nice!

    @bestintentions6089@bestintentions6089 Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • This is very nice man! Are you a “I share my gerbers kind of guy or uh you know 😉” I’d love to try this project!

    @russianvideovlogguy@russianvideovlogguy Жыл бұрын
    • Thank you, Atari Warrior! Awesome channel name! :) I did share gerbers and everything on my GitHub page, it's in the description of the video.

      @solisted@solisted Жыл бұрын
  • So cool

    @GaleazzoMussolesi-ff4oq@GaleazzoMussolesi-ff4oq4 ай бұрын
    • Thank you!

      @solisted@solisted3 ай бұрын
  • Вань, красота!

    @theobserver9805@theobserver9805 Жыл бұрын
    • Спасибо!

      @solisted@solisted Жыл бұрын
  • thats how the MSX vidoe memory is organised, maybe the attribute table come 1st, same screen size too. Funny thing, if you program the MSX screen right to left, bottom to top, you can get 4 colors per byte, F+B per nibble, instead of 2 colors per byte.

    @paulwratt@paulwratt Жыл бұрын
    • The only thing frustrated me about programming graphics on MSX is a need to write to graphics buffer through I/O registers. It is much slower than having it memory mapped for direct CPU access.

      @solisted@solisted Жыл бұрын
    • @@solisted hence the use of DMA as an option from th VDU side. There is a "mod" in BlueMSX (and OpenMSX?) that "opens" VDU RAM as 16K PAGE MAPPED, based on a real world mod, not well known because is conflicts with some other common hardware (MSX-AUDIO or MSX-MUSIC) that the guy did not own at the time. I am glad your design doesnt need such hacks :)

      @paulwratt@paulwratt Жыл бұрын
    • @Paul Wratt Interesting mod, will check that out.

      @solisted@solisted Жыл бұрын
  • Very cool. I'd buy it. Wish it had HDMI though.

    @dazealex@dazealex Жыл бұрын
    • Thank you! This project was aimed to be DIY-friendly that requires minimum soldering skills to assemble it at home. HDMI converter and DAC ICs are available only in SMD packages, so I decided to go with VGA output because this video signal is very easy to generate, and it does not require any additional ICs, just simple R2R resistor DAC and couple of buffers.

      @solisted@solisted Жыл бұрын
    • @@solisted Gotcha. You should sell this or provide kits etc. Once you have the software side more fleshed out. I'd love to write simple games on this or run BASIC like the old times.

      @dazealex@dazealex Жыл бұрын
  • Very interesting

    @ashrafatteya@ashrafatteya Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • Gracias. Thanks.

    @dgnrlento@dgnrlento Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • wow! new fan here! 😍

    @philipgbullas@philipgbullas Жыл бұрын
    • Thank you, Phil!

      @solisted@solisted Жыл бұрын
  • Hi Ivan I bought boards from Ebay. They are quality product. Looking forward to solder the board. May I know source for AY-3-8913 chip and BOM for keyboard? Thanks

    @kirannevaskar7034@kirannevaskar7034Ай бұрын
  • This looks amazing Ivan. Is there an email address I can contact you on to ask some questions re referencing this video in a story?

    @005AGIMA@005AGIMA Жыл бұрын
    • Thank you! I published my email on the channel about page.

      @solisted@solisted Жыл бұрын
  • Also... How is the memory layout of your screen RAM? The Spectrum used a really weird system of thirds, then arranged in a very odd way within those, where most 8-bit computers just had a flat, linear bitmap. You mention something about thirds in the video, is that what you mean? I know Sinclair claimed their design was easier to interface with a TV, and wasn't necessarily too bad to work out the location of a pixel, or 8 of them, but still I'm pretty sure it slowed things down, a bigger problem when your sprites are all in software. Hey, how about some sprites in your design? Does it have to have a separate chip for it's graphics RAM? Couldn't you just share the main memory? You just need a system of priority for when the graphics and CPU chips clash, have the graphics chip halt the Z80 if that happens. The Z80 spends a lot of cycles doing stuff other than RAM reading, you should generally have lots of time. How much slower did stuff run, in the contended 16K vs the upper 32K? Can't be too bad or else the 16K model wouldn't have been practical. Also you only need access 2 bytes per 8 pixels, or even less, if you cache the atttribute byte a line at a time, say. Would need 32 bytes and reduce RAM access from 2 bytes per 8 pixels, to 1.125 bytes, effectively. Oh, I love fantasy computer design! I really should get more into electronics when I have the space available. I can manage Arduino OK, and C on proper computers, a bit of Verilog can't be _too_ hard.

    @greenaum@greenaum Жыл бұрын
    • Hi! I implemented linear memory layout for the monochrome pixel buffer. I went with asynchronous dual port memory design for the video circuit to keep it compact and simple. I did not have enough experience to quickly come up with acceptable solution for shared video memory access and did not want to spend too much time on it. CPLD I used in the video circuit has just 128 macrocells and not suited for complex video cicruit implementations with tiles and sprites. Simple pixel shifter is easy to implement and fit, but more complex stuff would require much-much more logic gates and flip-flops than CPLDs of this class have.

      @solisted@solisted Жыл бұрын
  • You've convinced me. Now take my money :)

    @markoradojcic1587@markoradojcic15873 ай бұрын
    • Why 7805 voltage regulator ? It does dissipate heat, there are more modern versions. They are pin compatible but have almost zero heat emission. I have one in my Spectrum.

      @markoradojcic1587@markoradojcic15873 ай бұрын
    • It's ready for an OS.

      @markoradojcic1587@markoradojcic15873 ай бұрын
    • Hi! I’m not very experienced in electronics design. This is my first relatively complex, serious project. Could you please suggest some parts I can use for voltage regulation instead of 7805?

      @solisted@solisted3 ай бұрын
    • @@solistedThe MC34063 is an old chip that I used in many designs because it is cheap and available.

      @Bob-1802@Bob-18022 ай бұрын
  • Does it have a true bitmap mode where every pixel can be any color?

    @greggv8@greggv8 Жыл бұрын
    • No, 8x8 area of pixels can have distinct foreground color when pixel is lit and background color when it's not in 1bpp 256x192 bitmap. Color is controlled by a separate 768-byte attribute area in VRAM.

      @solisted@solisted Жыл бұрын
  • The 2 PCBs are listed for £24, but no shipping outside the UK 😔 What is the total parts cost?

    @MattKasdorf@MattKasdorf Жыл бұрын
    • Hi! These boards made by the channel viewer. He's got extra, bc of the minimum order, so decided to sell the rest. These are very easy to manufacture using Gerbers provided on the projects github. I did not compile complete BOM yet, please check my web site for more info.

      @solisted@solisted10 ай бұрын
  • Hi, why you used diodes on keys? Are they necessary? In my ancient computers I never saw it. Usually I see the row/columns traces without anything else. What's the part code of these diodes?

    @siriokds@siriokds Жыл бұрын
    • Hi! Diodes in keyboard matrix are used to prevent so called "phantom" key presses when invoking multiple key combinations. Old keyboards were without diodes to reduce cost and limited in key combinations keyboard controller can detect without an error. Usually, standard 1N4148 fast switching general purpose diodes are used.

      @solisted@solisted Жыл бұрын
  • Wonderful sharing, Ivan, 👍super excited to see some cooperation going between us

    @PCBWay@PCBWay Жыл бұрын
    • Thank you PCBWay! Will be happy to cooperate for sure!

      @solisted@solisted Жыл бұрын
  • Are sources for CPLD available somewhere? or it's binary only?

    @abyssal-space65@abyssal-space653 ай бұрын
    • Did not decide yet if it’s a good idea to publish ROM and CPLD sources, bc it could lead to platform fragmentation. But on the other hand it’s not so difficult to write other variants of the video code and ROM for this computer, so fragmentation is inevitable if this computer becomes popular among DIY builders.

      @solisted@solisted3 ай бұрын
    • @@solisted I have wrote verilog for my breadboard computer FPGA, but it's altera one, yours interesting that it's running on Atmel CPLD, but at the same time requires expensive programmer cable. Without looking at code and how easy that is I'm not sure I want to invest in that cable :D My take on this, if you make your schematic/pcb and etc open source, then it makes sense to make programming of it open source too, otherwise it's closed system and not sure you can even call that platform. Atmel is interesting for me that it's 5V compatible and doesn't require a bunch of level shifting to 3v3 fpga's. Anyway, your project is really cool. If you decide to share source code for cpld I would gladly read/learn something from it :)

      @abyssal-space65@abyssal-space653 ай бұрын
  • Repton Man!

    @MichaelLenz1@MichaelLenz17 ай бұрын
  • Nice! would have been wonderful to have a full bitmap mode without color clash @16 colors. It would have required 32kvram

    @gasparinizuzzurro6306@gasparinizuzzurro6306 Жыл бұрын
    • Thank you! I have graphics engine based on the same CPLD that implements this mode. But it's impractical to put such mode with 8-bit CPU like Z80 @ 10Mhz. There would be very poor fill rate for any decent game animation - too much data to move around for such CPU. It will ruin the balance between the CPU and graphics subsystem. Also, video buffer would take a lot of RAM and will require external banking to be implemented. 16/256 color modes for 8-bit CPU is usually implemented using tiled/sprite mode, without linear framebuffer. But in this mode you cannot draw arbitrary graphics (yes MSX has 768 tiles in tiled mode you can fill entire screen with and do some bitmapped drawing, but it's very quircky to work with).

      @solisted@solisted Жыл бұрын
    • @@solisted I also think it's really disappointing about the Spectrum type attributes/colour bleed. I prefer graphics modes which don't suffer from this, like on the Amstrad CPC, BBC Micro, etc. The Timex Sinclair TS2068 and some other ZX Spectrum clones have an additional graphics mode without the attributes/colour bleed. Can you explain how this is done? Of course, the TS2068 CPU is clocked at 3.5Mhz, so wouldn't it be much easier at 10Mhz?

      @paulbraun5657@paulbraun5657 Жыл бұрын
    • @@paulbraun5657 I don't know about BBC Micro, but Amstrad CPC has double width pixels which gives resolution 160x200 that takes 16k of VRAM and CRTC controller that can consume main RAM for the video buffer at the arbitrary address. With smart programming of this controller you can achieve smooth animation with double buffering and/or per pixel scrolling, but at small frame rates. Also 16k VRAM is not a big deal since Amstrad CPC supports memory banking and additional memory. It's a bit more advanced. ZX Spectrum 48k has only one bank of memory and no video hardware assistance of any kind. For this computer, such video layout was a necessity, I think. I tested another prototype with 256x192x16 color per pixel video mode with Z80 clocked at 10Mhz. It took 24k for the video buffer out of 64k address space and I could not achive smooth animation due to low throughput of the CPU even at these frequencies. To have smooth animation, you will need second back buffer and it's another 24k - somthing this computer cannot afford to have. Hardware assistance was needed for games to feel fast and snappy, at least some sprites or hardware blitter of some sort. At the end, I decided to make another computer with 256x192x16 color video mode and W65C816 CPU that has 16M address space. And keep this computer with ZX Spectrum-like video mode to preserve the original balance.

      @solisted@solisted Жыл бұрын
    • @@solisted the Amstrad CPC has three graphics modes which each take 16K. It uses the same 6845 graphics chip as the BBC Micro. However, the BBC Micro graphics have no border and the screens are 256 pixels high. I think this means the BBC Micro graphics modes each take 20K. The Spectrum and Commodore 64 graphics screens each take up 8K. I'm not aware of Amstrad CPC or BBC Micro games running much slower than Spectrum games, so I think there must be a flaw in your computer's design! I think it's very depressing seeing that large areas of Spectrum graphics screens have the same background and foreground colours. Sinclair tried to make everything as cheaply as possible and this is the result. I can't see the point of copying this limitation 40 years later, though.

      @paulbraun5657@paulbraun5657 Жыл бұрын
    • @@paulbraun5657 What can I say, I don’t agree. I tested everything thoroughly on the prototype and was not happy with the performance with color per pixel mode. CPU was running at the full speed while accessing video RAM, no wait states. Also not agree that attribute clash is some bad thing. When memory is limited to just 64k, this mode totally makes sense, because it leaves as much RAM as possible to a program code. With clever programming you can make pretty good looking games, even with attribute clash. I’m pretty satisfied with my computer design and enjoy programming it.

      @solisted@solisted Жыл бұрын
  • is it just me, or apart from the fact that the screen looks great, the computer is incredibly fast ??

    @jjolleta@jjolleta5 ай бұрын
    • Thank you! I’m working right now on the MKII version of this computer.

      @solisted@solisted5 ай бұрын
  • Any chance someone might do a kit of your design?

    @Theineluctable_SOME_CANT@Theineluctable_SOME_CANT Жыл бұрын
    • It's possible, I published gerbers and schematics on GitHub under the MIT license.

      @solisted@solisted Жыл бұрын
    • @@solisted I think someone should get behind this. But I would put more GP I/O on board for robotics and SCADA type stuff. Probably swap out the sound effects / joystick for motors and DACs. Does it have / can it run unmodified BASIC or FORTH?

      @Theineluctable_SOME_CANT@Theineluctable_SOME_CANT Жыл бұрын
  • Rather than the serial port, I'd add an SD card, it would be so convenient, and with a good enough keyboard and display, you'd be able to develop directly on the Z80, the fun way! I bet your design isn't far from what Sinclair used, except you seem to have added useful colours, rather than just RGB + Bright, which gave a lot of useless duplicated colours, nobody really NEEDS two cyans, when instead things like pink or brown were missing. Then better greys, perhaps including a bright black. Of course the Spectrum couldn't do separate brightness for foreground and background colour, it was set per cell. Leaving 1 bit left for the equally useless Flash! Using the Bright and Flash bits to give 16 foreground and background colours would have been infinitely more useful in a machine that was already limited. If Clive had given more thought to it's obvious use for games, he might have thought about making things just a bit more friendly and useful. I'm sure he only put in colour begrudgingly. A modern CPLD and an '80s ULA probably have about the same number of gates to make your circuit from.

    @greenaum@greenaum Жыл бұрын
    • Serial port is a universal interface. It does not have to be used just for computer-computer transfers. External storage device can be built with any storage medium, communicating with computer via serial port, for example. And monitor ROM can be extended to support reading sectors from such device via serial port using some simple communication protocol. That's how expansion worked on Atari 8-bit computers - floppy drives, printers, modems were all connected to a daisy chained serial port.

      @solisted@solisted Жыл бұрын
  • Is this a kit i can buy from you?

    @charliesybert2683@charliesybert26834 ай бұрын
    • No, there is no kit available

      @solisted@solisted3 ай бұрын
  • hows name that operating system which work that processor?

    @juliocesarm.espinola2463@juliocesarm.espinola2463 Жыл бұрын
    • This computer has small monitor program in its ROM that allows to perform basic operations, like dumping memory and loading binary data from serial port.

      @solisted@solisted Жыл бұрын
  • слушай, но очень прикольная штука. но почем не совместимая со спеки? логикой нельзя напрограммировать совместимость?

    @jp2enlimited761@jp2enlimited761 Жыл бұрын
    • Спасибо! Я не ставил цель сделать этот компьтер совместимым со Спектрумом. В сети можно найти много современных клонов, если хочется собрать именно его. Но Спектрум служил в качестве вдохновления для моего компьютера, конкретно - хотелось сделать похожую видео подсистему.

      @solisted@solisted Жыл бұрын
    • ​@@solisted, ну сипалди же позволяет (практически) как угодно завернуть логику. можно было сделать на подобие АТМ, спектрум режим и свой. Хозяин барин, конечно. Просто в такой конфигурации чистое хобби, чисто для себя, единственная в мире система, без будущего. Но экспириенс, конечно, огромный. Я на такой подвиг не готов )))​

      @jp2enlimited761@jp2enlimited761 Жыл бұрын
    • @JP2EN Limited Эти CPLD не такие емкие. Та что отвечает за графику всего 128 макро-ячеек (забита под завязку даже при такой простой задече) - не хватит, чтобы сделать переключение адресации в режим совместимости с организацией видео памяти Спектрума. Только если полностью перепрошить. А для эмуляуии ввода-вывода Спектрума нужна все-таки модификация на аппаратном уровне, так как это не закладывалось изначально. Что касается будущего проекта - это и делалось в целях самообучения и платформы для написания несложных программ или игр в свободное время. В общем, для себя - сам собрал, сам программирую на нем :) Я там еще в одном из коментариев развернуто ответил на вопрос "зачем все это вообще нужно было" :) Опять таки, не хочется делать клоны Спектрума - не интересно. Их и так достаточно и на базе FPGA с кучей всяких свистелок-тарахтелок в виде дополнительной памяти, спрайтов с тайлами (ZX Spectrum Next). Тут была другая цель. А поделился я ей тут просто для того, что это может кому-то понравится и он захочет собрать такой же или использовать его как точку опоры для своего собстенного проекта.

      @solisted@solisted Жыл бұрын
    • @@solisted понятно ) а мне вот сильно уникальных не хочется. собираюсь спектрум сделать, частично на логике, частично на фпга. сейчас ленинград дособирываю, чтобы от него оттолкнуться в плане модификаций. собираю со старых микросхем, по помойкам всяких хлам собираю на разбор )) насобирал, случайно, полный комплект аналогов для сборки РК-86. не знаю на хера, просто по микросхемам смотрю - а не кажется ли мне... и нет, не кажется, полный комплект ))

      @jp2enlimited761@jp2enlimited761 Жыл бұрын
  • Is it not compatible with any of the retrocomputers ? Why do we need this project ? It would be interesting to make a computer on Zilog ez80 , 56 MHz CPU, 16 MB memory, 256 colors, with a screen resolution of 320x240

    @hackergrey3255@hackergrey3255 Жыл бұрын
    • No, it's not compatible with any of the retro computers. This project is meant to educate myself in electronics engineering field and for recreational retro programming.

      @solisted@solisted Жыл бұрын
  • Where did you get the actual keyboard from?

    @savagecircuits@savagecircuits Жыл бұрын
    • It's custom made keyboard - classic diode matrix circuit. I made custom PCB, soldered linear Cherry MX switches.

      @solisted@solisted Жыл бұрын
    • @@solisted Very nice! I looked back at the video and saw where you mentioned it. I must have missed that the first pass through.

      @savagecircuits@savagecircuits Жыл бұрын
    • Is it ps/2 keyboard? Also how did u connect the keyboard

      @johnwilliams7999@johnwilliams7999 Жыл бұрын
    • No, it does not use any particular protocol. Keyboard is implemented as a simple 8x8 matrix with diodes directly connected to 8 outputs and 8 inputs of the peripheral IC (Z80 PIO). Key matrix scanning and translation to scan codes is implemented in software.

      @solisted@solisted Жыл бұрын
    • Initial prototype had PS/2 keyboard input and AVR microcontroller that translated PS/2 data stream into serial. Then serial data was fed into the Z80 SIO peripheral IC. After some game programming, I noticed that protocol and translation introduces noticeable key stroke latency that ruins game experience and redid keyboard implementation like described in the previous reply.

      @solisted@solisted Жыл бұрын
  • 👍

    @josemfacuna6754@josemfacuna6754 Жыл бұрын
    • Thank you!

      @solisted@solisted Жыл бұрын
  • Что-то я так и не понял, он не спектрум-совместимый?!

    @user-jj9dd8sj5d@user-jj9dd8sj5d Жыл бұрын
    • Нет, не совместим. Архитектура очень похожа, но устройства ввода/вывода совсем другие используются. Организация памяти тоже другая. Я вдохновился Спектрумом работая над этим проектом, но цель скопировать его не стояла.

      @solisted@solisted Жыл бұрын
KZhead