DISCiPLE: Difference between revisions

From Sinclair Wiki
Jump to navigation Jump to search
 
(Add an actual article, and describe the snapshot bug)
Line 1: Line 1:
[[Category:Hardware]]
[[Category:Hardware]]
[[Category:Peripherals]]
[[Category:Peripherals]]
The '''DISCiPLE''' is a floppy disk, joystick, printer, and ZX Network interface that was produced by [[Miles Gordon Technology]].
MGT later went on to produce the [[MGT +D|+D]], which shared the same file system but required GDOS instead of G+DOS.
Snapshots saved or loaded by GDOS are corrupted, in that the [[Z80]]'s AF' register is neither saved nor restored.
GDOS's contains the following code for saving the Z80's state, before saving of a snapshot:
EXX      ; Save the alternate register set
PUSH AF
PUSH HL
PUSH BC
PUSH DE
The following code is used when restoring the Z80's state, after loading of a snapshot.
POP  DE  ; Restore the alternate register set
POP  BC
POP  HL
POP  AF
EXX
The issue here is that EXX only exchanges the BC, DE and HL registers with the shadow registers BC', DE' and HL'.  It does not exchange AF and AF', and to do that, a separate instruction, EXX AF,AF' is required.
This bug was later fixed by MGT for the +D, in G+DOS.  The bug is similarly absent from the SAM Messenger, another product by MGT for transferring Spectrum snapshots to/from a SAM Coupé — both in the shadow ROM for the Spectrum, and in the companion software that runs on the SAM.
[[Wikipedia:DISCiPLE|Wikipedia's article on the MGT DISCiPLE]]

Revision as of 22:37, 6 April 2014


The DISCiPLE is a floppy disk, joystick, printer, and ZX Network interface that was produced by Miles Gordon Technology.

MGT later went on to produce the +D, which shared the same file system but required GDOS instead of G+DOS.

Snapshots saved or loaded by GDOS are corrupted, in that the Z80's AF' register is neither saved nor restored.

GDOS's contains the following code for saving the Z80's state, before saving of a snapshot:

EXX       ; Save the alternate register set
PUSH AF
PUSH HL
PUSH BC
PUSH DE

The following code is used when restoring the Z80's state, after loading of a snapshot.

POP  DE   ; Restore the alternate register set
POP  BC
POP  HL
POP  AF
EXX

The issue here is that EXX only exchanges the BC, DE and HL registers with the shadow registers BC', DE' and HL'. It does not exchange AF and AF', and to do that, a separate instruction, EXX AF,AF' is required.

This bug was later fixed by MGT for the +D, in G+DOS. The bug is similarly absent from the SAM Messenger, another product by MGT for transferring Spectrum snapshots to/from a SAM Coupé — both in the shadow ROM for the Spectrum, and in the companion software that runs on the SAM.

Wikipedia's article on the MGT DISCiPLE