badline 0.16.1 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +213 -0
  3. data/CLAUDE.md +11 -7
  4. data/CONTRIBUTING.md +7 -1
  5. data/README.md +265 -26
  6. data/doc/media.md +5 -2
  7. data/doc/pinned-behaviour.md +189 -0
  8. data/doc/snapshot-format.md +616 -74
  9. data/doc/snapshots.md +192 -24
  10. data/exe/badline-ruby +5 -0
  11. data/lib/badline/audio/terminal.rb +34 -2
  12. data/lib/badline/c128/keyed_state.rb +2 -0
  13. data/lib/badline/c128.rb +1 -0
  14. data/lib/badline/c64/keyed_state.rb +2 -0
  15. data/lib/badline/c64.rb +1 -0
  16. data/lib/badline/cbm2/acia.rb +10 -0
  17. data/lib/badline/cbm2/bus.rb +263 -0
  18. data/lib/badline/cbm2/cpu.rb +58 -0
  19. data/lib/badline/cbm2/crtc_video.rb +133 -0
  20. data/lib/badline/cbm2/ieee_drive.rb +18 -0
  21. data/lib/badline/cbm2/ieee_layout.rb +69 -0
  22. data/lib/badline/cbm2/ieee_ports.rb +104 -0
  23. data/lib/badline/cbm2/ieee_traps.rb +81 -0
  24. data/lib/badline/cbm2/keyboard_ports.rb +60 -0
  25. data/lib/badline/cbm2/keyed_modules.rb +67 -0
  26. data/lib/badline/cbm2/keyed_state.rb +95 -0
  27. data/lib/badline/cbm2/model.rb +44 -0
  28. data/lib/badline/cbm2/p500/control_ports.rb +80 -0
  29. data/lib/badline/cbm2/p500/ieee_layout.rb +41 -0
  30. data/lib/badline/cbm2/p500/keyed_state.rb +85 -0
  31. data/lib/badline/cbm2/p500/model.rb +39 -0
  32. data/lib/badline/cbm2/p500/pages.rb +57 -0
  33. data/lib/badline/cbm2/p500.rb +264 -0
  34. data/lib/badline/cbm2/sid_page.rb +19 -0
  35. data/lib/badline/cbm2.rb +270 -0
  36. data/lib/badline/{plus4 → chips}/acia/frames.rb +1 -1
  37. data/lib/badline/chips/acia/keyed_state.rb +47 -0
  38. data/lib/badline/chips/acia.rb +307 -0
  39. data/lib/badline/chips/cia/timer.rb +2 -2
  40. data/lib/badline/chips/cpu/instruction_set.rb +1 -1
  41. data/lib/badline/chips/crtc.rb +3 -2
  42. data/lib/badline/chips/m6809/arithmetic.rb +140 -0
  43. data/lib/badline/chips/m6809/bus_steps.rb +223 -0
  44. data/lib/badline/chips/m6809/core.rb +149 -0
  45. data/lib/badline/chips/m6809/indexed.rb +82 -0
  46. data/lib/badline/chips/m6809/interrupts.rb +159 -0
  47. data/lib/badline/chips/m6809/keyed_state.rb +147 -0
  48. data/lib/badline/chips/m6809/opcodes.rb +159 -0
  49. data/lib/badline/chips/m6809/operations.rb +258 -0
  50. data/lib/badline/chips/m6809/plans.rb +143 -0
  51. data/lib/badline/chips/m6809/registers.rb +82 -0
  52. data/lib/badline/chips/m6809/stack.rb +140 -0
  53. data/lib/badline/chips/m6809.rb +13 -0
  54. data/lib/badline/chips/riot/fast_forward.rb +72 -0
  55. data/lib/badline/chips/riot/keyed_parts.rb +69 -0
  56. data/lib/badline/chips/riot/timer.rb +91 -0
  57. data/lib/badline/chips/riot.rb +162 -0
  58. data/lib/badline/chips/rriot/keyed_state.rb +30 -0
  59. data/lib/badline/chips/rriot.rb +134 -0
  60. data/lib/badline/chips/sid/filter.rb +4 -4
  61. data/lib/badline/chips/sid/waveform.rb +6 -6
  62. data/lib/badline/chips/tpi/keyed_state.rb +38 -0
  63. data/lib/badline/chips/tpi.rb +233 -0
  64. data/lib/badline/chips/vic/bank.rb +60 -5
  65. data/lib/badline/chips/vic/sprite.rb +4 -3
  66. data/lib/badline/chips/vic_i/keyed_parts.rb +7 -2
  67. data/lib/badline/chips/vic_i.rb +84 -21
  68. data/lib/badline/data_path.rb +3 -3
  69. data/lib/badline/drives/datasette/keyed_state.rb +9 -1
  70. data/lib/badline/drives/datasette.rb +27 -3
  71. data/lib/badline/drives/ieee_models.rb +54 -0
  72. data/lib/badline/drives/model1001.rb +37 -0
  73. data/lib/badline/drives/model2031.rb +6 -0
  74. data/lib/badline/drives/model4040/disk.rb +62 -0
  75. data/lib/badline/drives/model4040/ip_bus.rb +46 -0
  76. data/lib/badline/drives/model4040/keyed_state.rb +57 -0
  77. data/lib/badline/drives/model4040/mechanism.rb +192 -0
  78. data/lib/badline/drives/model4040/parts.rb +20 -0
  79. data/lib/badline/drives/model4040.rb +179 -0
  80. data/lib/badline/drives/model8050/board.rb +77 -0
  81. data/lib/badline/drives/model8050/disk.rb +163 -0
  82. data/lib/badline/drives/model8050/dos_board.rb +91 -0
  83. data/lib/badline/drives/model8050/fdc_bus.rb +102 -0
  84. data/lib/badline/drives/model8050/idle.rb +181 -0
  85. data/lib/badline/drives/model8050/ieee_port.rb +147 -0
  86. data/lib/badline/drives/model8050/ip_bus.rb +93 -0
  87. data/lib/badline/drives/model8050/keyed_state.rb +163 -0
  88. data/lib/badline/drives/model8050/mechanism.rb +230 -0
  89. data/lib/badline/drives/model8050/parts.rb +37 -0
  90. data/lib/badline/drives/model8050.rb +131 -0
  91. data/lib/badline/drives/model9060/idle.rb +149 -0
  92. data/lib/badline/drives/model9060/keyed_state.rb +123 -0
  93. data/lib/badline/drives/model9060/parts.rb +98 -0
  94. data/lib/badline/drives/model9060/sasi_bus.rb +88 -0
  95. data/lib/badline/drives/model9060/sasi_commands.rb +168 -0
  96. data/lib/badline/drives/model9060/sasi_target.rb +161 -0
  97. data/lib/badline/drives/model9060.rb +195 -0
  98. data/lib/badline/frontend/app.rb +18 -3
  99. data/lib/badline/frontend/boot.rb +4 -3
  100. data/lib/badline/frontend/controls.rb +107 -15
  101. data/lib/badline/frontend/gamepads.rb +3 -3
  102. data/lib/badline/frontend/keys.rb +97 -2
  103. data/lib/badline/frontend/kim1_panel.rb +208 -0
  104. data/lib/badline/frontend/media_slots.rb +8 -1
  105. data/lib/badline/frontend/menu/drive_types.rb +56 -0
  106. data/lib/badline/frontend/menu/menu_dialogs.rb +61 -14
  107. data/lib/badline/frontend/menu/menu_media.rb +47 -14
  108. data/lib/badline/frontend/menu/menu_pages.rb +113 -4
  109. data/lib/badline/frontend/menu/menu_ports.rb +77 -4
  110. data/lib/badline/frontend/menu/pause_menu.rb +6 -2
  111. data/lib/badline/frontend/pet_keyboard.rb +45 -7
  112. data/lib/badline/frontend/screen.rb +1 -1
  113. data/lib/badline/frontend/screens.rb +40 -2
  114. data/lib/badline/frontend/teletype_pane.rb +152 -0
  115. data/lib/badline/frontend/timeline.rb +49 -11
  116. data/lib/badline/frontend.rb +3 -0
  117. data/lib/badline/kernal_trap/dos/disk_commands.rb +80 -0
  118. data/lib/badline/kernal_trap/dos/status.rb +3 -0
  119. data/lib/badline/kernal_trap/dos.rb +18 -5
  120. data/lib/badline/kernal_trap/ieee.rb +4 -2
  121. data/lib/badline/kernal_trap/ieee_layout.rb +95 -43
  122. data/lib/badline/kim1/bus.rb +117 -0
  123. data/lib/badline/kim1/cpu.rb +25 -0
  124. data/lib/badline/kim1/host_terminal.rb +74 -0
  125. data/lib/badline/kim1/key_entry.rb +74 -0
  126. data/lib/badline/kim1/keyed_modules.rb +53 -0
  127. data/lib/badline/kim1/keyed_state.rb +133 -0
  128. data/lib/badline/kim1/panel.rb +176 -0
  129. data/lib/badline/kim1/rriots.rb +28 -0
  130. data/lib/badline/kim1/sound.rb +29 -0
  131. data/lib/badline/kim1/tape.rb +116 -0
  132. data/lib/badline/kim1/teletype.rb +193 -0
  133. data/lib/badline/kim1.rb +190 -0
  134. data/lib/badline/machine/ieee_drives.rb +171 -0
  135. data/lib/badline/machine/keyboard_buffer.rb +20 -3
  136. data/lib/badline/machine/line_sound.rb +122 -0
  137. data/lib/badline/machine/settling.rb +4 -0
  138. data/lib/badline/machine.rb +62 -14
  139. data/lib/badline/media/cbm2_media.rb +29 -0
  140. data/lib/badline/media/extensions.rb +8 -4
  141. data/lib/badline/media/kim1_media.rb +150 -0
  142. data/lib/badline/media/pet_media.rb +3 -1
  143. data/lib/badline/media/program.rb +6 -3
  144. data/lib/badline/media/true_drive.rb +51 -25
  145. data/lib/badline/media.rb +23 -8
  146. data/lib/badline/options/family.rb +108 -6
  147. data/lib/badline/options/help.rb +58 -12
  148. data/lib/badline/options/table.rb +60 -14
  149. data/lib/badline/options/validation.rb +71 -11
  150. data/lib/badline/options.rb +46 -13
  151. data/lib/badline/pet/bus.rb +16 -2
  152. data/lib/badline/pet/cassettes.rb +22 -1
  153. data/lib/badline/pet/ieee_drive.rb +5 -64
  154. data/lib/badline/pet/ieee_ports.rb +7 -0
  155. data/lib/badline/pet/keyboard_ports.rb +9 -2
  156. data/lib/badline/pet/keyed_state.rb +4 -0
  157. data/lib/badline/pet/model.rb +11 -2
  158. data/lib/badline/pet/rom_sets.rb +1 -0
  159. data/lib/badline/pet/sound.rb +5 -105
  160. data/lib/badline/pet/superpet/acia.rb +12 -0
  161. data/lib/badline/pet/superpet/board.rb +221 -0
  162. data/lib/badline/pet/superpet/dongle.rb +81 -0
  163. data/lib/badline/pet/superpet/keyed_modules.rb +63 -0
  164. data/lib/badline/pet/superpet/keyed_parts.rb +76 -0
  165. data/lib/badline/pet/superpet/m6809.rb +32 -0
  166. data/lib/badline/pet/superpet/waterloo_traps.rb +199 -0
  167. data/lib/badline/pet/superpet.rb +216 -0
  168. data/lib/badline/pet.rb +33 -6
  169. data/lib/badline/plus4/acia.rb +4 -298
  170. data/lib/badline/plus4/keyed_parts.rb +0 -44
  171. data/lib/badline/plus4/keyed_state.rb +2 -0
  172. data/lib/badline/plus4.rb +2 -0
  173. data/lib/badline/roms/1001/fdc-251257-02a.rom +0 -0
  174. data/lib/badline/roms/4040/dos-1.2.rom +0 -0
  175. data/lib/badline/roms/4040/dos-2.1-rev.rom +0 -0
  176. data/lib/badline/roms/4040/dos-2.1.rom +0 -0
  177. data/lib/badline/roms/4040/fdc-901466-02.rom +0 -0
  178. data/lib/badline/roms/4040/fdc-901466-04.rom +0 -0
  179. data/lib/badline/roms/8050/dos-2.7.rom +0 -0
  180. data/lib/badline/roms/8050/fdc-901869-01.rom +0 -0
  181. data/lib/badline/roms/8050/fdc-901885-04.rom +0 -0
  182. data/lib/badline/roms/9060/dos-3.0.rom +0 -0
  183. data/lib/badline/roms/9060/sasi-300515-revb.rom +0 -0
  184. data/lib/badline/roms/README +277 -0
  185. data/lib/badline/roms/cbm2/basic128-02b.rom +0 -0
  186. data/lib/badline/roms/cbm2/basic128.rom +0 -0
  187. data/lib/badline/roms/cbm2/basic256.rom +0 -0
  188. data/lib/badline/roms/cbm2/characters-600.rom +0 -0
  189. data/lib/badline/roms/cbm2/characters-700.rom +0 -0
  190. data/lib/badline/roms/cbm2/kernal-03b.rom +0 -0
  191. data/lib/badline/roms/cbm2/kernal-04a.rom +0 -0
  192. data/lib/badline/roms/cbm2/p500-basic.rom +0 -0
  193. data/lib/badline/roms/cbm2/p500-kernal.rom +0 -0
  194. data/lib/badline/roms/kim1/6530-002.rom +0 -0
  195. data/lib/badline/roms/kim1/6530-003.rom +0 -0
  196. data/lib/badline/roms/pet/characters-superpet.rom +0 -0
  197. data/lib/badline/roms/pet/superpet-a000.rom +0 -0
  198. data/lib/badline/roms/pet/superpet-c000.rom +0 -0
  199. data/lib/badline/roms/pet/superpet-e000-50hz.rom +0 -0
  200. data/lib/badline/roms/pet/superpet-e000.rom +0 -0
  201. data/lib/badline/snapshot/cbm2_setup.rb +53 -0
  202. data/lib/badline/snapshot/container.rb +9 -2
  203. data/lib/badline/snapshot/field_doc/markdown.rb +4 -2
  204. data/lib/badline/snapshot/field_doc.rb +59 -3
  205. data/lib/badline/snapshot/image.rb +65 -9
  206. data/lib/badline/snapshot/kim1_setup.rb +28 -0
  207. data/lib/badline/snapshot/pet_setup.rb +27 -11
  208. data/lib/badline/snapshot/storage_setup.rb +4 -1
  209. data/lib/badline/snapshot/vic20_setup.rb +11 -7
  210. data/lib/badline/snapshot/vice/cbm2.rb +93 -0
  211. data/lib/badline/snapshot/vice/cbm2_acia.rb +75 -0
  212. data/lib/badline/snapshot/vice/cbm2_crtc.rb +127 -0
  213. data/lib/badline/snapshot/vice/cbm2_mains.rb +49 -0
  214. data/lib/badline/snapshot/vice/cbm2_mem.rb +75 -0
  215. data/lib/badline/snapshot/vice/cbm2_restore.rb +204 -0
  216. data/lib/badline/snapshot/vice/cbm2_tpi.rb +58 -0
  217. data/lib/badline/snapshot/vice/cias.rb +13 -9
  218. data/lib/badline/snapshot/vice/p500.rb +96 -0
  219. data/lib/badline/snapshot/vice/p500_restore.rb +130 -0
  220. data/lib/badline/snapshot/vice/p500_vicii.rb +166 -0
  221. data/lib/badline/snapshot/vice/pet.rb +20 -10
  222. data/lib/badline/snapshot/vice/pet_cpu.rb +42 -5
  223. data/lib/badline/snapshot/vice/pet_crtc.rb +25 -17
  224. data/lib/badline/snapshot/vice/pet_drive.rb +180 -0
  225. data/lib/badline/snapshot/vice/pet_drive8050.rb +336 -0
  226. data/lib/badline/snapshot/vice/pet_mem.rb +49 -5
  227. data/lib/badline/snapshot/vice/pet_restore.rb +100 -7
  228. data/lib/badline/snapshot/vice/pet_via.rb +6 -5
  229. data/lib/badline/snapshot/vice/sid_registers.rb +2 -1
  230. data/lib/badline/snapshot/vice/vicii_import.rb +10 -6
  231. data/lib/badline/snapshot/vice.rb +3 -0
  232. data/lib/badline/snapshot.rb +15 -3
  233. data/lib/badline/status.rb +30 -30
  234. data/lib/badline/storage/crt_file.rb +7 -1
  235. data/lib/badline/storage/d64_image.rb +7 -0
  236. data/lib/badline/storage/d67_image.rb +55 -0
  237. data/lib/badline/storage/d80_image.rb +17 -1
  238. data/lib/badline/storage/d81_image.rb +14 -0
  239. data/lib/badline/storage/d90_image.rb +180 -0
  240. data/lib/badline/storage/disk_image/bam.rb +18 -3
  241. data/lib/badline/storage/disk_image/formatting.rb +69 -0
  242. data/lib/badline/storage/disk_image/writing.rb +37 -2
  243. data/lib/badline/storage/disk_image.rb +2 -0
  244. data/lib/badline/storage/kim_tape.rb +254 -0
  245. data/lib/badline/storage/papertape.rb +90 -0
  246. data/lib/badline/storage.rb +5 -0
  247. data/lib/badline/support/cbm2_checkpoint.rb +48 -0
  248. data/lib/badline/support/kim1_checkpoint.rb +41 -0
  249. data/lib/badline/support/p500_checkpoint.rb +35 -0
  250. data/lib/badline/support/superpet_checkpoint.rb +35 -0
  251. data/lib/badline/version.rb +1 -1
  252. data/lib/badline/vic20/keyed_modules.rb +6 -3
  253. data/lib/badline/vic20/keyed_state.rb +6 -4
  254. data/lib/badline/vic20.rb +26 -12
  255. data/lib/badline.rb +2 -0
  256. metadata +148 -2
