Slu4
Slu4
  • 55
  • 454 459
Minimal 64x4 Inside Out: Understanding and Emulating a CPU on Microcode Level
I am explaining my Minimal 64x4 DIY home computer on microcode level and write an emulator for it in JavaScript. Enjoy!
Emulator w/o PS/2 and UART: editor.p5js.org/slu4coder/sketches/1fljnu-Y7
Full emulator in JavaScript: editor.p5js.org/slu4coder/sketches/lRq1gyYR2
Minimal 64x4 reference manual:
docs.google.com/document/d/1-nDv_8WEG1FrlO3kEK0icoYo-Z-jlhpCMiCstxGOCjQ/edit?usp=sharing
Minimal 64x4 OS, software, KiCAD project, Gerber PCB files:
github.com/slu4coder/Minimal-64x4-Home-Computer
Переглядів: 11 084

Відео

Squeezing Water from Stone 3: Arduino Nano + 1(!) Logic IC = Computer with VGA and PS/2
Переглядів 10 тис.4 місяці тому
Let's have some fun with an Arduino Nano and turn it into a little gaming machine. I generate stable VGA *and* read out a PS/2 keyboard *and* have plenty of processing power left with this design. Software, schematics: github.com/slu4coder/Arduino-Nano-PC Programming Arduino Nano fuse bytes: ua-cam.com/video/Vhgjxyb3qQc/v-deo.html Minimal 64x4: github.com/slu4coder/Minimal-64x4-Home-Computer do...
Minimal 64x4: The Oddball in Home Computer Development
Переглядів 14 тис.4 місяці тому
I showcase and release the 'Minimal 64x4' home computer with VGA, PS/2 and SSD. It packs 4x the processing power of a Commodore C64! It is a free and non-commercial project for you to explore how computers work and build your own machine, too. Have fun! Reference manual and bill of materials (BOM): docs.google.com/document/d/1-nDv_8WEG1FrlO3kEK0icoYo-Z-jlhpCMiCstxGOCjQ/edit?usp=sharing OS, soft...
Minimal 64 and Minimal Ultra enter 8-Bit Battle Royale
Переглядів 3,5 тис.9 місяців тому
Matt Heffernan's "8-Bit Battle Royale" series is joined by the 'Minimal 64 Home Computer' and also by the 'Minimal Ultra', to my knowledge the fastest 8-bit general purpose 74HC logic breadboard computer to this date. Have fun! Minimal UART Ultra: o GitHub: github.com/slu4coder/Minimal-UART-CPU-System o Instruction Set: docs.google.com/document/d/1DEn8jxe8ZrS8hZHfYHLsGbD8650cgslPbgiaqnhr_Sk/edi...
Minimal 64 Home Computer: Hardware Release
Переглядів 4,5 тис.Рік тому
I am releasing the hardware design and layout of the 'Minimal 64 Home Computer'. It's the result of my 3-year hobby project and free for any non-commercial use. Have fun! o Introduction: ua-cam.com/video/3zGTsi4AYLw/v-deo.html o User manual: docs.google.com/document/d/1e4hL9Z7BLIoUlErWgJOngnSMYLXjfnsZB9BtlwhTC6U/edit?usp=sharing o GitHub repository: github.com/slu4coder/The-Minimal-64-Home-Comp...
In Your Browser: The Minimal 64 Home Computer
Переглядів 1,5 тис.Рік тому
In this episode I showcase a 'Minimal 64 Home Computer' running in your Browser using the JavaScript p5.js environment. o Launch the emulator: editor.p5js.org/slu4coder/full/aOUivViNt o See the source code: editor.p5js.org/slu4coder/sketches/aOUivViNt o GitHub Repository: github.com/slu4coder/The-Minimal-64-Home-Computer o Reference Manual: docs.google.com/document/d/1e4hL9Z7BLIoUlErWgJOngnSMYL...
Emulating a 'Minimal 64' Home Computer in Java/Processing
Переглядів 1,4 тис.Рік тому
In this episode I show how to write an emulator for the 'Minimal 64 Home Computer' using the Java/Processing 4 environment. GitHub Repository: github.com/slu4coder/The-Minimal-64-Home-Computer Reference Manual: docs.google.com/document/d/1e4hL9Z7BLIoUlErWgJOngnSMYLXjfnsZB9BtlwhTC6U/edit?usp=sharing Minimal 64 Introduction: ua-cam.com/video/3zGTsi4AYLw/v-deo.html ua-cam.com/video/y_Evdo2kZgs/v-d...
60-Line Python Assembler, Thanks to GPT-4
Переглядів 2,2 тис.Рік тому
In this episode I showcase a tiny 60-line assembler for my 'Minimal 64 Home Computer'. Its written in Python with extensive help of GPT-4, OpenAI's latest language model. GitHub Repository: github.com/slu4coder/The-Minimal-64-Home-Computer Minimal 64 Reference Manual: docs.google.com/document/d/1e4hL9Z7BLIoUlErWgJOngnSMYLXjfnsZB9BtlwhTC6U/edit?usp=sharing Minimal 64 Introduction: ua-cam.com/vid...
Minimal 64 Home Computer: Emulator Release!
Переглядів 2 тис.Рік тому
Here is my take on 80's home computer magic. I introduce my design of a "dream home computer", the Minimal 64. To me its the most computer from the least logic or the shortest way from TTL to Space Invaders. In this episode I showcase my breadboard prototype and do some native programming in the Python-like language MIN. Have fun! Minimal 64 GitHub Repository: github.com/slu4coder/The-Minimal-6...
Minimal 64 Home Computer: The Most Computer from the Least Logic?
Переглядів 4,9 тис.Рік тому
Here is my take on 80's home computer magic. I introduce my design of a "dream home computer", the Minimal 64. To me its the most computer from the least logic or the shortest way from TTL to Space Invaders. Have fun! Minimal 64 GitHub Repository: github.com/slu4coder/The-Minimal-64-Home-Computer Minimal 64 Reference Manual: docs.google.com/document/d/1e4hL9Z7BLIoUlErWgJOngnSMYLXjfnsZB9BtlwhTC6...
Breaking Clock Speed Limits - TTL Computer in Beast Mode
Переглядів 5 тис.2 роки тому
I explore the clock speed limits of TTL computers. I specifically overclock the 'Minimal CPU' successfully to 8.3MHz. Do you know of any faster-clocked DIY TTL computer? Write it in the comments! Minimal CPU System: github.com/slu4coder/Minimal-UART-CPU-System User Manual and Reference (Google Docs): docs.google.com/document/d/1c2ZHtLd1BBAwcBAjBZZJmCA3AXpbpv80dlAtsMYpuF4/edit?usp=sharing Discus...
39 TTL Chips = Computer? Back to Breadboards - Minimal CPU Redux
Переглядів 6 тис.2 роки тому
I am wiring up an easy-to-build redux version of the 'Minimal CPU System' on breadboards. Enjoy! Minimal CPU System: github.com/slu4coder/Minimal-UART-CPU-System User Manual and Reference (Google Docs): docs.google.com/document/d/1c2ZHtLd1BBAwcBAjBZZJmCA3AXpbpv80dlAtsMYpuF4/edit?usp=sharing Discussion Board: minimal-cpu-system.boards.net/ Music: Hideyatakayanagi - Origin Recurrence - Free Backg...
Easy Serial RTS/CTS Handshake - Minimal CPU #12
Переглядів 7 тис.2 роки тому
I explore how RTS/CTS fIow control works and implement RTS/CTS handshaking on the Minimal CPU System. Minimal CPU System: github.com/slu4coder/Minimal-UART-CPU-System Reference (Google Docs): docs.google.com/document/d/1c2ZHtLd1BBAwcBAjBZZJmCA3AXpbpv80dlAtsMYpuF4/edit?usp=sharing C64-style TrueType terminal font: style64.org/c64-truetype
Computer Language from Scratch #2 MIN at Work
Переглядів 2,3 тис.2 роки тому
I sketch how my Python-like programming language MIN does it's job. I also showcase and release a version of MIN for the Minimal CPU System. Enjoy! MIN (Minimal CPU Version): github.com/slu4coder/Minimal-UART-CPU-System Minimal UART CPU Reference: docs.google.com/document/d/1c2ZHtLd1BBAwcBAjBZZJmCA3AXpbpv80dlAtsMYpuF4/edit?usp=sharing More info on EBNF: en.wikipedia.org/wiki/Extended_Backus–Nau...
Computer Language from Scratch #1 Introducing MIN
Переглядів 2,9 тис.2 роки тому
MIN Is Not Python.. but a computer language I develop for fun. MIN is written in only 230 lines of Python code. Minimal UART CPU System: github.com/slu4coder/Minimal-UART-CPU-System Reference (Google Docs): docs.google.com/document/d/1c2ZHtLd1BBAwcBAjBZZJmCA3AXpbpv80dlAtsMYpuF4/edit?usp=sharing en.wikipedia.org/wiki/Extended_Backus–Naur_form#EBNF C64-style TrueType Font: style64.org/c64-truetype
Let's Write an Interpreter (in 168 Lines of Python)
Переглядів 8 тис.2 роки тому
Let's Write an Interpreter (in 168 Lines of Python)
Minimal VGA Expansion Card - DIY Video RAM #5
Переглядів 5 тис.2 роки тому
Minimal VGA Expansion Card - DIY Video RAM #5
Coding a Minimal C64-Style Random Maze
Переглядів 1,9 тис.2 роки тому
Coding a Minimal C64-Style Random Maze
Let's Build a Minimal I/O Expansion Card
Переглядів 2,3 тис.2 роки тому
Let's Build a Minimal I/O Expansion Card
Play with the 'Minimal CPU System' Emulator
Переглядів 3,2 тис.2 роки тому
Play with the 'Minimal CPU System' Emulator
Bootstrapping a Minimal CPU System into Self-Improvement Capability - Simplest Usable PC #8
Переглядів 6 тис.3 роки тому
Bootstrapping a Minimal CPU System into Self-Improvement Capability - Simplest Usable PC #8
Building the Minimal CPU System (SAP-1 on Steroids) with 512KB SSD and Expansion Port
Переглядів 6 тис.3 роки тому
Building the Minimal CPU System (SAP-1 on Steroids) with 512KB SSD and Expansion Port
Let's Code a Minimal Assembler from Scratch in Python (100 Lines)
Переглядів 28 тис.3 роки тому
Let's Code a Minimal Assembler from Scratch in Python (100 Lines)
Let's Build a FAST Serial Terminal with PS/2 and VGA
Переглядів 16 тис.3 роки тому
Let's Build a FAST Serial Terminal with PS/2 and VGA
Minimal Arduino Nano VGA 320x200 (using ONE IC)
Переглядів 14 тис.3 роки тому
Minimal Arduino Nano VGA 320x200 (using ONE IC)
FLASH File System on a Shoestring
Переглядів 3,7 тис.3 роки тому
FLASH File System on a Shoestring
Minimal UART CPU Goes FLASH with SSD and File System
Переглядів 6 тис.3 роки тому
Minimal UART CPU Goes FLASH with SSD and File System
Let's Emulate a Real Computer from Scratch in C++ (250 Lines)
Переглядів 33 тис.3 роки тому
Let's Emulate a Real Computer from Scratch in C (250 Lines)
Replace EEPROMs with FLASH Memory from Scratch
Переглядів 19 тис.3 роки тому
Replace EEPROMs with FLASH Memory from Scratch
Build the 'Minimal UART Computer' on PCB - Simplest Usable PC #2
Переглядів 9 тис.3 роки тому
Build the 'Minimal UART Computer' on PCB - Simplest Usable PC #2

