Difference between revisions of "Opus Challenger"

From BeebWiki
Jump to: navigation, search
(Hardware: explain source of dummy reads)
m (Firmware: wdg)
 
(8 intermediate revisions by the same user not shown)
Line 9: Line 9:
 
on a Master series computer.  It also provides access to data on floppy disc
 
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
 
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,
+
[[Opus DDOS]], giving data capacities of up to 400 KiB and 720 KiB per disc,
 
respectively.
 
respectively.
  
 
==Hardware==
 
==Hardware==
 
Challenger 3 is the definitive model of the expansion unit; its label design
 
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
+
incorporating a '3-in-1' device raises confusion, but it appears in Opus's
first advertisements for the Challenger in October 1985, [verify] and so
+
first advertisements for the Challenger in October 1985<ref name="tmu-ad">
 +
''The Micro User'', pp.118&ndash;9</ref> and so
 
likely indicates the first released model.   
 
likely indicates the first released model.   
  
Line 39: Line 40:
 
|}
 
|}
  
Bits 2..0 of the MSB JIM paging register select one of eight 64 KiB banks to
+
The Challenger expansion board does not connect the controller's INTRQ pin
make available the full 256 KiB or 512 KiB of the Challenger's RAM,
+
to the BBC's NMI line; NMIs are raised solely by data requests from the
according to the unit's size.  In 256 KiB units banks 4 to 7 map to empty
+
DRQ pin.
sockets; the ROM detects the unit type by probing bank 4 for a response.
 
  
 
The control latch is a write-only register at &FCFC, laid out as follows:
 
The control latch is a write-only register at &FCFC, laid out as follows:
Line 65: Line 65:
 
At most one unit select bit may be set at any time.
 
At most one unit select bit may be set at any time.
  
The Challenger expansion board does not connect the controller's INTRQ pin
+
The RAM appears in the [[JIM]] address space at &FD00..FF, one page at a
to the BBC's NMI line; NMIs are raised solely by data requests from the
+
time.  The Challenger unit contains either four or eight 64 KiB banks of
DRQ pin.
+
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
 
An extension connector is provided inside the Challenger unit to connect
Line 82: Line 85:
 
==Firmware==
 
==Firmware==
 
The accompanying firmware, named '''Opus Challenger''' and latterly
 