@@ -13,7 +13,8 @@ machine built afresh has: the default below. `word`, `byte` and
13
13
  `int & 0x..` are ints cut to the latch's width. A text that lists
14
14
  its values takes one of them. An optional int is absent when the
15
15
  latch holds nothing. A true drive's modules are named from its
16
- device number, `BL-D8` to `BL-D11`, and the SIDs past the first
16
+ device number, `BL-D8` to `BL-D11`, or to `BL-D15` for an 8050 or
17
+ an 8250. The SIDs past the first
17
18
  are `BL-SID2` onwards, in the order they were fitted. Keys with
18
19
  `<N>` stand for each numbered unit. A default of "written only" is
19
20
  a key the load doesn't read, or reads only when the snapshot has
@@ -22,18 +23,18 @@ key only some of them have names them.
22
23
 
23
24
  ## BL-MACHINE
24
25
 
25
- Written by the C64, VIC-20, C128, Plus/4, PET.
26
+ Written by the C64, VIC-20, C128, Plus/4, PET, CBM-II, KIM-1.
26
27
 
27
28
  | Key | Type | Default |
28
29
  | --- | --- | --- |
29
- | `family` | text: c64 vic20 c128 plus4 pet | "c64" |
30
+ | `family` | text: c64 vic20 c128 plus4 pet cbm2 kim1 | "c64" |
30
31
  | `region` | text: pal ntsc ntscold drean | C64: "pal" |
