2019-10-04 04:36:01 +00:00
# ProDOS Drivers
2021-06-20 00:23:00 +00:00
[![build ](https://github.com/a2stuff/prodos-drivers/actions/workflows/main.yml/badge.svg )](https://github.com/a2stuff/prodos-drivers/actions/workflows/main.yml)
Build with [ca65 ](https://cc65.github.io/doc/ca65.html )
2019-10-04 04:36:01 +00:00
2020-12-22 03:58:27 +00:00
# What are ProDOS "drivers"?
2020-12-21 03:42:47 +00:00
2019-10-04 04:36:01 +00:00
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)
2020-12-21 04:30:30 +00:00
* In ProDOS 1.x, 2.0 and 2.4 the Thunderclock driver is built-in.
2019-10-04 04:36:01 +00:00
* RAM Disk drivers (e.g. RamWorks)
2020-12-21 03:42:47 +00:00
* In ProDOS 1.x, 2.0 and 2.4 only a 64K driver for /RAM is built-in.
2019-10-04 04:36:01 +00:00
* Quit dispatcher/selector (`BYE` routines)
2020-12-23 22:35:08 +00:00
* In ProDOS 1.0 and later, a 40-column friendly [selector ](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 ](https://prodos8.com/bitsy-bye/ ) is built-in.
2019-10-04 04:36:01 +00:00
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.
2020-12-21 04:30:30 +00:00
This repository collects several drivers and uses common code to chain to the next `.SYSTEM` file, suporting network drives.
2020-12-21 03:42:47 +00:00
2020-12-22 03:58:27 +00:00
## What is present here?
2021-10-06 02:58:31 +00:00
This repo includes the following drivers/modifications:
2020-12-22 03:58:27 +00:00
* Real-time Clock drivers
* No-Slot Clock
2021-09-06 18:31:18 +00:00
* Cricket!
2020-12-22 03:58:27 +00:00
* Applied Engineering DClock
2021-10-06 02:58:31 +00:00
* ROMX Real-Time Clock
2022-11-16 04:36:19 +00:00
* FujiNet Clock
2022-11-27 04:35:05 +00:00
* A "jumbo" driver that includes all of the above (just called `CLOCK.SYSTEM` )
2023-11-11 22:22:10 +00:00
* Accelerators
* ZIP CHIP configuration (sets the chip to slow on speaker access)
2020-12-22 03:58:27 +00:00
* RAM Disk drivers
* RAMWorks Driver by Glen E. Bredon
* Quit dispatcher/selector (`BYE` routines)
2020-12-23 22:35:08 +00:00
* 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)
2022-01-07 01:12:30 +00:00
* Text color themes
* These set the IIgs (or VidHD) text/background/border colors
2020-12-22 03:58:27 +00:00
2021-09-06 18:31:18 +00:00
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.
2020-12-22 03:58:27 +00:00
2021-08-26 03:53:21 +00:00
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!)
2021-10-06 02:58:31 +00:00
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.
2020-12-22 03:58:27 +00:00
2020-12-21 03:42:47 +00:00
## How do you use these?
2019-10-04 04:36:01 +00:00
2021-09-06 18:31:18 +00:00
The intent is that you use a tool like Copy II Plus or [Apple II DeskTop ](https://github.com/a2stuff/a2d ) 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:
2020-12-21 03:42:47 +00:00
* `PRODOS` - the operating system, e.g. [ProDOS 2.4 ](https://prodos8.com/ )
2021-10-06 02:58:31 +00:00
* `NS.CLOCK.SYSTEM` - install No-Slot clock driver, if present
* `ROMXRTC.SYSTEM` - install ROMX clock driver, if present
2022-11-16 04:36:19 +00:00
* `FN.CLOCK.SYSTEM` - install FujiNet clock driver, if present
2020-12-22 03:58:27 +00:00
* `DCLOCK.SYSTEM` - install DClock clock driver, if present
2020-12-21 03:42:47 +00:00
* `CRICKET.SYSTEM` - install Cricket! clock driver, if present
2023-11-11 22:22:10 +00:00
* `ZIPCHIP.SYSTEM` - slow the ZIP CHIP on speaker access, if present
2019-10-04 04:36:01 +00:00
* `RAM.DRV.SYSTEM` - install RamWorks RAM disk driver, if present
2020-12-21 03:42:47 +00:00
* `BUHBYE.SYSTEM` - install a customized Quit handler to replace the built-in one
2021-08-26 03:53:21 +00:00
* `PAUSE.SYSTEM` - pause for a moment, so that you can inspect the output of the above
2019-10-04 04:36:01 +00:00
* `QUIT.SYSTEM` - invoke the Quit handler immediately, as a program selector
2020-12-22 03:58:27 +00:00
* `BASIC.SYSTEM` - which will not be automatically invoked, but is available to manually invoke
2020-12-21 03:42:47 +00:00
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` .
2023-05-02 02:47:10 +00:00
# Building
Fetch, build, and install [cc65 ](http://cc65.github.io/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 ](https://github.com/mach-kernel/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 ](http://adtpro.com/ ).
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.