mirror of
https://github.com/aaru-dps/docs.git
synced 2025-12-16 11:14:37 +00:00
139 lines
6.8 KiB
Plaintext
139 lines
6.8 KiB
Plaintext
|
|
*** S20 (Phau Zeh VIC-20 emulator saved-session files)
|
|
*** Document revision: 1.2
|
|
*** Last updated: March 11, 2004
|
|
*** Compiler/Editor: Peter Schepers
|
|
*** 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.
|
|
|