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.
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.
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 🙂
Thanks, Matt. I’ll put something up tonight.
Any chance it could have a SN76489AN onboard for sound? https://www.revolvy.com/page/Texas-Instruments-SN76489 – that has 3 tone channels and a single noise channel, variants exist in Lady Bug arcade game, Colecovision, Sega SG1000, Sega Master System, and Sega Megadrive/Genesis as the PSG sound chip. This is far better than the sid chips if we can add some sort of FM chip with it, i.e. https://en.wikipedia.org/wiki/Yamaha_YM2612, which has 6 4-op FM channels, which one of them can function as a digital to analog converter for direct PCM. A lot of sega arcade games use those FM chips, as does the megadrive/genesis.
where can we get it
Will we be able to buy on this website or not
Tom What are you using for a graphics processer? Could I get a copy of your schematic? Spurred by Ben Eater and The 8 Bit Guy, I am also attempting to build a computer, one chip at a time. I am stuck on the graphics and the best I can find it the Yamaha TGV632(https://device.yamaha.com/en/lsi/products/graphic_controller/images/4GV632A50-1108.pdf). Like The 8 Bit Guy I really like the idea of currently available chips, not FPGA replicas. I have a source and want to know if you have a better option.
You should have made a video on this.
I second this, David if you make some progress or at least think about it more, please make video!
I completely third this. I’m not sure tons of people actually know this website is here!
This doesn’t meet all of your requirements but is very low cost and an interesting project with similar goals: http://basicengine.org
The history page is a fantastic read: http://basicengine.org/history.html
I loved reading that! Thanks for the recomendation. Wat a cool project
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.
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.
I think David should at least use the VS23S010 for video, as it neatly and cheaply solves the problem of doing NTSC/PAL video without an FPLA, and it allows the user to write directly to the video RAM.
For the CPU, I think the Zilog eZ80 would be much easier for users to program than the WDC 65816. The eZ80 can run in either Z80 mode or in native mode with a flat 2MB memory space. Hence, it offers the same benefits as the 65816 without the complexity. As there’s no strict requirement for the computer to compatible with the C-64 or any other existing machine anyway, the eZ80 would make a more sense.
The above combination would be fast enough that you could implement sprites in software via “KERNAL” routines are what-not, eliminating the need for an additional FPLA.
For sound, I’m torn between the OPL2 and the SN76489AN. The former would sound better, but the latter is much easier to program and doesn’t require an outboard DAC.
A UART and RS-232C interface are definite must-haves. The user should be able to decouple the UART from the RS-232C adapter and connect a MIDI 1.0 hardware interface to it if desired. Barring that, an onboard MIDI interface isn’t really all that expensive. It’s just an optocoupler, a transistor, two DIN sockets, and a few diodes and resistors. (There’s no compelling need to implement the MIDI THRU portion.) Maybe map a couple of gates into the memory space to switch Rx and Tx between the RS-232C adapter and the MIDI adapter.
http://academic.pgcc.edu/~njudy/mt/MIDI/midi.gif
To be honest, no matter what you put on the motherboard, I don’t feel a retro computer would be period authentic without a built-in mechanical switch keyboard. I totally understand why implementors decline to include one, but still….
Oh, and people who insist on using obsolete connectors like S-Video and PS/2 need to cut it out. I haven’t seen a new TV with an S-Video connector produced in the last decade. I only have one old TV that I can use my C64 Reloaded Mk2 with, and it’s not the one I’d prefer to use with it.
All modern retro-style mechanical keyboards and game controllers have USB connectors. I, for one, would love to use Retro-Bit’s Sega Saturn controller with a retro computer. I don’t want to have to buy adapters to make the proprietary Saturn connector work. The “U” in “USB” stands for “universal.” That ought to suggest which connector to use in new applications.
You should make it an option to code with line numbers. This is very important to me.
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
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.
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.
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.
Dating back to the C64 and C128 with programming in GEOS used
local labels and Global labels, etc. Something I hope can still exist on
Davids machine, Wheels OS and MP3 too.
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.
Nesdev Wiki page: https://wiki.nesdev.com/w/index.php/VTxx#VT09.2C_VT16.2C_VT18
V.R. Technology makes the chips. A few datasheets here: http://www.vrt.com.tw/datasheet.htm
Of course, the NES is widely documented, and there are many toolchains available, so documentation etc. is not an issue. 😉
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/
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…
There is an ARM assembler build in to BBC BASIC.
RISC OS Pico seems to boot to BASIC in 4 seconds: https://www.youtube.com/watch?time_continue=1&v=3Wxoc7agFtw&feature=emb_logo
I’d love to see a youtube episode about this by 8-bit guy
In addition, there is a *CONFIGURE command that should allow you to boot straight into BASIC. BBC BASIC was arguably the best built-in dialect available in the 80s (Commodore Basic was notoriously poor in comparison) and as said contains a built-in assembler. As the ARM was greatly inspired by the 6502, there are some similarities in the instruction set. As RISC OS doesn’t require much in the way of hardware, it will run very well on a $10 Pi Zero. Probably not what you’re looking for but would be a good solution for some.
Link to my latest Update.
https://shoutout.wix.com/so/c8MQzUS5Y
Stefany
Why don’t you look to Vulkan74 project? It’s made with a 6502 and all discrete logic 🙂
Maybe some blocks of Vulkan74 could be part of your computer.
http://forum.6502.org/viewtopic.php?f=4&t=3329
https://hackaday.com/2015/08/11/vulcan-74-a-masterpiece-of-retro-engineering/
https://www.youtube.com/user/LucidScience/videos
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.
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.
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?
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.
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.
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
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.
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.
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
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.
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
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?
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.
An extension of the 6502 could allow for a 6809 or 6309 CPU. Hardware compatible with the 6502 (especially since the 6501, repinned to the 6502 was a 6800 drop in replacement until Motorola said no.)
Yes, that would mean recompiling the code for the new CPU and changing the assembly code where there were differences.
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.
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?
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.
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.
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.
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 🙂
Hallo David,
do you know about the Steckschwein?
https://steckschwein.de/hardware/
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.
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?
They did make a Commodore 65. It never made it to mass market, but they exist:
https://en.wikipedia.org/wiki/Commodore_65
I know that already (it’s how I first found out about the potential Mega65). I was saying that I don’t totally want one because it isn’t what I think a “Commodore 130” might have been if it had ever materialized.
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!
So many great ideas here! Another one, what about turning a fantasy console such as PICO-8 into actual hardware (FPGA, bare metal implementation, etc.)? The software is already there, and people often appreciate their educational aspects when it comes to programming.
You can learn more about the idea behind fantasy consoles here: https://medium.com/@G05P3L/fantasy-console-wars-a-guide-to-the-biggest-players-in-retrogamings-newest-trend-56bbe948474d
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.)
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.
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.
If it is without a keyboard it could maybe be possible to go for $30, but that assumes that you can get economy in the plastic moldings (usually need a high number of products to offset the initial high costs).
Aww, I was looking forward to writing a recompiler and translation layer for compatibility with C64 assembly… ?
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
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?)
overclocked 68000 with arduino glue logic: tia, interupts, dram refresh. i wanted software wavetables instead of opl.
Hi,
Glue logic is better with a CPLD or FPGA, I think it would be better use an MC68HC000 or MC68010 with DMAC (MC68450) and 16 MB of SRAM.
bye
Angelo
whats the point of dmac if the ram is still sram?
A DMAC is a Direct Memory Access Controller, not related to the RAM type you need it even if you use DRAM…
dma is great, long live dma.
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
Basic listing? (If applicable)
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).
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.
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.
oh! and would much prefer SD CARD/DRIVE storage over c64 disk drive. or at least if it was option.
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?!
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.
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.
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.
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.
The biggest safety-net of an 8-bit or 16-bit system on the internet is the fact that there would be so few doing it… and it being ran on something other than x64 or x86 machine code. (RISC isn’t immune, but we’re not talking exposed ARM machine code either.) It’s the same thing that kept Linux from seeing as much as Windows has in Malware…(but now with Linux expanding some, at least in visibility, it is getting more attention from malware.)
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…
I hope this will come to fruition.
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
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]).
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
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 🙂
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.
If Foenix could have MIDI I/O it would be a big plus. Learning with music is more fun.
Regarding RPi.. there is Ultibo https://ultibo.org/faq/ Not BASIC, but Pascal!
Could be subverted to run a BASIC.. or even FORTH 🙂
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.
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.
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.
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.
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….
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.
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…
David,
you can take some ideas from this famiclone computer,
https://helloacm.com/the-8-bit-dos-by-famicom-clone-bbgdos-in-the-1990s/
imagine as this computer but with good basic that uses 32k or more and an assembler, it got floppy disk drive and cartridge slot and it’s famicom/NES, and no need fo memory mapper if you want to make a game because you can use the floppy disk…
What is your opinion about this
Have you heard about Potato Chip Semiconductor? http://www.potatosemi.com they build GHz 7400 series chips. It would be pretty sweet if your computer ran at 300MHz or faster.
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.
Perhaps you forget the 6809. Obviously similar to 6502 (6800 roots!), yet with more advanced ISA.
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.
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.
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.
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.
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.
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.
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.
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.
There is a computer with Basic based on the older ESP8266 chip plus an external 128KB SPI RAM with video output: https://basicengine.org/
a three core 68000 at 40 or 50 mhz.
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.
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.
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?
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.
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.
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.
You might also want to look into the enhanced capabilities of V.R. Technology’s “NES-on-a-chip” Famiclones, maybe you will find something useful for your project: https://wiki.nesdev.com/w/index.php/VTxx
How different from the C128 does Dave’s machine need to be, really?
Regardless of what is necessary, Dave is intentionally trying to make it (nearly) nothing like a C128 except for the superficial-ish features:
*65816 runs at 14MHz (most likely) and can physically address 16MB of memory, making it essentially necessary to put more than 64K of main RAM in the base machine
*Not intended to have an eZ80 or even a Z(1)80
*Does not necessarily have the same sound or video hardware, but may have sound or video hardware with comparable features, e. g./
**Maybe only has three independent sound channels
**Maybe still has a total palette of only 16 colors (including grays)
**Most likely has sprites and maybe also limited blitter
**80 column(+) mode, if it has one, will be from the same chip as any other(s) and most likely full color
*BASIC, written by Dave himself, has graphics and sound commands like Commodore BASIC 7.0
*Will have kernal written by Dave himself
*65816 assembler will also be in ROM
For my part, I have suggested that the BASIC could be implemented as a coprocessor which runs it natively (which has been before) and I would like 16 chromatic colors in the total palette (the simplest and “most logical” choice for this is to add chartreuse and spring green, which being full saturation green plus half saturation red and blue respectively, to CGA).
He did say: “Ultimately, whatever architecture I go with will be based on the 6502”.
And, he *is* the 8-Bit Guy, so it would make little sense to put a 65816 in it, which is essential a 16 bit CPU.
Having a CPU with that large an address space, would also invariably lead to biggerism and in turn lead to large, incomprehensible code.
Negating the very idea as I understand it, with this machine.
Better to have a small hard and fast cap in memory size.
That will lead to creative and clear thought about doing projects in the platform because you can understand why and how the limitation is there.
A BASIC dedicated processor is a bad idea because it will have to be implemented in an FPGA or the like.
This will lead to the exact balkanisation he is trying to avoid, or just as bad people being disenchanted because they think they can do better (some people always do), but aren’t allowed to.
Much better to have completely general CPU(s).
A second 6502 for video and possibly sound will let people write their own AV code that will be completely compatible across the board, and let one CPU concentrate on for example interpreted BASIC.
Or FORTH or something entirely different.
The dual 6502 (or 6800 in some cases), sometimes with small fast SRAM buffer, running at alternate clocks approach, is tried true with past computers and is simple clean and understandable (for example BBC The Tube interface, Fujitsu FM7, Pet disk drives, and some of Ataris arcade machines).
That not to say I’m against high level language architectures as such. On the contrary. But designing one since the seventies that is not reconfigurable is inexcusable.
If you go down that path you might as well design something completely new, different and contemporary.
A noble quest but also a much much larger task.
If my mistake hasn’t already been caught, the additional colors I requested aren’t actually particularly logical (they are backwards and not non-complementary) and I apologize for that, I meant to say orange and azure (full red or blue plus half green). If anything, this will be color-compatible, at least, with CGA and the C128 80-column mode and it has the advantage that it is completely symmetrical and has a brown tone (CGA was revised in 1983 to replace low yellow with brown). I also forgot to mention that the graphics will most likely feature smooth scrolling.
P. S. In fact, a 65c02 (or 65c816) supplied with maximum voltage (5.25V) can readily attain reliable operation at 20 MHz.
I also have the desire to build my dream computer. I am just learning how this stuff actually works after working 10 years in the IT field. My dream is to build a pure ternary system, 3-bits and analog in and outs. What I have seen that kind of fits your dream is the Humane Reader http://humaneinfo.com/ it is built with a central general purpose microcontroller an identical controller for Video and the same for managing the SD card, sounds like a commodore to me. I am not a fan of HDMI but using the Humane Readers Video processor you could do something like Brian Benchoff https://hackaday.com/2015/02/26/attiny85-does-over-the-air-ntsc/ wireless video. I am anaware of any TV set, even one with HDMI, that does not have an analog tuner. I will certainly be using the last idea in my project.
The Humane Reader does have PWM audio but it also has two important problems though, given that Dave is thinking of this computer as his dream computer: all it displays is black and white and what graphics it does display aren’t particularly complex. Anybody who follows Dave knows that is not all he is dreaming of; it’s just like the TRS-80 in what it looks like you can do with it, especially video game wise. And nobody who has commented here really wants that either. In fact, whoever has commented any specifications for the graphics wants full color high resolution graphics, even with sprites and smooth scrolling and perhaps a blitter.
Yes, Joseph Ruhf you are correct. I wasn’t trying to disregard the requirement for full colour. An implementation for video has not been decided on so why not start with black and white, like the Commodore PET. As the community obtains a greater mindset, as they’re already on the hook, who knows what solutions will appear using microcontrollers. David has already accepted the idea of multiple versions.
So, would the form factor be a game console with classic controllers and an SD card for loading and sharing homebrew “vintage” BASIC games? Maybe VGA resolution with C64 style sprites and programmable character sets. Memory addressable hardware, including a user port or gpio.
Let’s face it, not many people will be programming databases and print shop style banners with this thing. It’s the sheer joy of success when you get collision detection figured out and you shoot down that saucer or when your spaceship no longer scrolls off the screen. Your game comes together and you’re proud for the rest of your life! Of course, there’s also edutainment and STEM projects .You might could pull off a laptop like the Tandy 200 or slab like the Tandy 100. Perhaps…Commodore Pi, anyone? If this thing is stand-alone, surely it would have to be hybrid vintage and modern CPU’s to go online to an app store and forums.I’ve wondered if bank switching might help on the 6502 side of things?
Where the computer stands right now:
65c02 or 65c816 CPU @ 8MHz or higher (maybe Dave will put in hardware which permits it to run even faster than its 14MHz rating)
Built-in assembler
Structured BASIC with sound and graphics commands
Computer memory currently goes at just under 150MB/USD, so it will cost essentially nothing to provide a 65c816 with a full 16MB memory map if Dave wants to go all the way
The smallest number of physical colors anyone seriously wants in the palette is 16 (12 chromatic plus 4 shades of gray)
The smallest number of independent hardware sound channels anyone serious wants is three (cf. VIC/SID/YM2149/SN76489)
Raster interrupts and hardware sprites and scrolling (and maybe also blitter) for games and demos
Dedicated text mode (not necessarily with loss of colors)
At least 320*200 graphics resolution
No C64 compatibility
Since no 8-bit computer has been deployed which runs as fast as this design unless one counts TI-84 series graphing calculators which are really modern machines in spite of the 8-bit CPUs they are running, history is a bad guide to follow unless it is “history” that is happening, in effect, right now. And the cheap cost of computer memory almost prescribes using the 65c816 unless Dave wants to be unnecessarily cheap on the computer given that he will need to use a deca-core 65c816 or some other equally-insane thing to even make up a dollar worth of memory to put in, and being limited to getting the memory essentially gratis in exchange for just going and doing the biggest thing that is still sort of sane is a nice limitation to have. Speaking of the 65c816, the only computer from the 80s or 90s to officially use it as a CPU is the Apple IIgs, which being the largest reason the chip exists in the first place.
With history practically useless as a guide to what he is planning for the computer to be except for the most sweeping of generalities, Dave can claim authority whatever he puts into it, so why stop at having assembler and (accelerated) BASIC interpretation on boot? I would suggest adding in a C compiler, which should be straightforward since C has constructs which map efficiently onto typical machine instructions, and having C compilation on boot doesn’t effectively freeze the computer to pre-Internet since C has syntax in the style of Java, one of the most popular programming languages of today for client-server web applications. For physical colors in the palette, I prescribe that the computer should have the equivalent of 16 full-status ones at a minimum, which being the most generous to partial-status grayscale means adding in a 13th chromatic and declaring victory. However, this makes a prime number of colors. So, another must be added to correct the asymmetry and now he has the equivalent of the MC6847 with an intensity bit (or CGA with yellow and brown tones belonging to different colors) and hardware sprites and scrolling. But why use grayscale to make up a deficit from 16 at all? Have 16 chromatic colors and let the grays be a surplus like the Amstrad CPC does (though it actually has 24 due to using 3-level RGB natively). I would personally prefer to have RGBI plus orange and azure (these differ from yellow and cyan by the saturation of green, which is the most obvious color difference to the human eye) because the 16 color composite palettes of the old hardware have mostly not seemed to me all that logical except for being colors that the chip engineers liked or ones which are electrically convenient to these such as in the case of the Commodore 64. And the background graphics may really need not to be limited by attribute cells either given how cheap computer memory currently is.
Ignoring the diatribe like form of your stream consciousness post I can address a few things again:
Memory is not really an issue.
The only sane thing to do for cost and usability reasons is to incorporate flash memory for long term storage or “disc” space. All flash memory on the market today is as fast at as these old CPUs could possibly use at reasonable clocks.
I don’t see what it is you don’t get about the historic or throwback computer part.
It’s basically already there, only some people will be tempted to want to do stupid “enhancements”, where the conclusion and end result (if there ever will be an end) is a poor 8 bit CPU overclocked, and surrounded by modern hardware.
This will essentially be an 8 bit Pi.
The only logical and dare I say fun in this, is to stick to the origin of the idea.
I.E. old 8 bit computers, and our fascination with them.
Why are we fascinated with them?
Because they are clean, pure and small. They can be understood and mastered with relative ease.
Also they are a return to halcyon days of what is today regarded as a golden age.
If that golden age ever really was in the way we tell ourselves, is of less importance.
The ideal and idea is though.
The only way to keep this real, is to keep very strict check on what was actually possible economically and technologically possible in the 80s.
There is already a tonne of good compilers and interpreters for popular and obscure languages written for the 6502.
What is included with the machine from the get-go will be important, but not nearly as faith defining as in the 80’s with harder access to that kind of software, where what was in the ROM ruled all.
The most important thing software wise, will be a good frontend.
I don’t see why you bring C and Java into the discussion? Both a quite poor languages as such and fortunately at long last acknowledged as such.
Also C is a quite a poor fit for the 6502 (though a recent impressive compiler has been released).
The precursor of C, BCPL is great improvement on its successor. Some of the most important and well performing system has been written in BCPL. Including the Xerox Alto and the Amiga OS.
Java is just an abomination of a language, only the goldrush, mediocrity centred 90’s could have accepted.
Smalltalk which is partly tries to be, is a far superior environment.
None of them suited for the 6502 though.
If we take it that this computer is from the mid eighties in the family class economically, it’s not unreasonable to expect freely placeable 4 bit colour.
And sound, if the right IC are chosen could also be enhanced with one voice of 4 or 8 bit PCM. The stock sound should also probably be something a step over the SID technically.
Hey Dave,
I’m an industrial designer and machinist over in Garland TX. I just came off of the Collectorvision Phoenix project…if you’re looking for assistance with the case design and such let me know.
You do that, meanwhile I’m gonna plan out something entirely different despite not knowing what I’m supposed to do. Seriously, can I have some advice :/
Since you mentioned you’re looking at implementing some sort of BASIC on a Nintendo-like system. I’d recommend looking into Family BASIC, which was Nintendo’s offering for that sort of thing. It wasn’t released into the US and European markets, but I’d wager looking at how it did things can help.
Here’s a link to the Wikipedia article: https://en.wikipedia.org/wiki/Family_BASIC
Further to the Raspberry Pi being more than a Linux computer, here is ExplainingComputers take on running the latest version of RISC OS, the original OS written by Acorn in the 1990s for ARM based PCs, on the Raspberry Pi.
This is a noble dream and an interesting design but quite honestly with the intense focus on propriety, your contradictions of your own statements (not wanting the system to be like anything else/ thinking it might be interesting to play NES games on it) and the fact that you’re getting into disagreements with other people’s designs that they are making for themselves doesn’t inspire confidence in you being the lead of this project, at least for me. Not to mention that while still educational, an 8-bit computer with BASIC is far less useful education-wise then a Raspberry Pi which can help kids learn Linux and a modern language that they can use in a job. Overall this is a very interesting thought exercise but I just don’t see it coming to fruition.
I have brought up exactly the same problem with using BASIC as the high-level language before. It may be good historical education-wise, but it is too much stuck in the past. In fact, there is an open-source compiler suite, the Amsterdam Compiler Kit, which includes a compiler targeted to the 6502 (which Dave wants to use in the design) which has front-ends for C, Pascal and Occam, three languages cited as influences of either Java or Python, two common modern languages. From most people’s point of view, though, the problem with it is that it is apparently targeted to just the standard 6502, which creates trouble for it accessing more than 64K. I guess this means I would prefer a Z80-compatible architecture for the practical reason that there is already a popular C compiler, which being the Small Device C Compiler, that supports the enhancements of the Z180 and eZ80 (the hard version of either of these can also be clocked even faster than the 20MHz a hard 6502/65c816 can run at with the maximum possible voltage being supplied, but that is sort of elsewhere). Also, having graphics and sound commands built into a C compiler would be fun (Oh wait… cc65 has graphics primitives built in already).
I know David loves the 6502, and I can see why he does… but I’m also at the point where I just don’t want to code in assembly for the 65x architecture any more. I enjoy writing for the Z80 more, and it’s also easier to get parts and build a Z80 computer.
I’m currently playing around with emulated Z80 machines, via RunCPM and Altairduino, but I’ll probably end up building the RC2014, possibly two of them, so I can have one at home and one on my desk at work.
Odd, I cannot reply to you. What are the specifications of the RC2014?
Never mind, I found the answer (such as it is) myself. The website says the system is modular so it is possible for the builder to build it to whatever specifications they want. That means the same builder can build two (or more) of it, each to different specifications. David would rather press down more solidly what every copy of this computer is like. But since he has opened the idea for public comment, he has gotten the “what if I were the one building it”/”let me do it my own way” thing anyway. In other words, each of us here might as just build their own RC2014 (or several).
It shouldn’t/wouldn’t be educational in the vocational sense for “kids”.
It would be more of a curious “what if” scenario. What if someone had made a powerful open architecture 6502 based computer in time? How much utility and power could we have gotten from it, and what could it be made to do?
And again, I couldn’t agree more with BASIC and NES games. That is just silly.
BASIC was never a good learner language, or a good language at all.
It was just historical and political happenstance and naivety that made it THE standard on early home computers.
NES games is best played on a NES. Hopefully the proposed platform would be significantly better than the Famicom/NES.
C and Pascal already existed in the 1980s and they were better than BASIC and their influence extends into today in the common forms of Java and Python. On the other hand, BASIC might technically also have influence that extends into today in some form or other; but hardly anyone could call those particular languages “common” with a straight face.
Speaking of the Famicom/NES, it was a powerful, though technically closed architecture, 6502 based computer that was made in time, at least where Japan and Korea are concerned. It was just Nintendo of America acting stupid/naive that locked the real form of this system out of the rest of the world.
C and Pascal are totally different langauages from BASIC with completely different aims (other than Pascal was meant as a learners language too).
C and Pascal traces its lineage to Algol 60 and BCPL. While BASIC is an interpreted borked version of FORTRAN.
Forth/Postscript being its own thing, but still inspired by Algol.
The real version of BASIC, that is a small, interpreted, user friendly language, with low system requirements existed long before BASIC in the form of JOSS and its many derivatives.
Far, far better learner language, very powerful for the “money” and a joy to learn and use. And, it teaches good practice.
Java and Python are muddled bad versions of Smalltalk 80, while they really should have looked to the earlier versions of Smalltalk and done it right.
Famicom was never anything close to a real computer. It was clearly a console build to a price, nevemind keyboard and “disc drive”.
It has a very rigid architecture that is really only good for certain things.
That’s why most Famicom/NES games look much alike and has overall similar granularity of the game world.
Only with support hardware in the carts, is it possible to break somewhat away from the limitations.
For me, my ultimate 8-bit dream machine is something like the ultimate 8bit MCU/MPU available of the shelf today. Therefore, using an MPU/MCU with more than 8 bits is the same as cheating xD so: FPGA => cheating, 8+ CPU’s => cheating, emulators on other chips => cheating, The 65816 it’s almost => cheating 😛 because it is, in fact, an 8/16bit CPU.
My dream 8-bit architecture: 1 MCU/MPU for logic or traditional CPU stuff, 1 MCU/MPU Graphics + video memory, MCU/MPU Sound and I/O, 128K or 256K of external ram, sd card interface, joysticks, keyboard, etc … by using MCU’s the cost can be reduced drastically. The PIC18LF47K42-I/P @ $2 each is a very good candidate *** 64MHz WOW *** the AVR’s are also very good
For your architecture, I would choose a traditional 6502 (okeyyyyyy it can be the 65816 😉 ) with the highest clock you can find, some ROM, 128/256KB RAM and 1 or 2 MCU’s for the rest
One example of a homebrew console made with only 1 MCU: http://belogic.com/uzebox/index.asp useful for the video part and audio part
It would be interesting to have a very small ROM kernel with very few commands to flash partitions on a sdcard via RS232+x/y/zmodem (don’t need video), or use only a sdcard as a ROM, the first partition boots it.
Best regards and great work, I really like your videos (Y) Pedro Simões.
Given that even the traditional 6502 nevertheless emits 16 bit addresses, “using a CPU with more than 8 bits [in creating the computer] is (almost) cheating” =
If A, then not A
A
Therefore, not A
In other words, what you are stating that you want is inconsistent.
@Joseph Ruhf: The size of the address bus isn’t what defines the bit classification of a CPU. What defines it is the size of its data bus, registers, ALU, etc … The 6502 has 8 bits all the way, however, the 65816 has an 8-bit external bus and 16 bits in its internal buses, registers, ALU, etc … do you know what the 816 of the 65816 means, right!? In fact, the 65816 is classified as a 16-bit CPU. Intel made a similar thing with the 8088. It doesn’t mean that it is a bad thing because it can function exactly like a real 6502 but then you can turn on the 16-bit steroids. In my opinion, using such CPU defeats the purpose of having the ultimate 8-bit machine.
http://www.weihenstephan.org/~michaste/pagetable/6502/6502.jpg
https://apprize.info/programming/65816/65816.files/image528.jpg
http://www.westerndesigncenter.com/wdc/w65c816s-chip.cfm
No Joseph, what defines the bit definition of a CPU is the number of bits of its data bus, registers, ALU, etc … and the address bus size isn’t a factor.
The 6502 is 8-bit all the way but the 65816 has an 8-bit external bus with 16-bit on all internal parts. Similar with Intel did with their 8088 CPU.
The 65816 is in fact classified by its manufacturer as a 16-bit CPU, the 816 stands for having 8-bit externally but 16-bit internally.
http://www.weihenstephan.org/~michaste/pagetable/6502/6502.jpg
https://apprize.info/programming/65816/65816.files/image528.jpg
http://www.westerndesigncenter.com/wdc/w65c816s-chip.cfm
There are loads of programming languages and each has their strengths and weaknesses. In most cases, the weakness is the programmer i.e. bad coding is bad coding whether it is BASIC, Pascal, C, Python, COBOL… 🙂
From a UK perspective, there were a number of different implementations of BASIC back in the 1980s. Some were better than others e.g. BBC BASIC, Amstrad CPC BASIC, Locomotive BASIC. Each of these added features from other “professional” languages such as data types, structured programming, procedures, ISAM files, performance etc.
Good software could be written with these versions once a programmer was skilled in their use. The real challenge though was the lack of development tools in the 1980s. Code was written using a very simple built-in text editor with no features like copy/paste, find/replace etc. Even the text screens of the 1980s computers were cramped with most having 40 columns at best.
Over the last few years I have used a tool called BasinC on Windows. It basically puts a development IDE around Sinclair Spectrum BASIC and an emulator. What amazed me is that given a modern(ish) IDE and debugging facilities the power of Spectrum BASIC became apparent. There is some clever stuff packed in to the Spectrum’s 16K ROM.
So I suppose what I am saying is that any language implemented within the restrictions of a 1980s computer is going to be difficult to use. When I was programming in the 1980s I knew no better but…
Paddy
That is right. The only reason anybody beats up on BASIC is that it was distributed as (technically) the “amateur” programming language in the 1980s, but because the computers generally would have just a 6502 or a Z80, they were limited to having up to 64K memory in all, so they could not have had much of an IDE or debugging utility in ROM without sacrificing from either the command set of the BASIC or the RAM, which was already seriously limited as it was expensive back then. But nevertheless, maybe that was for as much good as it could be because at least they didn’t throw programmers into machine language for wanting to use the advanced audio and video features of the computers that had any (at least not in the case of what was built into the VIC-20 and the Commodore 64).
But of course, we no longer really have these restrictions, nor should we pretend we still do, even if we concede only 8 bits of data for the CPU to communicate externally. A 65816, Z180 or eZ80 can handle an extended BASIC (, an assembler, C/Pascal) and a modern(ish) IDE with a debugging utility also in ROM and leave enough RAM that a programmer will not feel overly restricted by the configuration of the computer.
So I’ve been thinking about this a lot.
I realized I don’t actually want another 8-bit computer. What I want is the *experience* of an 8 bit computer, but without the 8-bit limitations.
So I’m thinking about a software project that would basically be an 8-bit style programming environment running on a modern operating system. Ideally, I’d like to start by porting PC BASIC straight into a Windows executable, then later re-implement the structured BASIC components in Microsoft Quick BASIC.
I’ve also thought about simply wrapping a Python or Lua interpreter (I’m a bit more partial to Lua) as a back end execution environment, using a custom frame buffer for text input and graphics output.
Ideally, this would run under Windows or Linux, so it could run on a desktop PC or a Raspberry Pi.
The only other thing to do would be to build a custom case to make a Pi look like an 80s 8-bit computer… perhaps with a nice integrated keyboard.
Then you’re technically missing the point: according to what David is saying, it is supposed to be 8-bit or at least 8-bit-style hardware with the programming environment, because if you don’t want the limitations at all, you already have many options for emulating whichever 8-bit computer you like (you are talking about DOSBox here) or you can just boot a (reasonably) modern laptop to MS-DOS. And if you implement your idea as a Lua backend, you’re just source porting PICO-8 in the end (if I presume correctly, you’d make the framebuffer graphics resolution higher than 128×128).
I’m not missing the point at all. It’s just that I moved on 28 years ago, and while I love my Commodore computers, I wouldn’t want to go back to that as a daily driver – or even really as a teaching tool, the more I think about it.
But I don’t. I never program on my Commodore. That’s because using it was kind of awful, and still is. Honestly, my favorite computer ever was probably my first XT machine, when I managed to get an EGA card in it. That had both the “bare metal” experience of the 8-bit computers, but it still had enough horsepower to get some real work done.
That’s why I’ve started exploring this new idea. For now, I’ll probably couple it with IronPyton and PC BASIC, since that’s the quickest way to get an interpreter hooked up, and I’m going to experiment with it and see how useful it is for building retro style programs.
Richard Russell’s BBC BASIC for Windows is a excellent tool for writing programs for Windows PCs, but using a powerful modernised version of BBC BASIC originally written for the 8-bit BBC Micro and Acorn Electron.
BBC BASIC for Windows supports the legacy video modes and BASIC sound commands (SOUND, ENVELOPE) of the BBC Micro to give programs a true 8-bit retro feel, as well as video modes with the resolution of the 8-bit Acorn machines but with greater colour depth, or higher resolution modes similar to these of the 32-bit ARM based PCs Acorn produced in the late 80’s and 90’s.
http://www.bbcbasic.co.uk/bbcwin/bbcwin.html
hmmm… i wonder if the ideal form factor would be something like the hackaday conference badges: https://hackaday.io/project/161859-2018-hackaday-superconference-badge
something like this scratches the right itches, doesn’t take up too much space (don’t need a desk for it) and if it has a usb port and mini HDMI out, it would be an affordable way to start manufacturing something quick while still having serious functionality.
Dear Dave, sorry for my english. I dream every day (and every night!) a brand new 8 bit computer, like commodore 64 in 80’s! Graphics, sounds, but most of all development in a structured language like Pascal … Do you remember G-Pascal for Commodore 64? It was a very good language for beginners: no “goto” statement because harmful … Nicklaus Wirth is right!!! Well, why not? A new Pascal language flavour with OOP support is the best solution, this is my opinion. Ah, another request: display made of 80 coloumn: I hate writing source code in 40 coloumn! Thanks a lot for your hard work! Bye from Taranto in Apulia, Italy 🙂
Hey David, I’m kinda late to comment but I don’t really agree with the sentiment in a few spots of this post.
People don’t really “splinter” and branch off the main design or specification unless there’s a really good reason, such as to fix a bug or to address some kind of shortcoming in the design. I don’t think old computer nostalgia means the same thing to everyone either, despite not having been alive to experience it. (I think I’ve linked part of an essay I wrote about a similar argument which may or may not be relevant.)
Additionally, I’m not sure how many people will pick up 6502 assembler or old-fashioned BASIC, but that’s probably, again, cause I’m too young for the rose-tinting to work. I was brought up on QBasic though, and I think in some (rare) cases I’d miss recursion among other more “modern” features. BASIC might be too slow for interesting programs, too, and I think having a fast HLL to go with assembler would work wonders. (I’ve considered making a design, similar to Scheme-79, which runs Scheme as an instruction set. It’d be an interesting problem, at worst.)
So, I like the idea, but I’m not sure about the justification you propose for some parts.
Hi 8-bit guy, I’ve got some thoughts to share for the Video Part:
ASIC:
– VSLI: http://www.vlsi.fi/en/products/ VS23S010 or VS23S040. Easy to interface, cheap, but doens’t have out of the box functionality like text. See their support forum: http://www.vsdsp-forum.com/phpbb/viewforum.php?f=14
Bit more expensive/complex: 4D Picaso controller:
– https://www.4dsystems.com.au/product/PICASO/
Downside; it uses a serial interface.
board: https://www.4dsystems.com.au/productpages/uVGA-III/downloads/uVGA-III_datasheet_R_1_6.pdf
I guess the only ‘cheap’ alternative route would be the MCU / FPGA option (like you already did), but will requires some serious vhdl / software effort, therefore:
– perhaps the F18A (TI 9918A Clone) could be of help: http://atariage.com/forums/topic/207586-f18a-programming-info-and-resources/
but then again, probably getting a VIC-II in a FPGA would be more logical? A lot to read on the earlier mentioned 6502.org forum.
– a cheaper variant of the gameduino: https://www.olimex.com/Products/Modules/Video/MOD-VGA/open-source-hardware
– other options would be “NovaVGA”, SerialVGA/MicroVGA/tinyvga (TextOnly) and Mesa-Video (HDMI).
Small follow up on this, if you prefer ASIC’s; Since ASIC’s that can drive a VGA monitor or TV directly are scarce, I might have another solution; get a LCD graphics controller, and convert the signals to VGA, if you can get the timing right. Now there is much more to choose from; like;
– FTDI/Brtchip BT8xx/FT8xx series. https://brtchip.com/wp-content/uploads/EVE_Products/EVE-Brochure.pdf
– Solomon: http://www.solomon-systech.com/en/product/main-display/Display_Controller_IC/ssd1961-2/
– EPSON: https://global.epson.com/products_and_drivers/semicon/products/display_controllers/#ac02
Example converter: https://olimex.wordpress.com/2012/06/12/low-cost-lcd-to-vga-adapter/
This is most exiting retro news that I have heard lately.
I wanna alredy make a small contribution to the design. That would be not a personal contributin but more advise.
There is person that can help a lot and his name is Voja Antonic. He is engineer of electronics and most important also creator and designer of first home made computer in Serbia called GALAKSIJA, english GALAXY. He should be still working for american company Supplyframe. Try contacting him and I am sure you will not regret one second of time by talking to this man about your project.
Good luck and let’s make 8 bit history again.
If you haven’t already, perhaps you should contact Vince Briel. He had a run of 80’s-era-esque computers, most based on an Apple II. Vince isn’t producing new boards anymore, but I bet he could provide considerable guidance, or perhaps serve as a sounding board. http://www.brielcomputers.com/wordpress/
Hi,
I have just watched your latest video on building your dream computer. You asked if anyone can help you on FPGA or finding a video chip that’s fast enough. I happened to have just took a FPGA course as part of my college curriculum, and I think the VGA chip we used may satisfy your criterion.
The chip is called ADV7123 by Analog Devices, and it is essentially just an interface from the digital side to the analog side. The link to the datasheet is here: https://www.analog.com/media/en/technical-documentation/data-sheets/adv7123.pdf.
The chip itself would in no way be a controller. In our project, we created a frame buffer for the video, as well as a sprite ROM, a blitter (the sprite copier) and a state machine to control the chip.
In your case, you can use a very small FPGA (with ~4K LE) and some SRAM to build the controller.
Let me know if you’re interested in the details or have any questions.
Best,
Steven
Speaking as a pure beginner with no knowledge with Commodore Basic, I have to say that MMBASIC has some nice features that I would like to see emulated to some extent. I really like the set pin/pin commands in MMBASIC. I understand that I/O pins are addressed to the memory, but I would need a really good manual if I had to use poke commands instead. The graphics commands are really nice: BLIT, Sprite, etc. The keyboard commands are also nice to have: on key, inkey$, and keydown. Also, print @(x,y) is handy. I’m under the impression that these commands aren’t in every BASIC, so I just thought I’d mention them. Sorry if this comment is redundant or tainted with ignorance. I don’t know what commands are in Commadore BASIC.
Found this short video of Jeremy X who built a 16 bit 65816 commodore basic compatible computer. He doesn’t have much contact info however.
Thought you might find it interesting.
https://youtu.be/6W2OyAhUB8A
Source of some Ideas… and a good VDP as well: https://steckschwein.de
You’ll need to brush up on your German or run some of the pages through Google Translate though. That project is based on a 65C02 and uses a V9958 for video (and has OPL2 sound processing)
Another interesting project…
https://m.facebook.com/groups/474494392967805?view=permalink&id=674125426338033
Group name: Commodore CBM-II
Hi David I’m Martin. I live in Slovakia and I follow your channel is good stuff have in a website or Youtube videos from 8bitguy. I have idea for my dream computer.I buy used commodore 64 and I remove the motherboard and put it on the RasberryPi key converter and have the “Nice Commodore 64”
JustVMS
Since everyone is throwing ideas at the wall, I’ll give my thoughts as well:
I like the VS23S040 video chip, it looks like an SRAM to the CPU and could be bundled with additional SRAM chips, local to the CPU. I’d like to see an ICE40 FPGA as the system DRAM & DMA controller, It should also be possible to implement a ‘special’ DMA that provides the missing text -> graphic font feature for the VS23S040. I’d suggest LPDDR2 for the system DRAM, as this can work with a clock as low as 10MHz, is less sensitive to refresh timing than ‘normal’ DRAM and is going to be available for many more years to come, despite its maturity. A chip like the SIL8784 could convert the VS23S040 analog VGA out into HDMI, if HDMI is a ‘must have’ on the motherboard. The above architecture gives you small, fast, expensive, SRAM, local to the CPU and a much larger, comparitively slower, but cheaper DRAM, which you can access directly if you can afford the delay or have one of the DMA’s swap blocks in and out of your local SRAM ahead of time.
Dear Mr 8bit Guy,
I watch your channel in youtube regularly, and thought the below might be interesting to you relating to your dream computer – since you mentioned famiclone… so maybe the below can give you some ideas. They were widely available in China in the early 2000s.
https://helloacm.com/the-8-bit-dos-by-famicom-clone-bbgdos-in-the-1990s/ (I reached out to this guy actually as when I was in China in early 2000s, these were big, and I couldn’t find any, he offerred me to to buy this exact one so I did – nice of him to sell it to me).
https://helloacm.com/category/8-bit/ (you might like to go to the oldest posts first and work backwards, there aren’t that many posts)
https://helloacm.com/introduction-to-8-bit-famicom-clone-subor-sb2000/ (about the Subor SB2000 famiclone computer) – Actually I bought a couple of these.
Most folks miss the fact that USB and PS2 have a legacy relationship.
USB Keyboards/Mice will work using the PS2 Protocol.
Write the code to support a PS2 Keyboard and wire it to the USB A Female connector, now you can use a USB Keyboard on your retro device.
If you just love the PS2 plug on your board, then you could include the old school Purple USB / PS2 adapter (which is just an electrical pass through device, no active components).
I’ve learned on a 8085 in a 19″ rack. There where a lot of cards available and easy to build on your own, like memory cards, I/O Cards, Graphics. The backplane was something like the 8bit ISA. My dream computer would be something similar. Why create the whole thing? Just make it complete modular! So everyone may buy/build what they need. MIDI-Card / USB / I2C Master / Relay Cards / Arduino Shield’s … whatever ;o)
This is what I ended up schematizing :
https://www.digikey.com/schemeit/project/6502-computer-3-LEFTCOG402AG/
It has :
64kb RAM
16kb ROM (replaceable by 32kb ROM external IC).
VS23S040 video with fast 8 bit interface
Dual head display (VGA and CVBS simultaneous)
the microcontroller is compatible with 6502, and has internal 32kb ram, sound, usb keyboard, uart etc.
EFM8BB3 as the GPU (i have a version that only uses the main CPU and the VS23S040).
The video should be fast, its a 8bit bus running at Sys Clock (8mhz * 8bit = 64mbit/sec transfers).
sound is internal to the CPU and has 4 voices (i still not understand how to program it).
it has an USB slave (can be connected to a pc).
it has an SDCard interface and a network controller.
SPI bus with 6 /SS. I2C bus some GPIO and the main thing : While being a microcontroller, this CPU has full 6502 bus, with 22 address and some chip selects.
it can do EVERYTHING a computer can do. Pls check it out.
Hi David, you’re doing a really great job with your channel ! When you came up with this “dream computer” idea it struck me as I’ve been thinking of the same thing. Some of my initial assumptions are different, though. Clean, simple and understandable architecture doesn’t necessarily mean less powerful design. Why not making it 32-bit machine yet with simple internal design ? Have you considered using one of legacy 32bit CPUs or even an own 32bit CPU synthesised in FPGA ? I know you’re not a big fan of using FPGA but it is something we have in our hands now, that could let us make dreams come trough, right ? Imagine a 32bit CPU yet with simple 8-bit like internal architecture and machine code like 6502 🙂 Wouldn’t it be nice ?
Why not try to make a special sort of cartridge for NES with mmc3 mapper and sd card slot in it for storage purposes. It would probably be necessary to write a nes-dos for it with ps/2 keyboard drivers.
You probably know the demoscene LayerOne board, I hope to prioritize my time differently to get my hands dirty on this one.
Could this be a suptitude? Or would it not be possible to run basic on such?
Just because it’s a ’57 Chevy and is simple to work on doesn’t mean it can’t have 600 horses and a sports suspension. The primary barrier to simplicity is the OS, not the CPU. I know it’s too late but I would have sought the fastest cheapest widest (bits) RISC CPU out there and build your new kernel / BASIC environment around that. More bits and more registers makes it simpler, not harder, to program. And the programs you would write will be fast enough to do some really interesting work, especially running that close to the metal. Kids might just invent something. I totally agree that the RPi is primarily a cheap linux machine and hits a different target, very nicely. The Basic Engine is closer to your target so you need to differentiate. I would do it with maximum simplicity and maximum raw power at your finger tips. Have it emulate a 6502 for the nostalgia aspect.
” I would have sought the fastest cheapest widest (bits) RISC CPU out there and build your new kernel / BASIC environment around that.”
Sure an RISC would be more powerful and readily available, but unless you’re already a hardware designer, most people would not be familiar with FPGA/RISC/Verilog hardware programming.
Plus, those components require you to already have hardware programmers, and the knowledge to write the code for the RISC.
An off the shelf component/CPU would be much simpler to implement with a lower barrier to entry.
Just to put my two cents into the fray, I like the idea of limits as this brings forth creativity and ingenuity. However, I feel those limits should be comparable to modern devices and not the devices from the 80’s. What I mean by this is that I think video resolution, memory, and speed should be limited by today’s standards and not defined by 1980 standards. I also feel it should allow access to the internal bus and shouldn’t be so fast that hacking additional hardware projects for it would require a masters in EE. My first computer was an Altair 8800 but I spent a lot of time with Commodores and Color Computers, and eventually PCs. Building hardware and writing software for them was a lot of fun and eventually gave way to me becoming a software developer.
I like the 65816 as a CPU, video I would use an FPGA or CPLD and if cost permits add an VGA to HDMI converter/transmitter on board. I would use the full 16 MB of address space and either include dedicated V-RAM that could be access by the processor or map V-RAM into system RAM. Either way, just allow direct writes and reads from V-RAM. I would include an SD-Card for software instead of a disk. I would include at least four USB ports. One for Keyboard and one four mouse or joystick, and two additional ports. I would try to use any remaining logic in the video chip for sound generation. This would reduce parts count and cost. Additionally, I would include an audio jack for headphones or line level audio and one bus port allowing additional hardware to be attached. Their are many Verilog and VHDL VGA controller on the web. Modifying one of these to allow the programming of different modes wouldn’t be to hard but would require the addition of a PLL for video clock generation. The PLL could be either a chip like the Si5351 or built in the FPGA. If HDMI is desired, use a RGB to HDMI converter chip. You’ll still need some logic to generate the video timing with most of these chips.
Have you considered using a Yamaha YM3812 for the sound which would fit in the specifications of the machine, it has a maximum input clock of 4mhz its got 8bit data line bus and theres plenty of stock from utsource.
Regarding sound chip: I’m not sure if this sound chip would meet all of your requirements, but I thought I’d throw it out there:
The Ensoniq ES5503 DOC
Pros:
– designed to work with 65xx processors
– true historical 8-bit pedigree
– designed by Bob Yannes, who designed the SID-chip
– sound chip used by Apple IIgs
Cons/unknowns:
– chip still manufactured?
– or available as new old stock?
– can handle higher clock-speeds? (Apple IIgs was only 2.8mHz)
earlier you posted C-64 User Port LCD but never showed
us any success with hardware or software. all you really
did was show us how you waste our time on YouTube. if
i am ‘wrong’ please stand me corrected. email address is
litigation.mitigation@gmail.com send me the schematic
and copy of working program that allows me to use
my C64 keyboard to send characters to a 2-Line LCD
through the user port.
please continue with this project. I I’m definitely interested in owning one.