Post B2hDHdiNvARYxm40tk by tomjennings@tldr.nettime.org
(DIR) More posts by tomjennings@tldr.nettime.org
(DIR) Post #B2hDHdiNvARYxm40tk by tomjennings@tldr.nettime.org
2026-01-27T02:18:37Z
0 likes, 0 repeats
OK, writing "RSP" programs for MP/M. What a weird little system this is. RSPs are Resident System Programs, realtime dynamically loaded, position-independent (!) 8080 programs (!) that load into banked memory. On MP/M what were built-in's on CP/M (DIR, TYPE, etc) are .RSPs on MP/M.RSPs are daemons. The one I just wrote is a clock display that writes date and time in the margin between windows on the screen ("dead space"). It sleeps 99.99% of the time, wakes up once per second to write in the margin.What's really interesting about RSPs is that though they are background tasks you can type the RSP name on the command line, and the CLI (command line interpreter) will send the command tail to the running task. (Various controls including not allowing etc.) So MARCLOCK (margin clock) accepts a command liine changing default position, date format, colors, etc.Now that I've reigned in a few poorly behaved programs (mostly ones that poll the livin' shit out of the keyboard) performance is GREAT.The MARCLOCK RSP is 936 bytes long.(The margin itself, the black gap visually separating the four consoles) is itself an "H19 terminal" that accepts text and escape sequences, a 5th window.)MP/M is a lovely thing. Now to play with the "cron" equivalent.
(DIR) Post #B2hE6f3KhrbDshBuBU by tomjennings@tldr.nettime.org
2026-01-27T02:27:52Z
0 likes, 0 repeats
The CLI is not a shell, or a standalone program. It's an RSP that gets messages from the terminal process, that attaches to it's console. User programs can send messages to the CLIs! To do "DIR" on MP/M is to type "DIR return" to the TMP, which sends that text to a free CLI, which executes it and sends the result to the specified console. There isn't a shell or terminal per se. It's super frugal and very clever. There's lots of access controls that can be open or very narrow, but of course and program can cheat and pee in RAM and crash anything. So you don't do that, on purpose anyway. Since my Z80 is emulated I can in fact implement a half-fast memory-write protection scheme; but to do some things you get pointers up into kernel space and write bytes (lol). Multi-level pointer indirection on an 8080 is umm not elegant.
(DIR) Post #B2hEbOGfA9BCnh4wwS by oscarschnitzer@aus.social
2026-01-27T02:33:22Z
0 likes, 0 repeats
@tomjennings I’ve gotten deeply into CP/M internals (2.2 and 3.0), but never really looked at MP/M. From what you wrote I think I’d really enjoy it.