DIY 8-Bit Z80 Single Board Computer

Поделиться
HTML-код
  • Опубликовано: 26 сен 2024

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

  • @adamkelly2256
    @adamkelly2256 2 года назад +47

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

    • @solisted
      @solisted  2 года назад +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 8 месяцев назад +1

      it's gorgeous

  • @up2tech
    @up2tech 2 года назад +8

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

    • @solisted
      @solisted  2 года назад +4

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

  • @SpikeBlighty
    @SpikeBlighty 2 года назад +19

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

    • @solisted
      @solisted  2 года назад +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.

  • @WessieNC
    @WessieNC 2 года назад +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  2 года назад +4

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

    • @malx1289
      @malx1289 2 года назад

      Holy smokes me too

  • @mortengreenhermansen4489
    @mortengreenhermansen4489 2 года назад +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! 😀👍

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

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

  • @AntonioBarba_TheKaneB
    @AntonioBarba_TheKaneB 8 месяцев назад +1

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

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

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

  • @cadmilus
    @cadmilus 2 года назад +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  2 года назад +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"

  • @TheDradge
    @TheDradge 2 года назад +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  2 года назад +1

      Thank you!

    • @TheDradge
      @TheDradge 2 года назад

      @@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  2 года назад +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 2 года назад

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

    • @solisted
      @solisted  2 года назад +1

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

  • @Theineluctable_SOME_CANT
    @Theineluctable_SOME_CANT 2 года назад +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....

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

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

    • @solisted
      @solisted  2 года назад +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.

  • @tolkienfan1972
    @tolkienfan1972 2 года назад +3

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

  • @SteveRaynerMakes
    @SteveRaynerMakes 2 года назад +3

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

    • @solisted
      @solisted  2 года назад +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.

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

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

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

      Thank you!

  • @ВалерийМандругин
    @ВалерийМандругин 2 года назад

    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.

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

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

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

    Would totally buy one.

    • @solisted
      @solisted  2 года назад

      Thank you Wes!

    • @edabean007
      @edabean007 2 года назад

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

    • @solisted
      @solisted  2 года назад

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

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

    Wow. wonderful project and cute game.

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

      Hi! Thank you!

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

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

  • @pi4630
    @pi4630 2 года назад +4

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

    • @solisted
      @solisted  2 года назад +1

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

  • @Nichetronix
    @Nichetronix 2 года назад +1

    Very nice work! Thanks for sharing it with us.

    • @solisted
      @solisted  2 года назад

      Thank you, Steve!

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

  • @TheSillyshyguy
    @TheSillyshyguy 2 года назад

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

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

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

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

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

  • @TheZeofobic73Channel
    @TheZeofobic73Channel 2 года назад

    Beautiful improvement on the Z80 flat keyboard

    • @solisted
      @solisted  2 года назад

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

  • @jumhig
    @jumhig 2 года назад +1

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

    • @solisted
      @solisted  2 года назад

      Thank you, James!

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

    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.

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

      Thank you!

  • @devcybiko
    @devcybiko 2 года назад

    This is a very elegant design. Congratulations

    • @solisted
      @solisted  2 года назад

      Thank you, Gregory!

  • @RetroDepot
    @RetroDepot 2 года назад +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.

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

  • @AutoFirePad
    @AutoFirePad 2 года назад

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

    • @solisted
      @solisted  2 года назад +1

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

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

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

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

    Stunningly well done, sir.

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

      Thank you!

  • @gregdee9085
    @gregdee9085 2 года назад

    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!

    • @solisted
      @solisted  2 года назад

      Thank you, Greg!

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

    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!

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

      Thank you!

  • @lanceharvie
    @lanceharvie 2 года назад

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

    • @solisted
      @solisted  2 года назад

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

  • @CodexPermutatio
    @CodexPermutatio 2 года назад

    This is truly excellent. Keep up the good work.

  • @beforth
    @beforth 2 года назад

    Impressive computer, looks like a well finished product.

  • @joefish6091
    @joefish6091 2 года назад +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  2 года назад +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 :)

    •  2 года назад

      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 2 года назад

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

  • @OIP_1
    @OIP_1 2 года назад

    fantastic project! really clean layout and implementation

  • @djthashock
    @djthashock 2 года назад

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

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

    Beautifully done. Thanks!

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

      Thank you, Lawrence!

  • @yafz
    @yafz 2 года назад +1

    Beautiful!

    • @solisted
      @solisted  2 года назад +1

      Thank you, Emre!

  • @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 6 месяцев назад +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.

  • @tseckwr3783
    @tseckwr3783 2 года назад

    Excellent work!! Thanks for sharing.

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

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

  • @SaarN1337
    @SaarN1337 2 года назад

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

    • @solisted
      @solisted  2 года назад

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

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

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

  • @madson-web
    @madson-web Год назад

    What a beauty!

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

    Very nice work.

  • @artoheino7315
    @artoheino7315 2 года назад

    Thanks Ivan, great work.

    • @solisted
      @solisted  2 года назад

      Thank you, Arto!

  • @bartameele6885
    @bartameele6885 2 года назад

    Very nice project and well done.

  • @PCBWay
    @PCBWay 2 года назад +5

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

    • @solisted
      @solisted  2 года назад +1

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

  • @ant64b
    @ant64b 2 года назад

    This looks amazing!

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

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

  • @zment
    @zment 2 года назад +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  2 года назад +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 2 года назад

      ​@@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 2 года назад

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

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

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

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

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

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

  • @romanm.4763
    @romanm.4763 2 года назад

    Superb device!

    • @solisted
      @solisted  2 года назад

      Thank you, Roman!

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

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

  • @jps99
    @jps99 2 года назад

    Elegant design!

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

    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?

  • @sabotrax
    @sabotrax 2 года назад

    Very impressive!

    • @solisted
      @solisted  2 года назад

      Thank you, Marcus!

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

    So cool

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

      Thank you!

  • @rdalemd76
    @rdalemd76 2 года назад

    Nice, Waiting for that Windows Emulator.

    • @solisted
      @solisted  2 года назад +1

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

  • @samuelcorreabueno9784
    @samuelcorreabueno9784 2 года назад

    Really amazing ! Congats !

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

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

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

      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 7 месяцев назад

      It's ready for an OS.

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

      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 6 месяцев назад

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

  • @mheermance
    @mheermance 2 года назад

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

    • @solisted
      @solisted  2 года назад +1

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

  • @greenaum
    @greenaum 2 года назад

    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  2 года назад

      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.

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

    Repton Man!

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

    very nice!

  • @Theineluctable_SOME_CANT
    @Theineluctable_SOME_CANT 2 года назад +1

    Any chance someone might do a kit of your design?

    • @solisted
      @solisted  2 года назад +1

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

    • @Theineluctable_SOME_CANT
      @Theineluctable_SOME_CANT 2 года назад +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?

  • @paulwratt
    @paulwratt 2 года назад

    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  2 года назад +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 2 года назад

      @@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  2 года назад

      @Paul Wratt Interesting mod, will check that out.

  • @greenaum
    @greenaum 2 года назад

    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  2 года назад

      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.

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

    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

  • @russianvideovlogguy
    @russianvideovlogguy 2 года назад

    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  2 года назад

      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.

  • @siriokds
    @siriokds 2 года назад

    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  2 года назад

      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.

  • @10p6
    @10p6 2 года назад +1

    Very nice 🙂

  • @willofirony
    @willofirony 2 года назад

    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  2 года назад

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

  • @MarkOfBitcoin
    @MarkOfBitcoin 2 года назад +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  2 года назад +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 2 года назад +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.

  • @dgnrlento
    @dgnrlento 2 года назад

    Gracias. Thanks.

  • @SpeccyMan
    @SpeccyMan 2 года назад

    The Sinclair ZX Spectrum is a British computer so it really should be pronounced the British way, phonetically: ZED-EXX SPEK-TRUM. 😉

  • @rosmianto
    @rosmianto 2 года назад

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

    • @solisted
      @solisted  2 года назад

      I would say ancestor.

  • @hackergrey3255
    @hackergrey3255 2 года назад

    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  2 года назад

      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.

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

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

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

      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.

  • @ashrafatteya
    @ashrafatteya 2 года назад

    Very interesting

  • @philipgbullas
    @philipgbullas 2 года назад

    wow! new fan here! 😍

    • @solisted
      @solisted  2 года назад

      Thank you, Phil!

  • @TheDesignDevil
    @TheDesignDevil 2 года назад

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

    • @solisted
      @solisted  2 года назад +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 2 года назад

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

  • @gasparinizuzzurro6306
    @gasparinizuzzurro6306 2 года назад

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

    • @solisted
      @solisted  2 года назад

      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 2 года назад

      @@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  2 года назад

      @@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 2 года назад

      @@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  2 года назад

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

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

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

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

      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 7 месяцев назад

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

  • @brightsourcemedia
    @brightsourcemedia 2 года назад +1

    ..... But, but, but..... does it play Doom?

    • @solisted
      @solisted  2 года назад +1

      Z80-based TI calculator can, why not? :)

  • @mrq3727
    @mrq3727 2 года назад +1

    Super but… why? What is a purpose to develop systems from the 80’s?

    • @solisted
      @solisted  2 года назад +7

      Good question MR Q, thank you! A lot of reasons, actually. A few of them are:
      I'm not a professional electronic engineer. Old computer systems are very easy to design and build for beginners like me. Sub-20Mhz frequencies allow you to use inexpensive debugging equipment like $300 oscilloscopes and $100 logic analyzers. And you will need a lot of hardware debugging when you start something like that. Due to low frequencies you can start on the breadboard with jumper wires and it will still work! We know how noisy circuts are on a breadboard.
      You don't need great soldering and PCB-design skills to build system like that also. At these frequencies it is very forgiving to various signal integrity mistakes you might encounter when designing PCB. First revisions of the PCB for this project were 2-sided and so ugly, because I used autorouter, but still worked well! :) Only final revision was manually routed on 4-layer PCB when I learned to do it well. I'm still not comfortable with SMD-soldering, so choice of old through-hole components helped me to avoid a lot of delays and frustrations caused by lack of advanced engineering knowlege and skills.
      I'm a X-generation computer enthusiast and computers from that era are still produce a lot of warm feelings and nostalgia for computer nerds like me. I'm very frustrated by the situation in the IT industry today with bloated operating systems, overengineered applications and frameworks that consume gigabytes of RAM for the simple tasks like IRC chat with fancy graphics (hello Slack based on Electron framework ;) Computer and network speeds improved by many magnitudes since 80s but still you have to wait couple of seconds for an application to start like you're running it from the floppy :) I'm a programmer and languages like JavaScript and its frameworks make me puke - want to go back to my cave, open text editor and start writing oldschool z80 assembly :) This project is a safe-space for myself as a software developer where I can work alone, without all that toxic scrums and kanban boards :)
      Working with 8-bit systems in assembly language is very easy and straightforward - it works the way you make it work (program), no more no less. Instant compilation times, instant launch, no need to have super powerful workstation for development.
      Also, I like an aspect of that era that you don't need to be Ubisoft or Epic to make a decent game for an 8-bit computer. You alone can make something very decent (matching system capabilities) in a month or so and that will include game graphics, level design and music. And it will be very captive and challenging to play if you do your job well - check how popular is Celeste game for the PICO-8 fantasy console. It was even ported to different modern platforms and selling very well!

  • @greggv8
    @greggv8 2 года назад

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

    • @solisted
      @solisted  2 года назад

      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.

  • @josemfacuna6754
    @josemfacuna6754 2 года назад

    👍

  • @juliocesarm.espinola2463
    @juliocesarm.espinola2463 Год назад

    hows name that operating system which work that processor?

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

      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.

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

    Is this a kit i can buy from you?

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

      No, there is no kit available

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

    Minimum order from JCLPCB is 5 units costing (me) £60 including tax and slowest delivery, be happy to sell on the other four at no profit to myself to any others interested, if OP is Ok with that or can point me to where I might get a single unit printed for a reasonable price. I haven't costed the keyboard yet but maybe the same deal.
    EDIT: Approximately £90 for 5X Mainboard and 5X Keyboard unpopulated PCB's

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

      Martin, I did order all my PCBs from JLCPCB as well. This is the most convenient PCB vendor I know with low price. OSHPark has minimum order of 3, but they are much more expensive, and I don't like purple PCBs.
      If you want to sell excess boards, make a comment with some information how people can contact you. I have no problem with that and will pin your comment.

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

      @@solisted The boards have arrived after a very long stint on a slow boat from China. I'll work out the break-even prices and make a comment, soon.

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

      Hi Ivan, I've tried adding links to my extra boards but my comments keep disappearing, not ure if that is you or YT delting them?

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

      @@LOrealHardly Seems like it's RUclips. I have "Block Links" option disabled in channel settings. I temporarily lowered strictness level for comments. Could you please try to make it one more time? Create top-level comment with links and all information needed. To see if it will pass RUclips filters.

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

      Martin, I don’t know how to make comment with links pass, but we can do the following. Leave comment without links and refer to the description of the video and email me links to your boards, I will put them in the description of the video.

  • @TenguVaran
    @TenguVaran 2 года назад

    Что-то я так и не понял, он не спектрум-совместимый?!

    • @solisted
      @solisted  2 года назад

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

  • @randaldavis8976
    @randaldavis8976 2 года назад +1

    add storage !!! and don't do basic, do forth !!!

    • @solisted
      @solisted  2 года назад

      Will do, but not sure about Forth. Very specific stack-based programming language used back in the day for scientific calculations. I think BASIC will be more interesting for people to play with.

    • @randaldavis8976
      @randaldavis8976 2 года назад

      @@solisted not limited to scientific programming. Games, word processors, spacecraft, robotics, embedded programs, boot loaders, etc have been done in forth. very compact & flexible language. you can do more in a limited amount of memory than almost any other language, Assembly is faster to run and more compact for small programs, but as complexity increases, Forth beats it.

    • @solisted
      @solisted  2 года назад

      @Randal Davis I see. I did not encounter Forth in other envirnonments other than scientific, hence responded that way.
      I think 8-bit computer's, with 64K of RAM and a few simple 8-bit I/O registers to interact with keyboard and sound, complexity is the exact match for assembly. And BASIC is simple and straightforward enough for programmer beginner to start toying with the system before jumping to assembly. That was my path in the programming at least.
      But I would not argue. I did not do programming in Forth that much. Just did a few simple programs in DOS on PC back then to educate myself a little about this language.
      Just thinking, BASIC interpreter on power on will be more attractive to people bc it was like that in 80's on home computers experience of which this system is aimed to replicate.

  • @savagecircuits
    @savagecircuits 2 года назад

    Where did you get the actual keyboard from?

    • @solisted
      @solisted  2 года назад +1

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

    • @savagecircuits
      @savagecircuits 2 года назад

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

  • @ccoloured
    @ccoloured 2 года назад

    im your 169th sub ;)