КОМЕНТАРІ

  • @guzman-do
    @guzman-do 4 години тому

    I was looking for a channel like this forever.. I had this idea long time ago but my electronics skills were very limited to complete a project like this one. your channel is gold...Thank you!!

  • @AndrewLobley
    @AndrewLobley 8 днів тому

    This thing would have destroyed in the PDP-8 days

  • @TheGamingDinosaurRoblox
    @TheGamingDinosaurRoblox 10 днів тому

    there is no source code on the github

  • @henryj.8528
    @henryj.8528 12 днів тому

    The TRS-80 used the Kansas CIty standard (or something similar) which was basically FSK. Two tones were recorded IIRC (1200 Hz and 2400 Hz) to represent the ones and zeros. The TRS-80 had minimal electronics for processing the signal into data. Didn't work very well either. I eventually used a reel-to-reel recorder and got somewhat better results. But it was a cheap solution since everybody had a cassette recorder they could use. Bill Gates played a small role in the development.

  • @henryj.8528
    @henryj.8528 12 днів тому

    I had a TRS-80 that used a cassette recorder to store programs. You could buy games (like chess) on cassettes. They used a method called the "Kansas City standard." Unfortunately, the Trash 80 did do much (any) signal processing so storing programs was always problematic. Better than front panel switches and more available than paper tape, but very kludgly.

  • @henryj.8528
    @henryj.8528 12 днів тому

    Much more elegant than the version I mangled together. Thanks...

  • @tarka38tara34
    @tarka38tara34 14 днів тому

    wouaaaa!!!!! amazing concept, sorry my english im french, you are the great teacher, merci beaucoup

  • @oligophagy
    @oligophagy 19 днів тому

    In the emulator, the condition used to select between RAM and Flash is ((MAR & 0x8000) || (Bank & 0x80)). But this checks only the highest bit of MAR and behaves as if an active flash bank is mirrored throughout the low 32K of the address space. The manual states that "address space 0x1000..0xffff always represents RAM," so should the condition rather be ((MAR & 0xf000) || (Bank & 0x80))? As far I as can tell, this has no effect on emulating the OS because the OS only leaves flash mapped into the address space during boot-up, when copying some flash to RAM at 0xf000 (an address with highest bit set), and then it's unmapped until restart.

  • @kippie80
    @kippie80 26 днів тому

    So went and built one. BTW, your advise about where you source chips is good. I sourced all from China. Most were good, I tested them before use. The one that does not test on a programmer though is the counter, 74hc161. 5 out of 10 were bad! After changing those, is promising. VGA won’t sync right now, Vsync and Hsync are good, video signal is all over though.

    • @slu467
      @slu467 26 днів тому

      Sometimes LS is relabeled as HC I suspect, with timing and current consumption being off. Many testers do not test for correct timing. It is not worth the hassle. The board should work first try. I'd reorder all parts. Just my 50 cents.

    • @kippie80
      @kippie80 26 днів тому

      @@slu467 yeah, issue was digikey only lists surface mount parts. I’d rather do surface mount btw. Once you go surface, you never go back, it is easier than thru-hole.

  • @tonym5857
    @tonym5857 Місяць тому

    Great, thank you for sharing 👏💪👌

  • @hstrinzel
    @hstrinzel Місяць тому

    BRILLIANT TUTORIAL!

  • @boydragon6544
    @boydragon6544 Місяць тому

    If I write incorrectly, can I erase the chip by using this PROM.exe and then reprogram it

  • @kippie80
    @kippie80 Місяць тому

    Looked at BOM list and realized, I already have more than 1/2 the parts kicking around. Ok, gotta make one. :) I notice there is no reset circuit after power on. An RC circuit behind a Schmitt Trigger would suffice. Maybe there is unused one? Looking …. A reset would be nice for any analog monitor connection.

  • @DefaultFlame
    @DefaultFlame Місяць тому

    2:10 (Excuse the sligtly drunk comment.) HEY, the . . . point-metal-bits-tool is for people who have sausage fingers, and you don't have sausage fingers. You have small fingers. Put it in by hand, you pansy! P***Y! RAAAAGH! BEER! AND SO ON! Edit: I love that you call him "Nisse."

  • @DefaultFlame
    @DefaultFlame Місяць тому

    Amazing.

  • @your-dad
    @your-dad Місяць тому

    Fantastic! I think you can do it with only one chip to achieve RCA output, there are those libraries called TVout and PS2Keyboard you can load in one single chip so you can type and recieve with only one chip onstead of three! Please do a video about it :)

  • @DefaultFlame
    @DefaultFlame Місяць тому

    At this low amount of storage, wouldn't using a NOR flash instead of a NAND flash allow you to write and erase individual bytes instead of blocks cost effectively? (I haven't looked up the costs for this size of NAND and NOR flash memory.)

  • @DefaultFlame
    @DefaultFlame Місяць тому

    Love it. One thing I'd like to ask about though. Couldn't a section of the flash memory be reserved as a replacement for RAM now? I have no idea how much speed it would lose, but it would make for an even more minimal hardware setup, though it would require a bit more programming. Please be gentle with me, I speak from a place of ignorance.

  • @kippie80
    @kippie80 Місяць тому

    And the Ftdi people always go on about ‘original’ suppliers end such. Go China! CH chips rock!

  • @kippie80
    @kippie80 Місяць тому

    Back in day lex and yak were the tools to use to create a language.

  • @kippie80
    @kippie80 Місяць тому

    Logo looks like good learning language.

  • @kippie80
    @kippie80 Місяць тому

    Is there an LLVM target for your computer yet? :)

  • @Pax-Z80
    @Pax-Z80 Місяць тому

    Thank you, I tried to use TommyProm32 drawing, but yours is way more clear and therefore easy to copy. Any chance your pcb is at pcbway in the share factory?

  • @DefaultFlame
    @DefaultFlame Місяць тому

    I love this, especially the paper tape input.

  • @faristabakovic147
    @faristabakovic147 Місяць тому

    How to upload code from flash mamory to arduino or esp32? I mean how to use flash memory as bootloader.

  • @dwarf365
    @dwarf365 Місяць тому

    Flutter and WOAH. LMFAO! love it.

  • @yogeshmr
    @yogeshmr Місяць тому

    Thanks

  • @richardappow6770
    @richardappow6770 Місяць тому

    the source code for the assembler is missing on your github link. please reupload

  • @safakankara7613
    @safakankara7613 2 місяці тому

    in the video at 1.04 the key code comes first followed by F0 but the BREAK code from the Scan code is for the letter A, F0 1C is seen like this in the libraries. You show that the last data coming with the oscilloscope is F0. Scan tables show MAKE =1C, break =F0 1C. Which one is correct. Thanks

  • @Maxjoker98
    @Maxjoker98 3 місяці тому

    I like the off-the-beaten-track approach! It also seems to work very well for you, which helps :P Very cool video, I wish I had the skills to develop such a computer. Best I can do is an even more minimal CPU(-instruction set), because my brain is not big enough for more ;P

    • @slu467
      @slu467 3 місяці тому

      Thanks, man. Actually, building it smaller is always more difficult.

  • @djtonysmooth
    @djtonysmooth 3 місяці тому

    Still too complex to most

  • @RelayComputer
    @RelayComputer 3 місяці тому

    That's very neat indeed. I love the use of a /single/ dictionary for all kinds of identifiers. That's quite cool !

  • @glennallan7561
    @glennallan7561 3 місяці тому

    I just discovered your channel, and I am subscribed. Wow, you work miracles and are extremely knowledgable.

  • @diogoduarte4097
    @diogoduarte4097 3 місяці тому

    Is there a discord channel we can discuss subjects like this?

    • @slu467
      @slu467 3 місяці тому

      There is a discussion section on my GitHub or just plain old email 😀

  • @destroyer2973
    @destroyer2973 3 місяці тому

    There is a company called potato semiconductor that sells ttl 7400 series chips that go up to 1 gigahertz. Another guy built a computer called Magic 1, He goes online by the name Bill Buzzbee.

  • @zombiigames4151
    @zombiigames4151 3 місяці тому

    I wonder what happens if i run Minimal 64 on scratch

    • @slu467
      @slu467 3 місяці тому

      😁

  • @statinskill
    @statinskill 3 місяці тому

    Squeezing water from stone is a thing. Most of the hydtogen/water on Earth and Mars is locked into various minerals.

  • @trader891
    @trader891 3 місяці тому

    Awesome. Just what i needed. I'm using an Arduino to control 2 stepper motors to set a back gage on a 90 to press brake, and needed a simple way to feed the back gage setting for each bend of the steel into the Arduino so it can spin the servos to the right spot. I was going to use a nice touchpad, but found it has no keypad function and the interface to the Arduino is quite complex and the library is huge. This is very simple and compact.

  • @StevenSherman-kr4xm
    @StevenSherman-kr4xm 3 місяці тому

    Bit random but is the value of R27 meant to be zero?

    • @slu467
      @slu467 3 місяці тому

      Yes, that is intentionally. There are rare cases where the 377 and 161 registers of the address inputs of the control ROMs differ in propagation delay. A nonzero R27 can then be used to slow down the 377 just a tad to avoid switching spikes. Never used it, though.

    • @StevenSherman-kr4xm
      @StevenSherman-kr4xm 3 місяці тому

      @@slu467 thanks

  • @Recovered
    @Recovered 3 місяці тому

    Really clever way to solve this, I did several videos on pal/vga out from various small devices, even attiny13a

  • @chrisdickens4862
    @chrisdickens4862 4 місяці тому

    Wow!

  • @charlesjmouse
    @charlesjmouse 4 місяці тому

    Very interesting. All this must have been one hell of a lot of work, never mind the OS you wrote to run on it! Endless questions... one or two that spring to mind for now: -It would seem your architecture is somewhat 6502-like, but microcode rather than implemented in 'gates'. A compare / contrast might be nice. -Von Neuman vs Harvard architecture in TTL-based computers... I would be interested in your thought process. (Gigatron for comparison?) More... -I see you have the video RAM in the middle of memory, reasoning? I must take a careful look at your VGA implementation... colour..? (as a first thought I wonder if three banked pages for RGB bit planes, multiplexed??) -Audio..? I know, it's meant to be minimal system... but I wonder if an 'I/O waggle' like the PET or a COVOX-like solution might be interesting? -Flash banking for storage... I wonder if there's room to extend that to RAM for > 64k down the line? -Hmmm... microcode stored in flash so the CPU can rewrite it's own 'brain' on the fly... getting silly? I'm going to have to have a good look at this - many thanks!

    • @slu467
      @slu467 4 місяці тому

      Thanks for diving into this. VRAM can't start at 0x0000 nor can it end at 0xffff since the Minimal 64x4 uses a zero page and also a stack in these areas. Not that its impossible to have VRAM elsewhere, its just minimalistic. During development, I hung on to the "Minimal" idea for dear life to not get lost in feature creap. Some things like sound can be added through the expansion port, though.

  • @MohammedShuayb
    @MohammedShuayb 4 місяці тому

    What did you major in university

  • @MohammedShuayb
    @MohammedShuayb 4 місяці тому

    You are amazing if you can do this with a nano then you can do much with an esp32 wemos d1.Where can I learn about these things for a complete noob ! Self study though. Thanks

  • @MohammedShuayb
    @MohammedShuayb 4 місяці тому

    Where can I learn about low level stuff like logic gates , data bus and how computers work at hardware level

    • @slu467
      @slu467 4 місяці тому

      Try 'Digital Computer Electronics' by A. P. Malvino

    • @MohammedShuayb
      @MohammedShuayb 4 місяці тому

      @@slu467 Thank you very much.

  • @rickcortese2023
    @rickcortese2023 4 місяці тому

    Just looking at your design, I think you can add some color at a cost of a couple more ICs. If you used two '166. Route the 8 bit data high nibble into one shift register and the low 4 bits into the other. Tie the serial output of one shift register to the Red, other to Green, for instance. You would have to slow the shift to half current speed to stretch the pixels would by twice as wide. Both '166 would have their [E, F, G, H] registers filled with a single byte/Write. You would encode color in the nibble i.e. byte 1001-1110 would clock out of the first'166 as 1011 would be Red, blank, blank, Red while the lower nibble would come out as Grn, Grn, Grn, blank, Grn. They would combine on the screen as Red+Grn, blank + Grn, Blank + Grn, Red +Blank, if I have it right. Of course if you had 4 '166, you could divide the byte up into 4 slices, but I'm not sure you need intensity. You can only get ~14 bits I/O right? It would be nice to change it on the fly with changing the shift out clock to 1/2 or full speed so you could just ignore the extra hardware when you wanted to just do high rez black and white. I think there is a universal shift register, something like a 74LS194, with all shifts output, but it's only 4 bits.

    • @slu467
      @slu467 4 місяці тому

      Great to hear that my minimalistic design inspires you to take it into a colorful direction. I like the fact that you keep the highres since it is essential for the editor and stuff.

  • @LukeNewcomb
    @LukeNewcomb 4 місяці тому

    Wonderful! this is great. I really want to build this and also write an emulator for it so I can test my understanding of the system before the board gets here. Vielen dank!

  • @esra_erimez
    @esra_erimez 4 місяці тому

    Wow, this is mot impressive, informative and very interesting.

  • @genohm5664
    @genohm5664 4 місяці тому

    AMAZING!!!!

  • @treelibrarian7618
    @treelibrarian7618 4 місяці тому

    I had a thought, after watching this, your 'oddball' and 8-bit battle videos... not sure if this fits in your oddball aesthetic, but you're using eproms already... The ALU could be replaced with a single 16Mbit (1Mx16) eprom (like ST M27C160-50f1 which seems to be still available on ebay for £2... hopefully not fake) the 16 bits from A and B as address ofc, and since it has 20 lines then lookup tables for 15 2-input operations (carry-in as distinct operation), plus up to 256 single-input operations could be encoded with a control line to usurp the address inputs from the B register and connect to outputs from the control ROM instead. This would allow a whole range of 1-cycle math and logic ops to be encoded, plus drastically reducing the cycles for others... I suggest (2-input µops): add, add+1 (carry set equiv.), sub, sub-1 (carry set equiv.), multiply (low byte result), multiply (high-byte result), and, or, xor, shl-double(x1,2,4 bits), shr-double (1,2,4 bits). And then (1-input µops): shl(1,2,3,4,5,6,7 bits), shr(1,2,3,4,5,6,7 bits), sar(1,2,3,4,5,6,7 bits), rol(1,2,3,4,5,6,7 bits), rol-carry(1,2,3,4,5,6,7,8 bits) not, neg, inc, dec... maybe some flag-based variants like inc-carry, inc-z, inc-n, not-n, not-c, not-z, neg-n etc, although these could also be encoded as conditional execution ops (see below). would probably want a wider control eprom, so maybe using 2 16-bit wide eproms like the one above would work? then the total chip count might actually end up less. also, I'm imagining some flag-controlled optional execution variants of some instructions could be good for when only one or two instructions would need to be bypassed by a branch. That wouldn't need any logic change at all, just microcode. but all in all, I'm very impressed by how much you're doing with so little - mostly in microcode, like using the adder for shifts and rotates (encoding logical and arithmetic right-shifts as well might make sense).

    • @treelibrarian7618
      @treelibrarian7618 4 місяці тому

      a little extra thought - having only 7 lines be usurped from B would allow a complete set of double-shifts to be encoded, with the shld1 op being in the 1-input set, though it's taking one bit from B...