02/02/2021 at 16:21 •
The hard work only comes when the first prototype hardware is done. I had a few free days to spend on polishing up the basics. Those all seem to work, I can use the KIM-1 and Apple-1 ROMs, run Wozmon and Apple-1 Basic, boot up DOS65, load applications like ehBasic and assemblers with it.
It's shaping up to be what I want it to be: a 6502-based business computer with everything you could bolt on in 1977 - just before the home computer era started with the Apple II etc.
I am really starting to like the keyboard with its mouse-button switches. They feel just right, unlike a lot of the commercial mini-keyboards I tried.
On the to-do list next:
- get half-decent VT-100 emulation (sub-decent now, and I want Dan Werner's full-screen editor SEDIT to work properly);
- hook up the KIM-1 hex programmer's keypad over something that wastes less resources than BLE (later on, I want to add virtual Z80 and 6120 (PDP-8!) coprocessors plus 64K of extra RAM - bluetooth just eats way too much into my free space).
- add fancy features, like a portrait split-screen terminal mode with display of FLTPT65's floating point registers, a disassembler/debugger and perhaps a blinkenlight mode for fun;
- respin a new version of the PCB to improve fit in the case, make things prettier & simpler to build, implement a few extra ideas now I figured out how to free up more GPIO pins.
- longer term, add a Tektronix 4010 graphics mode.
- port more application software to DOS/65. It's simple.
- party like it's 1977 - with the fanciest 6502 system that 1977 dollars could ever buy. Yay! ;)
01/15/2021 at 14:42 •
From my previous KIM Uno project, I already had a 6502 simulator with KIM/Apple compatibility. But for the esp65, I had to add an operating system to implement disk storage.
In the Z80 world, CP/M offered a 'standard' OS right from the early days. For whatever (interesting!) reason, standardisation did not happen for the 6502. Only proprietary systems, for the OSI computer and for some other early machines existed, but no standard emerged.
I looked at porting the Ohio Scientific (OSI) disk operating system, and the interesting DOS65 for the Dutch Octopus computer. I might end up adding them, but because I am familiar with CP/M, I chose Richard Leary's DOS/65. Developed around 1980, Richard published this only some years ago. It really is CP/M for the 6502, and comes with the essentials: an assembler, Basic compiler, line editor, and debugger. As part of the Retrobrew 6x0x project, Dan Werner added a full-screen editor and Lee Davison's ehBasic. But for me, the attraction of DOS/65 is that it was *meant* to be added on to any 6502 system. Not just one specific computer.
Bringing up DOS/65 turned out to be surprisingly simple. I wrote a 40-line disk interface simulator on the esp32 side, a little 70-byte boat loader ROM within the 6502 emulator, which loads DOS/65 from a disk image on the esp32. To make it live as an extension of the KIM-1 and Apple-1, and not a replacement for either one, I configured DOS/65 to claim $2000-$D000 as its RAM territory. But it allows you to load code anywhere, so it indeed can load Apple-1 and KIM-1 programs and lets you jump back to the KIM or Apple ROM firmware. It's perfect in that it truly is an enhancement to the original machines, not a replacement fo them. You can have KIM, Apple, or DOS/65 software live side by side on the disks and run any of it. That fits my ambition of having my esp65 be both KIM and Apple compatible at the same time!
(Image: we start in Wozmon on the Apple-1, boot up DOS/65 and flip to the KIM-1 terminal mode - seamless integration :)
For now, I have two 320K disk images preloaded with software in the esp32's SPIFFs file system, plus a tiny 16K ram disk for when you continuously edit a file and you don't want to wear out the disks ;)
Future projects will be to add the similar-named but very different DOS65, and I will try to bring up 6502 fuzix. But fuzix, of course, will disable KIM/Apple compatibility and be its own thing. Still: it'd make the esp65 into a tiny unix-like system with even a C compiler. Ooh, the possibilities...
01/15/2021 at 14:15 •
There's loads of mini-keyboards, but they are always unpleasant to type on. Partly, it's size and that cannot be changed. But trying out various BLE keyboards for this project, they all had bad 'tactile characteristics'.
So I ordered samples of all tact switches and mini-buttons I could find. And found that by far the best was the type of mini switch used for mouse buttons: very light in touch (which you need on a tiny keyboard), and a decent tactile feedback. They really worked for a programmers' keyboard!
That find sparked the keyboard part of the project. Making your own is fun anyway. I found almost ready-made BLE code on github from chegewara, the Apple II layout keyboard matrix was easy to implement.
I initially developed it as a standard Bluetooth BLE 'HID keyboard', then added serial port output. So the keyboard hardware can serve three purposes: just as a generic BLE keyboard for PC or phone, then as a serial keyboard for projects, and lastly, because the esp32 inside has plenty of capacity, it can run my 6502 emulation and TFT display to be a stand-alone retrocomputer or terminal (either over serial, wifi, or Bluetooth even). So, multi-purpose, and that adds to the idea of the esp65 being a retro-playground and not just a 6502 supercomputer...