Software for Windows and RISC OS

Software for Windows
   Cabriolet Dynamic Geometry
   Tsunami/Griddler Solver
Software for RISC OS
   Cabriolet Dynamic Geometry
Software for Linux
   Cabriolet Dynamic Geometry
Software for Newton
   Cabriolet Dynamic Geometry


man from Exile

Filetype BBCSnap (&BBC)

Acorn's filetype &BBC (BBC ROM) has been extended by 6502Em

If the first line of the file is one of the following:

BBC Script
BBC Tapefile
BBC Snapshot
BBC Snapshot101

then it is a new type of file, otherwise it is still a sideways ROM image (which 6502Em will also load)

BBC Snapshot files are saved out by the emulator, and contain the complete state of the emulator at the moment it was saved.

BBC Tapefile files can be accessed from the emulator using the casette filing system (selected by *TAPE)

BBC Script files are described in 'Scripts'

File format of 'BBC Tapefile'

FF 04 : DCD bit goes high (ie data carrier STOPs and interrupt occurs)
FF 00 : DCD bit goes low (ie data carrier STARTs and NO interrupt)
FF FF : FF byte from tape hardware
nn    : (not FF) byte from tape hardware

File format of 'BBC Snapshot101'

Click here to download an example zip'd snapshot of the emulator at the BASIC prompt in MODE 7.

NB if a location is "unused", any information in it will be discarded when the snapshot is loaded. The information saved out is included for completeness.

NB2 Words are ARM Words, ie little endian 32 bits

NB3 Timers 1 + 2 are system VIA timers, Timers 3 + 4 are user VIA timers

String : "BBC Snapshot101"+CHR$ &0A (ie 16 bytes)

256 bytes (Sheila, &FE00-&FEFF)
Contains the raw values written to memory locations

Word (offset 000): 6502's Accumulator in top 8 bits
Word (offset 004): 6502's X register in top 8 bits
Word (offset 008): 6502's Y register in top 8 bits
Word (offset 012): 6502's Flags register in bottom 8 bits
Word (offset 016): 6502's Stack Pointer in top 8 bits
Word (offset 020): 6502's Program Counter in top 16 bits
Byte (offset 024): Timer 1 mode (0=no further interrupts, one shot mode)
Byte (offset 025): Timer 2 mode (0=no further interrupts)
Byte (offset 026): Timer 3 mode (0=no further interrupts, one shot mode)
Byte (offset 027): Timer 4 mode (0=no further interrupts)
Word (offset 028): Timer 1          }
Word (offset 032): Timer 1 latch    }
Word (offset 036): Timer 2          }
Word (offset 040): Timer 2 latch    } NB top two bytes
Word (offset 044): Timer 3          }
Word (offset 048): Timer 3 latch    }
Word (offset 052): Timer 4          }
Word (offset 056): Timer 4 latch    }
Word (offset 060): Counter to vsync (bottom two bytes)
Word (offset 064): unused (Latch for above, &9C40)   }
Word (offset 068): unused (time until next interrupt)
Word (offset 072): unused (timer, used by sound code)
Byte (offset 076): System VIA's IFR
Byte (offset 077): System VIA's IER
Byte (offset 078): User VIA's IFR
Byte (offset 079): User VIA's IER
Word (offset 080): unused (arc_screenstart)
Word (offset 084): unused (tamper)
Word (offset 088): unused (cursor_tamper)
Word (offset 092): unused (romsel_on)
Word (offset 096): Sheila &FE30 (ROMSEL)
Word (offset 100)} 
Word (offset 104)} one byte for each ROM socket - 0=RAM, 1=ROM, 2=empty
Word (offset 108)}
Word (offset 112)}
Word (offset 116): Sheila &FE20 (low byte)
Word (offset 120)}
Word (offset 124)}
Word (offset 128)}  6845 CRT's registers
Word (offset 132)}  ("register 19" contains contents of addressable latch)
Word (offset 136)}
Word (offset 140): unused
Word (offset 144): unused
Word (offset 148)} 
Word (offset 152)} Palette Registers (lower 4 bits of each byte)
Word (offset 156)}
Word (offset 160)}
Word (offset 164): unused (screen_line)
Word (offset 168): unused (screen_timingcount)
Word (offset 172): ACCCON (low byte)
Byte (offset 176): unused (patch_on)
Byte (offset 177): unused (vsync_fps_copy)
Byte (offset 178): unused (lastmode)
Byte (offset 179): Sheila &FE10
Word (offset 180): unused (tapecount)
Word (offset 184): unused (keyaddr)
Byte (offset 188): unused (scanlines_to_draw)
Byte (offset 189): unused (vsync_fps)
Byte (offset 190): unused (firstline 0 or 1)
Byte (offset 191): unused (vsync_fps_reset)
Word (offset 192): vsync_timer (time counting down from screen start, 
                   reaches zero when vsync interrupt occurs)
Word (offset 196): unused (speedR)
Word (offset 200): unused
Word (offset 204): unused
Word (offset 208): unused
Word (offset 212): unused
Word (offset 216): unused
Word (offset 220): unused
Word (offset 224): unused
Word (offset 228): unused
Word (offset 232): unused
Word (offset 236): unused
Word (offset 240): unused
Word (offset 244): unused
Word (offset 248): unused
Word (offset 252): unused

Memory dump follows
(any size up to 0x10000, usually 0x8000 or 0xC000 bytes)

Total snapshot size is 0x210 + (size of memory dump).

Murklesoft: Software for Windows and RISC OS

Valid XHTML 1.0!