Thought I’d make a brief posts here - as the retro-new thing has been mentioned a few times recently.
So, like some others (many others over on http://6502.org/ !) I’m making my own little 6502 system which will soon be a 65C816 system. I decided to start with the 65C02 as I’ve experience building them in the past - well, 30+ years back. The 6502 is alo the first CPU I did any assembler on, and last year was my 40th anniversary as a programmer, so it’s called Ruby.
I’m slowly blogging most of it in more detail over at https://projects.drogon.net/6502-ruby but thought I’d post a brief page here for any interested.
But before that - one thing that may be relevant is that in the UK (at least) there was a “holy war” between the 6502 and the Z80 - much like Vi vs. Emacs today (and, er, for the past 30years!) The truth was that the Z80 systems were cheap - ZX80/81, spectrum and the 6502 ones not as cheap - Apple, BBC Micro and so on. I feel into the 6502 camp because I started on an Apple II, continued with some own-built 6502 systems loosely based on the Acorn system 1 and elektor Junior computer, then the BBC Micro. 6502 systems did get cheap though - the Vic20 and C64…
Unlike the other 6502/65816 projects, I have no real tie to the C64 - I was probably in my early 20’s when these hit the UK, and from my point of view, just fancy colour versions of the Commodore PET - cheap games systems, but I was studying/researching at uni by then with interests in other things as well as computers - not really into games systems… So fast forward 40 years and I wanted to see what I could do for myself.
I had this idea of “re-imagining” one of those old systems using some modern thinking - what would a 6502 system look like with a modern CLI or GIU? The answer is … slow and un-usable, but maybe there is a compromise… So this is what I’m doing with my system - seeing what I can do, what works and what dosn’t. Having a bit of fun along the way.
A proof of concept was needed to start - and working out the compromise between “just sticking it on a Pi” or in an FPGA vs. “the real thing”. I’ve settled on a hybrid, using a separate “host processor” which is an ATmega 1284p and a real 65C02 (for now, '816 soon) and 64K of RAM. There is a GAL as some glue and it’s all through-hole for ease of soldering it up and testing.
With the Apple II being the first 6502 computer I used, it was easy to get something that looked Apple-like. Wozmon, and so on, but then there was the BBC Micro with it’s fancy BASIC and well defined API into it’s “operating system” and hardware.
What have I come up with so-far? Well - it’s more BBC Micro-like than Apple-like, although it can still run Applesoft as well as BBC Basic. I’m still working on some of it’s operating system, but I’ve found it hard to come up with something that’s better than the BBC Micro. I will expand the CLI interface though - possibly some simple IO redirection to the filing system (SD card and RAM/ROM - hosted via the ATmega) maybe a hardware layer abstraction (think Arduino, pins, wiringPi, etc.) who knows.
The filingsystem is controlled by the ATmega host - and here, for those who know, if you think about it in terms of a BBC Micro plus 2nd processor - where the 6502 here is the 2nd processor, then you’re not a million miles away. The actual filing system is based on Apple ProDOS - hierarchical, 20 characters per file path/name using forward slashes as directory separators. No $, : or anything else in the path, but keeping it easy with /sd0/path/to/file or /mem/path/to/file and so on - the first element of the path being the physical device. It’s limited to 32MB volumes right now because I felt that’s a good trade-off for an 8-bit system. That’s similar to Apple ProDOS8. It’s a huge waste of the 8GB SD card I have right now, but it does have 4 partitions - mostly because it’s using a standard DOS/MBR partition table. If I make the effort, it could be much more, but it’s good enough for now.
It’s pure ascii terminal for now - although the ATmega can generate video. My plans for future video involve a simple peripheral bus system and a $5 ARM based board that can generate HDMI video and sound in software.
My blog goes up to the stripboard version, but the current version is on a PCB:
And so there you go - a little personal “vanity” project to satisfy my old 8-bit cravings