Six months ago when I posted about my “dream computer” I had a lot of people asking questions that didn’t seem to be addressed in the original post.  Plus, I’ve had time to think more about what would be best to have or not have.  Plus, some other unexpected surprises have come up.   Once I’m done with Planet X3, this is the project I plan to undertake next. So first, I want to answer some frequently asked questions:

Why not use the Raspberry Pi?

Well, to be honest the Raspberry Pi is just a linux computer.  You cannot program the Raspberry Pi directly, rather you program it just like you would a desktop computer in modern languages like C, Python, Java, etc.  It’s not the same.  It’s also a platform that is ever changing, something I’d like to avoid.

Why do you want an 8-Bit computer?

Imagine trying to learn to work on automobiles for the first time.  One one hand you have a 1957 Chevy and on the other hand you have a 2018 Toyota Prius.  Which one will be easier to understand how all of the drivetrain works?  The complexity of modern computers makes the barrier to understanding them much harder.  If you start with something more simple, it will be easier to understand.  People will be able to write code and actually understand how the hardware they are interacting with actually works.

Why not just wait for the Mega65?

While I’m really excited about that computer, I suspect it is going to be far too expensive to actually get a critical mass of users.  It will certainly be too expensive for kids to buy and learn on.  I believe the Mega65 will be a niche market.

Why do you NOT want it compatible with the C64 or some other 8-Bit system?

Compatibility has pros and cons.  But the main thing is, I want this to be a fresh platform that people can code on.  If you hand somebody a C64 and tell them to write a platform game, suddenly they’ll realize their platform game will have to compete with Giana Sisters and Sam’s Journey.  It can be discouraging.  But if nobody’s ever written a platform game on that system yet, then yours will be the first!  It’s a new frontier!

What’s wrong with FPGA?

I have two major gripes about FPGA.  One is the cost.  But the other is that people will be tempted to modify it.  In order for the platform to be successful it needs a community built around it.  If it splinters off like Linux did, then there will be a bunch of systems running different FPGA code and ultimately not be compatible with each other.  I don’t want that.  However, I realize there are ways to avoid that problem.

Sooo.. This was my first plan.

Since I wanted a cheap 8-bit computer that was made with modern components and boots to BASIC, I looked at several different platforms.  I had been thinking I would go with the NES-on-a-Chip design.  So, essentially I’d build a computer around that little epoxy blob that you find in little NES clones and other direct-to-TV video games.  It is essentially a Nintendo condensed down to one chip.  But I’d have access to the full address and data bus.  So I could put a nice sound chip like the OPL3 on there.  And have it boot to BASIC.  Of course, it’d be a custom version of BASIC that would be similar to C64 BASIC but with added commands for graphics and sound. I would add a PS/2 keyboard and PS/2 mouse port.  And top it off, an IEC disk drive port so that it could talk to Commodore disk drives.

The Pros of this setup would be:

  • Lots of documentation on how to code for the NES
  • Can do most of the work in an emulator
  • would be very cheap with the final product costing around $30
  • Would run almost twice as fast as a C64
  • Would be like a hybrid of Nintendo + C64, which would be cool.
  • Might even be able to get some NES games to work on it.

The Cons of this setup would be:

  • Uses composite video output only.  No way to interface with modern TVs and monitors.
  • Not really as fast as I’d like.  I’m hoping for a system 8Mhz or faster so that BASIC runs at a decent speed.

This was the backup plan!

I had a conversation with Jeri Ellsworth about using her DTV chip in my dream computer.  Of course, I wouldn’t be using it for the purpose of C64 compatibility.  In fact, it would likely be clocked at a much faster speed than the version that shipped in the Commodore DTV joystick.  It would boot up to a custom kernal and BASIC that I would design.

Pros of this setup would be:

  • Decently fast, running at at least 8 Mhz, maybe more.
  • Large memory map
  • It might be possible to add a “Go 64” command and make it C64 compatible.
  • Jeri says it is possible to use the digital output from the chip and convert to HDMI easily.

Cons of this setup would be:

  • The possibility of C64 compatibility might doom it to the same fate as the C128 and nobody will bother to write code for it.
  • Adding proper keyboard and mouse support would be complicated. The DTV already has a PS/2 port but it maps to the legacy C64 keyboard matrix, which is inferior to reading the PS/2 keyboard directly. That’s fine for operating as a C64, but I want more than that.
  • I would be dependent on a single source for the main chip.

And now this happened!

When I was at the Portland Retro Gaming Convention, Stefany brought her C256 Foenix prototype to show me.  I didn’t realize she was so far along on the project.  She’s using FPGAs for things like video, but they are encrypted and self-contained. So essentially, once programmed they cannot be reprogrammed by somebody else for small modifications, thus locking the platform specifications down. However, at the moment we are in a disagreement over what features it should have.

Pros of this setup:

  • It is based on individual chips like a traditional computer.  So there is a separate 65816 CPU running at 14 mhz, and a separate video chip, separate sound chips, etc.  This makes the system somewhat easier to understand.
  • It’s already far along in development, thus making it a system almost ready to go for me to start developing my custom kernal and programming environment.
  • It already supports DVI / HDMI out of the box.

Cons of this setup:

  • Stefany and I disagree over some of the design at the moment.  For example she has an integrated floppy drive, MIDI ports, SID chips, and a whole host of other things that I don’t feel are necessary and will inflate the cost of the computer.
  • Even if she agreed to all of my design changes, it would still be a computer that would be $80 or more for somebody to buy, well above the original price point I was hoping to target.

So what’s next?

Well, when I’m done with Planet X3, I want to start designing a custom kernal, BASIC, and 6502 assembler.  I want to give people a really user-friendly environment when they boot up the computer.  I want them to have a menu at boot where they can pick BASIC or Assembly.  I want it to be easy to program in either language. I want it to have a familiar interface and look for those that are current Commodore fans, but it will ultimately be its own platform.  So, imagine the C64 vs. the Plus/4.   Both offer that familiar Commodore environment, PETSCII character set, screen border, screen editor, etc.  They can even attach and use the same disk drives and file systems.  But they are ultimately different machines and not compatible with one another.

I’ll start designing this for the Commodore 64 using an emulator. Ultimately, whatever architecture I go with will be based on the 6502, so the code I design on the C64 should be easy enough to move to a new platform.   Eventually I’ll settle on an architecture after hearing lots of feedback from you guys over the next few months.  Then I’ll start trying to tailor the software to that specific architecture.

Basic will be for fun and for kids to learn on.  It will be faster than vintage BASIC systems, and easier to use with nice graphics commands and stuff.  It will also have a full-screen editor that you can scroll up and down and edit code, similar to how the Maximite computer does.  It will use labels instead of line numbers.  But, just like vintage 8-bit systems, any serious programming needs to be done in assembler.  I do all my assembly work on a modern PC with a cross-compiler, then test in an emulator. But, since there will be no emulator for this setup, it will definitely need its own assembler in ROM so that serious development work can be done right there on the machine.  I have some ideas of how to implement this all, and I think I have a way to even mix the two so that people can write sub-routines in Assembly and call them from BASIC.  So, I hope this will be great, fun system to code on.

Related Posts

