Opus Challenger

From BeebWiki
Jump to: navigation, search

The Opus Challenger is a peripheral for the BBC Microcomputer series that provides double-density floppy disc and RAM disc storage. Plugging into the 1 MHz bus and auxiliary power connector, the external case contains an Opus-branded Mitsubishi 5¼" DSDD 80-track disc drive, a WD 1770 floppy drive controller and either 256 KiB or 512 KiB of RAM.

The accompanying ROM enables the user to treat the RAM as one or two virtual DFS floppy drives up to 256 kilobytes each, or one 512 kilobyte ADFS volume on a Master series computer. It also provides access to data on floppy disc in either Acorn DFS format or in the proprietary double-density format of Opus DDOS, giving data capacities of up to 400 KiB and 720 KiB per disc, respectively.

Hardware

Challenger 3 is the definitive model of the expansion unit; its label design incorporating a '3-in-1' device raises confusion, but it appears in Opus's first advertisements for the Challenger in October 1985[1] and so likely indicates the first released model.

The five registers of the WD 1770 floppy drive controller and three auxiliary registers are mapped to the end of the FRED address space:

Address Source on read Destination on write
&FCF8 Status register Control register
&FCF9 Track register Track register
&FCFA Sector register Sector register
&FCFB Data register Data register
&FCFC Undefined Control latch
&FCFE Undefined MSB JIM paging register
&FCFF Undefined LSB JIM paging register

The Challenger expansion board does not connect the controller's INTRQ pin to the BBC's NMI line; NMIs are raised solely by data requests from the DRQ pin.

The control latch is a write-only register at &FCFC, laid out as follows:

Bit Meaning
7..6 Not used
5 Density select (0 = double density; 1 = single density)
4 Controller reset (0 = reset controller; 1 = enable controller)
3 Unit 2 select (0 = disable drives 6/7; 1 = enable)
2 Unit 1 select (0 = disable drives 1/3; 1 = enable)
1 Unit 0 select (0 = disable drives 0/2; 1 = enable)
0 Side select (0 = bottom/low numbered drives; 1 = top/high numbered drives)

At most one unit select bit may be set at any time.

The RAM appears in the JIM address space at &FD00..FF, one page at a time. The Challenger unit contains either four or eight 64 KiB banks of RAM; the LSB JIM paging register selects one of the 256 pages in the current bank to present in the JIM window. Bits 2..0 of the MSB JIM paging register select the current bank. In 256 KiB units, banks 4 to 7 map to empty sockets; the ROM detects the unit type by probing bank 4 for a response.

An extension connector is provided inside the Challenger unit to connect another device to the 1 MHz bus. However, as the indexed addressing instructions in the Challenger ROM cause the 6502 to make large numbers of dummy read cycles throughout page &FC, the device must be designed with care.

Slogger Computers advertised a Challenger 4 at the end of 1987 with up to 1024 KiB of memory fitted, but details of the device and its firmware are yet to be confirmed.

Firmware

The accompanying firmware, named Opus Challenger and latterly Slogger Challenger, branched from the Opus DDOS 3.45 codebase around the time revision 3.0 was released, in October 1985. Like DDOS it is thus a derivative of Acorn DFS.

The code has been extensively reworked to use only the Challenger unit's RAM for workspace, leaving PAGE at &E00 in most cases. This entailed adding new data pathways and a second address space to the internal data transfer platform, so that media sectors could be interchanged either with user memory or directly with the workspace. With over ¾ KiB of the ROM assigned to paging the correct part of RAM into the JIM window, space was reclaimed by removing Teletext decorations and the Tube hosting code, and by replacing some *commands with *OPT settings ported from Opus EDOS, where they operate natively.

Conversely, the rudimentary RAM disc support found in DDOS has been expanded with increasingly comprehensive floppy drive emulation via OSWORD &7F. Later versions eliminate the Can't extend error by transparently moving files on the volume to make more room for a sequential file.

To ease the use of programs with hard-coded drive numbers, a *CONFIG facility maps six, later eight, logical drives to either floppy or RAM disc as needed. A *MAP command is added to DDOS's *STAT and *TAPEDISK commands to aid file and disc management.

Developments in the Challenger code were fed back into the DDOS branch, such as RLE disc formatting; and after the fork some bugs were still fixed in parallel.

