cpmulator

Golang CP/M emulator for playing zork, lighthouse-of-doom, etc

MIT License

Stars
79

Bot releases are visible (Hide)

cpmulator - v0.7.0 Latest Release

Published by skx 5 months ago

This release improves our CCP support, and adds a couple more syscalls:

  • There are now two embedded CCP implementations available
    • "ccp" - the default, from Digital Research
    • "ccpz" - An alternative, and enhanced replacement.
      • This has support for working SUBMIT.COM.
  • I've added support for more syscalls.
    • Console, Aux, and Printer status. Nothing too likely to be useful.
  • The console input layer has been improved.
    • We still use stty for setting the console into the appropriate echo/no-echo state, but now we don't do that excessively.
    • The console "read line" implementation now reboots CP/M, as it should, when you press Ctrl-C twice in a row. (Once is traditional, but seems too likely to happen by accident.)
  • A new -version flag has been added.
    • Run cpmulator -help to see all available CLI flags.

What's Changed

This is a list of pull-requests merged:

Full Changelog

You can see a complete list of changes between this and the previous release here:

https://github.com/skx/cpmulator/compare/v0.6.0...v0.7.0

cpmulator - v0.6.0

Published by skx 5 months ago

This release features a temporary regression, releases for Microsoft Windows will not work. This is because of the way that I changed the console input handling - and now we cheat by invoking stty to disable echoing of characters.

That said for the Mac, Linux, and Unix users this is a significant release, as we've improved our functionality a lot - cpmulator can now run many more applications which it couldn't in the past, including:

  • Borland's Turbo Pascal.
  • Wordstar.

The CCP no longer exits when child processes attempt a warm/cold boot either, making the interactive experience much nicer.

Finally the CLI executable has received a number of new command-line flags, which you can see via cpmulator -help.

What's Changed

Full Changelog: https://github.com/skx/cpmulator/compare/v0.5.0...v0.6.0

cpmulator - v0.5.0

Published by skx 6 months ago

What's Changed

  • This release is now capable of running the Microsoft BASIC interpreter.
    • Support was added in #51.
  • Our console input was unified into a new sub-package, and gained better support for polling for pending input.
  • The documentation was updated to include a complete list of all the environmental variables that may be used to influence behaviour.
  • Finally the companion repository was updated to include three BASIC interpreters

Full Changelog: https://github.com/skx/cpmulator/compare/v0.4.0...v0.5.0

cpmulator - v0.4.0

Published by skx 6 months ago

What's Changed

Full Changelog: https://github.com/skx/cpmulator/compare/v0.3.0...v0.4.0

cpmulator - v0.3.0

Published by skx 6 months ago

This release overhauls our operation in two significant ways:

  • When launching the emulator with no arguments you now get the CCP (i.e. command-prompt).
    • Enter "EXIT", "HALT", or "QUIT" to exit.
  • It is now possible to map drives to sub-directories, which is useful for the CCP-mode.

Launch the emulator with the "-directories" flag, and the contents of ./A will be used as the A: drive, the directory ./B will be shown on the B: drive, etc.

cpmulator - v0.2.0

Published by skx 6 months ago

This release implements three additional CP/M BIOS functions

  • BDOS function 13 (DRV_ALLRESET) - Reset discs
  • BDOS function 20 (F_READ) - read next record
  • BDOS function 21 (F_WRITE) - write next record

Previously only the only file-reading function implemented was F_READRAND, which read a "random" block (i.e. not a sequential read, but a read from a given block offset)

F_READ and F_WRITE are used to sequentially read, or write, fixed records of 128 bytes to the file that was previously opened, or created. With these two functions implemented the save and restore functions of the ZORK games now work correctly.

cpmulator - v0.1.1

Published by skx 6 months ago

This is the first release of the cpmulator which is somewhat functional:

  • Text output and text input functions are implemented.
    • Punchcard functions, and printer functions, are ignored.
  • File creation, and file deletion are implemented.
  • Files can be opened, closed, and read via "RandomRead"
    • "Random Reading" means that records of 128 bytes can be read from an open file, in any order.
    • CP/M implements both "random reading" and "sequential reading". However Z-Machine games only requires the former.

This might not seem like much functionality, however it is sufficient to play the ZMachine games from Infocom. If you don't have them you can download them from the internet, for example this directory and play them:

$ cpmulator ZORK1.COM
ZORK I: The Great Underground Empire
Copyright (c) 1981, 1982, 1983 Infocom, Inc. All rights
reserved.

ZORK is a registered trademark of Infocom, Inc.
Revision 88 / Serial number 840726

West of House
You are standing in an open field west of a white house, with
a boarded front door.
There is a small mailbox here.

>open mailbox
Opening the small mailbox reveals a leaflet.

>read leaflet
(Taken)
"WELCOME TO ZORK!

ZORK is a game of adventure, danger, and low cunning. In it
you will explore some of the most amazing territory ever seen
by mortals. No computer should be without one!"

Package Rankings
Top 7.48% on Proxy.golang.org