Overview

SK*DOS/68K is a single-user disk operating system for computers using Motorola 32-bit CPUs such as the 68008, 68000, 68010, and 68020.

Although SK*DOS/68K contains quite a variety of advanced features, these are totally transparent to a beginning user, and are not necessary for actual use. They are there for those who want them.

System Compatibility

SK*DOS/68K can be used in systems from as small as 32K up to 16 megabytes or more. To date, it has been configured for 68xxx systems made by

and others. Some of these versions are available from us, others are supplied by the equipment manufacturers. In addition, a number of other manufacturers are using SK*DOS in embedded applications such as data collection or machine control. A do-it-yourself 68000 computer project using SK*DOS was featured in a series of articles beginning in the October 1987 issue of Radio-Electronics Magazine.

There is a `generic' version of SK*DOS which is user-configurable for other computers. This version includes a Configuration Manual, which describes how to implement SK*DOS/68K on a new system. It comes with a disk with source code for the terminal and disk drivers, boot program, disk format utility, and other valuable information. Builders of small systems will be especially interested in the source code for 68K HUMBUG, a boot ROM which provides for system startup and debugging while adapting SK*DOS for new systems. The disk is available in either SK*DOS format or in IBM PC format.

Technical Data

SK*DOS/68K is set up so that it defaults to a very simple system unless the user specifically calls its more advanced features. Some of these include multiple directories, I/O redirection, batch files, RAMdisk, disk caches, hard disks, time-stamping, etc. User-written device drivers are easily installed to provide customization to different terminals or other I/O devices.

To run SK*DOS/68K, a computer requires a minimum of 32K of RAM, with 128K or more being preferred. But the old maxim of `the more, the better' certainly holds.

Although SK*DOS is not relocatable, we can provide it at a variety of different memory addresses on special order (and it is therefore also potentially ROMable). Since most 68000 computers will have RAM beginning at address $0000, the most likely memory configuration will look as follows:

$0000 - 03FC Trap and interrupt vectors
$0400 - 0FFF Boot routines and stack space
$1000 - 7FFF (approx) SK*DOS/68K
$8000 to end of memory - available to user programs

This is just one possible configuration; different configurations are possible for systems which lack available memory beginning at $0000.

All memory above SK*DOS/68K is available for user programs and utilities. It is relatively easy to implement TSR (Terminate and Stay Resident) programs; for example, SK*DOS/68K is supplied with a RAM disk program which can reserve 16K or more of memory as a RAM disk. This program and its data area would normally be loaded once and then stay in memory above SK*DOS; SK*DOS maintains memory pointers which define the bottom and top of free memory.

Unlike SK*DOS/68K itself, disk-resident commands (such as CAT or LIST), as well as user-written programs, are written in position independent code. When executed, these are loaded by SK*DOS/68K into the free space above SK*DOS/68K itself (and above any TSR programs that may have been previously loaded.) Hence such user programs and utilities will run in any SK*DOS/68K system, even one where SK*DOS/68K has been located at some other address.

Since SK*DOS/68K may not lie in the same place on all systems, user programs must be position independent. Moreover, all calls to SK*DOS/68K, as well as all references to SK*DOS/68K variables, must also be position independent. Hence all such calls are through exception vectors, and all references to SK*DOS/68K variables are through relative addressing.

For assembly language users, SK*DOS comes with an equates file which allows all system variables and functions to be called by their symbolic names. Using this method, DOS calls become simple DC commands. For example, instead of calls such as INT 16h, which are used in 8088 systems, SK*DOS uses calls such as DC SWRITE to write a sector, DC FOPEN to open a file, or DC OUTCH to output a character.

When used with a system ROM such as HUMBUG, SK*DOS allows convenient debugging of programs under development. A TRACE command in SK*DOS allows a program to be loaded and then entered in trace (single-step) mode. The ROM debugger then takes over and permits tracing or breakpointing.

Combined with the simple user interface, this makes it very convenient to use the 68000 for CPU-intensive applications.

SK*DOS Functions and Commands

SK*DOS/68K is provided with a full complement of utilities, including those needed to format, copy, backup, and test disks; display disk contents; build, list, append, rename, or delete files; and change system parameters. This includes the obvious utilities like COPY, CAT, RENAME or DELETE, as well as utilities which depend on specialized hardware, such as TIME, HDFORMAT, or PARK.

SK*DOS/68K is also supplied with an editor, a full 68000 assembler, and a (somewhat limited) Basic language interpreter, which allow you to immediately get started learning the power of SK*DOS. Other programs and utilities are supplied to make SK*DOS more convenient or to speed up its operation. The RAMDISK command allows you to set up a RAM disk up to 1 megabyte in size; the CACHE command sets up a disk cache which tremendously speeds up access in floppy - based systems. UNDELETE permits files to be retrieved , sometimes as long as days or weeks after they have been deleted. REDOFREE permits disk space to be compacted or compressed to speed up disk access.

A rather unique utility is SK*DOS09. This is a complete 6809 SK*DOS and a 6809 emulator program. It allows you to run standard 6809 programs on your 68K system (although they do run at reduced speed). For those users who have a substantial base of 6809 software (using either 6809 SK*DOS or 6809 Flex), this allows them to run such popular programs as 6809 editors, spreadsheets, assemblers and cross-assemblers, word processors, compilers, and more.

Like its 6809 predecessor, SK*DOS/68K contains program-callable functions to do file maintenance; open, read, write, and close sequential and random files; read and write individual sectors; access the disk directory; input and output characters, strings, and numbers; process command line arguments; parse file names; report errors, and more.

SK*DOS/68K has also been designed to make expansion easy. A standardized system of calling disk and terminal drivers makes it possible to add additional device drivers without great complexity. SK*DOS/68K supports up to ten logical disk drives, so a system can contain as little as one drive (plus perhaps a RAM disk), or as many as ten drives. Furthermore, the DEVICE and DRIVE commands allow I/O devices and disk drives to be reassigned as needed, so additional devices and drives can be brought in as needed.

Depending on the available hardware, SK*DOS can support floppy disks up to 16 megabytes in size, and hard disks up to 64 megabytes. Hard disks can be partitioned into up to four partitions. Files as well as entire disks can be software write protected.

SK*DOS/68 supports I/O redirection from the command line, using the < and > symbols as in Unix or MS-DOS, to either disk files or I/O devices. It also supports batch files, and batch files can call other batch files. In addition, application programs can pass a command line to SK*DOS as if it came from the console and have it executed. Combined with the fact that it is easy to reserve memory for resident programs, this makes it easy to add an alternate command processor or shell which totally changes the user interface.

Files written to disk normally contain the file creation or last modification date. In addition, each file entry may also contain a creation or modification time if the system contains a clock/calendar IC. If such hardware is not available, then SK*DOS/68K defaults to sequentially numbering files each day, and records the sequence number rather than the time. Disk catalog utilities are provided which list disk contents either in the order on the disk, in alphabetic order, in order by date and time, or in order by date and sequence number; the latter two show the latest files first.