DIY 8-Bit Z80 Single Board Computer

Поделиться
HTML-код
  • Опубликовано: 10 июн 2024
  • 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.
  • НаукаНаука

Комментарии • 301

  • @adamkelly2256
    @adamkelly2256 Год назад +46

    Your board is so well laid out. Very compact, but yet it feels spacious!

    • @solisted
      @solisted  Год назад +8

      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 :)

    • @chaoticsystem2211
      @chaoticsystem2211 5 месяцев назад +1

      it's gorgeous

  • @SpikeBlighty
    @SpikeBlighty Год назад +19

    The video output seems very clean. Good job. Great to see the Z80 chip still rockin' after all these years.

    • @solisted
      @solisted  Год назад +3

      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.

  • @davidgood840
    @davidgood840 Год назад +8

    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." 😄

    • @solisted
      @solisted  Год назад +5

      Thank you, David! You got it right :)

    • @cygil1
      @cygil1 2 месяца назад +2

      This is what RUclips used to be like, and it was better for it. New RUclips 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.

  • @up2tech
    @up2tech Год назад +8

    This is fantastic! Only missing items are:
    A) a storage microSD unit ; B) a BASIC compiler and a Disassembler . Pretty awesome!

    • @solisted
      @solisted  Год назад +4

      Thank you, Luis! A and B items are somthing I plan to work on in the near future.

  • @WessieNC
    @WessieNC Год назад +22

    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!!

    • @solisted
      @solisted  Год назад +4

      Thank you Jaco! Project files are published on GitHub in the description of the video.

    • @malx1289
      @malx1289 Год назад

      Holy smokes me too

  • @mortengreenhermansen4489
    @mortengreenhermansen4489 Год назад +6

    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! 😀👍

    • @solisted
      @solisted  Год назад +2

      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.

    • @mortengreenhermansen4489
      @mortengreenhermansen4489 Год назад +1

      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! 😅

  • @ro.7427
    @ro.7427 Год назад +5

    You are criminally under subscribed. Really cool project and first video of yours I've watched.

  • @cadmilus
    @cadmilus Год назад +3

    Your video stability is fantastic... no jitter, no tearing, no weird colour artifacts, rock solid! Looking forward to the future installments of this project!

    • @solisted
      @solisted  Год назад +1

      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.

    • @midixiewrecked7011
      @midixiewrecked7011 Год назад

      Color, not col- "hour"

  • @user-ox9wg1jj9w
    @user-ox9wg1jj9w Год назад

    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.

  • @tolkienfan1972
    @tolkienfan1972 Год назад +3

    Very nice! It really takes me back. A great way to honor those early home computers.

  • @MaciejKollo
    @MaciejKollo Год назад +2

    Very nice, I remember the good old Z80 days. It was very nice CPU.

    • @solisted
      @solisted  Год назад +1

      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.

  • @TheDradge
    @TheDradge Год назад +3

    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.

    • @solisted
      @solisted  Год назад +1

      Thank you!

    • @TheDradge
      @TheDradge Год назад

      @@solisted you're welcome. Are you going to be publishing/selling the code for the CPLD chip? Which chip(s) are you using?

    • @solisted
      @solisted  Год назад +1

      I used Microchip/Atmel ATF1508 for the graphics and ATF1502 for the chipset. Not decided yet if I want to share PLD files.

    • @TheDradge
      @TheDradge Год назад

      @@solisted Interesting. Are you familiar with the Harlequin Spectrum clone? They essentially did the graphics/ULA in discrete TTL.

    • @solisted
      @solisted  Год назад +1

      @@TheDradge Yes, very nice project. It can even fit in the original enclosure if I remember correctly.

  • @Theineluctable_SOME_CANT
    @Theineluctable_SOME_CANT Год назад +3

    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....

  • @cristianstoica4544
    @cristianstoica4544 Год назад

    Absolutely lovely. Beautiful format and layout. Thanks for sharing it with us!

    • @solisted
      @solisted  11 месяцев назад

      Thank you!

  • @homeopathicfossil-fuels4789
    @homeopathicfossil-fuels4789 6 месяцев назад

    That's the sweetest motherboard I have seen in a long while, super clean design!

    • @solisted
      @solisted  6 месяцев назад +1

      Thank you!

  • @MarkOfBitcoin
    @MarkOfBitcoin Год назад +7

    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!!

    • @solisted
      @solisted  Год назад +3

      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.

    • @MarkOfBitcoin
      @MarkOfBitcoin Год назад +1

      @@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. 😉

    • @TheUtuber999
      @TheUtuber999 Год назад

      @@MarkOfBitcoin Then you would cripple the keyboard from the standpoint of typing.

    • @MattKasdorf
      @MattKasdorf Год назад +1

      ​​@@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.

  • @SteveRaynerMakes
    @SteveRaynerMakes Год назад +3

    You are giving me a lot of inspiration to continue with mine, but you are way ahead of me.

    • @solisted
      @solisted  Год назад +1

      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.

  • @AndyGraceMedia
    @AndyGraceMedia Год назад

    This is a thing of beauty. Congrats, amazing work!

  • @MrVinicius5000
    @MrVinicius5000 Год назад

    What a brilliant little machine ! I'm setting up to try make a similar project, is always nice to find sutch inspiring projects

  • @devcybiko
    @devcybiko Год назад

    This is a very elegant design. Congratulations

  • @AntonioBarba_TheKaneB
    @AntonioBarba_TheKaneB 5 месяцев назад

    OMG! It doesn't look like a homebrew project but a professional high end machine from the era :O

    • @solisted
      @solisted  3 месяца назад

      Thank you, I tried to replicate that look and feel of 8-bit home computer era.

  • @robertdutcher8081
    @robertdutcher8081 Год назад

    If this had a cart port for expansion and roms, it would be straight out of the 80's. Amazing job.

  • @Nichetronix
    @Nichetronix Год назад +1

    Very nice work! Thanks for sharing it with us.

  • @TheSillyshyguy
    @TheSillyshyguy Год назад

    Can't wait till you release the build info for this. Thank you for sharing!

    • @solisted
      @solisted  Год назад +2

      Thank you Terry! Will share soon schematics, gerbers, jedec and CAD files for this project.

    • @solisted
      @solisted  Год назад +2

      Terry, I updated description of the video to link project files on GitHub. Can't wait to see some feedback on the design.

  • @CodexPermutatio
    @CodexPermutatio Год назад

    This is truly excellent. Keep up the good work.

  • @OIP_1
    @OIP_1 Год назад

    fantastic project! really clean layout and implementation

  • @beforth
    @beforth Год назад

    Impressive computer, looks like a well finished product.

  • @jumhig
    @jumhig Год назад +1

    Very cool, was looking forward to this video, and interested in building one.

  • @blurigard447
    @blurigard447 7 месяцев назад

    Stunningly well done, sir.

    • @solisted
      @solisted  6 месяцев назад

      Thank you!

  • @TheZeofobic73Channel
    @TheZeofobic73Channel Год назад

    Beautiful improvement on the Z80 flat keyboard

    • @solisted
      @solisted  Год назад

      Thank you! Yes, this one feels much better :)

  • @marklowe7431
    @marklowe7431 Год назад

    This is amazing. Nice work.

  • @tseckwr3783
    @tseckwr3783 Год назад

    Excellent work!! Thanks for sharing.

  • @lawrencerubanka7087
    @lawrencerubanka7087 Год назад

    Beautifully done. Thanks!

    • @solisted
      @solisted  Год назад

      Thank you, Lawrence!

  • @pi4630
    @pi4630 Год назад +4

    Amazing, wonderful! I love how everything is clean and compact. What about an on/off LED?

    • @solisted
      @solisted  Год назад +1

      Thank you, Pasqualino! Just did't think about it at the time.

  • @bartameele6885
    @bartameele6885 Год назад

    Very nice project and well done.

  • @janlavcharivmakhgalsuren6127
    @janlavcharivmakhgalsuren6127 5 месяцев назад +1

    Wow. wonderful project and cute game.

    • @solisted
      @solisted  3 месяца назад +1

      Hi! Thank you!

  • @artoheino7315
    @artoheino7315 Год назад

    Thanks Ivan, great work.

  • @AutoFirePad
    @AutoFirePad Год назад

    I was expecting OPQA but WASD is ok too. Thanks for the video!

    • @solisted
      @solisted  Год назад +1

      Thank you! Also Atari joystick works, I just forgot to show it in the video.

  • @djthashock
    @djthashock Год назад

    Really nice ASMR Voice!! And your Computer is Great! I Love that thing.

  • @ant64b
    @ant64b Год назад

    This looks amazing!

  • @1337Shockwav3
    @1337Shockwav3 5 месяцев назад

    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.

  • @c1ph3rpunk
    @c1ph3rpunk Год назад +4

    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.

    • @solisted
      @solisted  Год назад +3

      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

  • @apojoga
    @apojoga Год назад

    Unbelievable how fast it is compared to a modern computer.

    • @solisted
      @solisted  Год назад +1

      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.

  • @frankowalker4662
    @frankowalker4662 Год назад

    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. :)

    • @solisted
      @solisted  Год назад

      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.

    • @frankowalker4662
      @frankowalker4662 Год назад

      @@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.

  • @Ty_Mathieson
    @Ty_Mathieson Год назад

    Very nice work.

  • @gregdee9085
    @gregdee9085 Год назад

    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!

  • @lanceharvie
    @lanceharvie Год назад

    Nostalgia for me since my first year project at Uni was based on a z80

    • @solisted
      @solisted  Год назад

      Yes, Z80 was an obvious choice for my first build for the same reason :) Not 6502, not 8088 :)

  • @RetroDepot
    @RetroDepot Год назад +1

    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.

  • @sublimemauser5904
    @sublimemauser5904 Год назад

    Very interesting project, kudos, perhaps in a next revision an edge connector with all the data and address lines of CPU for expansion?

    • @solisted
      @solisted  Год назад

      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.

  • @sqlcactuss
    @sqlcactuss Год назад +2

    Would totally buy one.

    • @solisted
      @solisted  Год назад

      Thank you Wes!

    • @edabean007
      @edabean007 Год назад

      It is a very nice build. Added one to my fantasy shopping list

    • @solisted
      @solisted  Год назад

      @@edabean007 Thank you! I may start selling kits of this computer, not decided yet.

  • @kenturkey1971
    @kenturkey1971 Год назад

    Very neat!! I'm working on a retro project currently with a Z180 which is an odd variant of the Z80.

    • @solisted
      @solisted  11 месяцев назад

      Thank you! Cool!

  • @stanleyyyyyyyyyyy
    @stanleyyyyyyyyyyy Год назад

    very nice work!

  • @yafz
    @yafz Год назад +1

    Beautiful!

  • @mheermance
    @mheermance Год назад

    Great work. It must have taken a lot of effort.

    • @solisted
      @solisted  Год назад +1

      Thank you! Yes, a lot of learning, a lot of trial and error.

  • @jps99
    @jps99 Год назад

    Elegant design!

  • @kippie80
    @kippie80 8 месяцев назад

    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!

  • @zment
    @zment Год назад +2

    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!

    • @solisted
      @solisted  Год назад +4

      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.

    • @zment
      @zment Год назад

      ​@@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!

    • @sohl947
      @sohl947 Год назад

      @@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.

  • @romanm.4763
    @romanm.4763 Год назад

    Superb device!

  • @sabotrax
    @sabotrax Год назад

    Very impressive!

  • @m00iwi00m
    @m00iwi00m Год назад

    Good job! Is perfect if it able to run the CP/M system.😀

  • @SaarN1337
    @SaarN1337 Год назад

    A watered down Supaplex game, cool.
    That looks like a fun project, though, very clean.

    • @solisted
      @solisted  Год назад

      Thank you, Saar! I would say, Supaplex is beefed up version of the original Boulder Dash game which is replicated for this computer :)

  • @MadsonOnTheWeb
    @MadsonOnTheWeb Год назад

    What a beauty!

  • @samuelcorreabueno9784
    @samuelcorreabueno9784 Год назад

    Really amazing ! Congats !

  • @spacetrucker62
    @spacetrucker62 2 месяца назад

    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?

  • @joefish6091
    @joefish6091 Год назад +6

    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,

    • @solisted
      @solisted  Год назад +4

      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 :)

    •  Год назад

      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.

    • @wayland7150
      @wayland7150 Год назад

      Toshiba do one with serial ports built in and timers for interrupts.

  • @TheDesignDevil
    @TheDesignDevil Год назад

    Very interesting, Good explanaition and great project! Where did you get the Keyboard from?

    • @solisted
      @solisted  Год назад +3

      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.

    • @joefish6091
      @joefish6091 Год назад

      @@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.

  • @willofirony
    @willofirony Год назад

    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?

    • @solisted
      @solisted  Год назад

      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 :)

  • @theobserver9805
    @theobserver9805 Год назад

    Вань, красота!

  • @rdalemd76
    @rdalemd76 Год назад

    Nice, Waiting for that Windows Emulator.

    • @solisted
      @solisted  Год назад +1

      Thank you! Currently, making Z80 CPU emulator library in ANSI C.

  • @russianvideovlogguy
    @russianvideovlogguy Год назад

    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!

    • @solisted
      @solisted  Год назад

      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.

  • @philipgbullas
    @philipgbullas Год назад

    wow! new fan here! 😍

  • @bestintentions6089
    @bestintentions6089 Год назад

    very nice!

  • @10p6
    @10p6 Год назад +1

    Very nice 🙂

  • @GaleazzoMussolesi-ff4oq
    @GaleazzoMussolesi-ff4oq 5 месяцев назад

    So cool

  • @agencyx1turbo443
    @agencyx1turbo443 Год назад

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

  • @jjolleta
    @jjolleta 6 месяцев назад

    is it just me, or apart from the fact that the screen looks great, the computer is incredibly fast ??

    • @solisted
      @solisted  6 месяцев назад

      Thank you! I’m working right now on the MKII version of this computer.

  • @005AGIMA
    @005AGIMA Год назад

    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?

    • @solisted
      @solisted  Год назад

      Thank you! I published my email on the channel about page.

  • @colouredsclub
    @colouredsclub Год назад

    im your 169th sub ;)

  • @ashrafatteya
    @ashrafatteya Год назад

    Very interesting

  • @dgnrlento
    @dgnrlento Год назад

    Gracias. Thanks.

  • @marko.p.radojcic
    @marko.p.radojcic 3 месяца назад

    You've convinced me. Now take my money :)

    • @marko.p.radojcic
      @marko.p.radojcic 3 месяца назад

      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.

    • @marko.p.radojcic
      @marko.p.radojcic 3 месяца назад

      It's ready for an OS.

    • @solisted
      @solisted  3 месяца назад

      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?

    • @Bob-1802
      @Bob-1802 3 месяца назад

      @@solistedThe MC34063 is an old chip that I used in many designs because it is cheap and available.

  • @dazealex
    @dazealex Год назад

    Very cool. I'd buy it. Wish it had HDMI though.

    • @solisted
      @solisted  Год назад +1

      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.

    • @dazealex
      @dazealex Год назад

      @@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.

  • @kirannevaskar7034
    @kirannevaskar7034 Месяц назад

    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

  • @PCBWay
    @PCBWay Год назад +5

    Wonderful sharing, Ivan, 👍super excited to see some cooperation going between us

    • @solisted
      @solisted  Год назад +1

      Thank you PCBWay! Will be happy to cooperate for sure!

  • @paulwratt
    @paulwratt Год назад

    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.

    • @solisted
      @solisted  Год назад +1

      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.

    • @paulwratt
      @paulwratt Год назад

      @@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 :)

    • @solisted
      @solisted  Год назад

      @Paul Wratt Interesting mod, will check that out.

  • @siriokds
    @siriokds Год назад

    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?

    • @solisted
      @solisted  Год назад

      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.

  • @greenaum
    @greenaum Год назад

    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.

    • @solisted
      @solisted  Год назад

      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.

  • @Theineluctable_SOME_CANT
    @Theineluctable_SOME_CANT Год назад +1

    Any chance someone might do a kit of your design?

    • @solisted
      @solisted  Год назад +1

      It's possible, I published gerbers and schematics on GitHub under the MIT license.

    • @Theineluctable_SOME_CANT
      @Theineluctable_SOME_CANT Год назад +1

      @@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?

  • @greggv8
    @greggv8 Год назад

    Does it have a true bitmap mode where every pixel can be any color?

    • @solisted
      @solisted  Год назад

      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.

  • @greenaum
    @greenaum Год назад

    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.

    • @solisted
      @solisted  Год назад

      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.

  • @MattKasdorf
    @MattKasdorf Год назад

    The 2 PCBs are listed for £24, but no shipping outside the UK 😔
    What is the total parts cost?

    • @solisted
      @solisted  10 месяцев назад

      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.

  • @abyssal-space65
    @abyssal-space65 4 месяца назад

    Are sources for CPLD available somewhere? or it's binary only?

    • @solisted
      @solisted  3 месяца назад

      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.

    • @abyssal-space65
      @abyssal-space65 3 месяца назад

      @@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 :)

  • @hackergrey3255
    @hackergrey3255 Год назад

    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

    • @solisted
      @solisted  Год назад

      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.

  • @rosmianto
    @rosmianto Год назад

    Oooh, I know this. It's the precursor of Raspberry Pi 400 haha

    • @solisted
      @solisted  Год назад

      I would say ancestor.

  • @MichaelLenz1
    @MichaelLenz1 7 месяцев назад

    Repton Man!

  • @josemfacuna6754
    @josemfacuna6754 Год назад

    👍

  • @gasparinizuzzurro6306
    @gasparinizuzzurro6306 Год назад

    Nice! would have been wonderful to have a full bitmap mode without color clash @16 colors. It would have required 32kvram

    • @solisted
      @solisted  Год назад

      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).

    • @paulbraun5657
      @paulbraun5657 Год назад

      @@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?

    • @solisted
      @solisted  Год назад

      @@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.

    • @paulbraun5657
      @paulbraun5657 Год назад

      @@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.

    • @solisted
      @solisted  Год назад

      @@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.

  • @savagecircuits
    @savagecircuits Год назад

    Where did you get the actual keyboard from?

    • @solisted
      @solisted  Год назад +1

      It's custom made keyboard - classic diode matrix circuit. I made custom PCB, soldered linear Cherry MX switches.

    • @savagecircuits
      @savagecircuits Год назад

      @@solisted Very nice! I looked back at the video and saw where you mentioned it. I must have missed that the first pass through.

    • @johnwilliams7999
      @johnwilliams7999 Год назад

      Is it ps/2 keyboard? Also how did u connect the keyboard

    • @solisted
      @solisted  Год назад

      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  Год назад +1

      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.

  • @charliesybert2683
    @charliesybert2683 5 месяцев назад

    Is this a kit i can buy from you?

    • @solisted
      @solisted  3 месяца назад

      No, there is no kit available

  • @aleph_one
    @aleph_one Год назад

    чтот не припомню такой загрузки и джапом для запуска. там при загрузке звук и полоски по бокам экрана это же святая святых тёплой ламповости.

    • @solisted
      @solisted  Год назад

      Это не клон Спектрума, у него нет входа для магнитофона. В данный момент, ROM-монитор поддерживает только загрузку бинарных дампов в формате Intel Hex через последовательный порт комьютера.
      При желании, можно привнести ламповости, например, при помощи внешнего загрузчика с пленки, который будет подключаться к последовательному порту компьютера :) Если сделать такое устройство и научить ROM-монитор грузиться с него.

    • @aleph_one
      @aleph_one Год назад

      @@solisted всё это не важно, у вас не ламповое ретро