Sykes Comm-Stor floppies

The Sykes Comm-Stor seems to have been an early and very intelligent terminal with local storage on floppies, based on the MOS6502 CPU.

The configuration was stored in battery-backed CMOS RAM, and could be changed either by loading a “CONFIG” diskette, and answering a lot of questions, or by loading a “REFRESH”, diskette containing a complete configuration, created with the “CONFIG” diskette.

User data could be stored on “USER” diskettes, the format of which is documented, somewhat, in ref #1, Appendix E (pdf page 174)

None of the available documentation contain details on the “CONFIG” and “REFRESH”, but the following is known from reverse engineering:

The CONFIG and REFRESH diskettes mentioned in ref #1 and #2 present themselves as “SYS” in sector (1,0,1) and the next three bytes seems to be a flag/identifier, and the track+sector of the code to load and execute at address 0x0200, which is described as “I/O Buffers” and “RAM” in ref #2 page 6-7 (pdf page 62).

How many sectors are loaded is unknown.

The REFRESH diskettes specify sector (1,0,2) which contain a short 6502 code sequence that copies data starting at (1,0,4) into the battery backed CMOS “Configuration Storage” RAM, also described in ref #2 page 6-7 (pdf page 62).

The CONFIG diskette(s) specify sector (2,0,1) which seem to contain resident base page(s), while a large number of sectors contain transient pages, containing the code and text prompts for the many questions asked by the CONFIG floppy.

The transient pages span two sectors each (=0x100 bytes) and seem to always have their sector and track in the first two bytes, and generally seem to have an entrypoint at the third byte.

The in-memory address of transient pages is unknown.

Usage

from autoarchaeologist.vendor.sykes import comm_stor
…
self.add_examiner(*comm_stor.ALL)

Notes

The filesystem of USER floppies is heavily parameterized, but all available floppy images use the same format, so no attempt has been made to support all variations.

The CONFIG diskette would make for at good reverse-engineering project with PyReveng3 .

Test input

Documentation