Skip to content

Releases: skx/cpmulator

v0.13.0

15 Jul 17:34
@skx skx
Compare
Choose a tag to compare

This release is probably the last one for a while, I now regard this project as "complete":

  • It implements all of the core functions that are expected.
  • It runs the programs I want to run.

Of course if there are bug-reports, reporting bogus results, or an inability to run CP/M binaries (excluding the case of disk sector/head/track functionality) then of course I will attempt to resolve them. Please file an issue if you're in that situation.

Changes compared to the previous release largely revolve around improved test-coverage, and minor bug-fixes. We've now introduced integration tests, in addition to the core package-tests. However there are a couple of new, and visible changes:

  • We default to using CCPZ, rather than the original DR-issued CCP.
    • This means you now have LIST, PEEK, POKE, and # as built-in functions.
  • The -quiet flag has been removed, along with the embedded binary A:!QUIET.COM.

Finally if you build from source you can add ZORK1.DAT and ZORK1.COM to static/A/ before you build the code - then once you've done so you'll have a self-contained CP/M emulator with embedded & always-available ZORK! (You can repeat with other binaries too of course.)

Changes merged via PRs

What's Changed

  • Cleanup our code a little by @skx in #141
  • Ensure we have a filename for open/make-file. by @skx in #145
  • Added PEEK and POKE built-in commands to CCPZ by @skx in #147
  • Work towards I/O support for virtual files by @skx in #148
  • Update to use CCPZ by default, now with comment-support by @skx in #150
  • Added significantly more tests; coverage is nearing 50% by @skx in #151
  • Added more tests - fixed issue with using CPU.Memory by @skx in #152
  • Increased test-coverage once-again by @skx in #153
  • 154 integration tests by @skx in #155

Full Changelog: v0.12.0...v0.13.0

v0.12.0

24 Jun 16:09
@skx skx
Compare
Choose a tag to compare

This release features a couple of internal changes which increase our accuracy and allow the original (unmodified) binary release of BBC BASIC to work correctly.

In the past we embedded some binaries which were always present on A:, these include those utilities which change our runtime behaviour - these utilities are still present but now have a ! prefix to avoid name collisions with other binaries you might have:

  • !CCP - Change the CCP at runtime.
  • !CONSOLE - Change the console-driver at runtime.
  • !CTRLC - Change the number of Ctrl-C characters that trigger a reboot.
  • !DEBUG - Enable/Disable the "quick debugging" log.
  • !QUIET - Enable/Disable the quiet-mode.

With regard to loggin we now avoid logging the console I/O functions by default, as these tend to be incredibly noisy. They can be logged via the -log-all command-line flag.

Merged Pull Requests

Here are pull-requests which were merged as part of this release:

  • Don't log console I/O functions, by default by @skx in #131
  • Allow BBC BASIC to run by @skx in #132
  • Bbc fix2 by @skx in #133
  • Updated the quiet-flag to be more logical by @skx in #137
  • Added a simple run-time debug option by @skx in #138
  • Rename our embedded resources to have a unique !-prefix by @skx in #139

Full Changelog: v0.11.0...v0.12.0

v0.11.0

21 Jun 05:04
@skx skx
Compare
Choose a tag to compare

This release features a number of "correctness" updates:

  • We now successfully determine whether pending keyboard input is available on STDIN, via calls to Select.
    • This specifically resolves problems with BBCBASIC.COM
  • We now correctly track state in file operations.
    • This resolves some issues where we'd see failures of the form "Attempt to read from file that isn't open".
  • We allow every drive-letter to be mapped to a specific path, via -drive-X.
  • We only trigger reloads of CCP, or CP/M, when Ctrl-C is pressed at the start of the line.
  • When line-input is requested we immediately return when the specified max-size of input is reached, rather than forcing the use of an explicit newline.

Beyond those fixes we've implemented BDOS function 36 F_RANDREC, and added support for text-history, usable via Ctrl-P and Ctrl-N at the CCP prompt.

What's Changed

Here's a list of merged pull-requests:

  • Introduce a little support for console history. by @skx in #115
  • Allow polling for input, correctly by @skx in #118
  • Allow determining the size of our console. by @skx in #119
  • Implemented F_ERRMODE, as a NOP. by @skx in #120
  • Drive path by @skx in #121
  • Rename functions by @skx in #122
  • Added test-coverage for the console output functions by @skx in #123
  • Use x/sys/unix rather than syscall. by @skx in #124
  • 125 readline by @skx in #126
  • 127 fcb state by @skx in #128

Full Changelog: v0.10.0...v0.11.0

v0.10.0

02 Jun 06:18
@skx skx
Compare
Choose a tag to compare

This release features a couple of quality of life improvements:

  • There is a new "#.COM" binary added, which allows "comments" in SUBMIT files
    • For example the AUTOEXEC.SUB file we support might read "# QUIET 1" to have a default.
  • User-numbers are persisted across restarts, as well as the current drive-letter.
  • Our glob-handling was updated to handle the embedded utility binaries we include from the static/ directory.
  • The DDT.COM binary, which is a simple debugger, now works more than it did in the past.

