50Hz timer tick now tied to actual clock.
Code to test full-screen update speed
Commentary for SVFIG
also known as...
In 2004, I embarked on a project to build for myself a W65C816-based home-made computer. I eventually succeeded in making a computer equipped with 32KiB of RAM storage from $8000-$FFFF, and I/O from $0000-$000F. This computer ran at 4 MHz, and relied upon an umbilical connection to a host PC to load software into it. It ran quite well; however, its limited I/O facilities naturally limited what I could do with the machine. Eventually, I named this home-made computer the Kestrel-1.
As I write this paragraph, 18 years has elapsed since I placed the last wire on the Kestrel-1. It's time I return to this project and finish it.
The following "hardware" resources are currently emulated:
This project is a fork of Alan Cox's v65c816 project. As it currently stands, not much has changed. With time, however, I hope to emulate other bus-resident peripherals as well.
The disk0
directory
contains an interactive machine language monitor,
IM/F.
This repository uses Git submodules.
The easiest way to clone this repository is to use the --recursive
option on your git clone
command.
git clone --recursive ...
You must have cmake
and xa65
installed.
First, you will need to build and install the emulator.
This will install the executable and a set of manual pages,
which you can summon with man k1emu
.
rm -rf build
cmake -S . -B build
cd build
make
make install
Then, you'll need to build the bootstrap.
This will create a 512KB DASD image containing the basic system software.
If you desire to create your own DASD image for the ForthBox or Kestrel-1,
you are encouraged to duplicate the disk0
directory and customize it to your liking.
cd ../disk0
./mkdisk0
There are two ways to run the emulator.
The first way is without any options.
Note that you must have a DASD file named disk0
whereever you run the emulator from.
k1emu
The second way is to turn on tracing support. This is normally only used for debugging purposes during initial bring-up. Warning! Tracing mode produces a ton of output.
k1emu -t
Up to 8 virtual DASDs (each no greater than 32MB in size) are supported.
Simply call them disk0
, disk1
, ..., disk7
.
Note that disk0
is always the boot DASD, which is why it must always be present.
The other DASD files are optional.
The imaginary boot ROM loads block 0 from disk0
to $FC00-$FDFF and jumps to it in 6502 mode.
You'll find additional information for programming the environment in the k1emu(1) and k1emu-io(7) man pages, including a complete description of the I/O page and examples on how to use the DMA/block move space.