31
32
  | `vic_model` | text: mos6569 mos8565 mos8566 mos8564 | C64: "mos6569" |
32
33
  | `cia_model` | text: mos6526 mos6526a | C64: "mos6526" |
33
34
  | `sid_model` | text: mos6581 mos8580 | C64: "mos6581"; C128: "mos6581" |
34
35
  | `ram_expansion` | text: none plus60k plus256k | C64: "none"; Plus/4: "none" |
35
36
  | `reu_kb` | int | C64: 0 |
36
- | `kernal` | text: c64 sx64 pet64 gs | C64: "c64" |
37
+ | `kernal` | text: c64 sx64 pet64 gs | C64: "c64"; CBM-II: "04a" |
37
38
  | `datasette` | bool | C64: true |
38
39
  | `board` | text: c64 pet64 gs max | C64: "c64" |
39
40
  | `cycles` | int | 0 |
@@ -44,19 +45,20 @@ Written by the C64, VIC-20, C128, Plus/4, PET.
44
45
  | `freeze_writes` | int | C64: 0 |
45
46
  | `dma` | bool | C64: false |
46
47
  | `host.pending_keys` | ints | [] |
48
+ | `host.init_keys` | ints | C64: []; VIC-20: []; C128: []; Plus/4: []; PET: []; CBM-II: [] |
47
49
  | `host.init_pending` | int | 0 |
48
50
  | `written_by` | text | "" |
49
- | `ram` | text: unexpanded 3k 8k 16k 24k 32k all | VIC-20: "unexpanded" |
51
+ | `ram` | text: unexpanded 3k 8k 16k 24k 32k all | VIC-20: "unexpanded"; KIM-1: "1k" |
52
+ | `model` | text: pal ntsc | VIC-20: "pal"; C128: "c128"; Plus/4: "plus4"; PET: "8032"; CBM-II: "610" |
50
53
  | `bus.data` | byte | VIC-20: 253; C128: 255 |
51
54
  | `bus.video_data` | byte | VIC-20: 0 |
52
- | `model` | text: c128 c128ntsc c128dcr c128dcrntsc | C128: "c128"; Plus/4: "plus4"; PET: "8032" |
53
55
  | `mode` | text: c64 c128 | C128: "c64" |
54
56
  | `bus.address` | word | C128: 65533 |
55
57
  | `clock_bits` | int | C128: 0 |
56
58
  | `z80_ahead` | int | C128: 0 |
57
59
  | `chips_ahead` | int | C128: 0 |
58
60
  | `cpu_reset_pending` | bool | C128: true |
59
- | `host.typing` | bool | C128: false |
61
+ | `host.typing` | bool | C128: false; KIM-1: false |
60
62
  | `host.holding_commodore` | bool | C128: false |
61
63
  | `host.typist.code` | int, optional | C128: absent |
62
64
  | `host.typist.wait` | int | C128: 0 |
@@ -70,45 +72,64 @@ Written by the C64, VIC-20, C128, Plus/4, PET.
70
72
  | `rom.basic` | text | PET: "pet/basic4.rom" or "pet/basic1.rom" |
71
73
  | `rom.editor` | text | PET: "pet/editor4-80-b-50hz.rom" or "pet/editor1.rom" or "pet/editor4-80-b-50hz-8296.rom" |
72
74
  | `rom.kernal` | text | PET: "pet/kernal4.rom" or "pet/kernal1.rom" |
73
- | `rom.characters` | text | PET: "pet/characters2.rom" or "pet/characters1.rom" |
75
+ | `rom.characters` | text | PET: "pet/characters2.rom" or "pet/characters1.rom" or "pet/characters-superpet.rom" |
74
76
  | `jumpers` | text | PET: "" |
75
77
  | `vertical_drive` | bool | PET: true |
78
+ | `host.ieee_drive_model` | text: 2031 8050 8250 1001 4040 3040 2040 9060 9090 | PET: "2031"; CBM-II: "2031" |
79
+ | `cpu_switch` | text: 6502 6809 prog | PET: "6502" |
80
+ | `ram_switch` | text: rw read prog | PET: "rw" |
81
+ | `mains_hz` | int | CBM-II: 50 |
82
+ | `dram_refresh` | bool | CBM-II: true |
83
+ | `mains_countdown` | int | CBM-II: varies |
84
+ | `mains_high` | bool | CBM-II: true |
85
+ | `refresh` | int | CBM-II: 0 |
86
+ | `sst` | bool | KIM-1: false |
87
+ | `irq_wired` | bool | KIM-1: false |
88
+ | `host.key_down` | bool | KIM-1: false |
89
+ | `host.next_key_at` | int | KIM-1: 0 |
76
90
 
77
91
  ## BL-RAM
78
92
 
79
- Written by the C64, VIC-20, C128, Plus/4, PET.
93
+ Written by the C64, VIC-20, C128, Plus/4, PET, KIM-1, CBM-II.
80
94
 
81
95
  | Key | Type | Default |
82
96
  | --- | --- | --- |
83
- | `ram` | bytes | C64: 65536 values; VIC-20: 49152 values; C128: 131072 values; Plus/4: 65536 × 0 or 16384 × 0; PET: 32768 × 0 or 8192 × 0 |
97
+ | `ram` | bytes | C64: 65536 values; VIC-20: 49152 values; C128: 131072 values; Plus/4: 65536 × 0 or 16384 × 0; PET: 32768 × 0 or 8192 × 0; KIM-1: 1024 × 0 or 57344 × 0 |
84
98
  | `bus.low_bank` | int & 0x3 | Plus/4: 0 |
85
99
  | `bus.high_bank` | int & 0x3 | Plus/4: 0 |
86
100
  | `bus.rom_selected` | bool | Plus/4: true |
87
101
  | `bus.data` | byte | Plus/4: 255; PET: 253 |
88
- | `screen` | bytes | PET: 2048 × 0 or 1024 × 0 or 32768 × 0 |
102
+ | `screen` | bytes | PET: 2048 × 0 or 1024 × 0 or 32768 × 0; CBM-II: 2048 × 0 or 1024 × 0 |
89
103
  | `expansion.control` | byte | PET: 0 |
90
104
  | `expansion.ram` | bytes | PET: 65536 × 0 |
91
105
  | `expansion.user_port` | int | PET: 7 |
106
+ | `system` | bytes | CBM-II: 2048 × 0 |
107
+ | `segment<N>` | bytes | CBM-II: 65536 × 0 |
108
+ | `execution_segment` | int & 0xf | CBM-II: 15 |
109
+ | `indirect_segment` | int & 0xf | CBM-II: 15 |
110
+ | `data` | byte | CBM-II: 249; KIM-1: 28 |
111
+ | `cartridge.addresses` | ints | CBM-II: [] |
112
+ | `cartridge.8192` | bytes | CBM-II: [] |
92
113
 
