Professor Mark Csele

Challenger 3P – OEM

This perhaps one of the most interesting systems ever built: a floppy-disk based computer featuring three separate processors allowing the user (or even a program) to choose which processor to use from a selection of popular late-1970’s processors including the 6502, 6800, and the Z-80. When using the Z-80, for example, the user could run the CP/M operating system (one of the most popular at that time).

The system resembles most others offered in the late 1970’s by Ohio Scientific: several printed-circuit cards together on a backplane which holds up to eight of which one card is the CPU, and several others memory and I/O including disk interface. The system features two eight-inch floppy drives, the most popular size at the time and with storage capacities far in excess of the very newest 5.25-inch “mini-floppy” drives. This system, a C3-OEM, lacks a video display (becoming popular with “personal” computers) having a serial port instead through which the user interacts with the machine. The terminal could be either a video terminal, connected via an RS-232 serial interface, or a teletype terminal connected via a 20mA current loop (the CPU had both interfaces).

A “typical” high-end machine of the time, the most unusual thing about this particular system is the multi-processor CPU board. This machine, a C3-A, used two floppy drives for storage but an even larger configuration of this machine, the C3-B and C3-C versions, features a hard-disk drive (extraordinarily rare for the time), the controller for which had a dual-port RAM board and a DMA controller based on TTL chips (like the rest of OSI’s circuitry).

The configuration is as follows: A 510 CPU board (with a 6502, 6800, and Z80 processor), a 470 floppy disk controller, a 522 48K memory card, another 527 memory card with only 8K populated, and a second 470 card used only as a Centronics printer interface. While a “standard” C3 system used different RAM boards (usually three 520 boards containing 16K each), this particular system featured a single 522 memory board utilizing unusual 421D 1K*8 SRAM chips in an 22-pin 0.4″ wide DIP package. In addition to the 48K RAM installed (as expected), this system also featured a separate 527 memory card with only 8K installed. This RAM is required to increase the system RAM to 56K to run CP/M or the highest-level of the OS-65U (6502-based) operating system used for multi-user usage. It is mapped at 0xD000 through 0xEFFF.

As usual with an old system, it is best to _not_ trust the power supplies so all cards were first removed and the supplies tested separately. This system features three power supplies: A large Deltron MPS-2 supply which powers cards in the backplane (Supplying +5V, +12V, and -9V), a smaller +5V supply for the floppy disk drives, and a third small +24V supply also for the floppy drives. After the supplies were verified, configuration of the boards was checked before each was reinstalled.

Examination of the CPU card shows a few apparent modifications including the addition of an AND gate on the adjacent 527 memory board which served to disable data bus transceivers prohibiting access to the on-board 6810 memory in the region F0xx as well as the usual FCxx and F7xx ranges (FCxx is used for serial I/O and F7xx for a PIA and so nothing else must be permitted to access these memory areas). Why the region at F0xx must be omitted as well is a mystery. The fact that this CPU board has this extra RAM (128 bytes, normally located at F2xx) indicates it was the “deluxe” version of the 510 board with software-selectable processor (allowing a program to change processors) instead of the simplified version which used a three-position switch. The extra RAM is used to allow a 6800 or 6502 to call and execute programs using a different processor. This RAM is relocatable and under program control can be located at FF00 allowing it to contain restart and interrupt vectors (in place of a normal monitor EPROM). During a switch from one processor to another, this RAM area could be reprogrammed to point to the location of a new program. As for the after-market modification made, it was odd that the 74LS08 gate used was placed on a separate, adjacent, board and connected via three long wires however the 510 board is “stuffed” and lacks the usual prototyping area that most OSI cards have (i.e. a DIP outline in copper allowing addition of circuitry).

Well, the machine was reassembled and works perfectly! OS-65D runs well on the system and in one of the most amazing displays of late 1970’s technology, runs CP/M! Take a look below at a capture of a session:

49K CP/M Rev. 2.24
for Ohio Scientific C3  
Copyright (C) 1980, 81 by Lifeboat Associates

