7,108 karma · joined March 15, 2013
I have, BTW, just received a $6.50 watch with touchscreen, microphone and speaker, much better build quality, BT 3, 4.2 and 5, plus the traditional fake heart rate sensor and a bigger battery with an actual label on it. It's powered by a YC1133 which contains an ARM Cortex M0 with 56kB RAM and 4MB flash. This would be an awesome device for hacking if there was any information about it whatsoever.
Weirdly, it runs a more complex version of what's clearly the same software stack as the LT716!
On the Master I could fairly easily extend the TPA up into the sideways RAM area, adding another 16kB, for a total of probably about 45kB. The difficulty is that filesystems in Acorn's MOS can't access sideways RAM directly, as that's where the filesystem module itself lives, so all I/O would have to be done by copying the data to low memory, calling MOS, then switching the sideways RAM back in again afterwards. There may also be subtleties in catching interrupts and things which might try to change sideways RAM pages. But it should totally work.
For the _really_ advanced version, it could run bare metal and reuse the OS workspace at 0xc000 all the way up to 0xe000. But that would lost all MOS services, so would have to reimplement things like screen redrawing and floppy disk handling.
Responding to a few random things posted here:
- yes, that 8080 emulator ought to work fine. Not sure what the performance would be like but it's certainly worth a try. Sadly, unless the author shows up and relicenses it I can't use that one ('may not be redistributed without express written permission of the author').
- llvm-mos: the only bits in C are some of the utilities, and that's only because I happened to have (buggy) C versions from one of my other CP/M projects. What I'd actually like to do is to write a PL/M compiler with LLVM and try and compile the original Digital Research code for the 8080 with it.
- re porting: should be trivial to do! The only thing you need is a BIOS, with console I/O and sector read/write. Everything else is the same. You can even use the same binaries. But the documentation is trivial, so if you're interested file a github issue and I'll try to assist.
Also, I _really_ want some software for this thing, primarily programming languages. I do plan to port Microsoft's BASIC (now open source), but I need an assembler. If anyone knows any suitable 6502 assemblers from back in the day _which have actual licenses_ please let me know.
I'm particularly interested in anyone who has actual open source CP/M software, or has non-open-source software they're willing to relicense. (I successfully persuaded R.T. Russell to open source his superb BBC Basic port, which is now included!) Most CP/M software predates the era when licenses were considered important, and generally has invalid or unusable licensing: you see the phrase 'public domain for non-commercial use' a lot... It's now old enough that the license holders are beginning to actually _die_, and great swathes of useful software and history are just vanishing. I'd love to preserve this stuff. Especially, I'd love to get my hands on an open source CP/M 3 clone: ZSDOS, which is what I currently have, is only CP/M 2.2 compatible and is missing several important features (such as the ability to change serial baud rate!).
It's a surprisingly modern-ish system, in many ways, and surprisingly weird in lots of other ways. One thing which really surprised me was a complete lack of pointer support: I managed to bodge the look-up-table instruction (which evaluates its argument and adds the result to the next instruction to be executed) to do pointer dereferences instead (INDEX ptr; TC 0). And, luckily, I found a way to make the assembler emit an address as a literal value, which it really didn't want to do.
It's a shame the address space is so small (only 12 bits!) or you could totally port real software to this...
I find CP/M interesting because it's provably the minimum viable product for an operating system. It was the personal computer desktop operating system that really worked. It came with full documentation, a full development systems (an assembler and a debugger), and a full set of tooling to allow you to port CP/M to new systems. It was portable, too, and you could run the same program unmodified on nearly any hardware which supported CP/M. So it was this great open-ended system, cheap enough to get into the hands of ordinary people, simple enough that you could understand it all, and yet sophisticated enough that, with enough time, you could achieve _anything_ on it...
The CP/M kernel is 3.5kB of 8080 machine code. I think each frame of that video consumed more space than that.
This is all mine, though: http://cowlark.com/2013-10-19-insane-make
I started this at about 14:00 and finished at about 01:30, so about eleven to twelve hours wall clock time. And yes, if I hadn't been doing the recording I'd have given up and gone to bed. Also I, er, had to get up at 07:00 the next morning to go hiking.