93
114
  ## BL-COLORRAM
94
115
 
95
- Written by the C64, VIC-20, C128.
116
+ Written by the C64, VIC-20, CBM-II, C128.
96
117
 
97
118
  | Key | Type | Default |
98
119
  | --- | --- | --- |
99
- | `ram` | bytes | C64: 1024 × 0; VIC-20: 1024 × 0 |
120
+ | `ram` | bytes | C64: 1024 × 0; VIC-20: 1024 × 0; CBM-II: 1024 × 0 |
100
121
  | `bank<N>` | bytes | C128: 1024 × 0 |
101
122
 
102
123
  ## BL-CPU
103
124
 
104
- Written by the C64, C128, Plus/4, VIC-20, PET.
125
+ Written by the C64, C128, Plus/4, VIC-20, PET, CBM-II, KIM-1.
105
126
 
106
127
  | Key | Type | Default |
107
128
  | --- | --- | --- |
108
129
  | `port.ddr` | byte | C64: 0; C128: 0; Plus/4: 0 |
109
130
  | `port.data` | byte | C64: 0; C128: 0; Plus/4: 0 |
110
131
  | `port.floating` | byte | C64: 0; C128: 0 |
111
- | `pc` | word | C64: 64738; VIC-20: 64802; C128: 65341; Plus/4: 65526; PET: 64790 or 64824 |
132
+ | `pc` | word | C64: 64738; VIC-20: 64802; C128: 65341; Plus/4: 65526; PET: 64790 or 64824; CBM-II: 63895 or 63902; KIM-1: 7202 |
112
133
  | `sp` | byte | 255 |
113
134
  | `a` | byte | 0 |
114
135
  | `x` | byte | 0 |
@@ -130,7 +151,7 @@ Written by the C64, C128, Plus/4, VIC-20, PET.
130
151
 
131
152
  ## BL-VIC
132
153
 
133
- Written by the C64, C128.
154
+ Written by the C64, C128, CBM-II.
134
155
 
135
156
  | Key | Type | Default |
136
157
  | --- | --- | --- |
@@ -192,11 +213,11 @@ Written by the C64, C128.
192
213
  | `shifter.late_mcm` | bool | false |
193
214
  | `shifter.late_read` | bool | false |
194
215
  | `line.number` | int | 0 |
195
- | `line.colors` | bytes | 504 × 0 |
196
- | `line.fg` | ints | 504 × 0 |
197
- | `line.border.groups` | ints | 63 × 0 |
198
- | `line.border.mask` | ints | 504 × 1 |
199
- | `line.border.snapshot` | bytes | 504 × 0 |
216
+ | `line.colors` | bytes | C64: 504 × 0; C128: 504 × 0; CBM-II: 504 × 0 or 520 × 0 |
217
+ | `line.fg` | ints | C64: 504 × 0; C128: 504 × 0; CBM-II: 504 × 0 or 520 × 0 |
218
+ | `line.border.groups` | ints | C64: 63 × 0; C128: 63 × 0; CBM-II: 63 × 0 or 65 × 0 |
219
+ | `line.border.mask` | ints | C64: 504 × 1; C128: 504 × 1; CBM-II: 504 × 1 or 520 × 1 |
220
+ | `line.border.snapshot` | bytes | C64: 504 × 0; C128: 504 × 0; CBM-II: 504 × 0 or 520 × 0 |
200
221
  | `line.patches` | ints | [] |
201
222
  | `sprite<N>.dma` | bool | false |
202
223
  | `sprite<N>.display_on` | bool | false |
@@ -223,18 +244,18 @@ Written by the C64, C128.
223
244
  | `line.sprite<N>.reload_span` | int | 0 |
224
245
  | `sbus.lines` | int | 0 |
225
246
  | `sbus.ghost` | byte | 255 |
226
- | `sbus.value` | ints | 63 × 255 |
227
- | `sbus.line` | ints | 63 × -1 |
247
+ | `sbus.value` | ints | C64: 63 × 255; C128: 63 × 255; CBM-II: 63 × 255 or 65 × 255 |
248
+ | `sbus.line` | ints | C64: 63 × -1; C128: 63 × -1; CBM-II: 63 × -1 or 65 × -1 |
228
249
  | `collisions.cleared_sprite` | int | 0 |
229
250
  | `collisions.cleared_data` | int | 0 |
230
- | `line.collisions.hits` | bytes | 504 × 0 |
251
+ | `line.collisions.hits` | bytes | C64: 504 × 0; C128: 504 × 0; CBM-II: 504 × 0 or 520 × 0 |
231
252
  | `line.collisions.folded` | int | 0 |
232
253
  | `line.carried` | bool | false |
233
- | `line.lo` | int | 504 |
254
+ | `line.lo` | int | C64: 504; C128: 504; CBM-II: 504 or 520 |
234
255
  | `line.hi` | int | 0 |
235
256
  | `line.sequenced` | int | -1 |
236
- | `line.win_color` | bytes | 504 × 0 |
237
- | `line.win_priority` | ints | 504 × 0 |
257
+ | `line.win_color` | bytes | C64: 504 × 0; C128: 504 × 0; CBM-II: 504 × 0 or 520 × 0 |
258
+ | `line.win_priority` | ints | C64: 504 × 0; C128: 504 × 0; CBM-II: 504 × 0 or 520 × 0 |
238
259
  | `line.palette` | ints | [0, 0, 0, 0] |
239
260
  | `line.stopped_dma` | bool | false |
240
261
  | `line.carry<N>` | ints | [] |
@@ -244,7 +265,7 @@ Written by the C64, C128.
244
265
  | `line.log.values` | ints | 64 × 0 |
245
266
  | `line.log.cursor` | int | 0 |
246
267
  | `line.log.next_x` | int | 0 |
247
- | `display` | bytes | 157248 × 0 |
268
+ | `display` | bytes | C64: 157248 × 0; C128: 157248 × 0; CBM-II: 157248 × 0 or 136760 × 0 |
248
269
  | `output_line` | int | C128: 0 |
249
270
  | `test_wrap` | bool | C128: false |
250
271
 
@@ -390,7 +411,7 @@ Written by the C64, C128.
390
411
 
391
412
  ## BL-SID
392
413
 
393
- Written by the C64, C128, Plus/4.
414
+ Written by the C64, C128, Plus/4, CBM-II.
394
415
 
395
416
  | Key | Type | Default |
396
417
  | --- | --- | --- |
@@ -555,11 +576,11 @@ Written by the C64, VIC-20, Plus/4.
555
576
 
556
577
  ## BL-TRAPDOS
557
578
 
558
- Written by the C64, PET.
579
+ Written by the C64, PET, CBM-II.
559
580
 
560
581
  | Key | Type | Default |
561
582
  | --- | --- | --- |
562
- | `storage.kind` | text: directory d64 d71 d81 t64 d80 d82 | "directory" |
583
+ | `storage.kind` | text: directory d64 d71 d81 t64 d80 d82 d67 | "directory" |
563
584
  | `storage.path` | text | "" |
564
585
  | `storage.bytes` | bytes | [] |
565
586
  | `storage.read_only` | bool | false |
@@ -582,20 +603,25 @@ Written by the C64, PET.
582
603
  | `serial.frame` | int | C64: 240 |
583
604
  | `serial.buffer` | bytes | C64: [] |
584
605
  | `save.saving` | bool | C64: false |
585
- | `ieee.listening` | bool | PET: false |
586
- | `ieee.talking` | bool | PET: false |
587
- | `ieee.listen_channel` | int, optional | PET: absent |
588
- | `ieee.talk_channel` | int, optional | PET: absent |
589
- | `ieee.frame` | int | PET: 240 |
590
- | `ieee.buffer` | bytes | PET: [] |
606
+ | `ieee.listening` | bool | PET: false; CBM-II: false |
607
+ | `ieee.talking` | bool | PET: false; CBM-II: false |
608
+ | `ieee.listen_channel` | int, optional | PET: absent; CBM-II: absent |
609
+ | `ieee.talk_channel` | int, optional | PET: absent; CBM-II: absent |
610
+ | `ieee.frame` | int | PET: 240; CBM-II: 240 |
611
+ | `ieee.buffer` | bytes | PET: []; CBM-II: [] |
612
+ | `waterloo.listening` | bool | PET: false |
613
+ | `waterloo.talking` | bool | PET: false |
614
+ | `waterloo.channel` | int | PET: 0 |
615
+ | `waterloo.frame` | byte | PET: 0 |
616
+ | `waterloo.buffer` | ints | PET: [] |
591
617
 
592
618
  ## BL-D8
593
619
 
594
- Written by the C64, C128, Plus/4.
620
+ Written by the C64, C128, Plus/4, PET.
595
621
 