Challenger does not comply with the conventions Acorn previously introduced for use of the 1 MHz bus. The Advanced User Guide identifies location &EE as a RAM copy of the JIM paging register at &FCFF, which Challenger neither references or updates. The firmware assigns all pages in JIM to its own purposes, disregarding Acorn's reservation of the bottom 32 kilobytes. And as mentioned, volumes of spurious reads of FRED addresses will incite other hardware extensions to clear interrupts, mis-set latches or drop bytes of serial data.

Challenger 2.00

In 1987 Slogger Computers, having acquired the Challenger product line from Opus Supplies, produced and marketed a version of Acorn ADFS for use with the Master Series computers and the Challenger 3. It consists of Challenger 2.00 and the adapted ADFS in one 32 KiB ROM; the ADFS half of the ROM calls a private entry point in its DFS-compatible neighbour to perform disc access and other low-level functions. While ADFS also makes use of the Master's HAZEL memory and 65C12 instructions, Challenger 2.00 is assembled to stand alone on Master or Model B and use only the Challenger unit's RAM for workspace, as before.

Challenger 2.00 itself is enhanced to respond to the system calls introduced in MOS 3.00; it implements the *EX command (albeit with faulty argument processing) and answers *INFO calls on the MOS's behalf. These enhancements, together with the low-level routines it provides for ChADFS, call for even more space and in response the Teletext graphics are condensed further and the *TAPEDISK command removed altogether (another Slogger product, T2C3, replaces this function.)

Naturally, the new ADFS can employ the expanded RAM for mass storage in its own format: 512 KiB expansion units can host a single ADFS volume or two DFS volumes in mutual exclusion. To keep Challenger and ADFS from corrupting each other's RAM disc – and to prevent trouble from programs – Challenger maintains a 'density flag', set during formatting, which disables any access calls made in the opposite density. In this way the solid-state chips are made to act as either 'single density RAM' or 'double density RAM'!

A batch of prototypes retrieved from Slogger in 2009 included both titles on two 16 KiB chips as well as a 32 KiB twin pack, and so Slogger may also have shipped Challenger 2.00 as a separate product. In any case it runs happily on the Model B barring one mild bug introduced while catering to the presence of ADFS.

Development history

Features of the known releases of Challenger, along with those of related ROMs, are summarised in the following table:

Title Version Date Description
DDOS Conjectured prototype 1983–4 Has *4080 command and Teletext graphics. OSGBPB 5 omits CSD drive number.
EDOS 0.4 1984 Coded to loose spec of DDOS prototype; Acorn implementation not adhered to. Has *CAT * (catalogue all volumes on drive) and density override via *OPT 6. *CAT file list indented by one column instead of two, misinterpreting DDOS's Teletext display. Features an LBA layer on top of OSWORD &7F. 13½ KiB of code.
DDOS 3.00 27 March 1984 Has *4080, *ROMID and *XCAT commands, no density override. OSGBPB 5 returns CSD drive number. 14 KiB of code.
DDOS 3.12 1984 Adds *DENSITY, *COPYRIGHT commands and RAM disc support. Full 16 KiB ROM.
DDOS 3.x5 rev. 0.2 1 Oct 1984 All the features of DDOS 3.12 with a known build date.
DDOS 3.x5 rev. 3.0 16 Oct 1985 Drive spec parser modified to accept * but no caller enables it. The current filename is initialised to all spaces.
Challenger 1.00 1985 Branched from DDOS 3.45. Streamlined, but vestigial DDOS code remains. *CONFIG R and RLE formatting present, *CAT * replaces *XCAT. *OPT settings ported from EDOS replace *DENSITY, *4080 and *SROM. No Tube host. OSGBPB 5 omits CSD drive number again.
Challenger 1.01 1985 Vestiges removed. 8 logical drives. Can't extend error eliminated. *FORMAT formats RAM discs.
DDOS 3.x6 1 Mar 1986 OSBGET sets N and Z from A. Write protect test removed, write protect error reported separately from disc faults and not retried.
Challenger 1.03 1987 OSWORD &7F writes to special register &1A correctly. Realistic Read ID emulation.
Challenger 2.00 1987 Simplified graphics. Master system calls. ChADFS support. Name of Opus does not appear.

DDCPM

Slogger[verify] released an edition of CP/M to run on a BBC Micro fitted with Challenger and a Z80 second processor. DDCPM discs were formatted in both densities with a DFS-compatible bootstrap segment at the start of drive 0 and the rest of the disc formatted in double density.

This release of CP/M was able to use the RAM discs in place of floppies.

See also

Regregex (talk) 20:38, 18 July 2021 (CEST)
  1. The Micro User, pp.118–9