The CP/M emulator is good enough, I think.
Steve Kemp's Blog
by
2w ago
My previous post mentioned that I'd added some custom syscalls to my CP/M emulator and that lead to some more updates, embedding a bunch of binaries within the emulator so that the settings can be tweaked at run-time, for example running: !DEBUG 1 !CTRLC 1 !CCP ccpz !CONSOLE adm-3a Those embedded binaries show up on A: even if they're not in the pwd when you launch the emulator. Other than the custom syscalls I've updated the real BDOS/BIOS syscalls a bit more, so that now I can run things like the Small C compiler, BBC BASIC, and more. (BBCBasic.com used to launch just fine, but it turned o ..read more
Visit website
The CP/M emulator is good enough
Steve Kemp's Blog
by
2w ago
My previous post mentioned that I'd added some custom syscalls to my CP/M emulator and that lead to some more updates, embedding a bunch of binaries within the emulator so that the settings can be tweaked at run-time, for example running: !DEBUG 1 !CTRLC 1 !CCP ccpz !CONSOLE adm-3a Those embedded binaries show up on A: even if they're not in the pwd when you launch the emulator. Other than the custom syscalls I've updated the real BDOS/BIOS syscalls a bit more, so that now I can run things like the Small C compiler, BBC BASIC, and more. (BBCBasic.com used to launch just fine, but it turned o ..read more
Visit website
The CP/M emulator development continues
Steve Kemp's Blog
by
2M ago
In my previous post I introduced a toy CP/M Emulator I'd been working on. At the time it was capable of running the Infocom text-based adventure games, so I thought it was done. Of course I also wanted to run Microsoft's original BASIC and it turned out that was a challenge because the coding of their interpreter didn't use the standard CP/M entry-point for making syscalls (call 0x0005). Instead of calling 0x0005 to invoke the BDOS/BIOS functions the BASIC interpreter used the single-byte CALL instructions which are available on the Z80 processor. There are a bunch of these instructions: RST ..read more
Visit website
A simple golang CP/M emulator
Steve Kemp's Blog
by
3M ago
A couple of years ago I wrote a simple text-based adventure game in Z80 assembly language, to amuse our child. The game was written for CP/M, because that is the operating system my single-board Z80-based computer runs upon. Later I ported the game to the ZX Spectrum 48k. Recently I went through a burst of enthusiasm and started to overhaul the code a little, adding word-wrapping and fixing a couple of bugs. That lead to a new release, and also a brief amount of (positive) feedback on hacker news. After mulling it over I realized that the number of CP/M BIOS functions I was using was very mini ..read more
Visit website
A simple package for running many linters
Steve Kemp's Blog
by
5M ago
I used to configure Emacs to run a linter when saving some specific type of files. For example I'd have a perl-utilities package to reformat perl code, and run the perl-linter on saving, then I'd have a hook to do the same thing for Dockerfiles, etc, etc. It occurred to me recently that I should have a linter for both JSON and YAML files, since I have to edit those filetypes so damn often, and that there wasn't a great solution for those - Until it occurred to me I wrote sysbox which is a simple collection of tools in one binary, and that supports some validation commands: sysbox validate-js ..read more
Visit website
Falsehoods I used to believe about shoes
Steve Kemp's Blog
by
5M ago
Once upon a time I used to divide shoes, boots, and other footwear, into two categories: Things that had good soles and a good grip. Things that were slippery and treacherous. Nowadays I know better. When walking on snow, ice, or slush it isn't the sole of the shoe that causes you to slip, slide, and fall. It is you. The shoes do make a difference, which is why people use icebugs (i.e. shows with little nails sticking out) and similar things. But really it's all about walking "properly": One leg directly below you. Put your feet down flat. Shorter strides. Horizontal movement is dangerous ..read more
Visit website
Please to meet you, hope you guessed my name?
Steve Kemp's Blog
by
10M ago
"Hello, my name is Steve" - those are words I've said a million times in my life, however they are not true words. If you want to get all technical about things, my name has always been SteveN. Mostly this hasn't mattered to me, or anybody else, I introduce myself as Steve, people call me Steve, and Steve is the name that makes me turn my head, when shouted across a bar. However things changed when I moved to Finland. In Finland I had to open new bank accounts, sign mortgages, hand over IDs, and there were many many pieces of paper I signed, or forms I filled out. Unfortunately I screwed up ..read more
Visit website
Old-School CGI Scripts!
Steve Kemp's Blog
by
10M ago
I'm not sure if I've talked about my job here, but I recently celebrated my one year anniversary - whilst on a company offsite trip to Sweden. When I joined the company there were approximately 100 people employed by it. Nowadays the numbers are much higher. Having more people around is pretty awesome, but I realized that there were a lot of people wandering around the office who I didn't recognize so it occurred to me to make a game of it. I had the idea I could write a slack bot to quiz me on my colleagues: Show a random face, using the Slack profile picture. Give a list of 5 names. Ask me ..read more
Visit website
Simple REPL for CP/M, in Z80 assembly
Steve Kemp's Blog
by
1y ago
So my previous post documented a couple of simple "scripting languages" for small computers, allowing basic operations in a compact/terse fashion. I mentioned that I might be tempted to write something similar for CP/M, in Z80 assembly, and the result is here: https://github.com/skx/z80-cpm-scripting-interpreter To sum up it allows running programs like this: 0m 16k{rP _ _} C3 03 EA 00 00 C3 06 DC 00 00 00 00 00 00 00 00 Numbers automatically get saved to the A-register, the accumulator. In addition to that there are three dedicated registers: M-register is used to specify which RAM addre ..read more
Visit website
Simple toy languages
Steve Kemp's Blog
by
1y ago
Recently I was looking around the internet and looking for something to do with some ESP8266 devices, which I've been neglecting over recent years. When I was on paternity-leave, five years ago, I decided I wanted a new hobby for my "down" time. I had two obvious choices a) developing applications for mobiles, or b) working with "hardware". I chose the latter. By accident I came across a couple of simple scripting languages, FORTH-esque. Sample usage looks something like this (which obviously sends the command over a serial-device to the connected-board): $ echo '5{ 6d 1o 100m 0o 100m ..read more
Visit website

Follow Steve Kemp's Blog on FeedSpot

Continue with Google
Continue with Apple
OR