596
622
  | Key | Type | Default |
597
623
  | --- | --- | --- |
598
- | `model` | text: 1541 1551 1571 1581 | C64: "1541" or "1581"; C128: "1541" or "1571"; Plus/4: "1541" or "1551" |
624
+ | `model` | text: 1541 1551 1571 1581 | C64: "1541" or "1581"; C128: "1541" or "1571"; Plus/4: "1541" or "1551"; PET: varies |
599
625
  | `phase` | int | 0 |
600
626
  | `cycles` | int | 0 |
601
627
  | `so_pending` | bool | false |
@@ -603,19 +629,25 @@ Written by the C64, C128, Plus/4.
603
629
  | `atn` | bool | C64: true |
604
630
  | `irq_timer` | int | Plus/4: 16660 |
605
631
  | `latched_byte` | byte | Plus/4: 0 |
632
+ | `ieee.host` | int | PET: 0 |
633
+ | `ip_data` | byte | PET: 242 or 211 |
634
+ | `fdc_data` | byte | PET: 252 |
635
+ | `sasi_data` | byte | PET: 248 |
636
+ | `sasi.ack_high` | bool | PET: true |
637
+ | `sasi.reset_high` | bool | PET: false |
606
638
 
607
639
  ## BL-D8-RAM
608
640
 
609
- Written by the C64, C128, Plus/4.
641
+ Written by the C64, C128, Plus/4, PET.
610
642
 
611
643
  | Key | Type | Default |
612
644
  | --- | --- | --- |
613
- | `data` | byte | C64: 234 or 175; C128: 234; Plus/4: 234 or 233 |
614
- | `ram` | bytes | C64: 2048 × 0 or 8192 × 0; C128: 2048 × 0; Plus/4: 2048 × 0 |
645
+ | `data` | byte | C64: 234 or 175; C128: 234; Plus/4: 234 or 233; PET: 234 |
646
+ | `ram` | bytes | C64: 2048 × 0 or 8192 × 0; C128: 2048 × 0; Plus/4: 2048 × 0; PET: 2048 × 0 |
615
647
 
616
648
  ## BL-D8-VIA1
617
649
 
618
- Written by the C64, C128, Plus/4.
650
+ Written by the C64, C128, Plus/4, PET.
619
651
 
620
652
  | Key | Type | Default |
621
653
  | --- | --- | --- |
@@ -649,7 +681,7 @@ Written by the C64, C128, Plus/4.
649
681
  | `ifr.flags` | int & 0x7f | 0 |
650
682
  | `ifr.enable` | int & 0x7f | 0 |
651
683
  | `ca.control` | int & 0xf | 0 |
652
- | `ca.c1_high` | bool | C64: true; C128: true; Plus/4: false |
684
+ | `ca.c1_high` | bool | C64: true; C128: true; Plus/4: false; PET: false |
653
685
  | `ca.c2_high` | bool | true |
654
686
  | `ca.handshake_low` | bool | false |
655
687
  | `ca.pulse` | int | 0 |
@@ -663,7 +695,7 @@ Written by the C64, C128, Plus/4.
663
695
 
664
696
  ## BL-D8-VIA2
665
697
 
666
- Written by the C64, C128, Plus/4.
698
+ Written by the C64, C128, Plus/4, PET.
667
699
 
668
700
  | Key | Type | Default |
669
701
  | --- | --- | --- |
@@ -711,11 +743,11 @@ Written by the C64, C128, Plus/4.
711
743
 
712
744
  ## BL-D8-CPU
713
745
 
714
- Written by the C64, C128, Plus/4.
746
+ Written by the C64, C128, Plus/4, PET.
715
747
 
716
748
  | Key | Type | Default |
717
749
  | --- | --- | --- |
718
- | `pc` | word | C64: 60064 or 44836; C128: 60064; Plus/4: 60064 or 59829 |
750
+ | `pc` | word | C64: 60064 or 44836; C128: 60064; Plus/4: 60064 or 59829; PET: 60101 |
719
751
  | `sp` | byte | 255 |
720
752
  | `a` | byte | 0 |
721
753
  | `x` | byte | 0 |
@@ -737,7 +769,7 @@ Written by the C64, C128, Plus/4.
737
769
 
738
770
  ## BL-D8-DISK
739
771
 
740
- Written by the C64, C128, Plus/4.
772
+ Written by the C64, C128, Plus/4, PET.
741
773
 
742
774
  | Key | Type | Default |
743
775
  | --- | --- | --- |
@@ -749,17 +781,19 @@ Written by the C64, C128, Plus/4.
749
781
  | `track<N>.zone` | int, optional | absent |
750
782
  | `written` | ints | [] |
751
783
  | `changed` | ints | C64: [] |
784
+ | `image.format` | text: d80 d82 | PET: "d80" or "d64" |
785
+ | `track<N>` | ints | PET: [] |
752
786
 
753
787
  ## BL-D8-MECH
754
788
 
755
- Written by the C64, C128, Plus/4.
789
+ Written by the C64, C128, Plus/4, PET.
756
790
 
757
791
  | Key | Type | Default |
758
792
  | --- | --- | --- |
759
- | `half_track` | int | C64: 35; C128: 37; Plus/4: 35 or 36 |
760
- | `slip` | int & 0x3 | C64: 0; C128: 2; Plus/4: 0 |
761
- | `side` | int | C64: 0 or 1; C128: 85; Plus/4: 0 |
762
- | `zone` | int & 0x3 | C64: 3; C128: 3; Plus/4: 3 or 0 |
793
+ | `half_track` | int | C64: 35; C128: 37; Plus/4: 35 or 36; PET: 35 |
794
+ | `slip` | int & 0x3 | C64: 0; C128: 2; Plus/4: 0; PET: 0 |
795
+ | `side` | int | C64: 0 or 1; C128: 85; Plus/4: 0; PET: 0 |
796
+ | `zone` | int & 0x3 | C64: 3; C128: 3; Plus/4: 3 or 0; PET: 3 |
763
797
  | `time` | int | 0 |
764
798
  | `read_clock_in` | int | 2097152 |
765
799
  | `clocks` | int | 0 |
@@ -767,8 +801,8 @@ Written by the C64, C128, Plus/4.
767
801
  | `ones` | int | 0 |
768
802
  | `bits` | int | 0 |
769
803
  | `write_shift` | int | 0 |
770
- | `motor` | bool | C64: true or false; C128: true; Plus/4: true or false |
771
- | `led` | bool | C64: true; C128: true; Plus/4: true or false |
804
+ | `motor` | bool | C64: true or false; C128: true; Plus/4: true or false; PET: true |
805
+ | `led` | bool | C64: true; C128: true; Plus/4: true or false; PET: true |
772
806
  | `sync` | bool | false |
773
807
  | `byte_ready` | bool | false |
774
808
  | `byte_latched` | bool | false |
@@ -779,6 +813,17 @@ Written by the C64, C128, Plus/4.
779
813
  | `cylinder` | int | C64: 0 |
780
814
  | `angle` | int | C64: 0 |
781
815
  | `changed` | bool | C64: true |
816
+ | `cylinders` | ints | PET: [0, 0] |
817
+ | `phases` | ints | PET: [0, 0] |
818
+ | `positions` | ints | PET: [0, 0] |
819
+ | `bit_clocks` | ints | PET: [0, 0] |
820
+ | `changing` | ints | PET: [0, 0] |
821
+ | `motors` | ints | PET: [0, 0] |
822
+ | `syncs` | ints | PET: [0, 0] |
823
+ | `so_pending` | bool | PET: false |
824
+ | `ca1_low` | bool | PET: false |
825
+ | `data_in` | byte | PET: 255 |
826
+ | `half_tracks` | ints | PET: [0, 0] |
782
827
 
783
828
  ## BL-D8-CIA
784
829
 
@@ -941,6 +986,8 @@ Written by the VIC-20.
941
986
  | `registers` | bytes | 16 × 0 |
942
987
  | `raster` | int | 0 |
943
988
  | `column` | int | 0 |
989
+ | `frame_lines` | int | 312 |
990
+ | `long_field` | bool | true |
944
991
  | `window_open` | bool | false |
945
992
  | `window_done` | bool | false |
946
993
  | `row_start` | int | 0 |
@@ -1198,7 +1245,7 @@ Written by the Plus/4.
1198
1245
 
1199
1246
  ## BL-ACIA
1200
1247
 
1201
- Written by the Plus/4.
1248
+ Written by the Plus/4, PET, CBM-II.
1202
1249
 
1203
1250
  | Key | Type | Default |
1204
1251
  | --- | --- | --- |
@@ -1363,7 +1410,7 @@ Written by the PET.
1363
1410
 
1364
1411
  ## BL-CRTC
1365
1412
 
