A demonstration of TC08 DECtape I/O and RTC-based random block selection on the Data General Nova 1210 emulator.
This is a simple game demo that:
- Creates a TU56 DECtape image with 64 location names
- Uses the RTC (real-time clock) for per-second randomness
- Loads random blocks from TC08 device using proper I/O protocol
- Displays location names from an adventure game world
gametest.asm- Nova assembly program demonstrating TC08 block loadingcreate_game_tape.py- Python script to create the game.tu56 tape image
# 1. Create the tape image
python3 create_game_tape.py game.tu56
# 2. Run the emulator (requires https://github.com/rsbohn/dusky-petrel)
dotnet run --project snova/Snova.csproj
# 3. In the emulator:
snova> tc0 attach game.tu56
snova> asm gametest.asm 100
snova> go 100
Mystic Falls
# Run again for a different location (uses RTC seconds)
snova> go 100
Dragon's Lair- RTC DIB (device 0o21) provides epoch seconds (low word) - changes every second
- Value is masked to 0-63 to select one of 64 blocks
- TC08 protocol (device 0o20) loads the block:
- DOA: Set transfer address
- DOB: Set block number
- DOC: Set control (0o2 = read)
- NIOS: Start transfer
- SKPDN: Wait for completion
- Displays the location name from buffer
The tape contains adventure game locations like:
- The Ancient Harbor
- Crystal Caverns
- Dragon's Lair
- Floating Islands
- Hidden Sanctuary
- Wizard's Tower
- ... and 58 more!
Each block has space for 64 words (128 bytes) for the location name, with remaining space available for future descriptions.
- Tape Format: TU56 DECtape, 64 blocks, 129 words per block
- Encoding: Little-endian 16-bit words (BinaryReader format)
- Strings: 2 ASCII chars per word, high byte first, zero-terminated
- Device Codes: TC08=0o20, RTC=0o21, TTY=0o11
- Dusky Petrel - Nova 1210 emulator
- Python 3 (for creating the tape image)
- .NET 9.0+ (for running the emulator)
Public domain / CC0 - Use however you like!