/virtual-nascom

SDL-based Nascom 2 emulator

Primary LanguageCGNU General Public License v2.0GPL-2.0

Virtual Nascom, Version 2.0, 2020-01-20

This is a version 2.0 of Virtual Nascom, yet another Nascom 2 emulator. There's emulation support for all(?) of the standard hardware and it runs nearly all of the software on the nascomhomepage.com (see KNOWN ISSUES below).

Version 1.9 switches from a (partially broken) X Window specific implementation to portable and more more robust SDL implementation. It also gained basic serial port support in the process.

Version 1.10 adds support for "natural" keyboard, that is, US keyboard events are translated into the equivalent Nascom keycombination.

INSTALLATION

Virtual Nascom should compile on all platform with SDL support, but has only been tested on macOS (10.12.4 and older) and various Linux versions.

Virtual Nascom depends on SDL2. For Ubuntu sudo apt install libsdl2-dev suffices.

To compile you may have to adapt the Makefile with the libraries you need and their path, but generally it should be enough to simply run

$ make

USAGE

Usage: ./virtual-nascom {flags} [NAS files]
           -i <file>       take serial port input from file (when tape led is on)
           -m <file>       use <file> as monitor (default is nassys3.nal)
           -v              verbose

Virtual Nascom expects to find nassys.nal (unless you changed the monitor using the -m option) and basic.nal upon startup. You can add files to be loaded by providing them as arguments at the end of the line.

For example to run Pac Man, run

$ ./virtual-nascom programs/e1000/pacman.nas

and type E1000 in the Nascom 2 window. Control with arrow keys.

The emulator conveniently dumps the memory state in memorydump.nas upon exit so one might resume execution later on.

The following keys are supported:

  • END - leaves a screendump in screendump
  • F4 - exits the emulator
  • F5 - toggles between stupidly fast and "normal" speed
  • F6 - force serial input on
  • F9 - resets the emulated Nascom
  • F10 - toggles between "raw" and "natural" keyboard emulation

All serial output is appended to serialout.txt which may be fed back in on a subsequent launch via the -i option.

CREDITS

A very crucial part of Virtual Nascom is the excellent Z-80 emulator from Yaze, Copyright (C) 1995,1998 Frank D. Cringle.

Thanks to Dene Carter for encouragement Thanks to Alan Cox for the pixel doubling

SOMETHING DIFFERENT

This repo includes a quick hack at a repackaging the Nascom font as an BDF file, for use in X11. Example usage:

$ cd BDF; mkfontdir; xset +fp $PWD; xset fp rehash
$ xterm -bg '#000' -fg '#0F0' -fn '-tommy-nascom-medium-r-normal--16-160-72-72-c-80-iso8859-1'

and enjoy the nostalgia :)

Known issues: should only be ~ 14 pixels tall, only the ASCII subset works, ~ and # looks funny, but that's Nascom.

TODO

  • Reconsider the name

  • Clean up code and document; improve UI

  • Allow for switching input and output file while running

  • Precise timings (a rough, but machine independent job should be easily done)

  • Emulate sound (requires precise timings)

KNOWN ISSUES

  • Galaxy Attack doesn't work on Virtual Nascom. As it does work on VNASCOM it must be an emulation bug.