What's Changed

This is a list of pull-requests merged:

  • Added "#.com", which allows us to have comments by @skx in #107
  • Persist the usernumber across restarts by @skx in #109
  • 110 glob by @skx in #111
  • Allow DDT.COM to run by @skx in #113

Full Changelog: v0.9.0...v0.10.0

v0.9.0

27 May 16:21
@skx skx
2458e06
Compare
Choose a tag to compare

This release improves the way that we handle the cpmulater-specific binaries. There are some binaries I've produced which use the available custom BIOS functionss, and these are now bundled directly within our release.

That means you will always see A:CTRLC.COM, A:QUIET.COM, and the other custom-binaries - the source of which is available within static/.

We've also added support for running scripts at startup:

  • If A:SUBMIT.COM exists and A:AUTOEXEC.SUB then the latter will be executed automatically.

What's Changed

This is a list of pull-requests merged:

  • Simplify our embedding of the CCPs by @skx in #93
  • Drop zork binaries and cleanup references to them by @skx in #94
  • Added CLI flag for controlling quiet-behaviour by @skx in #97
  • Allow running AUTOEXEC.SUB on-startup by @skx in #98
  • Ensure we're running under cpmulator before invoking functions by @skx in #100
  • Always use drive-remapping (internally) by @skx in #103
  • Implement a naive virtual filesystem by @skx in #105

Full Changelog: v0.8.0...v0.9.0

v0.8.0

24 May 03:00
@skx skx
0523249
Compare
Choose a tag to compare

This release improves the user-experience by making several things changeable at run-time, rather than requiring them to be set exclusively via command-line flags.

We've implemented some custom BIOS functions which can be used to change settings, then added some new binaries to make use of them:

  • CCP.COM
    • Switch between CCP versions at runtime.
  • CONSOLE.COM
    • Change the output driver, switching between ANSI & ADM-3A
  • CTRLC.COM
    • Traditionally CP/M will reload if you press Ctrl-C during the CCP. I decided that pressing this key might happen accidentally, so I only reboot if you pressed it twice in a row.
    • This tool lets you change to the default behaviour, or disable Ctrl-C handling.
  • QUIET.COM
    • Allows you to disable the banner printed on startup, and when CCP is reloaded.
  • TEST.COM
    • A simple binary that detects whether it is running under cpmulator, and reports the result along with the version number if it is.

These binaries were each added to the A: of the cpm-dist repository, as well as being added to this repository.

Secondly some issues were fixed with regard to the SUBMIT.COM handling:

  • It now works for >2 commands being submitted.
  • It also works on both CCP versions.

Finally the C_READSTRING BDOS function was improved to ensure it pays attention to the input-length restriction, and works correctly when given a NULL pointer as the input-area (which means it should use the TPA).

What's Changed

This is a list of pull-requests merged:

  • Make the writing of characters to the console pluggable. by @skx in #86
  • Allow runtime switching of CCP by @skx in #88
  • Fixed submit to work for > 2 commands by @skx in #90
  • Allow SUBMIT.COM to work with CCP, not just CCPZ by @skx in #92

Full Changelog: v0.7.0...v0.8.0

v0.7.0

21 May 14:13
@skx skx
Compare
Choose a tag to compare

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:

  • Added "LIST" to BIOS functions. by @skx in #74
  • Allow multiple CCPs by @skx in #77
  • Implement more syscalls by @skx in #79
  • Tty by @skx in #80
  • Allow Ctrl-C to reboot, at the CCP by @skx in #83
  • Allow SUBMIT to work by @skx in #81

Full Changelog

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

v0.6.0...v0.7.0

v0.6.0

16 May 02:16
@skx skx
Compare
Choose a tag to compare

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

  • Improvements to drive-handling in FCBs by @skx in #56
  • Resolve issues with STAT.COM by @skx in #57
  • Improve logging .. by @skx in #58
  • Add an input test binary by @skx in #59
  • Updated dependencies by @skx in #61
  • Allow turbo-pascal-compiled binaries to run by @skx in #62
  • Added CLI flag to dump syscalls by @skx in #63
  • Added command-line arguments for printer/logfile-paths. by @skx in #66
  • Resolved confusion about BDOS vs BIOS by @skx in #69
  • Implement F_SIZE by @skx in #70
  • Cap the drive at P, naturally. by @skx in #71
  • Trap warm/cold-boots. by @skx in #73

Full Changelog: v0.5.0...v0.6.0

v0.5.0

28 Apr 08:11
@skx skx
Compare
Choose a tag to compare

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: v0.4.0...v0.5.0

v0.4.0

24 Apr 17:07
@skx skx
9365f43
Compare
Choose a tag to compare

What's Changed

  • Implement F_RENAME by @skx in #43
  • Allow erasing multiple files by @skx in #44
  • Improve globbing. by @skx in #46
  • Cleanup the most obvious issues in syscalls by @skx in #47
  • Allowing the Aztec C-compiler to work - SysCallWriteRand was broken by @skx in #48

Full Changelog: v0.3.0...v0.4.0