mirror of
https://github.com/aaru-dps/docs.git
synced 2025-12-16 11:14:37 +00:00
970 lines
45 KiB
Plaintext
970 lines
45 KiB
Plaintext
|
||
*** VSF (Vice Snapshot File, saved-session file)
|
||
*** Document revision: 1.2
|
||
*** Last updated: Oct 1, 2007
|
||
*** Compiler/Editor: Peter Schepers
|
||
*** Contributors/sources: VICE documentation
|
||
|
||
These files are the saved-session files, similar to C64s FRZ and PC64
|
||
saved-session files, which contains the entire state of the CPU, RAM, ROM
|
||
and I/O of the current emulator session. The typical file extension is
|
||
".VSF"
|
||
|
||
There was a claim that VICE was using the extension ".S64" for its
|
||
snapshot files. A package called UnQuill (in unquill.txt and unquill.c)
|
||
makes mention of VICE saving snapshot files with such an extension. As it
|
||
turns out, the UNIX version of VICE doesn't attach an extension when saving
|
||
a snapshot and the author of UnQuill chose S64 as the extension to save
|
||
them with. Therefore S64 files, if they exist, are an incorrectly named
|
||
VICE snapshot file from the UNIX world.
|
||
|
||
The internal structure of a VICE snapshot is a signature, followed by a
|
||
series of modules, where the module types are determined by the CPU which
|
||
VICE is emulating. That is, if you are running the VICE VIC-20 emulator,
|
||
the modules will not all be the same as the C64 emulator.
|
||
|
||
The modules contain individual chip or device states, not the complete
|
||
state of the emulator. The snapshot format was designed to be as
|
||
implementation-independent as possible, to allow reuse of snapshots in
|
||
later versions of the VICE emulator, or even in other emulators.
|
||
|
||
The VICE signature is the simple text string...
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 56 49 43 45 20 53 6E 61 70 73 68 6F 74 20 46 69 VICEúSnapshotúFi
|
||
0010: 6C 65 1A 00 00 43 31 32 38 00 00 00 00 00 00 00 leúúúC128úúúúúúú
|
||
0020: 00 00 00 00 00 .. .. .. .. .. .. .. .. .. .. .. úúúúú...........
|
||
|
||
Bytes: $00-12 - VICE signature "VICE Snapshot File" in ASCII followed
|
||
by a $1A (and padded with $00 if necessary)
|
||
13-14 - Snapshot version $00/$00 (major/minor)
|
||
15-24 - Name of emulated machine in ASCII (padded with $00).
|
||
The current machines emulated are (not stored with
|
||
quotes):
|
||
"PET"
|
||
"CBM-II"
|
||
"VIC20"
|
||
"C64"
|
||
"C128"
|
||
|
||
|
||
From now on, the snapshot file contains MODULES, with the module name
|
||
stored in ASCII. As stated earlier, each emulated machine type contains
|
||
certain modules. Note that each HEX dump which follows will be starting as
|
||
though it is at offset $0000, which means that each one is treated as
|
||
though it was its own file. This makes it easier to break down the module.
|
||
|
||
The list below shows what modules belong to what machines:
|
||
|
||
C64 - MAINCPU, C64MEM, C64ROM, VIC-II, CIA1, CIA2, SID, REU, ACIA1, TPI
|
||
|
||
C128 - MAINCPU, C128MEM, C128ROM, VIC-II, CIA1, CIA2, SID, ACIA1, TPI
|
||
(Not yet supported are the 80 column video chip, cartridges and
|
||
RAM expansion unit.)
|
||
|
||
VIC20 - MAINCPU, VIC20MEM, VIC20ROM, VIC-I, VIA1, VIA2
|
||
|
||
PET - MAINCPU, PETMEM, PETROM, CRTC, PIA1, PIA2, VIA, ACIA1
|
||
|
||
CBM-II - MAINCPU, CBM2MEM, CBM2ROM, CRTC, VIC-II, CIA1, TPI1, TPI2, ACIA1,
|
||
SID
|
||
|
||
|
||
There were certain modules which were either under construction or
|
||
included no description at all at the time of writing this document. These
|
||
include:
|
||
|
||
MAINCPU (under construction)
|
||
DRIVE module layout (no description)
|
||
RIOT module (no description)
|
||
SID, VIC-I & VIC-II modules (no breakdown)
|
||
REU module(s) (no breakdown)
|
||
|
||
|
||
---------------------------------------------------------------------------
|
||
|
||
|
||
The MAINCPU Module:
|
||
|
||
Chip type: 6502 (6509 for CBM-II) (still under construction)
|
||
|
||
Although usually the CPU is a 6510 (6509 on CBM-II, 6502 on VIC-20), only
|
||
the 6502 core is saved here. You will also find a clock value here. All
|
||
other modules save their own clock values relative to this value. The drive
|
||
modules save their clocks relative to their appropriate CPUs.
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 4D 41 49 4E 43 50 55 00 00 00 00 00 00 00 00 00 MAINCPUúúúúúúúúú
|
||
0010: 01 00 35 00 00 00 F8 0E AA 00 00 00 00 F3 5E C2 úú5úúúøúªúúúúó^Â
|
||
0020: 22 F0 01 00 00 F1 00 AA 00 32 15 09 00 2B 00 00 "ðúúúñúªú2úúú+úú
|
||
0030: 00 33 FE A9 00 .. .. .. .. .. .. .. .. .. .. .. ú3þ©ú...........
|
||
|
||
Bytes: $0000-000F - Module type ("MAINCPU"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016-0019 - CPU clock value (lo/hi)
|
||
001A - A register (accumulator)
|
||
001B - X register
|
||
001C - Y register
|
||
001D - Stack pointer
|
||
001E-001F - Program counter
|
||
0020 - Status register
|
||
0021-0024 - Last opcode
|
||
0025-0028 - Clock value when IRQ line active
|
||
0029-002C - Clock value when NMI line active
|
||
002D-0030 - ???
|
||
0031-0034 - ???
|
||
|
||
|
||
---------------------------------------------------------------------------
|
||
|
||
|
||
The C64MEM Module:
|
||
|
||
Chip type: Memory - Holds the RAM contents of the C64. Also the CPU I/O
|
||
register contents are saved here. This module is
|
||
mandatory.
|
||
|
||
The size of the C64 memory modules differs with each different memory
|
||
configuration. The RAM configuration is saved in the snapshot, and restored
|
||
when the snapshot is loaded. The attached cartridges are not yet saved and
|
||
not yet restored upon load.
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 43 36 34 4D 45 4D 00 00 00 00 00 00 00 00 00 00 C64MEMúúúúúúúúúú
|
||
0010: 00 00 1A 00 01 00 37 2F 00 00 2F 37 00 AA B1 91 úúúúúú7/úú/7úª±‘
|
||
0020: B3 22 22 00 00 00 00 FF 00 00 00 00 00 00 00 00 ³""úúúúúúúúúúúúú
|
||
0030: 19 16 00 0A 76 A3 00 00 00 00 00 00 76 A3 B3 BD úúúúv£úúúúúúv£³½
|
||
0040: 00 00 00 00 00 01 08 03 08 03 08 03 08 00 A0 00 úúúúúúúúúúúúúú ú
|
||
|
||
Bytes: $0000-000F - Module type ("C64MEM"), padded with $00
|
||
0010-0011 - Module version $00/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016 - CPU Port data byte (RAM location $01)
|
||
0017 - CPU Port direction byte (RAM location $00)
|
||
0018 - State of the EXROM cartridge line
|
||
0019 - State of the GAME cartridge line
|
||
001A-10019 - 64K RAM dump
|
||
|
||
|
||
---------------------------------------------------------------------------
|
||
|
||
|
||
The C64ROM Module:
|
||
|
||
Chip type: ROMs - A dump of the system ROMs (optional)
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 43 36 34 52 4F 4D 00 00 00 00 00 00 00 00 00 00 C64ROMúúúúúúúúúú
|
||
0010: 00 00 16 50 00 00 85 56 20 0F BC A5 61 C9 88 90 úúúPúú…Vúú¼¥aɈ<C389>
|
||
0020: 03 20 D4 BA 20 CC BC A5 07 18 69 81 F0 F3 38 E9 úúÔºú̼¥úúi<C3BA>ðó8é
|
||
0030: 01 48 A2 05 B5 69 B4 61 95 61 94 69 CA 10 F5 A5 úH¢úµi´a•a”iÊúõ¥
|
||
0040: 56 85 70 20 53 B8 20 B4 BF A9 C4 A0 BF 20 59 E0 V…púS¸ú´¿©Ä ¿úYà
|
||
0050: A9 00 85 6F 68 20 B9 BA 60 85 71 84 72 20 CA BB ©ú…ohú¹º`…q„rúÊ»
|
||
|
||
Bytes: $0000-000F - Module type ("C64ROM"), padded with $00
|
||
0010-0011 - Module version $00/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), not including this header
|
||
0016-2015 - KERNAL ROM dump ($E000-FFFF)
|
||
2016-4015 - BASIC ROM dump ($A000-BFFF)
|
||
4016-5015 - CHARGEN ROM cump ($D000-DFFF)
|
||
|
||
|
||
---------------------------------------------------------------------------
|
||
|
||
|
||
The VIC-II Module:
|
||
|
||
Chip type: 656x - The contents of the VIC-II (C64, C128, or C500). Either
|
||
the VIC-II or the CRTC exists, not both in one snapshot.
|
||
|
||
Breakdown not available as this module is still under construction.
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 56 49 43 2D 49 49 00 00 00 00 00 00 00 00 00 00 VIC-IIúúúúúúúúúú
|
||
0010: 01 00 DD 04 00 00 01 00 01 0E 0E 0E 0E 0E 0E 0E úúÝúúúúúúúúúúúúú
|
||
0020: 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E úúúúúúúúúúúúúúúú
|
||
0030: 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E 0E úúúúúúúúúúúúúúúú
|
||
|
||
Bytes: $0000-000F - Module type ("VIC-II"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016-04DC - VIC-II register contents
|
||
|
||
|
||
---------------------------------------------------------------------------
|
||
|
||
|
||
The CIA1 Module:
|
||
|
||
Chip type: 6526 (the CIA for the interrupts and the keyboard)
|
||
|
||
The CIA 6526 is an I/O port chip with 2 8-bit I/O ports, a shift
|
||
register, two timers, a Time of Day clock and interrupts.
|
||
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 43 49 41 31 00 00 00 00 00 00 00 00 00 00 00 00 CIA1úúúúúúúúúúúú
|
||
0010: 01 02 41 00 00 00 7F 00 FF 00 09 2C FF FF 00 00 úúAúúúúúúú,úúúú
|
||
0020: 00 01 00 01 01 08 25 40 FF FF 00 40 00 00 00 00 úúúúúú%@úúú@úúúú
|
||
0030: 00 00 02 00 00 00 00 2B 1C 00 00 63 08 28 11 00 úúúúúúú+úúúcú(úú
|
||
0040: 00 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ú...............
|
||
|
||
Bytes: $0000-000F - Module type ("CIA1"), padded with $00
|
||
0010-0011 - Module version $01/02 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016 - Output register A (ORA)
|
||
0017 - Output register B (ORB)
|
||
0018 - Data direction register A (DDRA)
|
||
0019 - Data direction register B (DDRB)
|
||
001A-001B - Timer A Counter (TAC)
|
||
001C-001D - Timer B Counter (TBC)
|
||
001E - Time-of-day current 10'th of a second (TOD_TEN)
|
||
001F - Time-of-day current seconds (TOD_SEC)
|
||
0020 - Time-of-day current minutes (TOD_MIN)
|
||
0021 - Time-of-day current hours (TOD_HR)
|
||
0022 - Shift register contents (SDR)
|
||
0023 - Mask of enabled interrupts (IER)
|
||
0024 - Control register A (CRA)
|
||
0025 - Control register B (CRB)
|
||
0026-0027 - Timer A latch value (TAL)
|
||
0028-0029 - Timer B latch value (TBL)
|
||
002A - Mask of currently active interrupts (IFR)
|
||
002B - Bit 6/7 reflect the PB6/7 toggle bit state. Bit
|
||
2/3 reflect the corresponding port bit state
|
||
(PBSTATE)
|
||
002C - Number of half-bits to still shift in/out of SDR
|
||
(SRHBITS)
|
||
002D - Time-of-day alarm 10'th of a second (ALARM_TEN)
|
||
002E - Time-of-day alarm seconds (ALARM_SEC)
|
||
002F - Time-of-day alarm minutes (ALARM_MIN)
|
||
0030 - Time-of-day alarm hours (ALARM_HR)
|
||
0031 - Current clock minus the clock when ICR was read
|
||
last plus 128 (READICR)
|
||
0032 - Bit 0: 1= latched for reading, Bit 1: 2=stopped
|
||
for writing (TODLATCHED)
|
||
0033 - Time-of-day latched 10'th of a second (TODL_TEN)
|
||
0034 - Time-of-day latched seconds (TODL_SEC)
|
||
0035 - Time-of-day latched minutes (TODL_MIN)
|
||
0036 - Time-of-day latched hours (TODL_HR)
|
||
0037-003A - Clock ticks till next 10'th of a second
|
||
(TOD_TICKS)
|
||
003B-003C - The state bits of the CIA timer A (TASTATE, new
|
||
from revision 1.1)
|
||
003D-003E - The state bits of the CIA timer B (TBSTATE, new
|
||
from revision 1.1)
|
||
|
||
The last two items have been added in CIA snapshot version 1.1 due to the
|
||
improved CIA emulation in the newer VICE versions. Some state bits
|
||
correspond to the CIA state as described in the "A Software Model of the
|
||
CIA 6526" document by Wolfgang Lorenz, some are delayed versions. For more
|
||
read the source file ciatimer.h.
|
||
|
||
|
||
---------------------------------------------------------------------------
|
||
|
||
|
||
The CIA2 Module:
|
||
|
||
Chip type: 6526 (the CIA for the userport, IEC-bus and RS232)
|
||
|
||
(See the CIA1 module for details)
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 43 49 41 32 00 00 00 00 00 00 00 00 00 00 00 00 CIA2úúúúúúúúúúúú
|
||
0010: 01 02 41 00 00 00 97 00 3F 00 FF FF FF FF 00 00 úúAúúú—ú?úúúúúúú
|
||
0020: 00 01 00 00 08 08 FF FF FF FF 00 00 00 00 00 00 úúúúúúúúúúúúúúúú
|
||
0030: 00 00 02 00 00 00 00 2B 1C 00 00 28 11 28 11 00 úúúúúúú+úúú(ú(úú
|
||
0040: 00 .. .. .. .. .. .. .. .. .. .. .. .. .. .. .. ú...............
|
||
|
||
Bytes: $0000-000F - Module type ("CIA2"), padded with $00
|
||
0010-0011 - Module version $01/02 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016-xxxx - See the CIA1 breakdown for details
|
||
|
||
|
||
---------------------------------------------------------------------------
|
||
|
||
|
||
The SID Module:
|
||
|
||
Chip type: 6581 (SID sound chip of the C64/C128)
|
||
|
||
Breakdown not available yet, as module is still under construction.
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 53 49 44 00 00 00 00 00 00 00 00 00 00 00 00 00 SIDúúúúúúúúúúúúú
|
||
0010: 01 00 36 00 00 00 00 00 00 00 00 00 00 00 00 00 úú6úúúúúúúúúúúúú
|
||
0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 úúúúúúúúúúúúúúúú
|
||
0030: 00 00 00 00 00 00 .. .. .. .. .. .. .. .. .. .. úúúúúú..........
|
||
|
||
Bytes: $0000-000F - Module type ("SID"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016-0035 - SID register contents
|
||
|
||
|
||
---------------------------------------------------------------------------
|
||
|
||
|
||
The REU Module:
|
||
|
||
Chip type: None - The RAM Extension Unit state (optional)
|
||
|
||
Breakdown not available yet.
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 52 45 55 31 37 36 34 00 00 00 00 00 00 00 00 00 REU1764úúúúúúúúú
|
||
0010: 00 00 2A 00 08 00 00 02 00 00 50 4A 00 00 00 00 úú*úúúúúúúPJúúúú
|
||
0020: 00 00 00 00 00 00 00 00 00 00 0C 00 76 00 D4 BE úúúúúúúúúúúúvúÔ¾
|
||
0030: 81 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 <20>úúúúúúúúúúúúúúú
|
||
|
||
Bytes: $000000-00000F - Module type ("REU1764"), padded with $00
|
||
000010-000011 - Module version $00/00 (major/minor)
|
||
000012-000015 - Module size (lo/hi), including this header
|
||
000016-080029 - REU contents
|
||
|
||
|
||
--------------------------------------------------------------------------
|
||
|
||
|
||
The C128MEM Module:
|
||
|
||
Chip type: RAM - Holds the RAM contents of the C64. Also the CPU I/O
|
||
register contents are saved here. This module is
|
||
mandatory.
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 43 31 32 38 4D 45 4D 00 00 00 00 00 00 00 00 00 C128MEMúúúúúúúúú
|
||
0010: 00 00 21 00 02 00 00 3F 7F 01 41 B7 04 00 00 01 úú!úúúú?úA·úúúú
|
||
0020: 00 2F C3 00 00 00 00 00 00 00 00 00 00 00 9B 00 ú/Ãúúúúúúúúúúú›ú
|
||
0030: 00 00 00 00 00 00 00 FF FF 1B 00 00 00 00 00 00 úúúúúúúúúúúúúúúú
|
||
0040: 00 00 00 00 00 03 02 00 00 00 00 00 00 00 01 1C úúúúúúúúúúúúúúúú
|
||
|
||
Bytes: $000000-00000F - Module type ("C128MEM"), padded with $00
|
||
000010-000011 - Module version $00/00 (major/minor)
|
||
000012-000015 - Module size (lo/hi), including this header
|
||
000016-000021 - MMU registers (MMU)
|
||
000022-020020 - 128K RAM dump (banks 0 and 1)
|
||
|
||
|
||
---------------------------------------------------------------------------
|
||
|
||
|
||
The C128ROM Module:
|
||
|
||
Chip type: ROMs - Dump of the system ROMs (optional)
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 43 31 32 38 52 4F 4D 00 00 00 00 00 00 00 00 00 C128ROMúúúúúúúúú
|
||
0010: 00 00 16 C0 00 00 A2 FF 78 9A D8 A9 00 8D 00 FF úúúÀúú¢úxšØ©ú<C2A9>úú
|
||
0020: A2 0A BD 4B E0 9D 00 D5 CA 10 F7 8D 04 0A 20 CD ¢ú½Kà<4B>úÕÊú÷<C3BA>úúúÍ
|
||
0030: E0 20 F0 E1 20 42 E2 20 09 E1 20 3D F6 48 30 07 àúðáúBâúúáú=öH0ú
|
||
0040: A9 A5 CD 02 0A F0 03 20 93 E0 20 56 E0 20 00 C0 ©¥Íúúðúú“àúVàúúÀ
|
||
|
||
Bytes: $000000-00000F - Module type ("C128ROM"), padded with $00
|
||
000010-000011 - Module version $00/00 (major/minor)
|
||
000012-000015 - Module size (lo/hi), including this header
|
||
000016-002015 - KERNAL ROM dump
|
||
002016-00A015 - BASIC ROM dump
|
||
00A016-00B015 - EDITOR ROM dump
|
||
00B016-00C016 - CHARGEN ROM dump
|
||
|
||
|
||
---------------------------------------------------------------------------
|
||
|
||
|
||
The VIC20MEM Module:
|
||
|
||
Chip type: RAM - Holds the RAM contents of the VIC20. This module is
|
||
mandatory.
|
||
|
||
The size of the VIC20 memory modules differs with each different memory
|
||
configuration. The RAM configuration is saved in the snapshot, and restored
|
||
when the snapshot is loaded. The attached cartridges are also restored upon
|
||
load if they have been saved in the snapshot.
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 56 49 43 32 30 4D 45 4D 00 00 00 00 00 00 00 00 VIC20MEMúúúúúúúú
|
||
0010: 01 00 17 A8 00 00 2F 4C 48 D2 AA D1 91 D3 22 22 úúú¨úú/LHҪёÓ""
|
||
0020: 00 00 00 00 FF 00 00 00 00 00 00 00 00 19 16 00 úúúúúúúúúúúúúúúú
|
||
0030: 0A 76 C3 00 00 00 00 00 00 76 C3 B3 DD 00 00 00 úvÃúúúúúúvóÝúúú
|
||
0040: 00 00 01 12 03 12 03 12 03 12 00 80 00 00 00 80 úúúúúúúúúúú€úúú€
|
||
|
||
Bytes: $0000-000F - Module type ("VIC20MEM"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016 - Configuration register: (CONFIG)
|
||
Bit 0 set: 3K RAM block present at $0400-0FFF
|
||
Bit 1 set: 8K RAM block present at $2000-3FFF
|
||
Bit 2 set: 8K RAM block present at $4000-5FFF
|
||
Bit 3 set: 8K RAM block present at $6000-7FFF
|
||
Bit 5 set: 8K RAM block present at $A000-BFFF
|
||
0017-0416 - 1K RAM dump ($0000-03FF)
|
||
0417-1416 - 4K RAM dump ($1000-1FFF)
|
||
1417-1B16 - 2K Color RAM ($9400-9BFF)
|
||
1B17-2816 - 3K RAM dump ($0400-0FFF, if CONFIG bit 0 set)
|
||
2817-4816 - 8K RAM dump ($2000-3FFF, if CONFIG bit 1 set)
|
||
4817-6816 - 8K RAM dump ($4000-5FFF, if CONFIG bit 2 set)
|
||
6817-8816 - 8K RAM dump ($6000-7FFF, if CONFIG bit 3 set)
|
||
8817-A816 - 8K RAM dump ($A000-BFFF, if CONFIG bit 5 set)
|
||
|
||
|
||
---------------------------------------------------------------------------
|
||
|
||
|
||
The VIC20ROM Module:
|
||
|
||
Chip type: ROMs - Holds the ROM of the VIC20, including possibly attached
|
||
cartridges (optional)
|
||
|
||
The size of the VIC20 memory modules differs with each different memory
|
||
configuration. The RAM configuration is saved in the snapshot, and restored
|
||
when the snapshot is loaded. The attached cartridges are also restored upon
|
||
load if they have been saved in the snapshot.
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 56 49 43 32 30 52 4F 4D 00 00 00 00 00 00 00 00 VIC20ROMúúúúúúúú
|
||
0010: 01 00 17 50 00 00 00 0F DC A5 61 C9 88 90 03 20 úúúPúúúúÜ¥aɈ<C389>úú
|
||
0020: D4 DA 20 CC DC A5 07 18 69 81 F0 F3 38 E9 01 48 ÔÚúÌÜ¥úúi<C3BA>ðó8éúH
|
||
0030: A2 05 B5 69 B4 61 95 61 94 69 CA 10 F5 A5 56 85 ¢úµi´a•a”iÊúõ¥V…
|
||
0040: 70 20 53 D8 20 B4 DF A9 C4 A0 DF 20 56 E0 A9 00 púSØú´ß©Ä ßúVà©ú
|
||
0050: 85 6F 68 20 B9 DA 60 85 71 84 72 20 CA DB A9 57 …ohú¹Ú`…q„rúÊÛ©W
|
||
|
||
Bytes: $0000-000F - Module type ("VIC20ROM"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016 - ROM configuration byte (CONFIG)
|
||
Bit 0: 1= ROM block $2xxx enabled.
|
||
Bit 1: 1= ROM block $3xxx enabled.
|
||
Bit 4: 1= ROM block $6xxx enabled.
|
||
Bit 5: 1= ROM block $7xxx enabled.
|
||
Bit 6: 1= ROM block $Axxx enabled.
|
||
Bit 7: 1= ROM block $Bxxx enabled.
|
||
0017-2016 - 8K KERNAL ROM dump ($E000-FFFF)
|
||
2017-4016 - 8K BASIC ROM dump ($C000-DFFF)
|
||
4017-5016 - 4K Character ROM dump
|
||
5017-6016 - 4K ROM image of $2xxx (if CONFIG Bit 0 set)
|
||
6017-7016 - 4K ROM image of $3xxx (if CONFIG Bit 1 set)
|
||
7017-8016 - 4K ROM image of $6xxx (if CONFIG Bit 4 set)
|
||
8017-9016 - 4K ROM image of $7xxx (if CONFIG Bit 5 set)
|
||
9017-A016 - 4K ROM image of $Axxx (if CONFIG Bit 6 set)
|
||
A017-B016 - 4K ROM image of $Bxxx (if CONFIG Bit 7 set)
|
||
|
||
|
||
---------------------------------------------------------------------------
|
||
|
||
|
||
The VIC-I Module:
|
||
|
||
Chip type: 656x - The VIC-I of the VIC20
|
||
|
||
(Breakdown not available as this module is still under contruction.)
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 56 49 43 2D 49 00 00 00 00 00 00 00 00 00 00 00 VIC-Iúúúúúúúúúúú
|
||
0010: 00 00 2B 08 00 00 01 00 00 00 00 06 06 06 06 06 úú+úúúúúúúúúúúúú
|
||
0020: 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 06 úúúúúúúúúúúúúúúú
|
||
0030: 06 01 01 01 01 01 01 01 01 01 01 01 01 01 01 01 úúúúúúúúúúúúúúúú
|
||
0040: 01 01 01 01 01 01 01 06 06 06 06 06 06 06 06 06 úúúúúúúúúúúúúúúú
|
||
|
||
Bytes: $0000-000F - Module type ("VIC-I"), padded with $00
|
||
0010-0011 - Module version $00/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016-xxxx - VIC-I register contents
|
||
|
||
|
||
---------------------------------------------------------------------------
|
||
|
||
|
||
The VIA1 Module:
|
||
|
||
Chip type: 6522 (the VIA for the interrupts and the keyboard)
|
||
|
||
The VIA 6522 is the predecessor of the CIA and also an I/O port chip with
|
||
2 8-bit I/O ports, a shift register, two timers and interrupts.
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 56 49 41 31 00 00 00 00 00 00 00 00 00 00 00 00 VIA1úúúúúúúúúúúú
|
||
0010: 01 00 2C 00 00 00 00 00 F7 FF 26 48 05 2C FF AB úú,úúúúú÷ú&Hú,ú«
|
||
0020: F9 80 00 40 DE 00 40 00 00 80 FF 00 .. .. .. .. ù€ú@Þú@úú€úú....
|
||
|
||
Bytes: $0000-000F - Module type ("VIA1"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016 - Output register A (ORA)
|
||
0017 - Data direction register A (DDRA)
|
||
0018 - Output register B (ORB)
|
||
0019 - Data direction register B (DDRB)
|
||
001A-001B - Timer 1 Latch value (T1L)
|
||
001C-001D - Timer 1 counter value (T1C)
|
||
001E - Timer 2 latch (T2L)
|
||
(8 bit as only lower byte is used)
|
||
001F-0020 - Timer 2 counter value (T2C)
|
||
0021 - RUNFL
|
||
bit 7: timer 1 will generate IRQ on underflow
|
||
bit 6: timer 2 will generate IRQ on underflow
|
||
0022 - Shift register value (SR)
|
||
0023 - Auxiliary control register (ACR)
|
||
0024 - Peripheral control register (PCR)
|
||
0025 - active interrupts (IFR)
|
||
0026 - interrupt mask (IER)
|
||
0027 - PB7 - bit 7 = pb7 state
|
||
0028 - number of half-bits to shift out on SR (SRHBITS)
|
||
0029 - CABSTATE
|
||
bit 7: state of CA2 pin
|
||
bit 6: state of CB2 pin
|
||
002A - Port A Input Latch (see ACR bit 0) (ILA)
|
||
002B - Port B Input Latch (see ACR bit 1) (ILB)
|
||
|
||
|
||
---------------------------------------------------------------------------
|
||
|
||
|
||
The VIA2 Module:
|
||
|
||
Chip type: 6522 (the VIA for the userport, IEC-bus and RS232)
|
||
|
||
(see the VIA1 module for details)
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 56 49 41 32 00 00 00 00 00 00 00 00 00 00 00 00 VIA2úúúúúúúúúúúú
|
||
0010: 01 00 2C 00 00 00 00 80 00 00 FF FF CE 66 FF AB úú,úúúú€úúúúÎfú«
|
||
0020: F9 00 00 40 FE 00 02 80 00 C0 7C 00 .. .. .. .. ùúú@þúú€úÀ|ú....
|
||
|
||
Bytes: $0000-000F - Module type ("VIA2"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016-002B - See the VIA1 breakdown for details
|
||
|
||
|
||
--------------------------------------------------------------------------
|
||
|
||
|
||
The PETMEM Module:
|
||
|
||
Chip type: RAM - Holds the RAM contents of the PET. This module is
|
||
mandatory.
|
||
|
||
The size of the PET memory modules differs with each different memory
|
||
configuration. The RAM configuration is saved in the snapshot, and restored
|
||
when the snapshot is loaded.
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 50 45 54 4D 45 4D 00 00 00 00 00 00 00 00 00 00 PETMEMúúúúúúúúúú
|
||
0010: 01 02 1D 88 00 00 02 00 20 00 07 4C 73 C3 22 22 úúúˆúúúúúúúLsÃ""
|
||
0020: 5B 00 FF 00 01 00 00 00 00 00 00 00 FF FF 16 13 [úúúúúúúúúúúúúúú
|
||
0030: 00 08 12 B3 00 00 00 00 00 00 12 B3 E9 CE 00 00 úúú³úúúúúúú³éÎúú
|
||
0040: 00 00 00 01 04 03 04 03 04 03 04 00 80 00 00 00 úúúúúúúúúúúú€úúú
|
||
|
||
Bytes: $0000-000F - Module type ("PETMEM"), padded with $00
|
||
0010-0011 - Module version $01/02 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016 - Configuration value.
|
||
Bits 0-3: 0 = 40 col PET without CRTC
|
||
1 = 40 col PET with CRTC
|
||
2 = 80 col PET (with CRTC)
|
||
3 = SuperPET
|
||
4 = 8096
|
||
5 = 8296
|
||
Bit 6: 1= RAM at $9***
|
||
Bit 7: 1= RAM at $A***
|
||
0017 - Keyboard type.
|
||
0 = UK business
|
||
1 = Graphics
|
||
2 = German business
|
||
0018 - memory size of low 32k in k
|
||
(possible values 4, 8, 16, 32)
|
||
0019 - Value of the 8x96 configuration register
|
||
(CONF8X96)
|
||
001A - SuperPET config
|
||
Bit 0: 1 = $9*** RAM enabled
|
||
Bit 1: 1 = RAM write protected
|
||
Bit 2: 1 = CTRL register write protected
|
||
Bit 3: 0 = DIAG pin active
|
||
Bits 4-7: RAM block in use
|
||
001B-xxxx - 4-32k RAM (not 8296, size depends on MEMSIZE)
|
||
xxxx-xxxx - 2/4k VRAM (not 8296, size depends on CONFIG)
|
||
xxxx-xxxx - 64k expansion RAM (SuperPET and 8096 only)
|
||
xxxx-xxxx - 128k RAM (8296 only)
|
||
xxxx - POSITIONAL
|
||
bit 0: 0 = symbolic keyboard mapping
|
||
bit 0: 1 = positional mapping
|
||
|
||
The last item has been added in PETMEM snapshot version 1.1. It is ignored
|
||
by earlier restore routines (V1.0) and the V1.1 restore routines do not
|
||
change the current setting when reading a V1.0 snapshot.
|
||
|
||
|
||
--------------------------------------------------------------------------
|
||
|
||
|
||
The PETROM Module:
|
||
|
||
Chip type: ROMs - Holds the ROM of the PET, including possibly attached
|
||
cartridges (optional)
|
||
|
||
The size of the PET memory modules differs with each different memory
|
||
configuration. The RAM configuration is saved in the snapshot, and restored
|
||
when the snapshot is loaded.
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 50 45 54 52 4F 4D 00 00 00 00 00 00 00 00 00 00 PETROMúúúúúúúúúú
|
||
0010: 01 00 17 50 00 00 04 54 4F 4F 20 4D 41 4E 59 20 úúúPúúúTOOúMANYú
|
||
0020: 46 49 4C 45 D3 46 49 4C 45 20 4F 50 45 CE 46 49 FILEÓFILEúOPEÎFI
|
||
0030: 4C 45 20 4E 4F 54 20 4F 50 45 CE 46 49 4C 45 20 LEúNOTúOPEÎFILEú
|
||
0040: 4E 4F 54 20 46 4F 55 4E C4 0D 53 45 41 52 43 48 NOTúFOUNÄúSEARCH
|
||
|
||
Bytes: $0000-000F - Module type ("PETROM"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016 - CONFIG
|
||
Bit 0: 1 = $9*** ROM included
|
||
Bit 1: 1 = $A*** ROM included
|
||
Bit 2: 1 = $B*** ROM included
|
||
Bit 3: 1 = $e900-$efff ROM included
|
||
0017-xxxx - 4k KERNAL ROM image $f000-$ffff
|
||
xxxx-xxxx - 2k EDITOR ROM image $e000-$e7ff
|
||
xxxx-xxxx - 2k CHARGEN ROM image
|
||
xxxx-xxxx - 4k $9*** ROM image (if CONFIG & 1)
|
||
xxxx-xxxx - 4k $A*** ROM image (if CONFIG & 2)
|
||
xxxx-xxxx - 4k $B*** ROM image (if CONFIG & 4)
|
||
xxxx-xxxx - 4k $C*** ROM image
|
||
xxxx-xxxx - 4k $D*** ROM image
|
||
xxxx-xxxx - 7 blocks $e900-$efff ROM image (if CONFIG & 8)
|
||
|
||
|
||
--------------------------------------------------------------------------
|
||
|
||
|
||
The CRTC Module:
|
||
|
||
Chip type: 6545 - The CRTC of the PET, C6x0 and C7x0. This can even be
|
||
included if it is a dump of a PET without CRTC.
|
||
|
||
This module is still under construction. The values for RASTERY and
|
||
RASTERLINE might be bogus.
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 43 52 54 43 00 00 00 00 00 00 00 00 00 00 00 00 CRTCúúúúúúúúúúúú
|
||
0010: 01 00 55 00 00 00 FF 07 00 08 00 20 00 10 FF 1F úúUúúúúúúúúúúúúú
|
||
0020: 00 10 00 02 00 3F 28 32 08 20 10 19 1D 00 08 00 úúúúú?(2úúúúúúúú
|
||
0030: 00 10 00 00 00 00 00 00 00 00 00 1F 06 00 00 00 úúúúúúúúúúúúúúúú
|
||
0040: 00 10 B0 09 00 00 00 C0 02 1A 01 00 00 00 00 1C úú°úúúúÀúúúúúúúú
|
||
0050: 00 39 01 1D 01 .. .. .. .. .. .. .. .. .. .. .. ú9úúú...........
|
||
|
||
Bytes: $0000-000F - Module type ("CRTC"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016-0054 - ????
|
||
|
||
|
||
--------------------------------------------------------------------------
|
||
|
||
|
||
The PIA1 Module:
|
||
|
||
Chip type: 6520 (the PIA for the interrupts, tape and the keyboard)
|
||
|
||
The PIA 6520 is a chip with two I/O ports (Parallel Interface Adapter)
|
||
and four additional handshake lines. The chip is much the same for Port A
|
||
and B, only that Port A implements handshaking on read operation and port B
|
||
on the write operation.
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 50 49 41 31 00 00 00 00 00 00 00 00 00 00 00 00 PIA1úúúúúúúúúúúú
|
||
0010: 01 00 1D 00 00 00 F9 0F 3C FF 00 3D C0 .. .. .. úúúúúúùú<úú=À...
|
||
|
||
Bytes: $0000-000F - Module type ("PIA1"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016 - Output register A (ORA)
|
||
0017 - Data Direction Register A (DDRA)
|
||
0018 - Control Register A (CTRLA)
|
||
0019 - Output register B (ORB)
|
||
001A - Data Direction Register B (DDRB)
|
||
001B - Control Register B (CTRLB)
|
||
001C - Bit 7:state of CA2, Bit 6:state of CB2 (CABSTATE)
|
||
|
||
|
||
--------------------------------------------------------------------------
|
||
|
||
|
||
The PIA2 Module:
|
||
|
||
Chip type: 6520 (the PIA for the IEEE488-bus)
|
||
|
||
(see the PIA1 module for details)
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 50 49 41 32 00 00 00 00 00 00 00 00 00 00 00 00 PIA2úúúúúúúúúúúú
|
||
0010: 01 00 1D 00 00 00 FF 00 3C FF FF 3C C0 .. .. .. úúúúúúúú<úú<À...
|
||
|
||
Bytes: $0000-000F - Module type ("PIA2"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016-001C - See the PIA1 breakdown for details
|
||
|
||
|
||
--------------------------------------------------------------------------
|
||
|
||
|
||
The VIA Module:
|
||
|
||
Chip type: 6522 (the VIA for IEEE488, userport, sound)
|
||
|
||
(see the VIA1 module for details)
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 56 49 41 00 00 00 00 00 00 00 00 00 00 00 00 00 VIAúúúúúúúúúúúúú
|
||
0010: 01 00 2C 00 00 00 00 00 DF 1E FF FF CE 7B 0E 58 úú,úúúúúßúúúÎ{úX
|
||
0020: 77 00 00 00 0E 40 00 80 00 C0 00 DF .. .. .. .. wúúúú@ú€úÀúß....
|
||
|
||
Bytes: $0000-000F - Module type ("VIA"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016-002B - See the VIA1 breakdown for details
|
||
|
||
|
||
--------------------------------------------------------------------------
|
||
|
||
|
||
The CBM2MEM Module:
|
||
|
||
Chip type: RAM - Holds the RAM contents of the CBM-II models. Also holds
|
||
the exec-bank and indirection bank registers. This module
|
||
is mandatory.
|
||
|
||
The size of the CBM-II memory modules differs with each different memory
|
||
configuration. The RAM configuration is saved in the snapshot, and restored
|
||
when the snapshot is loaded.
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 43 42 4D 32 4D 45 4D 00 00 00 00 00 00 00 00 00 CBM2MEMúúúúúúúúú
|
||
0010: 01 00 1B 10 02 00 01 00 02 0F 01 0F 01 4C A7 9B úúúúúúúúúúúúúL§›
|
||
0020: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 00 úúúúúúúúúúúúúúúú
|
||
0030: 00 00 D4 FA 02 00 FF FF 00 FF FF C8 FA 5E FA 01 úúÔúúúúúúúúÈú^úú
|
||
0040: 00 00 00 00 00 00 00 00 03 00 05 00 02 00 00 00 úúúúúúúúúúúúúúúú
|
||
0050: 02 00 00 00 02 00 BD FA 00 00 BD FA 02 00 FF 00 úúúúúú½úúú½úúúúú
|
||
0060: 00 00 00 00 00 00 02 00 00 00 00 00 00 00 00 00 úúúúúúúúúúúúúúúú
|
||
|
||
Bytes: $0000-000F - Module type ("CBM2MEM"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016 - Memory size in 128k blocks (MEMSIZE)
|
||
(1=128k, 2=256k, 4=512k, 8=1024k)
|
||
0017 - MEMCONFIG
|
||
Bit 0 = $f0800-$f0fff RAM
|
||
Bit 1 = $f1000-$f1fff RAM
|
||
Bit 2 = $f2000-$f3fff RAM
|
||
Bit 3 = $f4000-$f5fff RAM
|
||
Bit 4 = $f6000-$f7fff RAM
|
||
Bit 5 = $fc000-$fcfff RAM
|
||
0018 - HWCONFIG
|
||
Bit 0: 0 = CRTC
|
||
1 = VIC-II video chip
|
||
(Basically the destinction between
|
||
C500 and C600/700)
|
||
0019 - CPUs execution bank register (EXECBANK)
|
||
001A - CPUs indirection bank register (INDBANK)
|
||
001B-xxxx - 2k system RAM $f0000-$f07ff
|
||
xxxx-xxxx - 2k video RAM $fd000-$fd7ff
|
||
xxxx-xxxx - RAM dump, size according to MEMSIZE
|
||
xxxx-xxxx - if memsize < 1M and CONFIG & 1 then
|
||
2k RAM $f0800-$f0fff
|
||
xxxx-xxxx - if memsize < 1M and CONFIG & 2 then
|
||
4k RAM $f1000-$f1fff
|
||
xxxx-xxxx - if memsize < 1M and CONFIG & 4 then
|
||
8k RAM $f2000-$f3fff
|
||
xxxx-xxxx - if memsize < 1M and CONFIG & 8 then
|
||
8k RAM $f4000-$f5fff
|
||
xxxx-xxxx - if memsize < 1M and CONFIG & 16 then
|
||
8k RAM $f6000-$f7fff
|
||
xxxx-xxxx - if memsize < 1M and CONFIG & 32 then
|
||
4k RAM $fc000-$fcfff
|
||
|
||
The RAM arrays are only saved if the RAM itself is less than 1M. If the
|
||
memory size is 1M then those areas are taken from the bank 15 area of the
|
||
normal RAM.
|
||
|
||
|
||
--------------------------------------------------------------------------
|
||
|
||
|
||
The CBM2ROM Module:
|
||
|
||
Chip type: ROMs - Holds the ROM images (optional)
|
||
|
||
The size of the CBM-II memory modules differs with each different memory
|
||
configuration. The RAM configuration is saved in the snapshot, and restored
|
||
when the snapshot is loaded.
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 43 42 4D 32 52 4F 4D 00 00 00 00 00 00 00 00 00 CBM2ROMúúúúúúúúú
|
||
0010: 01 00 17 70 00 00 00 4C 09 EE EA 4C 44 E0 4C FE úúúpúúúLúîêLDàLþ
|
||
0020: E0 4C 79 E1 4C 99 E2 4C 3F E0 4C 65 E8 4C DA E0 àLyáL™âL?àLeèLÚà
|
||
0030: 4C 25 E0 4C 3A E0 4C 70 E9 4C F8 E6 B0 0E 86 CA L%àL:àLpéLøæ°ú†Ê
|
||
0040: 86 CF 84 CB 84 CE 20 CD E0 20 DA E0 A6 CA A4 CB †Ï„Ë„ÎúÍàúÚà¦Ê¤Ë
|
||
0050: 60 A2 00 A0 DC 60 A2 50 A0 19 60 A9 00 A2 23 95 `¢ú Ü`¢P ú`©ú¢#•
|
||
|
||
Bytes: $0000-000F - Module type ("CBM2ROM"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016 - CONFIG
|
||
Bit 1: 1 = $1*** ROM image included
|
||
Bit 2: 1 = $2000-$3fff ROM image included
|
||
Bit 3: 1 = $4000-$5fff ROM image included
|
||
Bit 4: 1 = $6000-$7fff ROM image included
|
||
0017-xxxx - 8k KERNAL ROM image ($e000-$efff)
|
||
xxxx-xxxx - xK BASIC ROM image
|
||
xxxx-xxxx - 4k CHARGEN ROM image
|
||
xxxx-xxxx - 4k cartridge ROM image for $1***
|
||
(if CONFIG & 2)
|
||
xxxx-xxxx - 8k cartridge ROM image for $2000-$3fff
|
||
(if CONFIG & 4)
|
||
xxxx-xxxx - 8k cartridge ROM image for $4000-$5fff
|
||
(if CONFIG & 8)
|
||
xxxx-xxxx - 8k cartridge ROM image for $6000-$7fff
|
||
(if CONFIG & 16)
|
||
|
||
|
||
--------------------------------------------------------------------------
|
||
|
||
|
||
The TPI1 Module:
|
||
|
||
Chip type: 6525 (TPI 1 for IEEE488)
|
||
|
||
The TPI 6525 is a chip with three I/O ports (Tri-Port-Interface). One of
|
||
the ports can double as an interrupt prioritizer. Therefore we also have to
|
||
save the states of the interrupt stack etc.
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 54 50 49 31 00 00 00 00 00 00 00 00 00 00 00 00 TPI1úúúúúúúúúúúú
|
||
0010: 01 00 20 00 00 00 38 3F 00 3F 7D FF E3 00 00 40 úúúúúú8?ú?}úãúú@
|
||
|
||
Bytes: $0000-000F - Module type ("TPI1"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016 - Port A output register (PRA)
|
||
0017 - Port B output register (PRB)
|
||
0018 - Port C output register (PRC) - Doubles as IRQ
|
||
latch register
|
||
0019 - Port A data direction register (DDRA)
|
||
001A - Port B data direction register (DDRB)
|
||
001B - Port C data direction register (DDRC) - Doubles
|
||
as IRQ mask register
|
||
001C - Control Register (CR)
|
||
001D - Active interrupt register
|
||
001E - Interrupt stack, the interrupt bits that are not
|
||
yet saved (STACK)
|
||
001F - State of the CA/CB pins... (CABSTATE)
|
||
Bit 7: State of CA
|
||
Bit 6: State of CB
|
||
|
||
|
||
--------------------------------------------------------------------------
|
||
|
||
|
||
The TPI2 Module:
|
||
|
||
Chip type: 6525 (TPI 2 for interrupts and keyboard)
|
||
|
||
(see the TPI1 module for details)
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 54 50 49 32 00 00 00 00 00 00 00 00 00 00 00 00 TPI2úúúúúúúúúúúú
|
||
0010: 01 00 20 00 00 00 7F FF 00 FF FF 00 00 00 00 00 úúúúúúúúúúúúúúú
|
||
|
||
Bytes: $0000-000F - Module type ("TPI2"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016-001F - See the TPI1 breakdown for details
|
||
|
||
|
||
--------------------------------------------------------------------------
|
||
|
||
|
||
The ACIA1 Module:
|
||
|
||
Chip type: 6551 - An ACIA (RS232 interface) at $DE00 (C64, optional) (or)
|
||
The ACIA for the SuperPET or CBM-II (optional)
|
||
|
||
The ACIA 6551 is an RS232 interface chip. VICE emulates RS232 connections
|
||
via /dev/ttyS* (Unix) or COM: (DOS/WIN - not yet?). When saving a snapshot,
|
||
those connections are of course lost. The state of the ACIA however is
|
||
restored if possible. I.e. if a connection is already open when restoring
|
||
the snapshot, this connection is used instead. If no connection is open, a
|
||
carrier/DTR drop is emulated.
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 41 63 69 61 31 00 00 00 00 00 00 00 00 00 00 00 Acia1úúúúúúúúúúú
|
||
0010: 01 00 20 00 00 00 00 00 10 00 00 00 00 00 00 00 úúúúúúúúúúúúúúúú
|
||
|
||
Bytes: $0000-000F - Module type ("ACIA1"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016 - Transmit data register (TDR)
|
||
0017 - Receiver data register (RDR)
|
||
0018 - Status register (SR)
|
||
0019 - Command register (CMD)
|
||
001A - Control register (CTRL)
|
||
001B - 0 = no data to tx
|
||
1 = Data is being transmitted
|
||
2 = Data is being transmitted while data in TDR
|
||
waiting to be put to internal transmit
|
||
register
|
||
001C-001F - Clock ticks till the next TDR empty interrupt
|
||
|
||
|
||
--------------------------------------------------------------------------
|
||
|
||
|
||
The TPI Module:
|
||
|
||
Chip type: 6525 (TPI at $DF00 for a parallel IEEE488 interface, optional
|
||
module on the C64)
|
||
|
||
(see the TPI1 module for details)
|
||
|
||
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F ASCII
|
||
----------------------------------------------- ----------------
|
||
0000: 54 50 49 00 00 00 00 00 00 00 00 00 00 00 00 00 TPIúúúúúúúúúúúúú
|
||
0010: 01 00 20 00 00 00 00 00 00 00 00 00 00 00 00 00 úúúúúúúúúúúúúúúú
|
||
|
||
Bytes: $0000-000F - Module type ("TPI"), padded with $00
|
||
0010-0011 - Module version $01/00 (major/minor)
|
||
0012-0015 - Module size (lo/hi), including this header
|
||
0016-001F - See the TPI1 breakdown for details
|
||
|
||
|
||
--------------------------------------------------------------------------
|
||
|