98 Responses

  1. Tom Wilson

    David, you and I should talk.

    I’ve been developing a simulator to run alongside the Foenix and act as a debug environment. I’ve also been using that to learn 65816 assembly and start work on a basic kernel. (It’s been really slow going, since I haven’t done assembly code for like 25 years), but the computer actually runs 65816 instructions right now.

    The simulator is also still fairly primitive; it is just a keyboard, CPU, and screen right now, but it works well enough for me to run my demo code, and the debugger is coming along great (that’s the part I’m really interested in.)

    The simulator, like the Foenix object code, is open source, so anyone who wants to help develop the simulator and code for the real machine can get in on the action.

    Reply
    • Matt

      Open source? *Gasp* what if they splinter it off? 😛

      But for real, if you wouldn’t mind updating your github with a todo-list of stuff you’d like to see, I wouldn’t mind tossing some effort your way.

      I do have my own system, but I’m pretty burned out on working on it, I’d love to put that effort toward something that’s in works 🙂

      Reply
    • Rex

      I second this, David if you make some progress or at least think about it more, please make video!

      Reply
      • Daryl

        I completely third this. I’m not sure tons of people actually know this website is here!

    • Ricardo Quesada

      BASIC Engine is great! I didn’t know this project. Thanks for sharing.
      BTW, one of the videos is about running the Tetris by David Murray in BASIC Engine.

      Reply
    • Rob

      I also loved reading this and I hadn’t heard of it before either. Just goes to show that Google doesn’t know the entire internet, because in about a year of searching for custom 8 bit machines, I never came across Basic Engine.

      It seems to be the real deal, essentially everything one would want. 16 bit style graphics that can be programmed using only BASIC. Full speed games in just BASIC on an 8 bit machine is a big deal. Also it had 63KB of RAM free, which is plenty.

      Honestly, David should use a BASIC Engine. Why reinvent the wheel when it seems to be almost exactly what he’s looking for. Plus the whole design is open (and complete and cheap) so he could change any part he wanted.

      Reply
  2. Ben

    You should make it an option to code with line numbers. This is very important to me.

    Reply
  3. Ben 590

    You need to make line numbers an option so I can type in code from my old BASIC books.

    I think this computer will be lots of fun

    Reply
    • Tim Wilson

      Ben, line number-less BASIC dialects usually still accept line numbers. The interpreter just treats them as labels.

      However, No modern programming language uses line numbers, and I’d this is going to be an educational tool, I absolutely don’t think line numbers should be mandatory. As an option is fine, it they should not be required.

      Reply
      • hlide

        I strongly discourage using spaghetty programming through “goto ” as an educational tool: such programs are difficult and brain-damaging to understand by the other people trying to read them. And not the best way to learn good programming.

      • Tom

        Odd. I cannot reply to Hilde.

        Anyway – line numbers do not automatically make spaghetti code. A properly designed BASIC language can still use structured code principles, including block IF and WHILE loops.

  4. Daniël Mantione

    The idea of using a NES on a chip is very interresting. However, who makes these chips and is there documentation available? From what I can Google around, it seems all rather anonymous and proprietary. The cost of the solution could be a huge advantage.

    However, I don’t think you will be able to produce a computer for $30. Mainboard perhaps, but keyboard and case? You might be able to fit a PS/2 connector on the board, but PC keyboards and 8-bit computers… not a lucky combination if you ask me. If design a 6502 computer and interface with Commodore peripherals, PETSCII is a must. The inevitable conclusion will be that a PETSCII keyboard is also must. Something to think about.

    Your computer should indeed not have a SID chip. That would not only drive up its cost, but also increase the market to slay C64s for their SID chips. The SID chip as a 8-bit device is great, but then it should be a clone and not the real thing.

    I think you are a bit too dismissive about the Mega65. Yes, kids won’t be able to buy one, but it will be usable to teach 8-bit computers to a wider audience. Maybe Paul Gartner Stephen will use it in his own university, that is a completely different audience as kids, but it does fits most of your bill. Except price, yes, it will be expensive.

    Reply
  5. Andrew Waite

    The Raspberry Pi is more than a Linux computer, it can also run under the RISC OS operating system which could be close to what you are looking for.

    RISC OS is the original OS that Acorn shipped with the ARM based Archimedes machines in the 1980s and 1990s, is now open source under the Apache 2.0 licence and is available on the Raspberry Pi NOOBS (New Out Of the Box Software) SD Card.

    Once the RPi has booted to RISC OS you can easily get to a BBC Basic command line prompt by pressing F12 and typing *BASIC. BBC Basic is the same BASIC that shipped with the 8bit 6502 based BBC Micro and Acorn Electron in the early 1980s. It also has a built in ARM assembler.

    https://swag.raspberrypi.org/collections/software/products/noobs

    https://www.riscosopen.org/news/

    Reply
    • Hunter Graham

      David could also get RISC OS Pico, which is just RISC OS with nothing but BASIC, some documentation, and a few example programs. Not sure how assembler could fit in (I’m honestly going off hearsay — aka the RISC OS Open site — since I don’t currently own a Pi), but it’s something…

      Reply
  6. Matt

    I feel as though you throw a lot of shade at FPGAs from a bit of misunderstanding about them. They’re not expensive, in fact they regularly see use in products in order to drive down costs from discrete components. Additionally, unless you’ve shelled out a ton of cash for HardCopy, you can’t lock them down. Either you need to spring for fab’d ICs a la MOS/WDC or huge runs with TSMC, or just live with that fact.

    Besides, modification is good, is it not? That’s what made the IBM PC platform so successful. It was so easy to understand and basically open because it was so easy to just slap one together from off the shelf parts, and so simple internally that anyone could do what they wanted. What you find is that people design for the most common system, regardless of modifications others have done, in order to make sure their stuff runs on the most systems. History is rife with examples of this.

    Besides x 2, why should all the software people have fun? We electrical engineers are people too! 😉

    I had/have a computer that still matches your description. You can find it on Github under the name AVF-C. It’s basically a Nintendo computer, as I’m super experienced with that design. It only exists in software emulation form for the time being, but one day I’ll push out a board. Runs on a stock 14MHz 6502 straight from WDC. Not software compatible OOTB with the C64, but I have a rudimentary TLB running in the MMU to accelerate the task of running C64 software in its own special memory space as if it was a stock system. Of course, it does use an FPGA, because I don’t have the vast amount of money it would cost to fab a custom chip, but if that’s interesting to you, I can fab a board sometime early next year and let you take a look.

    Reply
    • The 8Bit Guy

      The IBM PC was open and expandable, but there was a huge library of software available for it that kept everyone making sure their product was backwards compatible with the existing software base. But for a system with no software base to begin with, this would be a problem. And in order to make sure a software base does exist one day, a fixed platform is needed.

      Reply
      • Matt

        I understand what you’re getting at, and I get that it’s definitely a way of pressing down a standard, but isn’t it a bit weird? I mean, does it not feel a bit weird to use a retro computer that you’re banking lots of time into and not be entirely sure how the hardware works?

        I agree it’s cool, but we’re talking 3 FPGAs that have proprietary cores on board that nobody understands except the author. What if they walk away and refuse to work out firmware bugs or things like that, or you’re having trouble with some timing inconsistency and the author is unavailable. Isn’t that a bit troubling?

      • Commodore256

        I’d like to see dual OPL3s and a Deca-core 6502. Why 10 Cores? Well, there were some C64 Homebrew Demos that used the 6502s in the Disc Drives for things and I hare the C64 could Daisy Chain 9 drives and If you want to out do the C64, do it in every way. Dual OPL3s because the C64 supported Dual SIDs. Also, I’d like to see the video chip have similar limits to the PC Engine. the PC Engine had the best graphics of any 8-bit 6502 machine.

  7. Matt

    This is a separate thought so I wanted to put it in a new comment. What would you think about using something like a Rabbit SoC? It’s practically Z80 all the way through with some extensions, and all you need to implement is a memory and video controller and some PHYs. Most of all, it’d be very cheap to produce in volume. It’s a fairly performant SoC with good networking support.

    Reply
    • Stefany

      Matt,

      I understand that you might be concerned about proprietary coding inside of an FPGA that could possibly leave you stranded if anything would go wrong… However, you do realize that most electronic chips are all ASICs hence they have been programmed in the same way as an FPGA and with the same language. Obviously, all these ASICs have been tested thoroughly before being released. I wonder why you would think that because one single person program something it would not be tested the same way. On the other hand, most ASICs do have problems and ERRATA to document those problems and are not exempt from problematic behavior.
      I believe that if anything would be released, it would be done so in a beta release form that would let early coders find the major problems with the chips hence they could be corrected for the final release.
      If other problems would be found along the way, then some later units would have the problem corrected the same way the Commodore Chipset or any other chipset for that matter.

      Now, whatever David decides to go with, if the graphics controller isn’t already part of the chip he wants to use, any other possibilities will be tied up to an FPGA, there is no way around it. There is not an interesting 2D graphics controller that sells off the shelf these days.

      Finally, I don’t understand why somebody would not be able to know about the hardware (considering that it would be fully documented) he is programming on without having access to the source code of the aforementioned chip. Gazillion people programmed on the SID, until recently nobody had the source code for?

      Is it so important to have access to the source code? I for one, if I was not going to be able to support the chips I designed, either I would find somebody else to support them or just make the source open. At that point, it would not be as important because there would be no reason to start changing it unless somebody would like to use the source to create a more advanced version of it. Either way and as far as I am concerned, I am not looking forward to give up my creation so easily.

      Anyways, just my 2 cents…

      Stefany

      Reply
      • Tom Wilson

        I could see someone doing something like adding an opcode, for example, of adding a new feature – like a floating point co-processor. And suddenly, there are two different versions of the computer out there.

        However, let’s look at the 1541 Ultimate, by Gideon. He makes the FPGA and the program source open, and nobody has made a Super Ultimate, or some other nonsense. The only fork out there is one guy who adds a couple of minor features and bug fixes.

        I think FPGA design skills are still rare enough that people generally aren’t going to be doing a lot of modifying of systems, and after using my Ultimate 64 for a few days, I’m in the “why bother with discrete components?” camp. They are really cool for premium machines, but it seems like the additional components also mean additional headaches.

      • Matt

        I agree with you on the first part, that’s what I was alluding to. If you’re going for a as-much-physical-hardware-as-possible approach, a SoC sounded sorta in that grounding.

        And for the source thing, look that’s your choice. It’s your system to do what you want with. The hardware being undocumented was due to my confusion as to how you planned to keep your work private if the behaviors are well defined. As long as you’re cool with the idea of someone duplicating that functionality in the future, of course, I’ll happily drop some cash for a dev kit or production kit if you stock more in the future.

        I’m not a crusader for open source, I don’t campaign like crazy in that direction. I’m an avid hobbyist computer collector who has a huge interest in fringe, exotic, and niche computers like yours, and the Foenix is a very nice little computer. However, I have a few kits where the owner didn’t want to give up the plans or interpreter code or something because they didn’t want to give up their hard work, and then they got into a car wreck or had a heart attack. In one of those cases, the code went into probate and I hadn’t heard anything since. And as dark and sad as it is, that essentially means I’m sitting on a tombstone of a kit that’s left to rot.

        I’m not calling you evil, I’m not even trying to make it out like you’re a bad person. I just want to make sure that when I invest money into something, I have some semblance of reassurance that, if I wanted to, I or someone else could take over the code in some capacity to improve the firmware/software and keep it okay. In the case of large corporations like Intel or IBM, I’m totally okay with this. Worst case scenario, they just pass it onto another company like Sun did. When it comes to projects headed by a single person, it’s literally 1 really bad day away from being locked down.

        And again as I said above, as long as I would be able to take your hardware descriptions and replicate it if I felt it necessary to extend the machine to my needs, I’d be more than happy to shell out the cash. It’s super cool and the reference renders look cool, I’d love to have it on a desk showing some demos during a house party.

  8. Carl Trek

    This could sound quite weird, but your “First Plan” has been made into commercial products in China back in the 90s, called “Subor Learning Machines”. Basically they are modded Famicom-on-Chip that got a keyboard and load BASIC from the Famicom cartridges. Later models also get mouse and floppy support.

    There seems no much chance for modding those stuffs into your dream computer, for NES-on-Chips are highly integrated, but hope this give you a general idea.

    BTW, you make awesome videos. Keep it up 🙂

    P. S. Picture for “Subor Learning Machine”:
    http://cn.bing.com/images/search?view=detailV2&ccid=%2fxpfvWTN&id=1AE8020B0840E40CE9911DAB1A8F5386C124135D&thid=OIP._xpfvWTNl_g5d900c-QMbgAAAA&q=%e5%b0%8f%e9%9c%b8%e7%8e%8b%e5%ad%a6%e4%b9%a0%e6%9c%ba&simid=608051244459429361&selectedIndex=3&ajaxhist=0

    Reply
  9. Benjamin Butler

    I feel the manual will be the most important part. Making it easy (and Fun) enough for kids while still being useful for serious developers. Almost every public school has a computer discovery coarse. I would design with the intent of possibly appealing to those courses. I would have loved to learn more programing and hardware design in High School, but living in such a rural area (Mississippi) really limited what options were available to me.

    Reply
  10. Paddy

    Hi David,

    I like the sound of your idea and I have to say the Maximite is a very good idea but not readily available. The BASIC on the Maximite is cool though and offers most of the features (and more) we had back in the 80s.

    For me, a good computer would be:

    * 8 bit processor (6502 or Z80) – ramp up the speed!
    * 128K+ of RAM (512K would be great)
    * High speed structured BASIC that allows the creation of large programs
    – Float, Integer, strings etc.
    – REPEAT/UNTIL and/or WHILE/WEND
    – IF THEN ELSE
    – CASE/SELECT
    – PROCEDURES with LOCAL variables
    – Graphics and sound
    – File handling (sequential and random access)
    – Event handling
    – Basically (excuse the pun) a mix of the best features from Amstrad CPC and BBC BASIC
    * Memory above 64K accessible as RAM disk or variable storage
    * Access to proper PC keyboard
    – Trouble with a lot of the 80s computers is that they have non-standard layouts!
    * SD card storage
    * HDMI output
    * Built in assembler/debugger
    * Bitmapped screen
    – 40 and 80 column text mode with no sacrifice of colours!

    Just my 5c worth…

    Paddy
    UK

    Reply
  11. K. Nemeth

    David, I see your point. My first computer was also a VIC-20, and my first experiences with programming was in Basic, too. Now I’m an IT engineer, and love to think back to those days. I like to think back of everything, … except BASIC. That was a nightmare. You really had to draw a flowchart even for the simplest programs not to get lost. I understand that you would like it label based, which is a big step forward, but please, don’t give GOTO to a minor, they might hurt themselves 🙂

    Actually, as a side note, there are very nice tools for children to learn coding, like Scratch, Logo, or even Python. The other things kid might be interested in is interacting with a hardware that flashes, moves, etc. Arduino was a nice start, but requires basic skills with electricity. The BBC micro:bit is a also very cool and cheap device, I guess you know it. If not, definitely check it out! I like the Lego robots as well (Mindstorms, Boost).

    These being said, I guess never mind, just follow your dreams—really! After all, that’s what it is all about, isn’t it?

    Reply
  12. Harold Robinson

    Ben Heck before he left Element 14, built and 8088 computer from scratch. It was all off the shelf parts and it was all hand wired on perf board. For your dream computer, It would be really cool if you could by it in kit form and build it yourself. Just like the Gigatron. Maybe you have one for 8088 and one for 6502. You have extra boards that you can build that add things like video, hard drive controller, tape controller, serial interface, each added on, and you end up with a fully functional computer when fully built.

    Maybe this is something that is beyond your skill, but why not make it a series of videos showing what you are leaning and have a little basic electricity and electronics built around it. You start building the main board, wiring up the cpu and other chips.

    These videos might give you some inspiration.

    https://www.youtube.com/watch?v=Uiw8LISBVj4
    https://www.youtube.com/watch?v=eV1lacUcZk8

    As this is the final episode of the Ben heck show, you have Pie Face to deal with but it should give you some ideas on how you want to accomplish this.

    Reply
  13. Justin garringer

    Why don’t you just meet halfway in the middle with Stefany and make a lower cost simple board that meets your design ideas, and then include an expansion slot or two and expansion boards that will bring it up to her specs, kind of like how Amigas work. Could even provide accelerator capabilities like the vampire to do really cool stuff.

    Reply
  14. Joseph Ruhf

    You mention the Mega65 in this article. I happen to also have a problem with it which is preventing me from totally wanting one, though it is not that it is expensive or C64-compatible hardware (which being just a way to put FPGA technology into service to preserve that part of history since C64s can’t last forever after all) and only partially that it is FPGA-based (specifically that the MEGA team has put the CPU in the FPGA with the AV interface, I’m a bit weird that way). What it really is is that if Commodore actually did survive to make a successor to the C65, I think maybe they would have made a 6510-compatible processor with a 16-bit data bus which they would use in that “Commodore 130” (this is not the 65816, which only has an 8-bit data bus) which would have been shipped in the mid 1990s. But, to your design, how about having your BASIC implemented as a coprocessor and not just a ROM for the 65816 to read from?

    Reply
  15. Rob

    Things that would get me to program ON it:

    – Normal IBM compatible keyboard with ANSI layout
    – Sprite editor
    – Sound effect creator (simple sliders and toggles one could play with)
    – Music tracker
    – Simple assembly routines via BASIC keyword functions

    Optional:
    – If it came built into one of those “10Keyless” mechanical keyboards from China with the knockoff Cherry switches. Some are good and are only $35, built onto a simple metal plate that could be mounted in a plastic chassis.
    – built in SD2IEC or some other storage of 16-32MB or so to store programs.

    Let me tell ya, it’s a pain in the rear to move between my desktop and my 64 for typing. I guess I’m old. But really, it’s best to learn and use a standard key layout and we do have that now, unlike back in the late 70s and early 80s. So using ANSI and ISO makes sense. The rest is is just what I feel would make the system something that a person could buy and actually use for development. I mean, if you’re going to do all the work on a PC in C, then you may as well just make your C programs for the PC…

    Having a machine that is designed from the ground up to be both a tool that makes games and a platform that plays the games it creates would be ideal.

    Reply
  16. Fadi

    I think instead of Commodore disk drives, let’s use USB Disk Drives, since not all the world is familiar with Commodore, you got all Middle East, Russia, Japan, Brazil, and some parts of Eourope are MSX computer land, and C64 was not known here (I live in Iraq). So, let’s choose the hardware that is available everywhere.
    I think if the video works just like PC (each pixel can have its own color) no color clashs , this will be easier and better. you know like QBASIC and GW-BASIC works, no sprite support but you can control each pixel color.
    for sound, i am ok with what you said.
    for input, PS/2 ports are good. and providing 2 ports for joysticks (Atari 2600 joystick pins) or USB
    for video output, HD or VGA or even AV is ok. preferably VGA since there are tons of screens to work with it.
    for programming language, I agree with you BASIC is good (look for MSX- BASIC) which was used in MSX computer, it’s very fine and it got graphics and sound support. They even did a compiler for it called Basic-kun, so we can use a compiler in your new computer.
    you can use C language too.
    Assembler…I agree…
    all tools for programming must be on the same computer, no cross platform.

    so in summary:
    – a computer with built in usb floppy disk drive (and SD card if possible but floppy is more retro so you can put several games or software on it, not the whole library like in SD) .. optional support for cassette tapes using standard connectors you know the ones used in mobile headphones (like ZX-Spectrum)
    – VGA or HD output
    – PS/2 and Atari2600/sega genesis style joystick ports.

    Reply
    • Daniël Mantione

      USB is a very complex protocol that makes it quite unsuitable for implement in 64KB of RAM that a 6502 supports. You would have to use external microcontrollers to reduce it to something simple.

      Often, if modern storage is required, people opt for SD cards, because that is simple to implement. But you could argue that if the Commodore serial bus is implemented, you automatically can use SD cards with an SD2IEC.

      Reply
  17. Jonathan Pallant

    So I had a similar idea, but I decided a Cortex-M4 was simple enough to learn to program, but fast enough to generate video without needing extra chips. I use a $12 TI devkit, and I wrote the entire ROM in the Rust programming language. It has 32 KiB of SRAM and 256 KiB of Flash ROM. I call it the “Monotron”, because it was originally green-on-black, although I ended up with 3-bit colour.

    So far it has 400×600 VGA output (pixel-doubled), with 48×36 text mode, with 8 colours in any combination for foreground and background on each character cell. It has MS-DOS (actually FreeBSD) CodePage 850 *and* Teletext fonts. There’s a 384×288 graphics mode which takes the colours from the character cells, just like a ZX Spectrum, but it uses half the RAM. It even has a 3-channel wavetable sound synthesiser. You can write programs in C or Rust (or Assembler, I guess) and so far you can run Tiny Basic, Microsoft Enhanced BASIC (through a 6502 emulator) and a Snake clone. There’s an Atari Joystick port, but PS/2 (or maybe USB) keyboard support in a work in progress – for now you can send keyboard input via USB serial.

    Anyway, that’s not exactly what you’re looking for, but I hope it’s food for thought. There’s videos on my Twitter – https://twitter.com/therealjpster/status/1053698944360951813/video/1. And yes, that is *that* T-Shirt – it was a gift from my wife 🙂

    Reply
    • Mokkel

      65c02-CPU @ 8MHz
      64k RAM, 32k ROM
      TMS9929 or V9958 for video (no FPGA)
      YM3812 (OPL2)
      UART 16550 for RS232
      An ATMEGA 8 for storage (sd-card), PS2-Port (keyboard, mouse)an RTC (Maxim DS1306)

      Bonus: No SMD parts, as far as i know.

      Reply
  18. Joseph Ruhf

    You mention the Mega65 in this article. I happen to also have a problem with it which is preventing me from totally wanting one, though it is not that it is expensive or C64-compatible hardware (which being just a way to put FPGA technology into service to preserve that part of history since C64s can’t last forever after all) and only partially that it is FPGA-based (specifically that the MEGA team has put the CPU in the FPGA with the AV interface, I’m a bit weird that way). What it really is is that if Commodore actually did survive to make a successor to the C65, I think maybe they would have made a 6510-compatible processor with a 16-bit data bus which they would use in that “Commodore 130” (this is not the 65816, which only has an 8-bit data bus) which would have been shipped in the mid 1990s. But, to your design, how about having your BASIC implemented as a coprocessor and not just a ROM (presumably) for the 65816 to read from?

    Reply
  19. John Seymour

    As someone who primarily uses 8-bit computers for sound and music (and, well, when my kids get older I’ll use them for education as well), here are some thoughts:

    – I love that you considered adding OPL3 support even back when you were looking at the NES-on-a-chip. I don’t know much about those NES emulator chips but they probably already have their own NES sound emulation But of course, you’re a musician too so of course you’d want other options!
    – Whatever you go with for sound, obviously shipping with one standard chip would allow game developers to have a standard platform for including music. After that, also allowing expansion peripherals for sound creation would then allow people like me to explore other options as well.
    – With that in mind, MIDI out probably shouldn’t be the out-of-the-box standard. I love MIDI and use it a lot. But, there’s nothing I could do with MIDI from an 8-bit computer that I can’t already do from any modern computer. One might even argue that 8-bit-style sound design allows for a lot of freedoms that MIDI sort of stifles. As long as you have a nice flexible system for expansion peripherals, MIDI support can be added that way for people who want to play with it.
    – If anything, MIDI input would be more interesting. It’d be fun to write a program that takes in MIDI input and reinterprets it as commands sent to whatever sound chip is included – kind of like what mGB does for the GameBoy. But again, such a MIDI input could be had via a peripheral.

    I’m really looking forward to following the development of this project. Best of luck!

    Reply
  20. Hunter Graham

    As far as the [insert correct technobabble here, I think I’m specifiaclly looking for “kernel”] is concerned, what about virtual desktops a la *nix? Set up at least two different environments for programming and testing each, easily switchable via key combination? (Though, the more I think about it, the more complicated something like that sounds; but then again the most programming experience I’ve ever had was with Scratch, so I don’t really know how valuable my word can be in this situation.)

    Reply
  21. Dan

    David…. $30 on a computer education toy? $50 i could see might be possible, $100 is a realistic expectation and might have real market potential. South of $50 Though and the issues of delivering anything of quality out of the gate starts to go out the door. Plus you’re wanting to make an all new platform in a this could of happened vibe. For the platform to last or catch on it has to be supermultifunctional or irreplaceable as a device. Even though it’s a good idea just note people are making Raspberry pie like teaching tools in the $100-$150 range that are selling like hot cakes. Kanno being the new v-tech in learning computers department. Yes $30 is a nice sweet spot that almost anyone could afford and on that point no one will argue on that point however if you use that as the limiting factor it’ll hurt the project and could kill it. Either way I’m excited for this project. And David we both know this is your passion project. And remember you’re right that now is the time to see if it can happen.

    Reply
    • The 8Bit Guy

      The original Commodore DTV was in the $30 range plus it included a ton of licensed games. So I don’t see it being impossible to sell a similar product without the games.

      Reply
  22. Oskars Marcroft

    Aww, I was looking forward to writing a recompiler and translation layer for compatibility with C64 assembly… 😔

    Reply
    • Oskars Marcroft

      As in, you just load a C64 program and the computer figures out “hey, this program wants to set 1024, that must mean it wants to put a character in the top-left” and stuff

      Reply
  23. Oskars Marcroft

    Recently I have been thinking about creating my own fantasy console, currently called Canid. Luckily, it’s still pretty early in development, so I should be able to adapt it to meet most or all of your criteria. Just one question though – would a 16-bit processor be acceptable, as long as it maintained compatibility with the 6502? (Like maybe Canid’s CPU starts in 6502 mode, but a special “go 16-bit” instruction would disable the 6502 portion and enable the 16-bit portion? Or a coprocessor that dynamically recompiles 6502 ASM into Canid ASM? Or something?)

    Reply
  24. mike

    overclocked 68000 with arduino glue logic: tia, interupts, dram refresh. i wanted software wavetables instead of opl.

    Reply
  25. Charlie Worton

    Hi, David! I’ve been enjoying your YouTube channel(s) for some time. I have similar skills in programming and music, and a love for my first computer: a Commodore 64. And I have thought how really cool it would be to have a ‘modern’ C64; great graphics and sound, and complete, unhindered access to the underlying hardware. What you’re working on sounds fantastic, and I’ll be really fascinated to see what you come up with.

    I don’t know if I’d stick with an 8 bit design, though. By modern standards, 8 bits can be somewhat limiting. I think in ‘my’ dream machine, I’d have a 16 bit data package and a 32 bit address space, similar to the Motorola 68000 (Atari ST, and – I think – original Mac). As much as I loved my C64, an 8 bit / 16 bit architecture can get pretty cramped. For example, if you went with a screen resolution of 640 X 480, then you have 307,200 individual points to address. Tough to shoehorn that into the 65,536 address space of a 16 bit architecture. The result is that you cut resolution, or stack multiple points into a byte of memory (4 bit cells) which makes it more difficult for a beginner to program, or both. So, I dunno… tradeoffs. Our dreams may be different. But a good graphics program requires both resolution and color depth, and that boils down to lots of memory and CPU power.

    Similarly, I think anything you can do to support Midi would be fantastic (as would a spectacular on board sound chip, sorta like a super SID).

    I once wrote a program that broke out all the functionality of the SID chip into slider controls, displayed on screen but controlled (I think, my memory is hazy) with the cursor keys. I had a rudimentary musical keyboard overlaid on the computer keyboard; the result was that people could make changes to individual values in the SID chip, and play simple songs to get an idea as to what each change would do to the tone. I should have written it up and submitted it to Compute! gazette. However, I think that ship has sailed.

    Oh and on a somewhat different note, regarding your website: I have a fair bit of difficulty distinguishing the gray text from the white background. Is there any chance that you could make the text a bit darker, or a bit thicker? Maybe it’s just me… but it could be interesting to run it past a few other people, and see if others feel as I do. Everything else on your site is spectacular.

    That’s about it… but I gotta say, in closing, how amazed I am with everything you’re doing. You really have a tremendous amount to offer, and I’m really pleased that you’re putting your talents to work in this arena.

    Keep rocking!

    >Charlie

    Reply
  26. jin

    for basic and assembler as well as other text mode programs – please please please give us an 80 column card!

    I’m totally enamored with the idea of a retro computer too and for the same reason – that modern environments are just way too complex to grasp. but big blocky low res text would be a deal breaker for me.

    I bought and wanted to love the PICO-8 but its absurd text mode made me give up on it.

    80 column card, 320×240 graphics res, ideally HDMI/DVI compatible (actually, have you seen those dot matrix displays some of the mini arcade collectibles are using? something like that would be ultra rad).

    Reply
    • Gozar

      You can open a PICO-8 “cartridge” in any text editor and work on your code from there. I use vim with lua highlighting, makes programming the PICO-8 a lot easier.

      Reply
      • jin

        yeah i know but that spoils the whole effect. i want to be able to everything within the console environment and the ability not to do that totally kills it for me.

  27. jin

    oh! and would much prefer SD CARD/DRIVE storage over c64 disk drive. or at least if it was option.

    Reply
  28. jin

    actually, having looked over stefany’s computer, I really hope you guys can come to an agreement cuz I really like what she’s going for. 80 column text mode and a very civilized 640×480. better than true retro but not unreasonably so.

    hopefully, you guys can compromise and make the extra features add ons or something… cartridges?!

    Reply
  29. Fred Bednarski

    The idea of an 8-bit learning computer is amazing and I would gladly buy one from you (because I know there will be community and support for it).

    From where I stand, for the computer to be successful it would need to be around $50 mark to start with. If it is too pricey, you will miss the “curious” crowd, people who just want to see what the whole fuss is about. The hard core hobbyists will be there no matter what IMHO.

    It will need to have a more modern BASIC, one that does not require manual line numbering, because you want the programming skills to be easily transferable.

    Lastly, it needs some kind of user/expansion port. Not only for people to make new peripherals (joystick port, disk drive, usb, etc.), but also so you can connect some sensors and write some programs using those (I remember playing with temperature sensor at school on a c64 back in the day).

    Also, if you will make this sucker, please also sell a spiral bound manual that will help new users jump into it.

    Reply
    • jin

      OHHHHHHHHHHHHHHHH… so much yes on the spiral bound manual!!!

      can you imagine, a modern programming manual written by david?!?! he’s so great at explaining things like sprites and music on his vids, this book would be like the holy grail of intro to CS.

      and it could be sold separately on the kickstarter… so if people don’t want to get the actual computer, they can chip in at a lower amount just for this spiral bound bit of awesomeness.

      and it would probably sell well on amazon afterwards as well.

      Reply
  30. KJ

    Im more of a user than a developer, looking for new realeases and software combinations, and hardware upgrades or extensions. While I love old and bare bones computers, 1 thing really annoys me with them all; the need to use a pc next to it to do anything. As everything is on the internet these days, that becomes a necessity. Problem is, pretty soon one are spending far more time on the pc to get anything done, than on the actual “hobby” computer itself. My dream would be a small non pc one could tinker with, but that also allowed one to fully access all of todays digital world. Kind of like a c64, just without the limits. Large mappable (optional) extended ram, like 8 gigs or whatever. Id like to see a platform that could extent into today, and tomorrow, not just frozen in time between pc/m and i286.

    Something we could move forward, and be fully usable on its own, without the need to rely on a laptop next to it to do the most basic task, like surfing. Oh, and 80 columns, full color please.

    Reply
    • Joseph Ruhf

      The only problem with an 8-16-bit computer being able to browse the modern internet is that the bare-bones configuration that most of what is on web pages practictpally assumes is actually 32-bit even if it looks like the pages themselves are sort of bare bones. In other words, your dream computer needs to be a Pi clone to be useful for what you want to do with it. Moreover, internet connection just makes it all that much easier to threaten the computer’s security, which is just about the last thing needed for a hobby/educational computer. Not to mention, on-line services and networking weren’t exactly the first things most users would have cared about at the time of the home computer wars and their most immediate aftermath (77-94) anyway. History guides David away from the computer not needing a laptop beside it for the particular task of surfing most obviously of all. Other than that, history is not a very useful guide to what to do because there is no known precedent for an 8 Mhz+ 8-bit computer where the speed comes standard; the closest you can get is the 68008 in the Sinclair QL (7.5 MHz) and the TI-84 Plus series, in spite of its up to 48 MHz processor, is officially only a handheld calculator. Nevertheless, if you go by the near miss Sinclair QL (3-bit RGB in 256×256, blue is don’t care in 512×256; 6-pixel wide soft text characters), full color and 80 columns should be given.

      Reply
  31. Erlend

    quote: Lots of documentation on how to code for the NES
    Can do most of the work in an emulator
    would be very cheap with the final product costing around $30
    Would run almost twice as fast as a C64
    Would be like a hybrid of Nintendo + C64, which would be cool.
    Might even be able to get some NES games to work on it.

    so it would be a Nintendo 64… Oh, wait…

    Reply
  32. Jecel Assumpcao Jr

    If you could integrate Basic and assembly into a single system the machine would be much nicer to program. The BBC Basic was famous for this, but I think their solution was not as seamless as it could have been: http://central.kaserver5.org/Kasoft/Typeset/BBC/Ch43.html

    If the C256 has stuff you don’t want, can’t you use the same board and just not solder the extra components? That would give you a C256 Model A and a Model B with no extra development cost.

    Some FPGAs can be very cheap (see what a $5 Lattice ECP5 can do, for example) and some have internal Flash so you can use them as if they were an ASIC, including setting things up so they can’t be reconfigured in the field.

    If I were using a 6502 core in a project (instead of an actual chip) I would probably extend it to directly implement Woz’s Sweet 16 in hardware. It is not as nice as many other 16 bit designs, but very retro. Speaking of extensions, the DTV chip goes beyond pure C64 reimplementation.
    https://web.archive.org/web/20110207143535/http://picobay.com/dtv_wiki/images/3/3d/DTV-Version2-Programming.pdf

    Note that the cost of making an ASIC in an older technology, like 350nm, can be low enough to make crowdfunding an option. This attempt didn’t work, but the idea itself is good: https://www.crowdsupply.com/chips4makers/retro-uc

    Reply
    • Joseph Ruhf

      I have actually suggested to David that if he is building a BASIC of his own design into the computer, why not outdo ’80s microcomputers by implementing it as a coprocessor and not just a ROM for the 65816 to read? That way the BASIC and the 65816 assembler will be on a more level playing field out of the gate and he’ll have a chip he can sell independently of the machine (he should do that in my opinion [the SID was the best sound chip of the early ’80s and Commodore wasted it by keeping it tied up in the C64 line]).

      Reply
  33. Kerneal

    Hi,
    I’m a follower of the youtube channel, and a really casual programmer on C64.
    I really like the appeal of computers from an era I didn’t lived in, but there’s a miss to my eyes :
    I REALLY like multiplayer, and from the little I know from 8 bit computers, LAN-like multiplayer games are not a thing. Could it be a good idea to have dedicated I/O pins ? These could permit the computer to interact with the outisde world, but also make possible an hypothetical inter-computer connection possible.
    I don’t know if the serial pins can be used that way, but anyway ^^.
    Greetings !
    P.S. : I’m learning english actually, please forgive any mistakes ; P

    Reply
  34. Niek

    Hi David! Sounds like an interesting idea. I’m assuming your machine doesn’t have to be C64 compatible, right? A while ago, I created an 8-bit system on an FPGA, a recreation of the Sega Master System, see https://reflectionoftheages.com/ I kept it as basic as possible, and so the FPGA on it includes everything, the Z80, and the VDP and sound stuff. Games can be loaded from the SD card through a simple menu system I wrote in Z80 assembly. You can see some pictures and videos on the website. Let me know if you need help with creating e.g. the VDP part of your system: i.e., the drawing of the background + sprites. This can be done using a relatively low-cost FPGA, and it could interface with a real 6502 (in case you don’t want to use one inside the FPGA). You could also make a similar decision about the sound, external or internal, etc. etc. You’d want to add some external RAM also. I have a day job so I may not have time, but always willing to share ideas and possibly help, as it sounds like a fun project 🙂

    Reply
  35. Roger5000

    I would like a Go 64 mode

    I never owned a C128. But if I understand correctly, it wasn’t just like an enhanced C64.
    Like the 80 columns mode allowed higher resolution and that was great and all, but it wasn’t capable of everything C64 graphics could do.
    If C128 could do everything in C128 mode, just faster and more and better. Then I think the C128 would have done better.

    I think both having an 8bit computer enhanced mode and a C64 mode would be an advantage.

    Around $70-$100 would be a good price range for something like this.
    So if the C256 Foenix is a good fit. Then go for it.

    Reply
  36. Aaron Bockelie

    One thing that I haven’t seen mentioned is what the “best” real world systems that the perfect learning system would be modeled after.

    I think some of the best learning aspects to a system such as this would be a mix of high(er/ish) programming concepts (objects, classes, abstraction), lower level (pointers, assembly, addressing, optimization) and of course things to do with it.

    Back when, I thought x86 was a confusing mess of memory models and cpu modes. The motorola cpus were always tied to difficult to modify expansion busses and software tools. ARM felt similar.

    Current modern bus architectures for popular architectures right now that I can name (rasppi, arduino) are generally i2c or some other custom bit hammering implementation.

    I guess my question then becomes, would it make more sense to come up with a bus architecture to plug various computers into which gives you the standardization?

    For example, my motherboard plane supports “8 bit guy bus architecture” and I have an adapter card for an arduino, rasppi, or something else that speaks the bus protocol and is the primary CPU host card.

    Then, you add other cards: one person wants a SID, another wants an OPL3 synth, someone else wants MIDI.

    Something that has made both the arduino and the rasppi popular are the Hats available for them. If there was a miniature Bus architecture card instead, that might be a key to adoption. I’m not proposing a re-enactment of the ISA bus evolution, but something that allows the easy plug approach that is NOT usb, but instead far lower level, possibly with addressing, interrupts, and other implementations similar to old PC or Apple computers, would be very helpful.

    Even if it was just i2c with a nice packaging format, that gets a lot closer. Idunno, those are my ideas to this discussion right now.

    Reply
  37. Reinhard

    Hi David!

    I have given the whole matter a bit of a thought. Probably the whole point in building this kind of machine would be that it has its very own limitations. The charme of these old 8-bit devices somehow comes from the strange quirks they all have. And these ultimately are the effect of cutting the production cost as much as possible.

    So instead of dreaming up a machine that can do everyting imaginable and adding more and more features to it (hello, Raspberry PI!), you could instead start from one minimal premise and then make a device as cheap as any possible.

    My attempt for this lead me to this architecture:
    * W65C816S CPU (this is the cheapest 6502-compatible I could find)
    * 32 KB of ROM (EEPROM for development, one-time-programmable for final version)
    * 128 KB of RAM (smaller ICs are not much cheaper)
    * The cheapest version of the MAX 10 FPGA (10M02SCE144C8G) to create a 640×480 HMDI signal and provide various glue logic and interface functionality.

    Add to this a voltage regulator, and various passives, plugs and pin headers and you should stay below $25 for parts.
    A PCB in form factor 10×10 cm could probably be made for 1$ plus shipping.

    The real problem now is to assemble the board. Most parts (especially in their cheapest variants) are SMD. Especially the FPGA is a real pain to solder. Even in its most hobbyist-friendly form it has a pin-pitch of only 0.5mm.
    So I guess you can not provide this as a DIY-kit, but need to have it built by a contractor. And here I am totally out of my depth in guessing what this may actually cost for a small production run.

    I was also thinking more about the actual memory map and other implementation details, but this would get to far now.

    Reply
    • The 8Bit Guy

      Exactly.. this is more or less the direction I want to move. The system needs to have limits otherwise it misses the point entirely. However, the hard part seems to be defining where those limits are. I want people to be able to code fun games on it, so obviously we need something more than an Apple 1 level of capabilities. Something roughly C64-like in nature would be good. But ultimately it needs to be somewhat easier to use than a C64 while still retaining some of that charm.

      Reply
      • Reinhard

        So I would say 128K of multi-purpse RAM and 128K of FLASH (there are some quite cheap ICs for this as I have found) and the above mentioned 14MHz processor would be quite right.

        The video system could consist of the FPGA plus 128K of dedicated video RAM which would allow 320×240 pixels with a color depth of 8 bit. With color indirection (256 palette registers of 24bit RGB values) this would be low-resolution but very colorful and it would be easy to make those fancy color-animations no demo of the 8-bit era ever missed.
        The HDMI signal would nevertheless be 640×480, but this is just done hardwired by directly doubling the intermediate 320×240 video signal (so this would be one intentional limitation).

        I would avoid having more complex graphics or text modes or sprites. Instead the FPGA could assist the CPU in transfering data into the video memory more efficiently: For example there could be a mechanism where the CPU just writes 8-bit patterns which would then be spread out over 8 individual pixels in the frame buffer.
        Pixel-fine scrolling of the whole screen should also be supported.

        Raster-interupts are a powerful tool and not hard to implement, so yes. Same with vertical blanking of course.

        For advanced tricks like double-buffering, the available 128K of video RAM could be organized in shorter lines or a shorter screen to make space for two images.

        I guess with this capabilities some pretty nice games could be made.

      • Stephen Douglas

        The limitations of early machines were endearing not merely because they were quaint, but because they made for “comfortably sized” development environments for younger, learning minds. The memory maps of the C64 or Atari 8-bit were readily understandable and useful to a young programmer. Sprites, screen memory, re-definable character sets, sound chip registers, expansion ports, joystick ports, assembler subroutines…all accessible because of memory maps, peeks, and pokes. Boot up to BASIC and you immediately realize what every 8-bit kid realized-the only thing keeping you from creating a game just as good as the one at the arcade, or on Intellivision, or the one you just bought on floppy was memorizing that C64 manual and several months of sneakily typing in the dark, long past bedtime.
        Modern features that hinder learning: overcomplicated IDE’s, languages with too many keywords, header files/modules to include or import, OOP. Oh yeah- and boot-up, shut down and compile times.
        Needed: A structured, functional/procedural language with labels and line numbers. Pythonic variables and operators. Functions that look like subroutines.C style IF and While. No Classes.But, NO SPAGHETTI CODE! With available assembler and sprite editor.
        Built-in keywords/methods for sprites, importing background images, sounds, joystick/IO, etc. At least 80 columns.
        All user accessible hardware features linked to documented memory locations. Memory of whatever size. If its inside the case, its hardwired, locked down and standardized. All mods are external.
        Yet an NES cartridge with Micropython, PS/2 ports and a microSD slot is intriguing….

  38. Tom Wilson

    Personally, I am liking the 65816, but since that processor supports 16MB of address space, it’s just as easy to put on 1MB or 2MB as it is to put on 128K. Once you pass 64K, then you’re doing the bank switching thing anyway (but using the CPU to switch banks, rather than an external MMU), so you might as well go with more RAM to allow for more functionality.

    That still keeps the 8-bit feel, but the extra memory is very useful – hence the reason the 1750 and 1764 REUs came into being in the first place.

    Reply
  39. Reinhard

    A follow up to my architecture proposal:
    To reduce cost even more, the whole flash ROM could be eliminated, and everything would just run from a single 256KB RAM chip. Initializing this RAM at startup to any given content would be the task for the FPGA (an FPGA is really such a wunderful and versatile device). Data will be drawn from a single super-cheap serial flash IC which could even be mounted on an exchangable cartridge. Imagine having such cute little game cartridges…

    Reply
  40. Helge Frisenette

    It’s very simple:

    Let history be your guide.

    This whole thing revolves around love and fascination with hardware from a certain period in time. That is: Simple home computers from the eighties.
    So it’s not just any kind of simplicity, and eight bit you are looking for.
    Otherwise there would be plenty of options.

    What you want to do is go whole hog, and design a computer that would have been physically and economically sound In the early to mid eighties.

    By that I mean the computer should have been possible to sell in the then current market of the time, to the average consumer and make a profit, if not a large one, for the fictional company.
    And, the machine should be possible to manufacture with, then, current technology.

    Anything else will just lead to biggerism, balkanisation, and “I can do better/why not this change” attitude. If not now then down the line.

    This earnest, forthright approach will lend you natural, impenetrable authority and authenticity.

    You need to set the timeframe and historical context first.
    You already wisely decided not to want to be Commodore.
    If we go with the premise that in our revisionist past Commdore still ousted Tramiel a little after the 64 launch and success. That would leave them incapable as a company of anything else but buying the Amiga tech and marketing that.
    The rest of Commodores output through to the end, was just scatterbrained holdovers and filler. So let’s forget SID and VIC as you suggest.

    That leaves us with the scenario of a small company (a la Sinclair, Amstrad, Acorn etc.) trying to do an eight bit computer, either at the same time as everybody else (77 – 82), or a little after the first wave, into a little more mature market in the 83 – 86 window of opportunity.

    I’d go for the latter for obvious reasons.

    After that the computer more or less designs itself.
    Indeed there where designs very much like what I’m going to describe.

    6502 is a given since it’s simply the best 8 bit CPU of the time. It had a huge library of tools and familiarity with developers and gave excellent bang for the buck.
    It was long in the tooth even then, but still streets ahead on most counts.
    It would have been simple to integrate into a later more forward thinking CPU design, like what almost happened with the ARM CPU.

    6502 lends itself to simple multiprocessing quite well. Especially dual CPU configurations.
    Have two of them in you design.
    One as the main and one as a very flexible VPU/SPU (A/V chip).
    Similar setups was done on the Tube expansion for the BBC micro, and the Fujitsu FM-7.
    The ZX-Spectrum shows us in a very scaled down limited version, that it would be possible to drive graphics from a CPU alone, with all the promises of freedom and flexibility that ensues.
    Of course you’d still need something for scan-out and a DAC.
    16 colours from a well chosen palette would be fine. Larger palettes are at best a gimmick in this class of computer at this time, as shown off by the Amstrad and Atari 8 bit.

    YM2203 would be an obvious choice for sound generator.
    Classic PSG and reasonable FM in one small package.

    The two CPUs serendipitously allow for an address space of 128Kb with a nice pretty hard cap on memory size unless an unnecessary MMU was employed.

    They would talk with messagepassing through a small (2-4Kb) but fast SRAM buffer.
    Very importantly, this same buffer would also allow the CPUs to run at a high clock while accessing it.
    The period correct budget for the buffer RAM speed would be the limit for the potential speed.
    Of course Page Zero would also be stored there for both CPUs.

    Include BASIC by all means. But BASIC was never a very good or logical choice as a first language to learn, or indeed some would say not at all.
    SO, include one of the greatest languages of all time FORTH.
    It’s small, very flexible and fast. A very surprisingly large amount of todays process control is based on FORTH or FORTH derived software. Think of Postscript.
    Another obvious alternative language would be one of the many JOSS derivatives, for example FOCAL.
    JOSS was in most (important) ways a great improvement on its successor and imitator BASIC. Again, small, fast, potentially interpreted and teaching better common practice.

    Reply
    • Nicholas

      Perhaps you forget the 6809. Obviously similar to 6502 (6800 roots!), yet with more advanced ISA.

      Reply
      • Helge Frisenette

        Nah. It’s really not that much better. The code is a bit tighter and there is some nice features and a slight speed difference but not anything to make it really worthwhile for a massproduced computer.
        You could buy several 6502s for the same price as a single 6809. Therefore it would not be period correct.
        Notice how the few computer that used it, are from manufacturers who didn’t have the budget or need for specialty chips and just wanted a quick standard design. Like Radio Shack, Fujitsu or Milton Bradley. It was also popular in arcade cabinets, that had typical production runs of a few thousand.
        You still have the problem of not being able to address more than 64Kb and small bang for buck ratio.
        Two 6502s set up to work on alternate clocks on a small buffer with their own individual 64Kb (or less to make space for ROM) would beat it any time for less money.

    • Joseph Ruhf

      Helge; I agree with you, at least symbolically. However, I see the concrete thing David is planning to do as more of a historical reenactment à la Renaissance Fairs (not to my knowledge much of a thing outside the US and perhaps Canada), in that it may have the theme of a “distant” historical period, but there are nevertheless obviously more modern phenomena such as ATMs and vendors able to permit paying with debit/credit cards there. Analogously, even though he wants to limit himself to using an 8-bit processor (i. e. the 6502/65816), I doubt he simply wants to build the best features of the major 128K machines of the time into the same machine even if they may have been surprisingly amazing for the time (e. g. if you only care about resolution, the Amstrad CPC6128 can display a total of 832×288 1-bit pixels per field, with colors chosen from a palette of 27 [3-level RGB designed so as to be able to show more than 3 levels of gray/green/amber on monochrome monitors] and the Atari 130XE can drive from software true interlaced modes up to 480 lines high and modes which can effectively show more than the 256 colors logically present in the GTIA palette [https://en.wikipedia.org/wiki/Atari_8-bit_family_software-driven_graphics_modes]). And even though those palettes may have been little better than gimmicks at the time, they nevertheless prevented neither machine from ultimately making profits. However, they are hardly gimmicks anymore, at least of the same kind as they were back then now that we have such as 4K HDR displays. Even so, I think that in a revisionist history where the C65 got to properly happen, Commodore would have gone on to make a “C130” (i. e. the Mega65) which would use a 16-bit data bus in native mode, but have 6502-compatible processor to be able to have a hardware “GO65” mode, and perhaps finally a SID-II sound chip to go with its VIC-IV video chip.
      But this revisionist history is not really relevant here because it isn’t Commodore that David really wants to be (even though I do have a fairly fully developed idea for a revisionist C128 with a VIC-IIDX with a 32 color palette and a high resolution 2bpp multicolor mode [with color attributes], making the low resolution mode capable of using 4bpp, and 16 hardware sprites and a four voice SID-II with the ability to generate trapezoid waves, at least exclusively in the fourth voice). In fact, I imagine him as Tandy (post-TRS 80 Model I) in your revisionist history (although Tandy was by no means a small company at that time, and for which matter, neither was Sinclair or Amstrad), although, as I should reiterate, his plan is not to simply play along with this idea (that would be overly affected in this context), but to reenact history à la Renaissance Fairs (not to my knowledge much of a thing outside the US and perhaps Canada), in that it may have the theme of a “distant” historical period, but there are nevertheless obviously more modern phenomena such as ATMs and vendors able to permit paying with debit/credit cards there. This is why I would prefer for him to ultimately use the 65816 as the CPU of the machine over the original 6502, even multiple cores if he wants it to be able to break the 16M(i)B barrier of the basic chip. But at the point of 28-32-bit addresses, it starts to be insufficient to the machine to only be running an 8 bit data bus. For support chips, I have suggested a coprocesser more directly targeted by the BASIC so as to have it compete on a more level playing field with the 65816 assembler. As for video colors, a total palette of 16, however “well-chosen”, though all that may be necessary, is not really sufficient for what he wants it to be, especially if he is indeed going with the 65816 (e. g. the Apple IIgs which uses it is able to select 16 colors from a total of 4096). For video resolution, I would say that at the point of 1080-1152p/i-ish, it starts to be insufficient to the machine to only be running an 8 bit data bus. As for the sound system, he can make it practically as big as he wants, especially if he is indeed going with the 65816 (e. g. the Apple IIgs which uses it comes with stereo audio essentially built in and even has a tool set which allows for quadraphonic audio). In sum, using a 65816 limits the machine to managing 4G(i)B of RAM and having a video chip driving a 12 bits per coordinate (4096 square in theory, 4096×1280 [2560×2048 for a more square picture] in practice) display with 12 bits per sample for each of RGB or YCbCr if he wants the CPU’s 8 bit data bus to still be rather sufficient to what the support chips can do. But of course this is only a very high ceiling for what the machine should be before I’d rather have it running (at least) a 16 bit data bus and honestly I’d be just as well if he built something like a marriage of the best features of the Color Maximite and the Gigatron (i. e. 64-color [6-bit RGB] palette with 304×228 [608×456] 6bpp and 608×228 [1216×456] indexed [and perhaps attributed] 3bpp modes and hardware sprites and a blitter and a built-in sound port [I assume the Color Maximite can have the better sound given that it uses a microcontroller]) around a 65816 and shipped it with 192K.

      Reply
    • Joseph Ruhf

      Helge; I agree with you, at least symbolically. However, I see the concrete thing David is planning to do as more of a historical reenactment à la Renaissance Fairs (not to my knowledge much of a thing outside the US and perhaps Canada), in that it may have the theme of a “distant” historical period, but there are nevertheless obviously more modern phenomena such as ATMs and vendors able to permit paying with debit/credit cards there. Analogously, even though he wants to limit himself to using an 8-bit processor (i. e. the 6502/65816), I doubt he simply wants to build the best features of the major 128K machines of the time into the same machine even if they may have been surprisingly amazing for the time (e. g. if you only care about resolution, the Amstrad CPC6128 can display a total of 832×288 1-bit pixels per field, with colors chosen from a palette of 27 [3-level RGB designed so as to be able to show more than 3 levels of gray/green/amber on monochrome monitors] and the Atari 130XE can drive from software true interlaced modes up to 480 lines high and modes which can effectively show more than the 256 colors logically present in the GTIA palette [https://en.wikipedia.org/wiki/Atari_8-bit_family_software-driven_graphics_modes]). And even though those palettes may have been little better than gimmicks at the time, they nevertheless prevented neither machine from ultimately making profits. However, they are hardly gimmicks anymore, at least of the same kind as they were back then now that we have such as 4K HDR displays. Even so, I think that in a revisionist history where the C65 got to properly happen, Commodore would have gone on to make a “C130” (i. e. the Mega65) which would use a 16-bit data bus in native mode, but have 6502-compatible processor to be able to have a hardware “GO65” mode, and perhaps finally a SID-II sound chip to go with its VIC-IV video chip.
      But this revisionist history is not really relevant here because it isn’t Commodore that David really wants to be (even though I do have a fairly fully developed idea for a revisionist C128 with a VIC-IIDX with a 32 color palette and a high resolution 2bpp multicolor mode [with color attributes], making the low resolution mode capable of using 4bpp, and 16 hardware sprites and a four voice SID-II with the ability to generate trapezoid waves, at least exclusively in the fourth voice). In fact, I imagine him as Tandy (post-TRS 80 Model I) in your revisionist history (although Tandy was by no means a small company at that time, and for which matter, neither was Sinclair or Amstrad), although, as I should reiterate, his plan is not to simply play along with this idea (that would be overly affected in this context), but to reenact history à la Renaissance Fairs (not to my knowledge much of a thing outside the US and perhaps Canada), in that it may have the theme of a “distant” historical period, but there are nevertheless obviously more modern phenomena such as ATMs and vendors able to permit paying with debit/credit cards there. This is why I would prefer for him to ultimately use the 65816 as the CPU of the machine over the original 6502, even multiple cores if he wants it to be able to break the 16M(i)B barrier of the basic chip. But at the point of 28-32-bit addresses, it starts to be insufficient to the machine to only be running an 8 bit data bus. For support chips, I have suggested a coprocesser more directly targeted by the BASIC so as to have it compete on a more level playing field with the 65816 assembler. As for video colors, a total palette of 16, however “well-chosen”, though all that may be necessary, is not really sufficient for what he wants it to be, especially if he is indeed going with the 65816 (e. g. the Apple IIgs which uses it is able to select 16 colors from a total of 4096). For video resolution, I would say that at the point of 1080-1152p/i-ish, it starts to be insufficient to the machine to only be running an 8 bit data bus. As for the sound system, he can make it practically as big as he wants, especially if he is indeed going with the 65816 (e. g. the Apple IIgs which uses it comes with stereo audio essentially built in and even has a tool set which allows for quadraphonic audio). In sum, using a 65816 limits the machine to managing 4G(i)B of RAM and having a video chip driving a 12 bits per coordinate (4096 square in theory, 4096×1280 [2560×2048 for a more square picture] in practice) display with 12 bits per sample for each of RGB or YCbCr if he wants the CPU’s 8 bit data bus to still be rather sufficient to what the support chips can do. But of course this is only a very high ceiling for what the machine should be before I’d rather have it running (at least) a 16 bit data bus and honestly I’d be just as well if he built something like a marriage of the best features of the Color Maximite and the Gigatron (i. e. 64-color [6-bit RGB] palette with 304×228 [608×456] 6bpp and 608×228 [1216×456] indexed [and perhaps attributed] 3bpp modes and hardware sprites and a blitter and a built-in sound port [I assume the Color Maximite can have the better sound given that it uses a microcontroller]) around a 65816 and shipped it with 192K.

      Reply
  41. Joseph Ruhf

    David… if you are considering building it into its keyboard like they did with most home computers of the time, there are at least these two DIY keyboards you can build it into:
    https://input.club
    https://olkb.com
    They are both mechanical and open source.

    Reply
  42. DoomRater

    Sir if you include both a BASIC and an assembly development tool built into the system, I’m sold. Just reading this article made me salivate and giddy. I never had the opportunity to acquire an assembly cartridge for the C64 and had to attempt to write my own assembler for the system IN BASIC in order to move forward with speed gains… and I sabotaged myself right out of the gate by compiling each line of code into machine language as I entered it. “Save memory”, I said. “It’ll save on resources,” I said. Oh how nieve… an opportunity to right this wrong would be the most awesome revival of an old game I wanted to make.

    I did go on to eventually write some iterations of this game in QBasic, but it never felt the same, and the final game to have the fighting game engine I designed was a hybrid RPG fighting game that I never finished. (Don’t worry, it was fanfic plot trash on top of being self coded)

    An even more fun project might be to try demaking Undertale for a 6502 based system. I could see that being a lot of fun and challenging enough to really get me going again. I’ve been away from coding and I’m dying to get back into it.

    Reply
    • Joseph Ruhf

      I have suggested above that the BASIC can be implemented as a high-level language computer architecture alongside the 6502/65816 to be used as the main CPU so the playing field between it and the assembler can be more level. BASIC computer architectures are in fact not unheard of. at least if you do not limit yourself to considering systems from since there have been cheap microprocessors (that is why this particular machine, the Wang 2200, has its CPU as an entirely separate circuit board). Doing a BASIC computer architecture in this context has the advantage that it creates a chip that is David’s to sell independently of the full machine to anybody who wants to use it in a project based around a different early microprocessor.

      Reply
      • Helge Frisenette

        A high level architecture would have been the logical choice at the time (and still is for that matter) for a company with the funds.
        But RISC was the buzzword.
        Nevertheless there was a few interesting attempts like the Transputer and Rekursiv, and some user wise at least, successful ambitious attempts like the LISP machines.
        None of them had the financial backing, access to the newest node or design prowess behind them to really take a serious stab however.

        And BASIC (as always) would be just about the worst choice for implementing in a HLA.

        It would be very ambitious even today with FPGAs, to attempts such a design. And again, you’d run into the temptation of “why not make it more or less contemporary”?
        It could be interesting to see unfold, but also with high chance of running into the sand or just bombing.

  43. Kazriko

    Have you considered going to something that is simultaneously higher end and cheaper? I know you don’t want to use the Pi and its Linux kernel, but there’s other alternatives like the ESP32.

    These can often be found for $3-5 for a System On Module unit. It doesn’t include any sound or video hardware, but has SPI, GPIO, and I2C to interface out to your own sound or video hardware. It also often comes with a couple megabytes of ram and flash rom integrated right into the module. Some people who have used it just used the raw grunt of the 160-240mhz cpu to draw straight to an SPI LCD display without a graphics driver chip. (See the “Odroid Go” project.) They include bluetooth and wifi right on the module, so you wouldn’t need to worry about the communications part, just the graphics and sound.

    It doesn’t use Linux, and can be coded at a very low level. A lot of people use Arduino to write code for it. Others have written a handful of other tiny operating systems for it, like Lua RTOS, and MicroPython. Both of those use good languages in the spirit of Basic as well. I have a WiPy myself, which is a Micropython based ESP board, and find it quite fun to play with. It doesn’t have a display though, you do everything through wifi and ssh/telnet.

    I’m sure a basic interpreter could be written for one of these with no problems at all. I’m sure if you had a video chipset that had 8-bit like limitations, and an FM Synth chip with similar capabilities to a SID, or maybe even a chip like a Yamaha YM2612, people could make buttery smooth games that feel like better, faster versions of the old games without the processor and memory limitations imposed by a 6502 descended chip.

    There are some games for the platform, but they’re mostly homebrew and not ridiculously plentiful.

    Reply
  44. martin (aka mahjongg)

    As I posted in the first “my dream computer” thread, I’m currently designing an 8-bit color computer kit called RhoCoCo, I have created a forum thread here: https://www.raspberrypi.org/forums/viewtopic.php?f=62&t=226889
    and you can follow my progress here: https://revspace.nl/RhoCoCo_Retro_Home_COlor_COmputer
    Initially it was a Z80 based system (using a real Z80), but I re-thinked that and now am in the process of replacing the Z80 CPU with a second parallax propeller chip so that I can (also) simulate a 6502 CPU.
    The primary propeller should be able to generate C64 compatible video modes, and SID chip sound. (when I’m finished), but in principle it should also be able to generate spectrum video and a Z80, or Tandy coco video (MC6847) and an MC6809 CPU.

    Reply
    • martin (aka mahjongg)

      After a thorough deliberation I decided that using a propeller to emulate the Z80 (or a 6502) CPU has too many disadvantages, and to emulate a 6502 this way would mean I had to write the emulator myself, and it would be far slower than using a Z80. Therefore I decided to use a real Z80 processor.
      I can still implement a very nice Basic, a version of BBC BASIC, which has modern constructs, and uses labels, but also supports line numbers. It should also have a built in (Z80) assembler. I see no reason why it wouldn’t use a screen editor, like a C64 has.

      Reply
      • Joseph Ruhf

        You can use an eZ80 too. What concrete thing would you let making a neo-8-bit design impose extra-severe memory limitations on you for anyway? This includes display memory. After all, why stop once you’ve broken one historical limitation? If any one still applies only for symbolic reasons, don’t they all?

  45. Helge Frisenette

    Biggerism. Look it up here: https://blog.mattedgar.com/2017/06/25/against-biggerism/
    Either you go with history or you just reinvent the wheel and design another Pi clone. You could put whatever 8bit CPU on it, but who would care?

    Tell a story. Give me a reason to care. Give me some reasonable, interesting obstacles and challenges that make sense in the context.

    BTW. C65 was entirely too little and too late to be anything worth resurrecting.
    It was a harebrained abomination and was rightfully never realised.
    Even if the design had been realized and released at the right time around 84/85 it still had glaring oversights and problems.

    Also why bother with physical media?
    It’s nothing but trouble and all disc production has halted. That is one aspect where it makes no sense to emulate the past.
    A disc drive can be emulated with no problems.
    Buyers would be buying this as an advanced toy after all. No sense in actively making it uncomfortable to use.

    Reply
    • Joseph Ruhf

      The problem with what you want, Helge, is that the CPU that is planned to be in the machine runs faster than 4MHz and most historical machines of up to 1986 with CPUs that fast that most people know of, even if they only had a total palette of 16 or fewer colors, nevertheless would also have CPUs with built-in logic for generating 20-bit or longer addresses, and as such, 64 or 128K was about the smallest they would come, and the IBM PC (XT) with its 4.77 MHz 8088 was even intended from the start to be expanded beyond just 128K. This is why I have specified in my previous reply to you that 192K of built-in main RAM is implicitly just about the minimum I would be unwilling to reject on principle. As for the total palette, even though in principle I should be unwilling to reject even absolute monochrome video, in practice I would nevertheless want it to be at least 1 bit bigger. And as for resolution, I would be unwilling to reject on principle the provision of even one graphics mode wider than 384 pixels. Finally, even though in principle I should be unwilling to reject as little as a 1-channel beeper with three-octave range, in practice I would nevertheless want it to provide enough channels for simultaneous triads. That is, in fewer words, I would be willing in practice to accept little smaller than the equivalent of an IBM PCjr/Tandy 1000 with a second 64K expansion card rather than the Video Gate Array. I’m sorry if that’s enough to turn you off of this out of hand, but what is already planned, however nebulously, should not be unplanned for the sake of (most likely) a fringe concern, and the history, which you care so much about, of things like that that have already been done, perhaps ultimately inconveniently to your purpose here, has been what it has been.

      Reply
      • Helge Frisenette

        There is nothing to care about but history, recent or older. It’s all we have.
        The older history has the advantage that there is so much more of it and that we don’t have our face pressed up in it. Thus our perspective is radically different. Less subjective and more general.

        David seems to have settled on the 65xx line, for which I applaud him.
        That ISA could easily have been made to run at four megahertz in 83 – 87 (87s PC Engine runs at 7Mhz).
        The fun is *exactly* to cram as much code and content into a fixed smallish amount of memory, and see how much is possible within those bounds.
        128Kb is a sweet-spot in that it not only is easily addressable either by a single 8bit CPU with a VPU plus video ram. Or two processors with a scratchpad in-between.
        It will never become a real problem today with access to unlimited “discs”.
        16 colours has the advantage that it more or less covers the RGB triad combinations plus a half bright, and it is very simple and clean to implement in the RGBI model.
        It’t more or less what the C64 has, and also what CGA is when it is connected to a RGBI TTL monitor.
        You can always tweak on or more of the colours as is customary. Brown and a caucasian pink is favourites.
        More colours runs into problems with actually using them for something meaningful.
        A CLUT means indirection thereby slowness. Also the space taken up by a CLUT could be much better used for something else.
        Direct 8bit colours would be very slow to manipulate and paint dynamically. Framebuffer and assets would also take up an inordinate amount of space.
        You’d be able to display some nice static pictures. But where is the fun in that?
        A simple period correct Yamaha PSG/FM chip would fit the bill perfectly. They are still manufactured and deliver great very charming results.

Leave a Reply

Your email address will not be published.