Apple II ProDOS-8 system files that run on startup and install clock drivers, ramdisks, and other utilities
Go to file
frankmilliron b182a53dfa
The Cricket!: fix hang on Total Replay (#19)
* The Cricket!: fix hang on Total Replay

The Cricket reset command sends Total Replay into an endless loop when launched, presumably because of an interrupt situation (TR just does RTI on an interrupt). Toggling the COMMAND and CONTROL settings seems to allow TR to function properly, while also allowing the Cricket initialization code to silence any playing notes.

* The Cricket!: Reset Cricket before probing

Finds the Cricket every single time this way. Occasionally the driver would miss finding it due to it being in a wait state. Sending a reset first fixes that.

* The Cricket!: make sure registers are toggled for TR
2023-07-17 08:11:30 -07:00
.github/workflows Workflows: bump ca65 action to v2 2023-03-02 20:02:25 -08:00
clocks The Cricket!: fix hang on Total Replay (#19) 2023-07-17 08:11:30 -07:00
inc Jumbo clock driver: Include success logging 2023-01-31 20:01:05 -08:00
ram.drv Add build options to suppress success and/or failure logging 2023-05-01 19:47:10 -07:00
selectors BuhBye: Cycle through volumes after the boot volume more intuitively 2022-09-01 20:38:07 -07:00
textcolors Text color themes: Don't force 40 col/text or clear the text screen 2022-01-06 17:16:42 -08:00
util Add ME.FIRST.SYSTEM 2022-02-03 20:14:10 -08:00
.gitignore Combine preamble files, .gitignore, and split out ns.clock 2019-10-03 21:49:53 -07:00
Makefile Add build options to suppress success and/or failure logging 2023-05-01 19:47:10 -07:00
README.md Add build options to suppress success and/or failure logging 2023-05-01 19:47:10 -07:00
package.sh The Cricket!: Add unified SET.DATETIME util 2023-06-25 11:46:35 -07:00

README.md

ProDOS Drivers

build

Build with ca65

What are ProDOS "drivers"?

The ProDOS operating system for the Apple II executes the first .SYSTEM file found in the boot directory on startup. A common pattern is to have the boot directory contain several "driver" files that customize ProDOS by installing drivers for hardware or modify specific parts of the operating system. These include:

  • Real-time Clock drivers (e.g. No-Slot Clock, Cricket!, AE DClock, etc)
    • In ProDOS 1.x, 2.0 and 2.4 the Thunderclock driver is built-in.
  • RAM Disk drivers (e.g. RamWorks)
    • In ProDOS 1.x, 2.0 and 2.4 only a 64K driver for /RAM is built-in.
  • Quit dispatcher/selector (BYE routines)
    • In ProDOS 1.0 and later, a 40-column friendly selector prompts for a prefix then a path ENTER PREFIX (PRESS "RETURN" TO ACCEPT)
    • In ProDOS 1.9 and 2.0.x, on 80-column systems, a menu-driven selector is installed instead.
    • In ProDOS 2.4.x Bitsy Bye is built-in.

Early versions of these drivers would often invoke a specific file on completion, sometimes user-configurable. The best versions of these drivers simply execute the following .SYSTEM file, although this is non-trivial code and often did not work with network drives.

This repository collects several drivers and uses common code to chain to the next .SYSTEM file, suporting network drives.

What is present here?

This repo includes the following drivers/modifications:

  • Real-time Clock drivers
    • No-Slot Clock
    • Cricket!
    • Applied Engineering DClock
    • ROMX Real-Time Clock
    • FujiNet Clock
    • A "jumbo" driver that includes all of the above (just called CLOCK.SYSTEM)
  • RAM Disk drivers
    • RAMWorks Driver by Glen E. Bredon
  • Quit dispatcher/selector (BYE routines)
    • 40-column Selector (from ProDOS)
    • 80-column menu-driven Selector (from ProDOS 1.9 and 2.x)
    • Bird's Better Bye (a 40-column menu-driven selector)
    • Buh-Bye (an enhanced version of the ProDOS 80-column, menu-driven selector)
  • Text color themes
    • These set the IIgs (or VidHD) text/background/border colors

In addition, QUIT.SYSTEM is present which isn't a driver but which immediately invokes the QUIT handler (a.k.a. program selector). This will happen automatically if the last driver can't find another .SYSTEM file, but QUIT.SYSTEM can be used to stop the chain.

There's also PAUSE.SYSTEM which just waits for a fraction of a second before invoking the next driver file. (Why? In case the log messages from the other installers goes by too fast!)

Non-drivers that are included:

  • The DATE binary file can be BRUN (or just -DATE) to show the current ProDOS Date/Time, to verify that the clock driver is working.
  • Some utilities for The Cricket! clock are also included.

How do you use these?

The intent is that you use a tool like Copy II Plus or Apple II DeskTop to copy and arrange the SYSTEM files on your boot disk as you see fit. A boot disk image catalog that is used on multiple different hardware configurations might include:

  • PRODOS - the operating system, e.g. ProDOS 2.4
  • NS.CLOCK.SYSTEM - install No-Slot clock driver, if present
  • ROMXRTC.SYSTEM - install ROMX clock driver, if present
  • FN.CLOCK.SYSTEM - install FujiNet clock driver, if present
  • DCLOCK.SYSTEM - install DClock clock driver, if present
  • CRICKET.SYSTEM - install Cricket! clock driver, if present
  • RAM.DRV.SYSTEM - install RamWorks RAM disk driver, if present
  • BUHBYE.SYSTEM - install a customized Quit handler to replace the built-in one
  • PAUSE.SYSTEM - pause for a moment, so that you can inspect the output of the above
  • QUIT.SYSTEM - invoke the Quit handler immediately, as a program selector
  • BASIC.SYSTEM - which will not be automatically invoked, but is available to manually invoke

Alternately, you might want to install some drivers then immediately launch into BASIC. In that case, put BASIC.SYSTEM after the drivers in place of QUIT.SYSTEM.

Building

Fetch, build, and install cc65:

git clone https://github.com/cc65/cc65
make -C cc65 && make -C cc65 avail

Fetch and build this repo:

git clone https://github.com/a2stuff/prodos-drivers
cd prodos-drivers
make

To make a disk image, fetch, build and install Cadius:

git clone https://github.com/mach-kernel/cadius
make -C cadius && make -C cadius install

Then you can:

cd prodos-drivers
make && make package

This will produce prodos-drivers.po, a disk image for use with emulators or tools like ADTPro.

Notes:

  • Specify LOG_SUCCESS=0 and/or LOG_FAILURE=0 (e.g. make LOG_SUCCESS=0) to build with driver success and/or error logging suppressed.