*** S20 (Phau Zeh VIC-20 emulator saved-session files)
*** Document revision: 1.2
*** Last updated: March 11, 2004
*** Contributors/sources: unknown
This file is created when you save a session in the Phau Zeh VIC-20
emulator (written by Arne Bockholdt). Like all emulator saved-session, it
contains all zero-page RAM, CPU registers, RAM and I/O registers. In order
for the Phau Zeh emulator to recognize its saved-sessions, it must be saved
with the "S20" extension.
This document is based on the 0.9.5 revision of the S20 layout, so the
actual 1.0 release might be different. The minimum S20 file size is 9286
bytes (based on an un-enpanded VIC-20) and the largest is 36934 bytes
(based on a fully-expanded VIC-20).
Bytes: $0000-000E - S20 signature string "VIC-20 SNAPSHOT"
000F - S20 revision
$01 - version 0.9.5
00, 02-FF - Reserved
0010 - Machine
$00 - Original VIC-20
01 - Phau Zeh
02 - V20
03 - Mac VIC-20 emulator
04-FF - Future Expansion (set to $00)
0011 - Miscellaneous Info. If Byte $16 is set to 1 (Phau
Zeh emu), it is sub-version of the emulator.
With $16 set to 1:
$01 - PZL
02 - PZW
00, 03-FF - Future expansion (set to $00)
0012-0013 - Future Expansion (set to $00)
0014-0015 - Memory areas saved (in HI-LO format). The bit will
be set if the memory area is saved, clear if not.
Each bit of this word represents a 4Kb area of
memory. The ROM memory locations should always be
clear (not saved), and positions 1 and 9 must always
be set and saved.
Bit: 00 - RAM $0400-0FFF (only 3Kb for this one)
01 - RAM $1000-1FFF
02 - RAM $2000-2FFF
...
15 - RAM $F000-FFFF
0016-0017 - VIC-20 ROM memory (in HI-LO format). The bit will be
set if the ROM area is saved, clear if not. Each bit
represents 4Kb of ROM. VIC-20 ROM memory locations
should be set to 1, and setting bits 0 and 1 on
would make no sense as ROM can't exist in those
areas.
Bit: 00 - ROM $0000-0FFF
01 - ROM $1000-1FFF
02 - ROM $2000-2FFF
...
15 - ROM $F000-FFFF
0018 - RAM expansion installed
$00 - No expansion
03 - 3Kb installed
08 - 8Kb installed
10 - 16Kb installed
18 - 24Kb installed
All other values invalid (future expansion)
0019 - Future expansion (set to $00)
001A-001B - 6502 Instruction Pointer (HI-LO format)
001C - 6502 Flag register
Bit 0 - Carry Flag
1 - Zero Flag
2 - Interrupt Flag
3 - Decimal Flag
4 - Break Flag
5 - Always set to 1
6 - Overflow Flag
7 - Sign Flag
001D - 6502 Stack Pointer
001E - 6502 A Register
001F - 6502 X Register
0020 - 6502 Y Register
0021 - NMI status
Bit 0 - Set if NMI info valid, clear otherwise
7 - Clear if NMI low, set if NMI high
All other bits unused.
0022-0023 - VIA1 Timer 1 Value (HI-LO format)
0024-0025 - VIA1 Timer 1 Latch (HI-LO format)
0026-0027 - VIA1 Timer 2 Value (HI-LO format)
0028 - VIA1 Timer 2 Latch
0029-002A - VIA2 Timer 1 Value (HI-LO format)
002B-002C - VIA2 Timer 1 Latch (HI-LO format)
002D-002E - VIA2 Timer 2 Value (HI-LO format)
002F - VIA2 Timer 2 Latch
0030 - Set Interrupt Flag Status bits. 0 = don't set flag,
1 = set flag.
Bit 0 - VIA1 Timer 1
1 - VIA1 Timer 2
2 - VIA2 Timer 1
3 - VIA2 Timer 2
All other bits clear (future expansion)
0031 - Future Expansion (set to $00)
0032 - VIA Port Register Status. Tells emulator which
registers are saved in the file.
$00 - Nothing saved (not recommended)
01 - IR ports saved to the following 4 bytes
02 - OR ports saved to the following 4 bytes
03-FF - Future expansion
0033 - VIA1 IRA or ORA (depends on the value in $0032)
0034 - VIA1 IRB or ORB (depends on the value in $0032)
0035 - VIA2 IRA or ORA (depends on the value in $0032)
0036 - VIA2 IRB or ORB (depends on the value in $0032)
0037-003A - Future expansion (set to $00)
003B - Video Mode
$00 - PAL (6561)
01 - NTSC (6560)
02-FF - Reserved
003C-003D - Current scanline
PAL: 0-311
NTSC: 0-260
003E - Cycles since last scanline change. This is the
number of cycles passed since the lasy scanline was
drawn, or the scanline counter was incremented.
PAL: 0-70
NTSC: 0-64
003F-0042 - Future expansion (set to $00)
0043-0442 - Zero Page RAM $0000-03FF (must be in file)
0443-1042 - RAM locations $0400-0FFF contents (optional, only
when $0014-0015 bit 0 is set)
1043-2042
(or)0443-1442 - RAM locations $1000-1FFF (must be in file)
... - (4Kb RAM blocks continue, depending on the bit
pattern set in $0014-0015)
(END-2)-END - Last three bytes set to $FF.
|