1366
- Written by the PET.
1413
+ Written by the PET, CBM-II.
1367
1414
 
1368
1415
  | Key | Type | Default |
1369
1416
  | --- | --- | --- |
@@ -1382,28 +1429,30 @@ Written by the PET.
1382
1429
 
1383
1430
  ## BL-VIDEO
1384
1431
 
1385
- Written by the PET.
1432
+ Written by the PET, CBM-II.
1386
1433
 
1387
1434
  | Key | Type | Default |
1388
1435
  | --- | --- | --- |
1389
- | `displayed` | int | 0 |
1390
- | `frame_displayed` | int | 0 |
1436
+ | `displayed` | int | PET: 0 |
1437
+ | `frame_displayed` | int | PET: 0 |
1391
1438
  | `line_shown` | bool | false |
1392
- | `y` | int | 136 |
1393
- | `from_y` | int | 136 |
1394
- | `to_y` | int | 136 |
1395
- | `shown_from` | int | 36 |
1396
- | `shown_to` | int | 37 |
1397
- | `on_canvas` | bool | true |
1398
- | `origin` | int | 336 |
1399
- | `from` | int | 704 |
1400
- | `to` | int | -704 |
1401
- | `canvas.dots` | bytes | 192192 × 0 or 83328 × 0 |
1402
- | `canvas.painted` | ints | 48048 × 0 or 20832 × 0 |
1403
- | `canvas.span_from` | ints | 273 × 0 or 217 × 0 |
1404
- | `canvas.span_to` | ints | 273 × 0 or 217 × 0 |
1405
- | `column` | int | 0 |
1439
+ | `y` | int | PET: 136 |
1440
+ | `from_y` | int | PET: 136 |
1441
+ | `to_y` | int | PET: 136 |
1442
+ | `shown_from` | int | PET: 36 |
1443
+ | `shown_to` | int | PET: 37 |
1444
+ | `on_canvas` | bool | PET: true |
1445
+ | `origin` | int | PET: 336; CBM-II: 24 |
1446
+ | `from` | int | PET: 704 |
1447
+ | `to` | int | PET: -704 |
1448
+ | `canvas.dots` | bytes | PET: 192192 × 0 or 83328 × 0; CBM-II: 187264 × 0 or 258368 × 0 |
1449
+ | `canvas.painted` | ints | PET: 48048 × 0 or 20832 × 0; CBM-II: 46816 × 0 or 64592 × 0 |
1450
+ | `canvas.span_from` | ints | PET: 273 × 0 or 217 × 0; CBM-II: 266 × 0 or 367 × 0 |
1451
+ | `canvas.span_to` | ints | PET: 273 × 0 or 217 × 0; CBM-II: 266 × 0 or 367 × 0 |
1452
+ | `column` | int | PET: 0 |
1406
1453
  | `line` | int | 0 |
1454
+ | `frames` | int | CBM-II: 2 |
1455
+ | `layout` | ints | CBM-II: 9 × 0 |
1407
1456
 
1408
1457
  ## BL-TAPE1
1409
1458
 
@@ -1440,3 +1489,496 @@ Written by the PET.
1440
1489
  | `tape.bytes` | bytes | [] |
1441
1490
  | `tape.path` | text | "" |
1442
1491
  | `tape.position` | int | 0 |
