A Disk Operating System For The OSI C1P or Superboard II
Ronald C. Whitaker
Salt Lake City, Utah
The day I received my OSI disk drive and 610 Expander board, I hooked them to my C1P and my homebuilt power supply, turned them on, and pushed "D" to boot up the disk. OSI's Pico-Dos came with the drive and expander board and booted up OK but would only allow me to load eight programs of up to 8K each. This was faster than cassette to be sure, but definitely lacking the features I wanted in a disk operating system. I lacked funds for OSI's OS65D and the additional 4K of memory it required to run on my system. The future looked dismal, indeed!
The day was saved by a single stroke of good fortune. Several months earlier a local dealer had loaned me a catalog from "The 6502 Program Exchange". While oriented mostly toward Apple and single board systems, they did have a few OSI compatible programs listed. One of these was HEXDOS 2.3 for the C1P and Superboard II by Steve Hendrix. The features promised by the catalog sounded too good to be true! These included:
- An operating system and directory which occupied only the first two tracks on the disk
- A tone generator
- Real-time Clock
- Special keyboard functions for instant screen clear and program line editing.
- Utility programs to CREATE, DELETE, and FORMAT program space on the disk
I sent for the program and received it in about 10 days. My first attempts to use it were frustrating. It would function erratically or not at all. But in a quick exchange of correspondance with the author, the problem was resolved, my copy of the program was updated and has functioned flawlessly ever since. It is an exceptionally compact system due to its full use of ROM BASIC and the ROM Monitor software built into the C1P. The following is a brief discussion of the features I have found most useful.
- LOAD and SAVE commands are the heart of any operating system. HEXDOS uses LOAD (filename) and SAVE (filename) to load and save programs by filename. Other commands open and close named data files, each consisting of a 2K block of memory which fills one disk track. Opening a data file reserves a 2K block of RAM for that file. Closing a file loads the contents of that 2K block to one track of the disk. Each file is designated as an input file or as an output file and up to 11 of each are allowed simultaneously, provided there is sufficient RAM memory to support them.
The most versatile and, potentially, the most useful LOAD and SAVE commands allow the user to load 2K bytes from a specified track to any location in RAM memory. The corresponding save command loads any 2K block of memory to be saved to a specified track number. Because of the directness of these commands, care must be used to avoid accidental over-writing of existing data or program memory. Using these direct LOAD and SAVE commands, I have written programs using record and file lengths of my own choosing.
- INPUT and PRINT commands control I/O to or from disk data files, video screen, keyboard, 6850 ACIA, and ports reserved for printer and modem.
- SPECIAL KEY FUNCTIONS make use of unused keys to provide instant screen clear, suspension of output until key is released, break in a BASIC program, and non-destructive forward and backward movement of the cursor for simple line editing. These functions are so useful that they are sorely missed on those rare occasions when I'm writing a program without HEXDOS.
- SINGLE STEP and TRACE functions are added using simple POKE statements, and are very useful for debugging programs.
- The USR function is used to provide several special functions:
- Control of a tone generator with 256 different tones
- Input of a character from one of 256 possible input devices
- Return contents of the real-time clock
- Direct jump to a machine code routine located anywhere in memory
- Jump to ROM monitor
- Jump to the last machine code routine loaded from the disk
Use of the tone generator and the real-time clock requires very simple hardware modifications which are well detailed in the HEXDOS manual and require only a few minutes to perform. The real-time clock requires a single jumper between pads provided on the 610 board. Since I have my C1P interfaced to a General Instrument's Programmable Sound Generator, I have not tried the tone generator, but it requires a single jumper and an audio amplifier. Additional hardware modifications include repositioning the break key to a less vulnerable location, automatic power-on reset (D/C/W/M appear when the computer is turned on), and disk drive motor control, which turns off the drive motor when it is not being used. None of these modifications are necessary for HEXDOS operation but all of them are useful additions to the computer's capabilities.
- UTILITY PROGRAMS:
FORMAT will completely erase a disk and then format it for HEXDOS by loading the operating system onto track 0 and reserving track 1 for the directory.
CREATE names and reserves any number of tracks for use as data files or for storage of machine language programs, which require filenames beginning with $. These can then be loaded directly into any specified location in user RAM.
DELETE erases any program listed in the directory, deallocates the space on the disk reserved for it, and repacks the remaining files.
DISASSEMBLER lists machine code programs using standard 6502 mnemonics and identifies the addressing mode of the instruction.
HEXDOS 2.3 is an extremely compact, easy-to-use, and versatile operating system for the OSI C1P or Superboard II. Because it is so compact it can be placed at the beginning of every disk. Documentation is clear and complete, the best I have seen from any source. Because I knew nothing about data files or their use, I wrote to the author of HEXDOS, Steve Hendrix, for information. Besides a personal reply, I received two new pages of documentation explaining use of disk files. Using HEXDOS 2.3 has been a pleasant and rewarding experience for me and I strongly recommend it as a versatile and inexpensive alternative to other operating systems.
HEXDOS 2.3 is available for $25 from:
The 6502 Program Exchange
2920 West Moana Lane
Reno, NV 89509