web-a2e 1.0.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.
- package/.clangd +5 -0
- package/.mcp.json +12 -0
- package/CLAUDE.md +362 -0
- package/CMakeLists.txt +774 -0
- package/LICENSE +21 -0
- package/README.md +392 -0
- package/build-wasm/generated/roms.cpp +2447 -0
- package/docker-compose.staging.yml +9 -0
- package/docs/basic-rom-disassembly.md +6663 -0
- package/docs/softswitch-comparison.md +273 -0
- package/docs/thunderclock-debug.md +89 -0
- package/examples/cube.bas +72 -0
- package/examples/hello.s +55 -0
- package/examples/scroll.s +140 -0
- package/package.json +18 -0
- package/public/assets/apple-logo-old.png +0 -0
- package/public/assets/apple-logo.png +0 -0
- package/public/assets/drive-closed-light-on.png +0 -0
- package/public/assets/drive-closed.png +0 -0
- package/public/assets/drive-open-light-on.png +0 -0
- package/public/assets/drive-open.png +0 -0
- package/public/audio-worklet.js +82 -0
- package/public/disks/Apple DOS 3.3 January 1983.dsk +0 -0
- package/public/disks/ProDOS 2.4.3.po +0 -0
- package/public/disks/h32mb.2mg +0 -0
- package/public/disks/library.json +26 -0
- package/public/docs/llms/llm-assembler.txt +90 -0
- package/public/docs/llms/llm-basic-program.txt +256 -0
- package/public/docs/llms/llm-disk-drives.txt +72 -0
- package/public/docs/llms/llm-file-explorer.txt +50 -0
- package/public/docs/llms/llm-hard-drives.txt +80 -0
- package/public/docs/llms/llm-main.txt +51 -0
- package/public/docs/llms/llm-slot-configuration.txt +66 -0
- package/public/icons/icon-192.svg +4 -0
- package/public/icons/icon-512.svg +4 -0
- package/public/index.html +661 -0
- package/public/llms.txt +49 -0
- package/public/manifest.json +29 -0
- package/public/shaders/burnin.glsl +22 -0
- package/public/shaders/crt.glsl +706 -0
- package/public/shaders/edge.glsl +109 -0
- package/public/shaders/vertex.glsl +8 -0
- package/public/sw.js +186 -0
- package/roms/341-0027.bin +0 -0
- package/roms/341-0160-A-US-UK.bin +0 -0
- package/roms/341-0160-A.bin +0 -0
- package/roms/342-0273-A-US-UK.bin +0 -0
- package/roms/342-0349-B-C0-FF.bin +0 -0
- package/roms/Apple Mouse Interface Card ROM - 342-0270-C.bin +0 -0
- package/roms/Thunderclock Plus ROM.bin +0 -0
- package/scripts/generate_roms.sh +69 -0
- package/src/bindings/wasm_interface.cpp +1940 -0
- package/src/core/assembler/assembler.cpp +1239 -0
- package/src/core/assembler/assembler.hpp +115 -0
- package/src/core/audio/audio.cpp +160 -0
- package/src/core/audio/audio.hpp +81 -0
- package/src/core/basic/basic_detokenizer.cpp +436 -0
- package/src/core/basic/basic_detokenizer.hpp +41 -0
- package/src/core/basic/basic_tokenizer.cpp +286 -0
- package/src/core/basic/basic_tokenizer.hpp +26 -0
- package/src/core/basic/basic_tokens.hpp +295 -0
- package/src/core/cards/disk2_card.cpp +568 -0
- package/src/core/cards/disk2_card.hpp +316 -0
- package/src/core/cards/expansion_card.hpp +185 -0
- package/src/core/cards/mockingboard/ay8910.cpp +616 -0
- package/src/core/cards/mockingboard/ay8910.hpp +159 -0
- package/src/core/cards/mockingboard/via6522.cpp +530 -0
- package/src/core/cards/mockingboard/via6522.hpp +163 -0
- package/src/core/cards/mockingboard_card.cpp +312 -0
- package/src/core/cards/mockingboard_card.hpp +159 -0
- package/src/core/cards/mouse_card.cpp +654 -0
- package/src/core/cards/mouse_card.hpp +190 -0
- package/src/core/cards/smartport/block_device.cpp +202 -0
- package/src/core/cards/smartport/block_device.hpp +60 -0
- package/src/core/cards/smartport/smartport_card.cpp +603 -0
- package/src/core/cards/smartport/smartport_card.hpp +120 -0
- package/src/core/cards/thunderclock_card.cpp +237 -0
- package/src/core/cards/thunderclock_card.hpp +122 -0
- package/src/core/cpu/cpu6502.cpp +1609 -0
- package/src/core/cpu/cpu6502.hpp +203 -0
- package/src/core/debug/condition_evaluator.cpp +470 -0
- package/src/core/debug/condition_evaluator.hpp +87 -0
- package/src/core/disassembler/disassembler.cpp +552 -0
- package/src/core/disassembler/disassembler.hpp +171 -0
- package/src/core/disk-image/disk_image.hpp +267 -0
- package/src/core/disk-image/dsk_disk_image.cpp +827 -0
- package/src/core/disk-image/dsk_disk_image.hpp +204 -0
- package/src/core/disk-image/gcr_encoding.cpp +147 -0
- package/src/core/disk-image/gcr_encoding.hpp +78 -0
- package/src/core/disk-image/woz_disk_image.cpp +1049 -0
- package/src/core/disk-image/woz_disk_image.hpp +343 -0
- package/src/core/emulator.cpp +2126 -0
- package/src/core/emulator.hpp +434 -0
- package/src/core/filesystem/dos33.cpp +178 -0
- package/src/core/filesystem/dos33.hpp +66 -0
- package/src/core/filesystem/pascal.cpp +262 -0
- package/src/core/filesystem/pascal.hpp +87 -0
- package/src/core/filesystem/prodos.cpp +369 -0
- package/src/core/filesystem/prodos.hpp +119 -0
- package/src/core/input/keyboard.cpp +227 -0
- package/src/core/input/keyboard.hpp +111 -0
- package/src/core/mmu/mmu.cpp +1387 -0
- package/src/core/mmu/mmu.hpp +236 -0
- package/src/core/types.hpp +196 -0
- package/src/core/video/video.cpp +680 -0
- package/src/core/video/video.hpp +156 -0
- package/src/css/assembler-editor.css +1617 -0
- package/src/css/base.css +470 -0
- package/src/css/basic-debugger.css +791 -0
- package/src/css/basic-editor.css +792 -0
- package/src/css/controls.css +783 -0
- package/src/css/cpu-debugger.css +1413 -0
- package/src/css/debug-base.css +160 -0
- package/src/css/debug-windows.css +6455 -0
- package/src/css/disk-drives.css +406 -0
- package/src/css/documentation.css +392 -0
- package/src/css/file-explorer.css +867 -0
- package/src/css/hard-drive.css +180 -0
- package/src/css/layout.css +217 -0
- package/src/css/memory-windows.css +798 -0
- package/src/css/modals.css +510 -0
- package/src/css/monitor.css +425 -0
- package/src/css/release-notes.css +101 -0
- package/src/css/responsive.css +400 -0
- package/src/css/rule-builder.css +340 -0
- package/src/css/save-states.css +201 -0
- package/src/css/settings-windows.css +1231 -0
- package/src/css/window-switcher.css +150 -0
- package/src/js/agent/agent-manager.js +643 -0
- package/src/js/agent/agent-tools.js +293 -0
- package/src/js/agent/agent-version-tools.js +131 -0
- package/src/js/agent/assembler-tools.js +357 -0
- package/src/js/agent/basic-program-tools.js +894 -0
- package/src/js/agent/disk-tools.js +417 -0
- package/src/js/agent/file-explorer-tools.js +269 -0
- package/src/js/agent/index.js +13 -0
- package/src/js/agent/main-tools.js +222 -0
- package/src/js/agent/slot-tools.js +303 -0
- package/src/js/agent/smartport-tools.js +257 -0
- package/src/js/agent/window-tools.js +80 -0
- package/src/js/audio/audio-driver.js +417 -0
- package/src/js/audio/audio-worklet.js +85 -0
- package/src/js/audio/index.js +8 -0
- package/src/js/config/default-layout.js +34 -0
- package/src/js/config/version.js +8 -0
- package/src/js/data/apple2-rom-routines.js +577 -0
- package/src/js/debug/assembler-editor-window.js +2993 -0
- package/src/js/debug/basic-breakpoint-manager.js +529 -0
- package/src/js/debug/basic-program-parser.js +436 -0
- package/src/js/debug/basic-program-window.js +2594 -0
- package/src/js/debug/basic-variable-inspector.js +447 -0
- package/src/js/debug/breakpoint-manager.js +472 -0
- package/src/js/debug/cpu-debugger-window.js +2396 -0
- package/src/js/debug/index.js +22 -0
- package/src/js/debug/label-manager.js +238 -0
- package/src/js/debug/memory-browser-window.js +416 -0
- package/src/js/debug/memory-heat-map-window.js +481 -0
- package/src/js/debug/memory-map-window.js +206 -0
- package/src/js/debug/mockingboard-window.js +882 -0
- package/src/js/debug/mouse-card-window.js +355 -0
- package/src/js/debug/rule-builder-window.js +648 -0
- package/src/js/debug/soft-switch-window.js +458 -0
- package/src/js/debug/stack-viewer-window.js +221 -0
- package/src/js/debug/symbols.js +416 -0
- package/src/js/debug/trace-panel.js +291 -0
- package/src/js/debug/zero-page-watch-window.js +297 -0
- package/src/js/disk-manager/disk-drives-window.js +212 -0
- package/src/js/disk-manager/disk-operations.js +284 -0
- package/src/js/disk-manager/disk-persistence.js +301 -0
- package/src/js/disk-manager/disk-surface-renderer.js +388 -0
- package/src/js/disk-manager/drive-sounds.js +139 -0
- package/src/js/disk-manager/hard-drive-manager.js +481 -0
- package/src/js/disk-manager/hard-drive-persistence.js +187 -0
- package/src/js/disk-manager/hard-drive-window.js +57 -0
- package/src/js/disk-manager/index.js +890 -0
- package/src/js/display/display-settings-window.js +383 -0
- package/src/js/display/index.js +10 -0
- package/src/js/display/screen-window.js +342 -0
- package/src/js/display/webgl-renderer.js +705 -0
- package/src/js/file-explorer/disassembler.js +574 -0
- package/src/js/file-explorer/dos33.js +266 -0
- package/src/js/file-explorer/file-viewer.js +359 -0
- package/src/js/file-explorer/index.js +1261 -0
- package/src/js/file-explorer/prodos.js +549 -0
- package/src/js/file-explorer/utils.js +67 -0
- package/src/js/help/documentation-window.js +1096 -0
- package/src/js/help/index.js +10 -0
- package/src/js/help/release-notes-window.js +85 -0
- package/src/js/help/release-notes.js +612 -0
- package/src/js/input/gamepad-handler.js +176 -0
- package/src/js/input/index.js +12 -0
- package/src/js/input/input-handler.js +396 -0
- package/src/js/input/joystick-window.js +404 -0
- package/src/js/input/mouse-handler.js +99 -0
- package/src/js/input/text-selection.js +462 -0
- package/src/js/main.js +653 -0
- package/src/js/state/index.js +15 -0
- package/src/js/state/save-states-window.js +393 -0
- package/src/js/state/state-manager.js +409 -0
- package/src/js/state/state-persistence.js +218 -0
- package/src/js/ui/confirm.js +43 -0
- package/src/js/ui/disk-drive-positioner.js +347 -0
- package/src/js/ui/reminder-controller.js +129 -0
- package/src/js/ui/slot-configuration-window.js +560 -0
- package/src/js/ui/theme-manager.js +61 -0
- package/src/js/ui/toast.js +44 -0
- package/src/js/ui/ui-controller.js +897 -0
- package/src/js/ui/window-switcher.js +275 -0
- package/src/js/utils/basic-autocomplete.js +832 -0
- package/src/js/utils/basic-highlighting.js +473 -0
- package/src/js/utils/basic-tokenizer.js +153 -0
- package/src/js/utils/basic-tokens.js +117 -0
- package/src/js/utils/constants.js +28 -0
- package/src/js/utils/indexeddb-helper.js +225 -0
- package/src/js/utils/merlin-editor-support.js +905 -0
- package/src/js/utils/merlin-highlighting.js +551 -0
- package/src/js/utils/storage.js +125 -0
- package/src/js/utils/string-utils.js +19 -0
- package/src/js/utils/wasm-memory.js +54 -0
- package/src/js/windows/base-window.js +690 -0
- package/src/js/windows/index.js +9 -0
- package/src/js/windows/window-manager.js +375 -0
- package/tests/catch2/catch.hpp +17976 -0
- package/tests/common/basic_program_builder.cpp +119 -0
- package/tests/common/basic_program_builder.hpp +209 -0
- package/tests/common/disk_image_builder.cpp +444 -0
- package/tests/common/disk_image_builder.hpp +141 -0
- package/tests/common/test_helpers.hpp +118 -0
- package/tests/gcr/gcr-test.cpp +142 -0
- package/tests/integration/check-rom.js +70 -0
- package/tests/integration/compare-boot.js +239 -0
- package/tests/integration/crash-trace.js +102 -0
- package/tests/integration/disk-boot-test.js +264 -0
- package/tests/integration/memory-crash.js +108 -0
- package/tests/integration/nibble-read-test.js +249 -0
- package/tests/integration/phase-test.js +159 -0
- package/tests/integration/test_emulator.cpp +291 -0
- package/tests/integration/test_emulator_basic.cpp +91 -0
- package/tests/integration/test_emulator_debug.cpp +344 -0
- package/tests/integration/test_emulator_disk.cpp +153 -0
- package/tests/integration/test_emulator_state.cpp +163 -0
- package/tests/klaus/6502_functional_test.bin +0 -0
- package/tests/klaus/65C02_extended_opcodes_test.bin +0 -0
- package/tests/klaus/klaus_6502_test.cpp +184 -0
- package/tests/klaus/klaus_65c02_test.cpp +197 -0
- package/tests/thunderclock/thunderclock_mmu_test.cpp +304 -0
- package/tests/thunderclock/thunderclock_test.cpp +550 -0
- package/tests/unit/test_assembler.cpp +521 -0
- package/tests/unit/test_audio.cpp +196 -0
- package/tests/unit/test_ay8910.cpp +311 -0
- package/tests/unit/test_basic_detokenizer.cpp +265 -0
- package/tests/unit/test_basic_tokenizer.cpp +382 -0
- package/tests/unit/test_block_device.cpp +259 -0
- package/tests/unit/test_condition_evaluator.cpp +219 -0
- package/tests/unit/test_cpu6502.cpp +1301 -0
- package/tests/unit/test_cpu_addressing.cpp +361 -0
- package/tests/unit/test_cpu_cycle_counts.cpp +409 -0
- package/tests/unit/test_cpu_decimal.cpp +166 -0
- package/tests/unit/test_cpu_interrupts.cpp +285 -0
- package/tests/unit/test_disassembler.cpp +323 -0
- package/tests/unit/test_disk2_card.cpp +330 -0
- package/tests/unit/test_dos33.cpp +273 -0
- package/tests/unit/test_dsk_disk_image.cpp +315 -0
- package/tests/unit/test_expansion_card.cpp +178 -0
- package/tests/unit/test_gcr_encoding.cpp +232 -0
- package/tests/unit/test_keyboard.cpp +262 -0
- package/tests/unit/test_mmu.cpp +555 -0
- package/tests/unit/test_mmu_slots.cpp +323 -0
- package/tests/unit/test_mockingboard.cpp +352 -0
- package/tests/unit/test_mouse_card.cpp +386 -0
- package/tests/unit/test_pascal.cpp +248 -0
- package/tests/unit/test_prodos.cpp +259 -0
- package/tests/unit/test_smartport_card.cpp +321 -0
- package/tests/unit/test_thunderclock.cpp +354 -0
- package/tests/unit/test_via6522.cpp +323 -0
- package/tests/unit/test_video.cpp +319 -0
- package/tests/unit/test_woz_disk_image.cpp +257 -0
- package/vite.config.js +96 -0
- package/wiki/AI-Agent.md +372 -0
- package/wiki/Architecture-Overview.md +303 -0
- package/wiki/Audio-System.md +449 -0
- package/wiki/CPU-Emulation.md +477 -0
- package/wiki/Debugger.md +516 -0
- package/wiki/Disk-Drives.md +161 -0
- package/wiki/Disk-System-Internals.md +547 -0
- package/wiki/Display-Settings.md +88 -0
- package/wiki/Expansion-Slots.md +187 -0
- package/wiki/File-Explorer.md +259 -0
- package/wiki/Getting-Started.md +156 -0
- package/wiki/Home.md +69 -0
- package/wiki/Input-Devices.md +183 -0
- package/wiki/Keyboard-Shortcuts.md +158 -0
- package/wiki/Memory-System.md +364 -0
- package/wiki/Save-States.md +172 -0
- package/wiki/Video-Rendering.md +658 -0
|
@@ -0,0 +1,416 @@
|
|
|
1
|
+
/*
|
|
2
|
+
* symbols.js - Apple IIe address symbol table for disassembly display
|
|
3
|
+
*
|
|
4
|
+
* Written by
|
|
5
|
+
* Mike Daley <michael_daley@icloud.com>
|
|
6
|
+
*/
|
|
7
|
+
|
|
8
|
+
// Symbol categories for color coding
|
|
9
|
+
export const SYMBOL_CATEGORY = {
|
|
10
|
+
ZEROPAGE: 'zp',
|
|
11
|
+
SOFTSWITCH: 'sw',
|
|
12
|
+
DISK: 'disk',
|
|
13
|
+
ROM: 'rom',
|
|
14
|
+
BASIC: 'basic',
|
|
15
|
+
VECTOR: 'vec',
|
|
16
|
+
IO: 'io',
|
|
17
|
+
};
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Create a symbol entry with name, description, and category
|
|
21
|
+
*/
|
|
22
|
+
function sym(name, desc, category) {
|
|
23
|
+
return { name, desc, category };
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// Zero Page locations
|
|
27
|
+
export const ZERO_PAGE_SYMBOLS = {
|
|
28
|
+
0x00: sym("LOMEM", "Start of BASIC program pointer", SYMBOL_CATEGORY.ZEROPAGE),
|
|
29
|
+
0x01: sym("LOMEM+1", "Start of BASIC program pointer (high)", SYMBOL_CATEGORY.ZEROPAGE),
|
|
30
|
+
0x20: sym("WNDLFT", "Text window left edge column", SYMBOL_CATEGORY.ZEROPAGE),
|
|
31
|
+
0x21: sym("WNDWDTH", "Text window width", SYMBOL_CATEGORY.ZEROPAGE),
|
|
32
|
+
0x22: sym("WNDTOP", "Text window top row", SYMBOL_CATEGORY.ZEROPAGE),
|
|
33
|
+
0x23: sym("WNDBTM", "Text window bottom row", SYMBOL_CATEGORY.ZEROPAGE),
|
|
34
|
+
0x24: sym("CH", "Cursor horizontal position (0-39/79)", SYMBOL_CATEGORY.ZEROPAGE),
|
|
35
|
+
0x25: sym("CV", "Cursor vertical position (0-23)", SYMBOL_CATEGORY.ZEROPAGE),
|
|
36
|
+
0x26: sym("GPTS", "General purpose temp storage", SYMBOL_CATEGORY.ZEROPAGE),
|
|
37
|
+
0x27: sym("GBPTS", "General purpose temp storage", SYMBOL_CATEGORY.ZEROPAGE),
|
|
38
|
+
0x28: sym("BASL", "Text screen base address low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
39
|
+
0x29: sym("BASH", "Text screen base address high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
40
|
+
0x2A: sym("BAS2L", "Secondary screen base low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
41
|
+
0x2B: sym("BAS2H", "Secondary screen base high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
42
|
+
0x2C: sym("H2", "Right end of horizontal line", SYMBOL_CATEGORY.ZEROPAGE),
|
|
43
|
+
0x2D: sym("V2", "Bottom of vertical line", SYMBOL_CATEGORY.ZEROPAGE),
|
|
44
|
+
0x2E: sym("MASK", "Bit mask for plotting", SYMBOL_CATEGORY.ZEROPAGE),
|
|
45
|
+
0x30: sym("COLOR", "Lo-res color value (0-15)", SYMBOL_CATEGORY.ZEROPAGE),
|
|
46
|
+
0x32: sym("INVFLG", "Inverse flag ($FF=normal, $3F=inverse, $7F=flash)", SYMBOL_CATEGORY.ZEROPAGE),
|
|
47
|
+
0x33: sym("PROMPT", "Prompt character for input", SYMBOL_CATEGORY.ZEROPAGE),
|
|
48
|
+
0x36: sym("CSWL", "Character output hook vector low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
49
|
+
0x37: sym("CSWH", "Character output hook vector high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
50
|
+
0x38: sym("KSWL", "Character input hook vector low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
51
|
+
0x39: sym("KSWH", "Character input hook vector high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
52
|
+
0x3C: sym("A1L", "Monitor general purpose pointer low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
53
|
+
0x3D: sym("A1H", "Monitor general purpose pointer high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
54
|
+
0x3E: sym("A2L", "Monitor general purpose pointer low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
55
|
+
0x3F: sym("A2H", "Monitor general purpose pointer high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
56
|
+
0x40: sym("A3L", "Monitor general purpose pointer low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
57
|
+
0x41: sym("A3H", "Monitor general purpose pointer high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
58
|
+
0x42: sym("A4L", "Monitor general purpose pointer low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
59
|
+
0x43: sym("A4H", "Monitor general purpose pointer high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
60
|
+
0x45: sym("ACC", "Accumulator save area", SYMBOL_CATEGORY.ZEROPAGE),
|
|
61
|
+
0x46: sym("XREG", "X register save area", SYMBOL_CATEGORY.ZEROPAGE),
|
|
62
|
+
0x47: sym("YREG", "Y register save area", SYMBOL_CATEGORY.ZEROPAGE),
|
|
63
|
+
0x48: sym("STATUS", "Status register save area", SYMBOL_CATEGORY.ZEROPAGE),
|
|
64
|
+
0x4E: sym("RNDL", "Random number seed low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
65
|
+
0x4F: sym("RNDH", "Random number seed high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
66
|
+
0x50: sym("LINNUM", "Current BASIC line number low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
67
|
+
0x51: sym("LINNUM+1", "Current BASIC line number high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
68
|
+
0x67: sym("TXTTAB", "Pointer to start of BASIC program low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
69
|
+
0x68: sym("TXTTAB+1", "Pointer to start of BASIC program high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
70
|
+
0x69: sym("VARTAB", "Pointer to start of variables low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
71
|
+
0x6A: sym("VARTAB+1", "Pointer to start of variables high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
72
|
+
0x6B: sym("ARYTAB", "Pointer to start of arrays low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
73
|
+
0x6C: sym("ARYTAB+1", "Pointer to start of arrays high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
74
|
+
0x6D: sym("STREND", "Pointer to end of arrays low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
75
|
+
0x6E: sym("STREND+1", "Pointer to end of arrays high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
76
|
+
0x6F: sym("FRETOP", "Pointer to bottom of string storage low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
77
|
+
0x70: sym("FRETOP+1", "Pointer to bottom of string storage high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
78
|
+
0x73: sym("MEMSIZ", "Pointer to top of BASIC memory low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
79
|
+
0x74: sym("MEMSIZ+1", "Pointer to top of BASIC memory high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
80
|
+
0x75: sym("CURLIN", "Current line being executed low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
81
|
+
0x76: sym("CURLIN+1", "Current line being executed high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
82
|
+
0xAF: sym("HIMEM", "Highest address available to BASIC low", SYMBOL_CATEGORY.ZEROPAGE),
|
|
83
|
+
0xB0: sym("HIMEM+1", "Highest address available to BASIC high", SYMBOL_CATEGORY.ZEROPAGE),
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
// Soft Switches ($C000-$C0FF)
|
|
87
|
+
export const SOFTSWITCH_SYMBOLS = {
|
|
88
|
+
0xC000: sym("KBD", "Read keyboard data (bit 7 = key available)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
89
|
+
0xC001: sym("80STOREON", "Enable PAGE2 to switch main/aux memory", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
90
|
+
0xC002: sym("RDMAINRAM", "Read from main 48K RAM", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
91
|
+
0xC003: sym("RDAUXRAM", "Read from auxiliary 48K RAM", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
92
|
+
0xC004: sym("WRMAINRAM", "Write to main 48K RAM", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
93
|
+
0xC005: sym("WRAUXRAM", "Write to auxiliary 48K RAM", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
94
|
+
0xC006: sym("SETSLOTCXROM", "Enable peripheral card ROM in $C100-$CFFF", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
95
|
+
0xC007: sym("SETINTCXROM", "Enable internal ROM in $C100-$CFFF", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
96
|
+
0xC008: sym("SETSTDZP", "Use main zero page and stack", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
97
|
+
0xC009: sym("SETALTZP", "Use auxiliary zero page and stack", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
98
|
+
0xC00A: sym("SETINTC3ROM", "Enable internal ROM at $C300", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
99
|
+
0xC00B: sym("SETSLOTC3ROM", "Enable slot 3 ROM at $C300", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
100
|
+
0xC00C: sym("80COLOFF", "Disable 80-column display (40-column)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
101
|
+
0xC00D: sym("80COLON", "Enable 80-column display", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
102
|
+
0xC00E: sym("ALTCHAROFF", "Use primary character set", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
103
|
+
0xC00F: sym("ALTCHARON", "Use alternate character set (MouseText)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
104
|
+
0xC010: sym("KBDSTRB", "Clear keyboard strobe (bit 7 of KBD)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
105
|
+
0xC011: sym("RDLCBNK2", "Read LC bank 2 status (bit 7)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
106
|
+
0xC012: sym("RDLCRAM", "Read LC RAM enabled status (bit 7)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
107
|
+
0xC013: sym("RDRAMRD", "Read RAMRD status (bit 7)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
108
|
+
0xC014: sym("RDRAMWRT", "Read RAMWRT status (bit 7)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
109
|
+
0xC015: sym("RDCXROM", "Read INTCXROM status (bit 7)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
110
|
+
0xC016: sym("RDALTZP", "Read ALTZP status (bit 7)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
111
|
+
0xC017: sym("RDC3ROM", "Read SLOTC3ROM status (bit 7)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
112
|
+
0xC018: sym("RD80STORE", "Read 80STORE status (bit 7)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
113
|
+
0xC019: sym("RDVBL", "Read vertical blank status (bit 7, 0=VBL)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
114
|
+
0xC01A: sym("RDTEXT", "Read TEXT mode status (bit 7)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
115
|
+
0xC01B: sym("RDMIXED", "Read MIXED mode status (bit 7)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
116
|
+
0xC01C: sym("RDPAGE2", "Read PAGE2 status (bit 7)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
117
|
+
0xC01D: sym("RDHIRES", "Read HIRES mode status (bit 7)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
118
|
+
0xC01E: sym("RDALTCHAR", "Read ALTCHAR status (bit 7)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
119
|
+
0xC01F: sym("RD80COL", "Read 80COL status (bit 7)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
120
|
+
0xC020: sym("TAPEOUT", "Toggle cassette output", SYMBOL_CATEGORY.IO),
|
|
121
|
+
0xC030: sym("SPKR", "Toggle speaker (click)", SYMBOL_CATEGORY.IO),
|
|
122
|
+
0xC040: sym("STROBE", "Utility strobe output", SYMBOL_CATEGORY.IO),
|
|
123
|
+
0xC050: sym("TXTCLR", "Switch to graphics mode", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
124
|
+
0xC051: sym("TXTSET", "Switch to text mode", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
125
|
+
0xC052: sym("MIXCLR", "Full-screen graphics (no text window)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
126
|
+
0xC053: sym("MIXSET", "Mixed graphics+text (4 lines text)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
127
|
+
0xC054: sym("LOWSCR", "Display page 1", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
128
|
+
0xC055: sym("HISCR", "Display page 2", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
129
|
+
0xC056: sym("LORES", "Select lo-res graphics mode", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
130
|
+
0xC057: sym("HIRES", "Select hi-res graphics mode", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
131
|
+
0xC058: sym("AN0OFF", "Annunciator 0 off", SYMBOL_CATEGORY.IO),
|
|
132
|
+
0xC059: sym("AN0ON", "Annunciator 0 on", SYMBOL_CATEGORY.IO),
|
|
133
|
+
0xC05A: sym("AN1OFF", "Annunciator 1 off", SYMBOL_CATEGORY.IO),
|
|
134
|
+
0xC05B: sym("AN1ON", "Annunciator 1 on", SYMBOL_CATEGORY.IO),
|
|
135
|
+
0xC05C: sym("AN2OFF", "Annunciator 2 off", SYMBOL_CATEGORY.IO),
|
|
136
|
+
0xC05D: sym("AN2ON", "Annunciator 2 on", SYMBOL_CATEGORY.IO),
|
|
137
|
+
0xC05E: sym("AN3OFF", "Annunciator 3 off / Enable double hi-res", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
138
|
+
0xC05F: sym("AN3ON", "Annunciator 3 on / Disable double hi-res", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
139
|
+
0xC060: sym("TAPEIN", "Read cassette input (bit 7)", SYMBOL_CATEGORY.IO),
|
|
140
|
+
0xC061: sym("PB0", "Read pushbutton 0 / Open Apple (bit 7)", SYMBOL_CATEGORY.IO),
|
|
141
|
+
0xC062: sym("PB1", "Read pushbutton 1 / Closed Apple (bit 7)", SYMBOL_CATEGORY.IO),
|
|
142
|
+
0xC063: sym("PB2", "Read pushbutton 2 / Shift key (bit 7)", SYMBOL_CATEGORY.IO),
|
|
143
|
+
0xC064: sym("PDL0", "Read paddle 0 / Joystick X", SYMBOL_CATEGORY.IO),
|
|
144
|
+
0xC065: sym("PDL1", "Read paddle 1 / Joystick Y", SYMBOL_CATEGORY.IO),
|
|
145
|
+
0xC066: sym("PDL2", "Read paddle 2", SYMBOL_CATEGORY.IO),
|
|
146
|
+
0xC067: sym("PDL3", "Read paddle 3", SYMBOL_CATEGORY.IO),
|
|
147
|
+
0xC070: sym("PTRIG", "Trigger paddle timers", SYMBOL_CATEGORY.IO),
|
|
148
|
+
0xC07E: sym("IOUDISON", "Enable IOU access", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
149
|
+
0xC07F: sym("IOUDISOFF", "Disable IOU access", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
150
|
+
0xC080: sym("LCRAMRD2", "LC bank 2: read RAM, no write", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
151
|
+
0xC081: sym("ROMIN2", "LC bank 2: read ROM, write RAM", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
152
|
+
0xC082: sym("ROMIN2", "LC bank 2: read ROM, no write", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
153
|
+
0xC083: sym("LCRAMRW2", "LC bank 2: read RAM, write RAM", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
154
|
+
0xC084: sym("LCRAMRD2", "LC bank 2: read RAM, no write (mirror)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
155
|
+
0xC085: sym("ROMIN2", "LC bank 2: read ROM, write RAM (mirror)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
156
|
+
0xC086: sym("ROMIN2", "LC bank 2: read ROM, no write (mirror)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
157
|
+
0xC087: sym("LCRAMRW2", "LC bank 2: read RAM, write RAM (mirror)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
158
|
+
0xC088: sym("LCRAMRD1", "LC bank 1: read RAM, no write", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
159
|
+
0xC089: sym("ROMIN1", "LC bank 1: read ROM, write RAM", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
160
|
+
0xC08A: sym("ROMIN1", "LC bank 1: read ROM, no write", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
161
|
+
0xC08B: sym("LCRAMRW1", "LC bank 1: read RAM, write RAM", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
162
|
+
0xC08C: sym("LCRAMRD1", "LC bank 1: read RAM, no write (mirror)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
163
|
+
0xC08D: sym("ROMIN1", "LC bank 1: read ROM, write RAM (mirror)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
164
|
+
0xC08E: sym("ROMIN1", "LC bank 1: read ROM, no write (mirror)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
165
|
+
0xC08F: sym("LCRAMRW1", "LC bank 1: read RAM, write RAM (mirror)", SYMBOL_CATEGORY.SOFTSWITCH),
|
|
166
|
+
};
|
|
167
|
+
|
|
168
|
+
// Disk II Controller ($C0E0-$C0EF) - Slot 6
|
|
169
|
+
export const DISK_SYMBOLS = {
|
|
170
|
+
0xC0E0: sym("PHASE0OFF", "Disk II phase 0 motor off", SYMBOL_CATEGORY.DISK),
|
|
171
|
+
0xC0E1: sym("PHASE0ON", "Disk II phase 0 motor on", SYMBOL_CATEGORY.DISK),
|
|
172
|
+
0xC0E2: sym("PHASE1OFF", "Disk II phase 1 motor off", SYMBOL_CATEGORY.DISK),
|
|
173
|
+
0xC0E3: sym("PHASE1ON", "Disk II phase 1 motor on", SYMBOL_CATEGORY.DISK),
|
|
174
|
+
0xC0E4: sym("PHASE2OFF", "Disk II phase 2 motor off", SYMBOL_CATEGORY.DISK),
|
|
175
|
+
0xC0E5: sym("PHASE2ON", "Disk II phase 2 motor on", SYMBOL_CATEGORY.DISK),
|
|
176
|
+
0xC0E6: sym("PHASE3OFF", "Disk II phase 3 motor off", SYMBOL_CATEGORY.DISK),
|
|
177
|
+
0xC0E7: sym("PHASE3ON", "Disk II phase 3 motor on", SYMBOL_CATEGORY.DISK),
|
|
178
|
+
0xC0E8: sym("MOTOROFF", "Disk II drive motor off", SYMBOL_CATEGORY.DISK),
|
|
179
|
+
0xC0E9: sym("MOTORON", "Disk II drive motor on", SYMBOL_CATEGORY.DISK),
|
|
180
|
+
0xC0EA: sym("DRV0EN", "Disk II select drive 1", SYMBOL_CATEGORY.DISK),
|
|
181
|
+
0xC0EB: sym("DRV1EN", "Disk II select drive 2", SYMBOL_CATEGORY.DISK),
|
|
182
|
+
0xC0EC: sym("Q6L", "Disk II strobe data latch (read)", SYMBOL_CATEGORY.DISK),
|
|
183
|
+
0xC0ED: sym("Q6H", "Disk II load data latch (write)", SYMBOL_CATEGORY.DISK),
|
|
184
|
+
0xC0EE: sym("Q7L", "Disk II read mode (data in)", SYMBOL_CATEGORY.DISK),
|
|
185
|
+
0xC0EF: sym("Q7H", "Disk II write mode (data out)", SYMBOL_CATEGORY.DISK),
|
|
186
|
+
};
|
|
187
|
+
|
|
188
|
+
// Monitor ROM routines
|
|
189
|
+
export const ROM_SYMBOLS = {
|
|
190
|
+
0xF800: sym("PLOT", "Plot a lo-res point at (Y,A)", SYMBOL_CATEGORY.ROM),
|
|
191
|
+
0xF819: sym("HLINE", "Draw horizontal line (Y to H2 at V)", SYMBOL_CATEGORY.ROM),
|
|
192
|
+
0xF828: sym("VLINE", "Draw vertical line (A to V2 at Y)", SYMBOL_CATEGORY.ROM),
|
|
193
|
+
0xF832: sym("CLRSCR", "Clear lo-res screen to black", SYMBOL_CATEGORY.ROM),
|
|
194
|
+
0xF836: sym("CLRTOP", "Clear top 40 lines of lo-res screen", SYMBOL_CATEGORY.ROM),
|
|
195
|
+
0xF847: sym("GBASCALC", "Calculate graphics base address", SYMBOL_CATEGORY.ROM),
|
|
196
|
+
0xF856: sym("NXTCOL", "Increment color and mask", SYMBOL_CATEGORY.ROM),
|
|
197
|
+
0xF85F: sym("SETCOL", "Set lo-res color from A", SYMBOL_CATEGORY.ROM),
|
|
198
|
+
0xF864: sym("SCRN", "Read lo-res pixel at (Y,A)", SYMBOL_CATEGORY.ROM),
|
|
199
|
+
0xF871: sym("INSDS1", "Disassembler subroutine", SYMBOL_CATEGORY.ROM),
|
|
200
|
+
0xF882: sym("INSDS2", "Disassembler subroutine", SYMBOL_CATEGORY.ROM),
|
|
201
|
+
0xF88E: sym("INSTDSP", "Display disassembled instruction", SYMBOL_CATEGORY.ROM),
|
|
202
|
+
0xF8D0: sym("MPTS", "Mini-assembler entry", SYMBOL_CATEGORY.ROM),
|
|
203
|
+
0xF940: sym("PRNTYX", "Print Y and X as 4 hex digits", SYMBOL_CATEGORY.ROM),
|
|
204
|
+
0xF941: sym("PRNTAX", "Print A and X as 4 hex digits", SYMBOL_CATEGORY.ROM),
|
|
205
|
+
0xF944: sym("PRNTX", "Print X as 2 hex digits", SYMBOL_CATEGORY.ROM),
|
|
206
|
+
0xF948: sym("PRBLNK", "Print 3 spaces", SYMBOL_CATEGORY.ROM),
|
|
207
|
+
0xF94A: sym("PRBL2", "Print X spaces", SYMBOL_CATEGORY.ROM),
|
|
208
|
+
0xF953: sym("PCADJ", "Adjust PC for instruction length", SYMBOL_CATEGORY.ROM),
|
|
209
|
+
0xFA40: sym("PWRUP", "Power-up initialization", SYMBOL_CATEGORY.ROM),
|
|
210
|
+
0xFA62: sym("SLOOP", "Beep loop subroutine", SYMBOL_CATEGORY.ROM),
|
|
211
|
+
0xFAA6: sym("REGDSP", "Display CPU registers", SYMBOL_CATEGORY.ROM),
|
|
212
|
+
0xFAD7: sym("RTBL", "Register name table", SYMBOL_CATEGORY.ROM),
|
|
213
|
+
0xFADA: sym("PREAD", "Read paddle specified in X", SYMBOL_CATEGORY.ROM),
|
|
214
|
+
0xFB1E: sym("PREAD4", "Paddle read completion", SYMBOL_CATEGORY.ROM),
|
|
215
|
+
0xFB19: sym("PREAD3", "Paddle read wait loop", SYMBOL_CATEGORY.ROM),
|
|
216
|
+
0xFB2F: sym("INIT", "Initialize text screen and vectors", SYMBOL_CATEGORY.ROM),
|
|
217
|
+
0xFB39: sym("SETTXT", "Set text mode and clear screen", SYMBOL_CATEGORY.ROM),
|
|
218
|
+
0xFB40: sym("SETGR", "Set lo-res graphics mode", SYMBOL_CATEGORY.ROM),
|
|
219
|
+
0xFB4B: sym("SETWND", "Set standard text window", SYMBOL_CATEGORY.ROM),
|
|
220
|
+
0xFB5B: sym("TABV", "Move cursor to line in A", SYMBOL_CATEGORY.ROM),
|
|
221
|
+
0xFB60: sym("APPLEII", "Display Apple ][ logo", SYMBOL_CATEGORY.ROM),
|
|
222
|
+
0xFBC1: sym("BASCALC", "Calculate text base address for line in A", SYMBOL_CATEGORY.ROM),
|
|
223
|
+
0xFBD0: sym("BELL1", "Sound bell through COUT", SYMBOL_CATEGORY.ROM),
|
|
224
|
+
0xFBD9: sym("BELL2", "Sound bell directly (1/10 sec beep)", SYMBOL_CATEGORY.ROM),
|
|
225
|
+
0xFBDD: sym("STORADV", "Store char and advance cursor", SYMBOL_CATEGORY.ROM),
|
|
226
|
+
0xFBE4: sym("ADVANCE", "Advance cursor position", SYMBOL_CATEGORY.ROM),
|
|
227
|
+
0xFBF4: sym("VIDOUT", "Output char in A to screen", SYMBOL_CATEGORY.ROM),
|
|
228
|
+
0xFC10: sym("BS", "Process backspace", SYMBOL_CATEGORY.ROM),
|
|
229
|
+
0xFC1A: sym("UP", "Move cursor up one line", SYMBOL_CATEGORY.ROM),
|
|
230
|
+
0xFC22: sym("VTAB", "Move cursor to line in CV", SYMBOL_CATEGORY.ROM),
|
|
231
|
+
0xFC24: sym("VTABZ", "Move cursor to line in A", SYMBOL_CATEGORY.ROM),
|
|
232
|
+
0xFC2C: sym("ESC", "Process escape sequence", SYMBOL_CATEGORY.ROM),
|
|
233
|
+
0xFC42: sym("CLREOP", "Clear from cursor to end of page", SYMBOL_CATEGORY.ROM),
|
|
234
|
+
0xFC58: sym("HOME", "Clear screen and home cursor", SYMBOL_CATEGORY.ROM),
|
|
235
|
+
0xFC62: sym("CR", "Process carriage return", SYMBOL_CATEGORY.ROM),
|
|
236
|
+
0xFC66: sym("LF", "Process line feed", SYMBOL_CATEGORY.ROM),
|
|
237
|
+
0xFC70: sym("SCROLL", "Scroll text screen up one line", SYMBOL_CATEGORY.ROM),
|
|
238
|
+
0xFC95: sym("CLEOL1", "Clear to end of line (alternate)", SYMBOL_CATEGORY.ROM),
|
|
239
|
+
0xFC9C: sym("CLREOL", "Clear from cursor to end of line", SYMBOL_CATEGORY.ROM),
|
|
240
|
+
0xFCA8: sym("WAIT", "Delay: (26 + 27*A + 5*A*A)/2 cycles", SYMBOL_CATEGORY.ROM),
|
|
241
|
+
0xFCB4: sym("NXTA4", "Increment A4 pointer", SYMBOL_CATEGORY.ROM),
|
|
242
|
+
0xFCBA: sym("NXTA1", "Increment A1 pointer", SYMBOL_CATEGORY.ROM),
|
|
243
|
+
0xFCC9: sym("HEADR", "Write cassette header", SYMBOL_CATEGORY.ROM),
|
|
244
|
+
0xFCEC: sym("RDBYTE", "Read byte from cassette", SYMBOL_CATEGORY.ROM),
|
|
245
|
+
0xFCFA: sym("RDBYT2", "Read cassette byte (alternate)", SYMBOL_CATEGORY.ROM),
|
|
246
|
+
0xFD0C: sym("RDKEY", "Read key with cursor flash", SYMBOL_CATEGORY.ROM),
|
|
247
|
+
0xFD18: sym("KEYIN", "Read key without cursor", SYMBOL_CATEGORY.ROM),
|
|
248
|
+
0xFD1B: sym("KEYIN2", "Key input wait loop", SYMBOL_CATEGORY.ROM),
|
|
249
|
+
0xFD35: sym("RDCHAR", "Read char with escape processing", SYMBOL_CATEGORY.ROM),
|
|
250
|
+
0xFD3D: sym("NOTCR", "Process non-CR character", SYMBOL_CATEGORY.ROM),
|
|
251
|
+
0xFD5A: sym("NOTCR1", "Continue non-CR processing", SYMBOL_CATEGORY.ROM),
|
|
252
|
+
0xFD5C: sym("CAPTST", "Test for uppercase letter", SYMBOL_CATEGORY.ROM),
|
|
253
|
+
0xFD62: sym("ADTEFN", "Add character to input buffer", SYMBOL_CATEGORY.ROM),
|
|
254
|
+
0xFD67: sym("NXTCHAR", "Get next character from buffer", SYMBOL_CATEGORY.ROM),
|
|
255
|
+
0xFD6A: sym("TOSUB", "Go to subroutine via CSW", SYMBOL_CATEGORY.ROM),
|
|
256
|
+
0xFD6F: sym("ZMODE", "Zero A and set text mode", SYMBOL_CATEGORY.ROM),
|
|
257
|
+
0xFD75: sym("SETMDP", "Set inverse/normal mode", SYMBOL_CATEGORY.ROM),
|
|
258
|
+
0xFD7E: sym("SETMD", "Set output mode from A", SYMBOL_CATEGORY.ROM),
|
|
259
|
+
0xFD8B: sym("LT", "Process left-arrow key", SYMBOL_CATEGORY.ROM),
|
|
260
|
+
0xFD8E: sym("GETLN", "Get a line of input", SYMBOL_CATEGORY.ROM),
|
|
261
|
+
0xFD92: sym("GETLNZ", "Get line with initial CR", SYMBOL_CATEGORY.ROM),
|
|
262
|
+
0xFD9A: sym("BCKSPC", "Process backspace in input", SYMBOL_CATEGORY.ROM),
|
|
263
|
+
0xFDA3: sym("NXTCHR", "Get next char from keyboard", SYMBOL_CATEGORY.ROM),
|
|
264
|
+
0xFDB3: sym("CANCEL", "Cancel current input line", SYMBOL_CATEGORY.ROM),
|
|
265
|
+
0xFDC6: sym("GETNUM", "Get hex number from input", SYMBOL_CATEGORY.ROM),
|
|
266
|
+
0xFDDA: sym("CROUT1", "Output CR to screen", SYMBOL_CATEGORY.ROM),
|
|
267
|
+
0xFDED: sym("COUT", "Output char via CSW vector", SYMBOL_CATEGORY.ROM),
|
|
268
|
+
0xFDF0: sym("COUT1", "Output char directly to screen", SYMBOL_CATEGORY.ROM),
|
|
269
|
+
0xFDF6: sym("COUTZ", "Output char and zero A", SYMBOL_CATEGORY.ROM),
|
|
270
|
+
0xFE00: sym("BLANK", "Output a space character", SYMBOL_CATEGORY.ROM),
|
|
271
|
+
0xFE04: sym("BL1", "Output space (alternate)", SYMBOL_CATEGORY.ROM),
|
|
272
|
+
0xFE18: sym("PAUSE", "Wait for keypress", SYMBOL_CATEGORY.ROM),
|
|
273
|
+
0xFE1F: sym("HOME2", "Home cursor (alternate)", SYMBOL_CATEGORY.ROM),
|
|
274
|
+
0xFE22: sym("VIDWRT", "Write char to video", SYMBOL_CATEGORY.ROM),
|
|
275
|
+
0xFE2C: sym("SCRCOMP", "Screen completion", SYMBOL_CATEGORY.ROM),
|
|
276
|
+
0xFE5E: sym("OLDBRK", "Old break handler", SYMBOL_CATEGORY.ROM),
|
|
277
|
+
0xFE63: sym("BREAK", "Break handler", SYMBOL_CATEGORY.ROM),
|
|
278
|
+
0xFE67: sym("OLDREST", "Old restore handler", SYMBOL_CATEGORY.ROM),
|
|
279
|
+
0xFE6C: sym("RESTART", "Restart system", SYMBOL_CATEGORY.ROM),
|
|
280
|
+
0xFE80: sym("DRAWPNT", "Draw hi-res point", SYMBOL_CATEGORY.ROM),
|
|
281
|
+
0xFE84: sym("HIRES1", "Hi-res page 1 subroutine", SYMBOL_CATEGORY.ROM),
|
|
282
|
+
0xFE89: sym("HIRES2", "Hi-res page 2 subroutine", SYMBOL_CATEGORY.ROM),
|
|
283
|
+
0xFE93: sym("HCLR", "Clear hi-res screen", SYMBOL_CATEGORY.ROM),
|
|
284
|
+
0xFEA9: sym("BKGND", "Fill background", SYMBOL_CATEGORY.ROM),
|
|
285
|
+
0xFEB0: sym("SETHCOL", "Set hi-res color", SYMBOL_CATEGORY.ROM),
|
|
286
|
+
0xFEB3: sym("HCOLOR1", "Hi-res color subroutine", SYMBOL_CATEGORY.ROM),
|
|
287
|
+
0xFEC2: sym("COLORTBL", "Hi-res color table", SYMBOL_CATEGORY.ROM),
|
|
288
|
+
0xFECA: sym("GETCOL", "Get current hi-res color", SYMBOL_CATEGORY.ROM),
|
|
289
|
+
0xFED4: sym("HCOUNT", "Hi-res point counter", SYMBOL_CATEGORY.ROM),
|
|
290
|
+
0xFEE3: sym("HPOSN", "Position hi-res cursor", SYMBOL_CATEGORY.ROM),
|
|
291
|
+
0xFEF6: sym("HBARONE", "Draw hi-res horizontal bar", SYMBOL_CATEGORY.ROM),
|
|
292
|
+
0xFEFB: sym("HBARONE1", "Hi-res bar subroutine", SYMBOL_CATEGORY.ROM),
|
|
293
|
+
0xFF02: sym("HFIND", "Find hi-res byte", SYMBOL_CATEGORY.ROM),
|
|
294
|
+
0xFF12: sym("HGLIN", "Draw hi-res line", SYMBOL_CATEGORY.ROM),
|
|
295
|
+
0xFF3A: sym("HPLOT", "Plot hi-res point (official entry)", SYMBOL_CATEGORY.ROM),
|
|
296
|
+
0xFF3F: sym("MOVEX", "Move hi-res X coordinate", SYMBOL_CATEGORY.ROM),
|
|
297
|
+
0xFF44: sym("MOVEX2", "Move X subroutine", SYMBOL_CATEGORY.ROM),
|
|
298
|
+
0xFF50: sym("LFTRT", "Move cursor left/right", SYMBOL_CATEGORY.ROM),
|
|
299
|
+
0xFF58: sym("MONZ", "Enter monitor (warm start)", SYMBOL_CATEGORY.ROM),
|
|
300
|
+
0xFF59: sym("MON", "Monitor entry point", SYMBOL_CATEGORY.ROM),
|
|
301
|
+
0xFF65: sym("NXTITM", "Get next monitor command", SYMBOL_CATEGORY.ROM),
|
|
302
|
+
0xFF69: sym("GETNUM2", "Get hex number (monitor)", SYMBOL_CATEGORY.ROM),
|
|
303
|
+
0xFF73: sym("NXTBIT", "Get next bit", SYMBOL_CATEGORY.ROM),
|
|
304
|
+
0xFF7A: sym("GETLNZ2", "Get line (monitor)", SYMBOL_CATEGORY.ROM),
|
|
305
|
+
0xFF8A: sym("CROUT", "Output CR (official entry)", SYMBOL_CATEGORY.ROM),
|
|
306
|
+
0xFF90: sym("PRBYTE", "Print A as 2 hex digits", SYMBOL_CATEGORY.ROM),
|
|
307
|
+
0xFFA7: sym("PRHEX", "Print low nibble of A as hex", SYMBOL_CATEGORY.ROM),
|
|
308
|
+
0xFFAD: sym("PRNTYX2", "Print Y,X as hex", SYMBOL_CATEGORY.ROM),
|
|
309
|
+
0xFFB4: sym("OLDRST", "Old reset vector", SYMBOL_CATEGORY.ROM),
|
|
310
|
+
0xFFBE: sym("NEWRST", "New reset handler", SYMBOL_CATEGORY.ROM),
|
|
311
|
+
0xFFC7: sym("SPTS", "Set screen points", SYMBOL_CATEGORY.ROM),
|
|
312
|
+
0xFFCC: sym("INPORT", "Set input port in A", SYMBOL_CATEGORY.ROM),
|
|
313
|
+
0xFFCF: sym("OUTPORT", "Set output port in A", SYMBOL_CATEGORY.ROM),
|
|
314
|
+
0xFFE3: sym("GO", "Execute at address in A1", SYMBOL_CATEGORY.ROM),
|
|
315
|
+
0xFFE7: sym("REGZ", "Register display", SYMBOL_CATEGORY.ROM),
|
|
316
|
+
0xFFFA: sym("NMI", "NMI vector location", SYMBOL_CATEGORY.VECTOR),
|
|
317
|
+
0xFFFC: sym("RESET", "Reset vector location", SYMBOL_CATEGORY.VECTOR),
|
|
318
|
+
0xFFFE: sym("IRQ", "IRQ/BRK vector location", SYMBOL_CATEGORY.VECTOR),
|
|
319
|
+
};
|
|
320
|
+
|
|
321
|
+
// Applesoft BASIC ROM routines
|
|
322
|
+
export const BASIC_SYMBOLS = {
|
|
323
|
+
0xD365: sym("NEWSTT", "Execute next BASIC statement", SYMBOL_CATEGORY.BASIC),
|
|
324
|
+
0xD39E: sym("GONE", "Execute BASIC token", SYMBOL_CATEGORY.BASIC),
|
|
325
|
+
0xD4F2: sym("CHRGOT", "Get current character", SYMBOL_CATEGORY.BASIC),
|
|
326
|
+
0xD559: sym("FNDLIN", "Find BASIC line number", SYMBOL_CATEGORY.BASIC),
|
|
327
|
+
0xD61A: sym("CHKCOM", "Require comma, syntax error if not", SYMBOL_CATEGORY.BASIC),
|
|
328
|
+
0xD665: sym("FRMNUM", "Evaluate numeric expression", SYMBOL_CATEGORY.BASIC),
|
|
329
|
+
0xD7D2: sym("PTRGET", "Get pointer to variable", SYMBOL_CATEGORY.BASIC),
|
|
330
|
+
0xDB3A: sym("CHRGET", "Get next character, skip spaces", SYMBOL_CATEGORY.BASIC),
|
|
331
|
+
0xDD67: sym("FPWR", "Floating-point power function", SYMBOL_CATEGORY.BASIC),
|
|
332
|
+
0xDDCD: sym("NEGOP", "Negate floating-point number", SYMBOL_CATEGORY.BASIC),
|
|
333
|
+
0xDDCF: sym("LOG", "Natural logarithm function", SYMBOL_CATEGORY.BASIC),
|
|
334
|
+
0xDE5E: sym("FMULT", "Floating-point multiply", SYMBOL_CATEGORY.BASIC),
|
|
335
|
+
0xDF7E: sym("CONUPK", "Unpack constant to FAC", SYMBOL_CATEGORY.BASIC),
|
|
336
|
+
0xDFE3: sym("FINLOG", "Finish LOG calculation", SYMBOL_CATEGORY.BASIC),
|
|
337
|
+
0xE07A: sym("FSUB", "Floating-point subtract", SYMBOL_CATEGORY.BASIC),
|
|
338
|
+
0xE082: sym("FADD", "Floating-point add", SYMBOL_CATEGORY.BASIC),
|
|
339
|
+
0xE0F6: sym("OVERR", "Overflow error handler", SYMBOL_CATEGORY.BASIC),
|
|
340
|
+
0xE10C: sym("HALF", "Constant: 0.5", SYMBOL_CATEGORY.BASIC),
|
|
341
|
+
0xE10F: sym("LOG2", "Constant: LOG(2)", SYMBOL_CATEGORY.BASIC),
|
|
342
|
+
0xE113: sym("SQRT2", "Constant: SQRT(2)", SYMBOL_CATEGORY.BASIC),
|
|
343
|
+
0xE11E: sym("NEGHLF", "Constant: -0.5", SYMBOL_CATEGORY.BASIC),
|
|
344
|
+
0xE120: sym("LOGCON", "LOG constant table", SYMBOL_CATEGORY.BASIC),
|
|
345
|
+
0xE131: sym("SQR", "Square root function", SYMBOL_CATEGORY.BASIC),
|
|
346
|
+
0xE941: sym("COS", "Cosine function", SYMBOL_CATEGORY.BASIC),
|
|
347
|
+
0xE94B: sym("SIN", "Sine function", SYMBOL_CATEGORY.BASIC),
|
|
348
|
+
0xE97E: sym("TAN", "Tangent function", SYMBOL_CATEGORY.BASIC),
|
|
349
|
+
0xEA14: sym("ATN", "Arctangent function", SYMBOL_CATEGORY.BASIC),
|
|
350
|
+
};
|
|
351
|
+
|
|
352
|
+
// Important memory locations
|
|
353
|
+
export const MEMORY_SYMBOLS = {
|
|
354
|
+
0x0400: sym("TXTPG1", "Text/Lo-res page 1 start", SYMBOL_CATEGORY.ZEROPAGE),
|
|
355
|
+
0x0800: sym("TXTPG2", "Text/Lo-res page 2 start", SYMBOL_CATEGORY.ZEROPAGE),
|
|
356
|
+
0x2000: sym("HIRPG1", "Hi-res page 1 start", SYMBOL_CATEGORY.ZEROPAGE),
|
|
357
|
+
0x4000: sym("HIRPG2", "Hi-res page 2 start", SYMBOL_CATEGORY.ZEROPAGE),
|
|
358
|
+
0xC100: sym("SLOT1ROM", "Slot 1 ROM space", SYMBOL_CATEGORY.IO),
|
|
359
|
+
0xC200: sym("SLOT2ROM", "Slot 2 ROM space", SYMBOL_CATEGORY.IO),
|
|
360
|
+
0xC300: sym("SLOT3ROM", "Slot 3 ROM space (80-col)", SYMBOL_CATEGORY.IO),
|
|
361
|
+
0xC400: sym("SLOT4ROM", "Slot 4 ROM space", SYMBOL_CATEGORY.IO),
|
|
362
|
+
0xC500: sym("SLOT5ROM", "Slot 5 ROM space", SYMBOL_CATEGORY.IO),
|
|
363
|
+
0xC600: sym("SLOT6ROM", "Slot 6 ROM space (Disk II)", SYMBOL_CATEGORY.IO),
|
|
364
|
+
0xC700: sym("SLOT7ROM", "Slot 7 ROM space", SYMBOL_CATEGORY.IO),
|
|
365
|
+
0xC800: sym("SHAREDROM", "Shared slot ROM space ($C800-$CFFF)", SYMBOL_CATEGORY.IO),
|
|
366
|
+
0xD000: sym("BASICROM", "BASIC ROM / LC RAM bank 1/2 $D000", SYMBOL_CATEGORY.ROM),
|
|
367
|
+
0xE000: sym("BASICROM2", "BASIC ROM / LC RAM $E000", SYMBOL_CATEGORY.ROM),
|
|
368
|
+
0xF800: sym("MONROM", "Monitor ROM start", SYMBOL_CATEGORY.ROM),
|
|
369
|
+
};
|
|
370
|
+
|
|
371
|
+
// Combine all symbols into a single lookup
|
|
372
|
+
export const ALL_SYMBOLS = {
|
|
373
|
+
...ZERO_PAGE_SYMBOLS,
|
|
374
|
+
...SOFTSWITCH_SYMBOLS,
|
|
375
|
+
...DISK_SYMBOLS,
|
|
376
|
+
...ROM_SYMBOLS,
|
|
377
|
+
...BASIC_SYMBOLS,
|
|
378
|
+
...MEMORY_SYMBOLS,
|
|
379
|
+
};
|
|
380
|
+
|
|
381
|
+
/**
|
|
382
|
+
* Look up symbol information for an address
|
|
383
|
+
* @param {number} addr - The address to look up
|
|
384
|
+
* @returns {{name: string, desc: string, category: string}|null} - Symbol info or null
|
|
385
|
+
*/
|
|
386
|
+
export function getSymbolInfo(addr) {
|
|
387
|
+
return ALL_SYMBOLS[addr] || null;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
/**
|
|
391
|
+
* Look up just the symbolic name for an address (backwards compatible)
|
|
392
|
+
* @param {number} addr - The address to look up
|
|
393
|
+
* @returns {string|null} - The symbolic name or null if not found
|
|
394
|
+
*/
|
|
395
|
+
export function getSymbol(addr) {
|
|
396
|
+
const info = ALL_SYMBOLS[addr];
|
|
397
|
+
return info ? info.name : null;
|
|
398
|
+
}
|
|
399
|
+
|
|
400
|
+
/**
|
|
401
|
+
* Get the CSS class for a symbol category
|
|
402
|
+
* @param {string} category - The symbol category
|
|
403
|
+
* @returns {string} - CSS class name
|
|
404
|
+
*/
|
|
405
|
+
export function getCategoryClass(category) {
|
|
406
|
+
const classMap = {
|
|
407
|
+
[SYMBOL_CATEGORY.ZEROPAGE]: 'sym-zp',
|
|
408
|
+
[SYMBOL_CATEGORY.SOFTSWITCH]: 'sym-sw',
|
|
409
|
+
[SYMBOL_CATEGORY.DISK]: 'sym-disk',
|
|
410
|
+
[SYMBOL_CATEGORY.ROM]: 'sym-rom',
|
|
411
|
+
[SYMBOL_CATEGORY.BASIC]: 'sym-basic',
|
|
412
|
+
[SYMBOL_CATEGORY.VECTOR]: 'sym-vec',
|
|
413
|
+
[SYMBOL_CATEGORY.IO]: 'sym-io',
|
|
414
|
+
};
|
|
415
|
+
return classMap[category] || 'sym-default';
|
|
416
|
+
}
|