A: PIP      COM : STAT     COM : LOAD     COM : DDT      COM
A: SUBMIT   COM : ASM      COM : DUMP     COM : DUMP     ASM
A>STAT *.*

 Recs  Bytes  Ext Acc
   64     8k    1 R/W A:ASM.COM
   24     3k    1 R/W A:COPY.COM
   38     5k    1 R/W A:DDT.COM
   33     5k    1 R/W A:DUMP.ASM
    3     1k    1 R/W A:DUMP.COM
   52     7k    1 R/W A:ED.COM
    3     1k    1 R/W A:FORMAT.COM
   14     2k    1 R/W A:LOAD.COM
   15     2k    1 R/W A:MEMR.COM
    8     1k    1 R/W A:OSIGEN.COM
   46     6k    1 R/W A:OSILNKS.ASM
   58     8k    1 R/W A:PIP.COM
   41     6k    1 R/W A:STAT.COM
   10     2k    1 R/W A:SUBMIT.COM
   20     3k    1 R/W A:WFBIOS.COM
    6     1k    1 R/W A:XSUB.COM
Bytes Remaining On A: 177k

CP/M is the predecessor to PC-DOS and so, not surprisingly, is easy to use for someone well acquainted with DOS. The actual O/S lacks many of the usual DOS commands such as COPY, for which the “PIP.COM” program is used (it is a generic copying utility). A formatted disk may be made bootable using the “OSIGEN.COM” command which builds a specific version of CP/M for this machine: the main addition being that the 510 CPU boots in “6502” mode which then boots the Z-80 processor to run CP/M.

Of course, most OSI machines ran the OS-65 operating system. This is a relatively primitive track-based O/S providing only the most basic of operations. Although it features a basic command interpreter for “native mode” commands such as “INIT” to format a disk the majority of commands, including external commands, are written in BASIC which is built into the O/S. On boot-up, the O/S runs the BASIC interpreter and executes a BASIC program named “BEXEC*”. Being track-based, the O/S lacks a true directory … in the original versions the user was required to access files by track number directly. A “CALL” command (one of the most fundamental of this O/S) loaded tracks from the disk to memory where they could be executed via the BASIC interpreter or the assembler, also part of the O/S. A corresponding SAVE command writes data in a block of memory to the disk at a specific track and sector.

Disk organization is simple: for an eight-inch disk there are 77 tracks (numbered 0 through 76) and each track can store up to twelve pages of 256 bytes each (total disk capacity is hence 231K). Sectoring is soft and accomplished in software – each track can be broken-up into one or more sectors and each sector can contain any number of pages (the maximum usage of a track being a single sector of twelve pages). A header on each track tells the O/S the track number, and each track also has at least one sector header identifying the sector number and the number of pages in that sector (if more than one sector exists on a track, subsequent sectors with their own headers will be found on that same track – sectoring does consume disk space, though, and so if more than one sector exists per track a maximum of eleven pages can be accomodated per track).

A named directory was possible, however, via a file stored on the ninth track which stored filenames and the starting track. To use the named directory, the user needed to CREATE a file using a utility – this inserted a record into the directory – and the external DIR command could be used to read this file to the screen. The actual code for the “DIR” command was written in BASIC and is shown below:

 20 REM
 30 NF=0
 40 PN=11897
 50 DEF FNA(X)=10*INT(X/16)+X-16*INT(X/16)
 80 DV=1 : Y=1 : X=PEEK(8994)
 90 IF X=									

The utility is quite simple and works using a CALL command (an internal OS-65 command) to read the contents of track 08 into memory at location 0x2E79 (11897 decimal). The contents of the memory at this location are then displayed directly on the screen. Similar commands exist to delete and rename files. An example output of this command is shown below:


OS65D3       0  - 8 
BEXEC*       9  - 9 
CHANGE       10 - 10 
CREATE       13 - 14 
DELETE       15 - 15 
DIR          16 - 16 
DIRSRT       17 - 17 
RANLST       18 - 19 
RENAME       20 - 20 
SECDIR       21 - 21 
SEQLST       22 - 23 
TRACE        24 - 24 
ASAMPL       27 - 27 
COLORS       28 - 28 
C-ASM1       29 - 29 
C-ASM2       30 - 30