The accompanying firmware, named '''Opus Challenger''' and latterly
'''Slogger Challenger''', branched from the Opus DDOS 3.45 codebase at about
+
'''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
 
the time revision 3.0 was released, in October 1985.  Like DDOS it is thus a
 
derivative of Acorn DFS.
 
derivative of Acorn DFS.
  
 
The code has been extensively reworked to use only the Challenger unit's RAM
 
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
+
for workspace, leaving PAGE at &E00 in most cases.  This entailed adding new
support for a second address space to the data transfer platform inherited
+
data pathways and a second address space to the internal data transfer
from DDOS, so that media sectors could be interchanged either with user
+
platform, so that media sectors could be interchanged either with user
 
memory or directly with the workspace.  With over &frac34; KiB of the ROM
 
memory or directly with the workspace.  With over &frac34; KiB of the ROM
 
assigned to paging the correct part of RAM into the JIM window, space was
 
assigned to paging the correct part of RAM into the JIM window, space was
Line 96: Line 99:
 
EDOS, where they operate natively.
 
EDOS, where they operate natively.
  
Conversely, the rudimentary RAM disc support in DDOS has been expanded
+
Conversely, the rudimentary RAM disc support found in DDOS has been expanded
 
with increasingly comprehensive floppy drive emulation via OSWORD &7F.
 
with increasingly comprehensive floppy drive emulation via OSWORD &7F.
 
Later versions eliminate the <tt>Can't extend</tt> error by transparently
 
Later versions eliminate the <tt>Can't extend</tt> error by transparently
Line 112: Line 115:
  
 
Challenger does not comply with the conventions Acorn previously introduced
 
Challenger does not comply with the conventions Acorn previously introduced
for use of the 1 MHz Bus.  ''The Advanced User Guide'' identifies location
+
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
 
&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
 
neither references or updates.  The firmware assigns all pages in JIM to its
Line 121: Line 124:
  
 
===Challenger 2.00===
 
===Challenger 2.00===
In 1987 Slogger Computers, having acquired the Challenger product from Opus
+
In 1987 Slogger Computers, having acquired the Challenger product line from
Supplies, produced and marketed a version of Acorn ADFS for use with the
+
Opus Supplies, produced and marketed a version of Acorn ADFS for use with
Master Series computers and the Challenger 3.  It consists of Challenger
+
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
 
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
 
a private entry point in its DFS-compatible neighbour to perform disc access
Line 130: Line 133:
 
stand alone on Master or Model B and use only the Challenger unit's RAM for
 
stand alone on Master or Model B and use only the Challenger unit's RAM for
 
workspace, as before.
 
workspace, as before.
 +
 +
Challenger 2.00 itself is enhanced to respond to the system calls introduced
 +
in MOS 3.00; it implements the <code>*EX</code> command (albeit with faulty
 +
argument processing) and answers <code>*INFO</code> 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 <code>*TAPEDISK</code> command
 +
removed altogether (another Slogger product, ''T2C3'', replaces this
 +
function.)
  
 
Naturally, the new ADFS can employ the expanded RAM for mass storage in its
 
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
 
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
 
volumes in mutual exclusion.  To keep Challenger and ADFS from corrupting
the other's RAM disc – and to prevent trouble from programs – Challenger
+
each other's RAM disc – and to prevent trouble from programs – Challenger
 
maintains a 'density flag', set during formatting, which disables any access
 
maintains a 'density flag', set during formatting, which disables any access
calls made in the opposite density.  In this way the solid-state memory
+
calls made in the opposite density.  In this way the solid-state chips
chips are made to act as either 'single density RAM' or 'double density
+
are made to act as either 'single density RAM' or 'double density RAM'!
RAM'!
 
  
 
A [https://stardot.org.uk/forums/viewtopic.php?f=3&t=2378 batch of prototypes retrieved from Slogger]
 
A [https://stardot.org.uk/forums/viewtopic.php?f=3&t=2378 batch of prototypes retrieved from Slogger]
 
in 2009 included both titles on two 16 KiB chips as well as a 32 KiB twin
 
in 2009 included both titles on two 16 KiB chips as well as a 32 KiB twin
pack and so, whether or not it was shipped separately, Challenger 2.00 runs
+
pack, and so Slogger may also have shipped Challenger 2.00 as a separate
happily on the Model B barring one mild bug introduced while catering to the
+
product.  In any case it runs happily on the Model B barring one mild bug
presence of ADFS.
+
introduced while catering to the presence of ADFS.
  
 
===Development history===
 
===Development history===
Line 155: Line 166:
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
| DDOS || ''Conjectured prototype'' || 1983–4
 
| DDOS || ''Conjectured prototype'' || 1983–4
| Has commands <code>*4080</code>, <code>*DENSITY</code>, <code>*CAT *</code> (catalogue all volumes on drive), and Teletext graphics.  OSGBPB 5 omits CSD drive number.
+
| Has <code>*4080</code> command and Teletext graphics.  OSGBPB 5 omits CSD drive number.
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
| EDOS || 0.4 || 1984
 
| EDOS || 0.4 || 1984
| Coded to loose spec of DDOS prototype; Acorn implementation not adhered to. 2&frac12; KiB less code. <code>*CAT</code> file list indented by one column instead of two, misinterpreting DDOS's Teletext display.  Features an LBA layer on top of OSWORD &7F.
+
| Coded to loose spec of DDOS prototype; Acorn implementation not adhered to. Has <code>*CAT *</code> (catalogue all volumes on drive) and density override via <code>*OPT 6</code>. <code>*CAT</code> file list indented by one column instead of two, misinterpreting DDOS's Teletext display.  Features an LBA layer on top of OSWORD &7F.  13&frac12;&nbsp;KiB of code.
 +
|- style="vertical-align:top"
 +
| DDOS || 3.00 || 27 March 1984
 +
| Has <code>*4080</code>, <code>*ROMID</code> and <code>*XCAT</code> commands, no density override.  OSGBPB 5 returns CSD drive number.  14&nbsp;KiB of code.
 +
|- style="vertical-align:top"
 +
| DDOS || 3.12 || 1984
 +
| Adds <code>*DENSITY</code>, <code>*COPYRIGHT</code> commands and RAM disc support.  Full 16&nbsp;KiB ROM.
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
| DDOS || 3.x5 rev. 0.2 || 1 Oct 1984
 
| DDOS || 3.x5 rev. 0.2 || 1 Oct 1984
| Has <code>*ROMID</code> command. <code>*XCAT</code> replaces <code>*CAT *</code>.  OSGBPB 5 returns CSD drive number.
+
| All the features of DDOS 3.12 with a known build date.
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
| DDOS || 3.x5 rev. 3.0 || 16 Oct 1985
 
| DDOS || 3.x5 rev. 3.0 || 16 Oct 1985
| The current filename is initialised to all spaces.
+
| Drive spec parser modified to accept <tt>*</tt> but no caller enables it.  The current filename is initialised to all spaces.
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
| Challenger || 1.00 || 1985
 
| Challenger || 1.00 || 1985
| Branched from DDOS 3.45.  Streamlined, but vestigial DDOS code remains.  <code>*CONFIG R</code> and RLE formatting present, <code>*CAT *</code> reinstated.  <code>*OPT</code> settings ported from EDOS replace <code>*DENSITY</code>, <code>*4080</code> and <code>*SROM</code>.  No Tube host. OSGBPB 5 omits CSD drive number again.
+
| Branched from DDOS 3.45.  Streamlined, but vestigial DDOS code remains.  <code>*CONFIG R</code> and RLE formatting present, <code>*CAT *</code> replaces <code>*XCAT</code>.  <code>*OPT</code> settings ported from EDOS replace <code>*DENSITY</code>, <code>*4080</code> and <code>*SROM</code>.  No Tube host. OSGBPB 5 omits CSD drive number again.
 
|- style="vertical-align:top"
 
|- style="vertical-align:top"
 
| Challenger || 1.01 || 1985
 
| Challenger || 1.01 || 1985

Latest revision as of 20:25, 17 January 2022

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