Date : Tue, 26 Aug 1997 10:48:20 +0100 (BST)
From : Mark Cooke <mpc@...>
Subject: Summary: Tube Hardware
Thanks to everyone who mailed me with information about the 6502Tube.
A summary of the available registers follows:
Table 1 Host System Registers
Address Read
000 Status flags and Register 1 flags
001 Register 1 (24 byte FIFO read only)
010 Register 2 flags
011 Register 2 (1 byte read only)
100 Register 3 flags
101 Register 3 (2 byte FIFO only)
110 Register 4 flags
111 Register 4 (1byte read only)
Address Write
000 Status flags
001 Register 1 (1 byte write only)
010 - - - - - -
011 Register 2 (1 byte write only)
100 - - - - - -
101 Register 3 (2 byte FIFO write only)
110 - - - - - -
111 Register 4 (1 byte write only)Table 2 Parasite System
Registers
Address Read
000 Status flags and Register 1 flags A1 F1 P V M J I Q
001 Register 1 (1 byte read only)
010 Register 2 flags
011 Register 2 ( 1 byte read only)
100 Register 3 flags
101 Register 3 (2 byte FIFO read only)
110 Register 4 flags
111 Register 4 (1 byte read only)
Address Write
000 - - - - - -
001 Register 1 (24 byte FIFO write only)
010 - - - - - -
011 Register 2 (1 byte write only)
100 - - - - - -
101 Register 3 (2 byte FIFO write only)
110 - - - - - -
111 Register 4 (1 byte write only)
---
The Host writing to Register 1 raises an IRQ in the Parasite.
The Host writing to Register 3 can cause an NMI in the Parasite, and can
be programmed to be 1 or 2 bytes deep.
The Host writing to Register 4 raises an IRQ in the Parasite.
It looks like these are the same for Parasite writing to host, but the
documentation I have isn't 100% clear (there are IRQ and NMI lines from
the parasite, so it is possible for the parasite to interrupt the host).
I'll be experimenting later having abstracted my 6502 emulation into C++
classes, and organized a structure along the lines of:
CBase6502
|
+-- CHost6502
| |
| +-- CA6502
| |
| +-- CB6502
|
+-- CTube6502
Basic structure is that CBase6502 provides the 6502 emulation code, and
two overridable functions for reading and writing to memory. Child classes
override these to provide the appropriate I/O. I'll be doing the same for
the C6522 and so on.
Hence, it's fairly easy to provide a tube setup - though I'll have to
fudge the boot rom in the tube for the time being.
More on the tube when I've played around with it some more.
Regards,
Mark
Mark Cooke The views expressed above are mine and are not
Systems Programmer necessarily representative of university policy
University Of Birmingham URL: http://www.sr.bham.ac.uk/~mpc/