1492
+
1493
+ ## BL-D8-COMMON
1494
+
1495
+ Written by the PET.
1496
+
1497
+ | Key | Type | Default |
1498
+ | --- | --- | --- |
1499
+ | `ram` | bytes | 4096 × 0 |
1500
+
1501
+ ## BL-D8-RIOT1
1502
+
1503
+ Written by the PET.
1504
+
1505
+ | Key | Type | Default |
1506
+ | --- | --- | --- |
1507
+ | `ram` | bytes | 128 × 0 |
1508
+ | `ora` | byte | 0 |
1509
+ | `orb` | byte | 0 |
1510
+ | `ddra` | byte | 0 |
1511
+ | `ddrb` | byte | 0 |
1512
+ | `pa7_high` | bool | true |
1513
+ | `pa7_active` | bool | false |
1514
+ | `pa7_flag` | bool | false |
1515
+ | `edge_irq_enabled` | bool | false |
1516
+ | `rising_edge` | bool | false |
1517
+ | `timer.counter` | byte | 0 |
1518
+ | `timer.interval` | int & 0x3 | 0 |
1519
+ | `timer.prescale` | int | 1 |
1520
+ | `timer.expired` | bool | true |
1521
+ | `timer.flag` | bool | false |
1522
+ | `timer.irq_enabled` | bool | false |
1523
+ | `timer.fired` | bool | false |
1524
+
1525
+ ## BL-D8-RIOT2
1526
+
1527
+ Written by the PET.
1528
+
1529
+ | Key | Type | Default |
1530
+ | --- | --- | --- |
1531
+ | `ram` | bytes | 128 × 0 |
1532
+ | `ora` | byte | 0 |
1533
+ | `orb` | byte | 0 |
1534
+ | `ddra` | byte | 0 |
1535
+ | `ddrb` | byte | 0 |
1536
+ | `pa7_high` | bool | true |
1537
+ | `pa7_active` | bool | false |
1538
+ | `pa7_flag` | bool | false |
1539
+ | `edge_irq_enabled` | bool | false |
1540
+ | `rising_edge` | bool | false |
1541
+ | `timer.counter` | byte | 0 |
1542
+ | `timer.interval` | int & 0x3 | 0 |
1543
+ | `timer.prescale` | int | 1 |
1544
+ | `timer.expired` | bool | true |
1545
+ | `timer.flag` | bool | false |
1546
+ | `timer.irq_enabled` | bool | false |
1547
+ | `timer.fired` | bool | false |
1548
+
1549
+ ## BL-D8-IPCPU
1550
+
1551
+ Written by the PET.
1552
+
1553
+ | Key | Type | Default |
1554
+ | --- | --- | --- |
1555
+ | `pc` | word | 62135 or 54059 or 61972 |
1556
+ | `sp` | byte | 255 |
1557
+ | `a` | byte | 0 |
1558
+ | `x` | byte | 0 |
1559
+ | `y` | byte | 0 |
1560
+ | `p` | byte | 32 |
1561
+ | `nmi` | bool | false |
1562
+ | `so_high` | bool | true |
1563
+ | `irq.sample` | bool | false |
1564
+ | `irq.pending` | bool | false |
1565
+ | `irq.boundary` | bool | false |
1566
+ | `nmi.sample` | bool | false |
1567
+ | `nmi.pending` | bool | false |
1568
+ | `nmi.boundary` | bool | false |
1569
+ | `skip_poll` | bool | false |
1570
+ | `cycles` | int | 0 |
1571
+ | `instructions` | int | 0 |
1572
+ | `stalled` | int, optional | absent |
1573
+ | `pos.seq` | text: boundary op interrupt jam | "boundary" |
1574
+
1575
+ ## BL-D8-FDCCPU
1576
+
1577
+ Written by the PET.
1578
+
1579
+ | Key | Type | Default |
1580
+ | --- | --- | --- |
1581
+ | `pc` | word | 64516 or 64521 |
1582
+ | `sp` | byte | 255 |
1583
+ | `a` | byte | 0 |
1584
+ | `x` | byte | 0 |
1585
+ | `y` | byte | 0 |
1586
+ | `p` | byte | 32 |
1587
+ | `nmi` | bool | false |
1588
+ | `so_high` | bool | true |
1589
+ | `irq.sample` | bool | false |
1590
+ | `irq.pending` | bool | false |
1591
+ | `irq.boundary` | bool | false |
1592
+ | `nmi.sample` | bool | false |
1593
+ | `nmi.pending` | bool | false |
1594
+ | `nmi.boundary` | bool | false |
1595
+ | `skip_poll` | bool | false |
1596
+ | `cycles` | int | 0 |
1597
+ | `instructions` | int | 0 |
1598
+ | `stalled` | int, optional | absent |
1599
+ | `pos.seq` | text: boundary op interrupt jam | "boundary" |
1600
+
1601
+ ## BL-D8-VIA
1602
+
1603
+ Written by the PET.
1604
+
1605
+ | Key | Type | Default |
1606
+ | --- | --- | --- |
1607
+ | `ora` | byte | 0 |
1608
+ | `orb` | byte | 0 |
1609
+ | `ddra` | byte | 0 |
1610
+ | `ddrb` | byte | 0 |
1611
+ | `latch_a` | byte | 255 |
1612
+ | `latch_b` | byte | 255 |
1613
+ | `acr` | byte | 0 |
1614
+ | `pcr` | byte | 0 |
1615
+ | `pb6_high` | bool | true |
1616
+ | `t<N>.counter` | word | 65535 |
1617
+ | `t1.latch` | word | 65535 |
1618
+ | `t<N>.hold` | bool | false |
1619
+ | `t1.reload` | bool | false |
1620
+ | `t<N>.armed` | bool | false |
1621
+ | `t1.pb7` | bool | true |
1622
+ | `t2.latch_low` | byte | 255 |
1623
+ | `t2.low_reload` | bool | false |
1624
+ | `t2.low_underflowed` | bool | false |
1625
+ | `t2.count_pulses` | bool | false |
1626
+ | `t2.counting_pulses` | bool | false |
1627
+ | `sr.mode` | int & 0x7 | 0 |
1628
+ | `sr.data` | byte | 0 |
1629
+ | `sr.bits` | int | 0 |
1630
+ | `sr.delay` | int | 0 |
1631
+ | `sr.clock` | bool | true |
1632
+ | `sr.cb2` | bool | true |
1633
+ | `sr.cb2_input` | bool | true |
1634
+ | `ifr.flags` | int & 0x7f | 0 |
1635
+ | `ifr.enable` | int & 0x7f | 0 |
1636
+ | `ca.control` | int & 0xf | 0 |
1637
+ | `ca.c1_high` | bool | true |
1638
+ | `ca.c2_high` | bool | true |
1639
+ | `ca.handshake_low` | bool | false |
1640
+ | `ca.pulse` | int | 0 |
1641
+ | `ca.c2_output` | bool | true |
1642
+ | `cb.control` | int & 0xf | 0 |
1643
+ | `cb.c1_high` | bool | true |
1644
+ | `cb.c2_high` | bool | true |
1645
+ | `cb.handshake_low` | bool | false |
1646
+ | `cb.pulse` | int | 0 |
1647
+ | `cb.c2_output` | bool | true |
1648
+
1649
+ ## BL-D8-RRIOT
1650
+
1651
+ Written by the PET.
1652
+
1653
+ | Key | Type | Default |
1654
+ | --- | --- | --- |
1655
+ | `ram` | bytes | 64 × 0 |
1656
+ | `ora` | byte | 0 |
1657
+ | `orb` | byte | 0 |
1658
+ | `ddra` | byte | 0 |
1659
+ | `ddrb` | byte | 0 |
1660
+ | `timer.counter` | byte | 0 |
1661
+ | `timer.interval` | int & 0x3 | 0 |
1662
+ | `timer.prescale` | int | 1 |
1663
+ | `timer.expired` | bool | true |
1664
+ | `timer.flag` | bool | false |
1665
+ | `timer.irq_enabled` | bool | false |
1666
+ | `timer.fired` | bool | false |
1667
+
1668
+ ## BL-D8-SASICPU
1669
+
1670
+ Written by the PET.
1671
+
1672
+ | Key | Type | Default |
1673
+ | --- | --- | --- |
1674
+ | `pc` | word | 63489 |
1675
+ | `sp` | byte | 255 |
1676
+ | `a` | byte | 0 |
1677
+ | `x` | byte | 0 |
1678
+ | `y` | byte | 0 |
1679
+ | `p` | byte | 32 |
1680
+ | `nmi` | bool | false |
1681
+ | `so_high` | bool | true |
1682
+ | `irq.sample` | bool | false |
1683
+ | `irq.pending` | bool | false |
1684
+ | `irq.boundary` | bool | false |
1685
+ | `nmi.sample` | bool | false |
1686
+ | `nmi.pending` | bool | false |
1687
+ | `nmi.boundary` | bool | false |
1688
+ | `skip_poll` | bool | false |
1689
+ | `cycles` | int | 0 |
1690
+ | `instructions` | int | 0 |
1691
+ | `stalled` | int, optional | absent |
1692
+ | `pos.seq` | text: boundary op interrupt jam | "boundary" |
1693
+
1694
+ ## BL-D8-SASIRAM
1695
+
1696
+ Written by the PET.
1697
+
1698
+ | Key | Type | Default |
1699
+ | --- | --- | --- |
1700
+ | `ram` | bytes | 128 × 0 |
1701
+
1702
+ ## BL-D8-SASI
1703
+
1704
+ Written by the PET.
1705
+
1706
+ | Key | Type | Default |
1707
+ | --- | --- | --- |
1708
+ | `phase` | int | 0 |
1709
+ | `request` | bool | false |
1710
+ | `delay` | int | 0 |
1711
+ | `command` | ints | [] |
1712
+ | `buffer` | ints | [] |
1713
+ | `index` | int | 0 |
1714
+ | `writing` | bool | false |
1715
+ | `sense` | ints | [0, 0, 0, 0] |
1716
+ | `last_sense` | ints | [0, 0, 0, 0] |
1717
+ | `fast` | bool | false |
1718
+ | `cycle` | int | 0 |
1719
+ | `cylinder` | int | 0 |
1720
+ | `heads` | int | 4 |
1721
+ | `sectors` | int | 32 |
1722
+ | `block_buffer` | ints | 256 × 0 |
1723
+ | `path` | text | "" |
1724
+ | `read_only` | bool | false |
1725
+ | `disk_heads` | int | 4 |
1726
+
1727
+ ## BL-SUPERPET
1728
+
1729
+ Written by the PET.
1730
+
1731
+ | Key | Type | Default |
1732
+ | --- | --- | --- |
1733
+ | `bank_latch` | byte | 0 |
1734
+ | `system_latch` | byte | 0 |
1735
+ | `socket` | int | 0 |
1736
+ | `ram` | bytes | 65536 × 0 |
1737
+ | `dongle.registers` | ints | [0, 0, 0, 0, 0, 0, 0, 0] |
1738
+ | `dongle.latch` | byte | 255 |
1739
+ | `dongle.shift_in` | int, optional | absent |
1740
+
1741
+ ## BL-M6809
1742
+
1743
+ Written by the PET.
1744
+
1745
+ | Key | Type | Default |
1746
+ | --- | --- | --- |
1747
+ | `a` | byte | 0 |
1748
+ | `b` | byte | 0 |
1749
+ | `x` | word | 0 |
1750
+ | `y` | word | 0 |
1751
+ | `u` | word | 0 |
1752
+ | `s` | word | 0 |
1753
+ | `pc` | word | 0 |
1754
+ | `dp` | byte | 0 |
1755
+ | `cc` | byte | 80 |
1756
+ | `cycles` | int | 0 |
1757
+ | `irq` | bool | false |
1758
+ | `firq` | bool | false |
1759
+ | `nmi` | bool | false |
1760
+ | `halt` | bool | false |
1761
+ | `irq.latched` | bool | false |
1762
+ | `irq.seen` | bool | false |
1763
+ | `firq.latched` | bool | false |
1764
+ | `firq.seen` | bool | false |
1765
+ | `nmi.edge` | bool | false |
1766
+ | `nmi.latched` | bool | false |
1767
+ | `nmi.seen` | bool | false |
1768
+ | `nmi.armed` | bool | false |
1769
+ | `halt.latched` | bool | false |
1770
+ | `halt.seen` | bool | false |
1771
+ | `ea` | word | 0 |
1772
+ | `value` | word | 0 |
1773
+ | `post` | byte | 0 |
1774
+ | `opcode` | byte | 0 |
1775
+ | `operation` | text: none enter_nmi enter_firq enter_irq neg xnc com lsr ror asr asl rol dec xdec inc tst jmp clr nop sync jsr x18 daa orcc andcc sex exg tfr leax leay leas leau abx mul xres swi nega xnca coma lsra rora asra asla rola deca xdeca inca tsta xclra clra negb xncb comb lsrb rorb asrb aslb rolb decb xdecb incb tstb xclrb clrb suba cmpa sbca subd anda bita lda xsta eora adca ora adda cmpx ldx xstx sta stx subb cmpb sbcb addd andb bitb ldb xstb eorb adcb orb addb ldd ldu xstu stb std stu xswi2 swi2 cmpd xsta2 cmpy ldy xsty sty xaddd xstb2 lds xsts sts xfirq swi3 cmpu cmps xstx2 xaddu xstu2 | "none" |
1776
+ | `page` | int | 1 |
1777
+ | `group` | int | 0 |
1778
+ | `previous_group` | int | 0 |
1779
+ | `alu_word` | int | 0 |
1780
+ | `vector` | word | 65534 |
1781
+ | `interrupt_mask` | byte | 0 |
1782
+ | `stack_u` | bool | false |
1783
+ | `pos.plan` | text | "fetch" |
1784
+ | `pos.tail` | text | "none" |
1785
+ | `pos.index` | int | 0 |
1786
+
1787
+ ## BL-CIA
1788
+
1789
+ Written by the CBM-II.
1790
+
1791
+ | Key | Type | Default |
1792
+ | --- | --- | --- |
1793
+ | `pra` | byte | 0 |
1794
+ | `prb` | byte | 0 |
1795
+ | `ddra` | byte | 0 |
1796
+ | `ddrb` | byte | 0 |
1797
+ | `cra` | byte | 0 |
1798
+ | `crb` | byte | 0 |
1799
+ | `pb4_high` | bool | true |
1800
+ | `pb4_driven_high` | bool | true |
1801
+ | `cnt_high` | bool | true |
1802
+ | `cnt_rise` | bool | false |
1803
+ | `ta.counter` | word | 65535 |
1804
+ | `ta.latch` | word | 65535 |
1805
+ | `ta.pipe` | int & 0x3 | 0 |
1806
+ | `ta.load_delay` | int | 0 |
1807
+ | `ta.reload` | bool | false |
1808
+ | `ta.underflowed` | bool | false |
1809
+ | `ta.oneshot_linger` | int | 0 |
1810
+ | `ta.toggle` | bool | true |
1811
+ | `tb.counter` | word | 65535 |
1812
+ | `tb.latch` | word | 65535 |
1813
+ | `tb.pipe` | int & 0x3 | 0 |
1814
+ | `tb.load_delay` | int | 0 |
1815
+ | `tb.reload` | bool | false |
1816
+ | `tb.underflowed` | bool | false |
1817
+ | `tb.oneshot_linger` | int | 0 |
1818
+ | `tb.toggle` | bool | true |
1819
+ | `icr.mask` | byte | 0 |
1820
+ | `icr.status` | byte | 0 |
1821
+ | `icr.pending` | int | 0 |
1822
+ | `icr.read` | int, optional | absent |
1823
+ | `icr.read_last_cycle` | int, optional | absent |
1824
+ | `icr.read_two_cycles_ago` | int, optional | absent |
1825
+ | `icr.timer_b_bug` | bool | false |
1826
+ | `sdr.data` | byte | 0 |
1827
+ | `sdr.shift` | byte | 0 |
1828
+ | `sdr.steps` | int | 0 |
1829
+ | `sdr.empty_in` | int, optional | absent |
1830
+ | `sdr.busy_in` | int, optional | absent |
1831
+ | `sdr.busy` | bool | false |
1832
+ | `sdr.abandoned` | bool | false |
1833
+ | `sdr.pending` | int, optional | absent |
1834
+ | `sdr.underflow_high` | bool | false |
1835
+ | `sdr.in_flight` | bool | false |
1836
+ | `sdr.flight_up` | int | 0 |
1837
+ | `sdr.flight_down` | int | 0 |
1838
+ | `sdr.cnt` | bool | true |
1839
+ | `sdr.cnt_in` | bool | true |
1840
+ | `sdr.sp_in` | bool | true |
1841
+ | `sdr.sp_out` | bool | true |
1842
+ | `sdr.idle` | bool | true |
1843
+ | `tod.mains_phase` | int | 0 |
1844
+ | `tod.pulses` | int | 0 |
1845
+ | `tod.stopped` | bool | true |
1846
+ | `tod.alarm_pending` | bool | false |
1847
+ | `tod.clock.tenths` | byte | 0 |
1848
+ | `tod.alarm.tenths` | byte | 0 |
1849
+ | `tod.clock.seconds` | byte | 0 |
1850
+ | `tod.alarm.seconds` | byte | 0 |
1851
+ | `tod.clock.minutes` | byte | 0 |
1852
+ | `tod.alarm.minutes` | byte | 0 |
1853
+ | `tod.clock.hours` | byte | 1 |
1854
+ | `tod.alarm.hours` | byte | 0 |
1855
+ | `tod.latch.hours` | int, optional | absent |
1856
+
1857
+ ## BL-TPI1
1858
+
1859
+ Written by the CBM-II.
1860
+
1861
+ | Key | Type | Default |
1862
+ | --- | --- | --- |
1863
+ | `ports` | ints | [0, 0, 0] |
1864
+ | `directions` | ints | [0, 0, 0] |
1865
+ | `control` | byte | 0 |
1866
+ | `latches` | int & 0x1f | 0 |
1867
+ | `air` | int & 0x1f | 0 |
1868
+ | `stack` | ints | [] |
1869
+ | `ca` | bool | false |
1870
+ | `cb` | bool | false |
1871
+ | `lines` | int & 0x1f | 31 |
1872
+
1873
+ ## BL-TPI2
1874
+
1875
+ Written by the CBM-II.
1876
+
1877
+ | Key | Type | Default |
1878
+ | --- | --- | --- |
1879
+ | `ports` | ints | [0, 0, 0] |
1880
+ | `directions` | ints | [0, 0, 0] |
1881
+ | `control` | byte | 0 |
1882
+ | `latches` | int & 0x1f | 0 |
1883
+ | `air` | int & 0x1f | 0 |
1884
+ | `stack` | ints | [] |
1885
+ | `ca` | bool | false |
1886
+ | `cb` | bool | false |
1887
+ | `lines` | int & 0x1f | 31 |
1888
+
1889
+ ## BL-U2
1890
+
1891
+ Written by the KIM-1.
1892
+
1893
+ | Key | Type | Default |
1894
+ | --- | --- | --- |
1895
+ | `ram` | bytes | 64 × 0 |
1896
+ | `ora` | byte | 0 |
1897
+ | `orb` | byte | 0 |
1898
+ | `ddra` | byte | 0 |
1899
+ | `ddrb` | byte | 0 |
1900
+ | `timer.counter` | byte | 0 |
1901
+ | `timer.interval` | int & 0x3 | 0 |
1902
+ | `timer.prescale` | int | 1 |
1903
+ | `timer.expired` | bool | true |
1904
+ | `timer.flag` | bool | false |
1905
+ | `timer.irq_enabled` | bool | false |
1906
+ | `timer.fired` | bool | false |
1907
+
1908
+ ## BL-U3
1909
+
1910
+ Written by the KIM-1.
1911
+
1912
+ | Key | Type | Default |
1913
+ | --- | --- | --- |
1914
+ | `ram` | bytes | 64 × 0 |
1915
+ | `ora` | byte | 0 |
1916
+ | `orb` | byte | 0 |
1917
+ | `ddra` | byte | 0 |
1918
+ | `ddrb` | byte | 0 |
1919
+ | `timer.counter` | byte | 0 |
1920
+ | `timer.interval` | int & 0x3 | 0 |
1921
+ | `timer.prescale` | int | 1 |
1922
+ | `timer.expired` | bool | true |
1923
+ | `timer.flag` | bool | false |
1924
+ | `timer.irq_enabled` | bool | false |
1925
+ | `timer.fired` | bool | false |
1926
+
1927
+ ## BL-PANEL
1928
+
1929
+ Written by the KIM-1.
1930
+
1931
+ | Key | Type | Default |
1932
+ | --- | --- | --- |
1933
+ | `tty` | bool | false |
1934
+ | `held` | int | -1 |
1935
+ | `digit` | int | -1 |
1936
+ | `segments` | int & 0x7f | 0 |
1937
+ | `since` | int | 0 |
1938
+ | `lit` | ints | 42 × 0 |
1939
+ | `shown` | ints | [0, 0, 0, 0, 0, 0] |
1940
+ | `shown_at` | ints | [-20001, -20001, -20001, -20001, -20001, -20001] |
1941
+
1942
+ ## BL-DECK
1943
+
1944
+ Written by the KIM-1.
1945
+
1946
+ | Key | Type | Default |
1947
+ | --- | --- | --- |
1948
+ | `tape.gaps` | ints | [] |
1949
+ | `tape.path` | text | "" |
1950
+ | `playing` | bool | false |
1951
+ | `recording` | bool | false |
1952
+ | `position` | int | 0 |
1953
+ | `next_edge` | int | 0 |
1954
+ | `high` | bool | true |
1955
+ | `output_high` | bool | true |
1956
+
1957
+ ## BL-TTY
1958
+
1959
+ Written by the KIM-1.
1960
+
1961
+ | Key | Type | Default |
1962
+ | --- | --- | --- |
1963
+ | `baud` | int | 9600 |
1964
+ | `queue` | ints | [] |
1965
+ | `output` | bytes | [] |
1966
+ | `line_high` | bool | true |
1967
+ | `send.byte` | int | 0 |
1968
+ | `send.bits` | int | 11 |
1969
+ | `send.start` | int | 0 |
1970
+ | `quiet_until` | int | 0 |
1971
+ | `receive.busy` | bool | false |
1972
+ | `receive.byte` | int | 0 |
1973
+ | `receive.bits` | int | 0 |
1974
+ | `receive.edge` | int | 0 |
1975
+ | `receive.sample_at` | int | 0 |
1976
+ | `printer_high` | bool | true |
1977
+
1978
+ ## BL-SOUND
1979
+
1980
+ Written by the KIM-1.
1981
+
1982
+ | Key | Type | Default |
1983
+ | --- | --- | --- |
1984
+ | `speaker` | bool | false |