home *** CD-ROM | disk | FTP | other *** search
/ AmigActive 6 / AACD06.ISO / AACD / Emulation / ABeeb / Docs / SnapshotFormat < prev    next >
Text File  |  1996-04-11  |  4KB  |  162 lines

  1. BBC Micro Emulator Snapshot Format
  2. ==================================
  3.  
  4. [ Mon Feb 12 22:07:43 GMT 1996 ]
  5.  
  6. Here's my current proposal for a BBC emulator snapshot format.  I already
  7. have several of these working.  However, this is, as far as I can tell,
  8. missing some required features.  I intend to change the format radically
  9. in the very near future to allow for greater portability.  Be warned
  10. if you are relying on anything listed here!
  11.  
  12.  
  13. All snapshot files have the extension ".sst".  Currently the files are
  14. 33044 bytes long, ordered as follows :
  15.  
  16.  
  17.  1. Magic number, bytes 0x0000 to 0x0001
  18.  
  19.     Stored lo/hi.  Value always 0x0bbc.
  20.  
  21.  
  22.  2. Version number, bytes 0x0002 to 0x0003
  23.  
  24.     Stored lo/hi.  Value currently 0x0001
  25.  
  26.  
  27.  3. User RAM, bytes 0x0004 to 0x8003.
  28.  
  29.     Stored in address order.  No provision is currently made for RAM
  30.     stored in paged areas.  I think this should be addressed in a later
  31.     version of the specification.
  32.  
  33.  
  34.  4. CPU state, bytes 0x8004 to 0x8013.
  35.  
  36.     0x00  A
  37.     0x01  X
  38.     0x02  Y
  39.     0x03  SR
  40.     0x04  SP
  41.     0x05  PC (lo)
  42.     0x06  PC (hi)
  43.     0x07  No. of outstanding IRQ's.
  44.  
  45.     0x08 to 0x0f are reserved for future use.  I always like to have a
  46.     little slack to take up for when I find out I've forgotten something.
  47.     It's less work to take up a spare byte than to move everything about.
  48.  
  49.  
  50.  5. ADC state, bytes 0x8014 to 0x801b.
  51.  
  52.     0x00  register 0
  53.  
  54.     0x01 to 0x07 reserved.  These will need to be used, but until there's
  55.                  a meaningful ADC emulation, they're unused.
  56.  
  57.  
  58.  6. ACIA state, bytes 0x801c to 0x8023.
  59.  
  60.     0x00  Write control register
  61.     0x01  Transmit Data register
  62.     0x02  Status register
  63.     0x03  Read Data register.
  64.     0x04  Transmit IRQ outstanding.
  65.     0x05  Receive IRQ outstanding.
  66.  
  67.     0x06,0x07 reserved for expansion.
  68.  
  69.  
  70.  7. Keyboard state, bytes 0x8024 to 0x8083.
  71.  
  72.     0x00 to 0x4f  current status of all keys, in internal key number order
  73.                   0x01 == pressed, 0x00 == released.
  74.  
  75.     0x50 to 0x57  reserved for expansion
  76.  
  77.     0x58          CAPS LOCK led status ( 0x00 == off, other == on )
  78.     0x59          SHIFT LOCK led status ( 0x00 == off, other == on )
  79.  
  80.     0x5a to 0x5f  reserved for expansion
  81.  
  82.  
  83.  8. ROM select register state, bytes 0x8084 to 0x808b.
  84.  
  85.     0x00  ROM select register (&FE30)
  86.  
  87.     0x01 to 0x07 reserved.
  88.  
  89.  
  90.  9. Serial ULA state, bytes 0x808c to 0x8093.
  91.  
  92.     0x00  register 0
  93.  
  94.     0x01 to 0x07 reserved.
  95.  
  96.  
  97. 10. System VIA, bytes 0x8094 to 0x80b3.
  98.  
  99.     0x00  ORB/IRB
  100.     0x01  ORA/IRA
  101.     0x02  DDRB
  102.     0x03  DDRA
  103.     0x04  T1CL
  104.     0x05  T1CH
  105.     0x06  T1LL
  106.     0x07  T1LH
  107.     0x08  T2CL
  108.     0x09  T2CH
  109.     0x0a  SR
  110.     0x0b  ACR
  111.     0x0c  PCR
  112.     0x0d  IFR
  113.     0x0e  IER
  114.     0x0f  ORA/IRA (non-handshaking, a duplicate of 0x01)
  115.     0x10  T2LL
  116.     0x11  Reserved
  117.     0x12  Reserved
  118.     0x13  Reserved
  119.     0x14  Reserved
  120.     0x15  Reserved
  121.     0x16  Reserved
  122.     0x17  Reserved
  123.     0x18  T2 interrupts enabled flag (non-zero for enabled)
  124.     0x19  Value of latch containing settings for current screen length
  125.     0x1a  Current Port A pin levels
  126.     0x1b  Current Port B pin levels
  127.     0x1c  Reserved
  128.     0x1d  Reserved
  129.     0x1e  Reserved
  130.     0x1f  Reserved
  131.  
  132.  
  133. 11. User VIA, bytes 0x80b4 to 0x80d3.
  134.  
  135.     As for System VIA, but location 0x19 is unused.
  136.  
  137.  
  138. 12. Video ULA, bytes 0x80d4 to 0x80f3.
  139.  
  140.     0x00 to 0x0f  Current colour map.
  141.     0x10          Register 0
  142.     0x11 to 0x1f  reserved.
  143.  
  144.  
  145. 13. CRTC, bytes 0x80f4 to 0x8113.
  146.  
  147.     0x00 to 0x11  Registers 0 through 17, in order
  148.     0x12 to 0x13  reserved
  149.     0x14          currently accessible register
  150.     0x15 to 0x1f  reserved.
  151.  
  152.  
  153. This specification doesn't deal with contents of sideways RAM/ROM,
  154. the Fred/Jim memory-mapped IO areas, the Tube ULA, the Econet interface
  155. or the disk interface.  I see these as being more appropriate for a later
  156. version when code has been produced and we know what needs to be saved.
  157.  
  158. Comments please, mailed to beeb-emulators@OiT.co.uk so that everyone can
  159. see them.
  160.  
  161. James.
  162.