From 8edaca092596de9c4a68f62da6b212e108e255f4 Mon Sep 17 00:00:00 2001 From: Abdessamad Derraz <3028866+Abdess@users.noreply.github.com> Date: Tue, 20 Oct 2026 00:29:17 +0200 Subject: [PATCH] fix: reprofile linapple at 86bee1c Upstream moved the mouse card firmware into MouseRom.h behind ENABLE_PERIPHERAL_MOUSE, renamed the generated ROM symbols from g_rom_* to rom_*, added a hard disk controller with its own firmware and an XDG fallback for the data path. Every reference is re-read at the new pin, and Master.dsk carries the hashes the upstream build test pins. --- emulators/linapple.yml | 216 +++++++++++++++++++++++------------------ 1 file changed, 120 insertions(+), 96 deletions(-) diff --git a/emulators/linapple.yml b/emulators/linapple.yml index f3030ba2..4dadd72e 100644 --- a/emulators/linapple.yml +++ b/emulators/linapple.yml @@ -3,8 +3,8 @@ type: standalone core_classification: community_fork source: "https://github.com/linappleii/linapple" upstream: "https://github.com/AppleWin/AppleWin" -profiled_date: "2026-10-04" -source_commit: "42e4321d60dc066470151f76c1cd3fe5e88a695c" +profiled_date: "2026-10-20" +source_commit: "86bee1c2b59bd4706185ceddddaf383b3416726f" core_version: "3.0.0" display_name: "Apple - Apple II (LinApple)" cores: @@ -16,76 +16,80 @@ mode: standalone notes: | SDL port of AppleWin for Linux. The SourceForge project was abandoned and its forks were gathered under the linappleii organization - (README.md:166-173). Five frontends build from one core: sdl1, sdl2, sdl3, + (README.md:202-209). Five frontends build from one core: sdl1, sdl2, sdl3, tui and headless (src/frontends/). The ROMs the emulator runs are compiled into the binary. scripts/generate_roms.sh turns res/roms/*.rom into EmbeddedRoms.h and EmbeddedRoms.cpp, once at configure time and again at build time - (CMakeLists.txt:301-338), each image behind an ENABLE_ROM_* macro - (scripts/generate_roms.sh:97-118). Eighteen images go through the generator: - ten system ROMs, four character generator ROMs and four card ROMs. The - printer card, the Super Serial Card and the clock card carry their firmware - as arrays in their own source files - (src/apple2/peripherals/printer/Printer.cpp:30, + (CMakeLists.txt:293-329), each image behind an ENABLE_ROM_* macro + (scripts/generate_roms.sh:97-117). Seventeen images go through the + generator: ten system ROMs, four character generator ROMs and the three + Disk II ROMs. The mouse card, the printer card, the Super Serial Card, the + clock card and the hard disk controller carry their firmware as arrays in + their own source files (src/apple2/peripherals/mouse/MouseRom.h:19, + src/apple2/peripherals/printer/Printer.cpp:30, src/apple2/peripherals/super_serial_card/SuperSerialRom.h:16, - src/apple2/peripherals/clock/ClockCard.cpp:20), and the Mockingboard + src/apple2/peripherals/clock/ClockCard.cpp:34, + src/apple2/peripherals/harddisk/Harddisk.cpp:250), and the Mockingboard registers no ROM. What a macro is set to decides whether a machine model runs at all. - CMakeLists.txt:57-131 leaves the Apple ][, ][+, J-Plus, //e and Enhanced //e - system ROMs ON, along with the Disk II and mouse firmware. The three clone options are OFF: ENABLE_ROM_CLONE_BASE64A, - ENABLE_ROM_CLONE_PRAVETS and ENABLE_ROM_CLONE_TK3000E - (CMakeLists.txt:95-97). Selecting one of those machine types on a default - build reaches mem_initialize with no rom_data, which prints the model name - and its cmake flag, destroys the context and returns -1 - (src/apple2/Memory.cpp:1124-1134). The message offers two ways out, and the - second is a file: -R, --rom loads a system ROM at runtime - (src/frontends/common/AppArgs.cpp:77,186). + CMakeLists.txt:57-124 leaves the Apple ][, ][+, J-Plus, //e and Enhanced //e + system ROMs ON, along with the Disk II firmware. The three clone options are + OFF: ENABLE_ROM_CLONE_BASE64A, ENABLE_ROM_CLONE_PRAVETS and + ENABLE_ROM_CLONE_TK3000E (CMakeLists.txt:95-97). Selecting one of those + machine types on a default build reaches mem_initialize with no rom_data, + which prints the model name and its cmake flag, destroys the context and + returns -1 (src/apple2/Memory.cpp:1168-1178). The message offers two ways + out, and the second is a file: -R, --rom loads a system ROM at + runtime (src/frontends/common/AppArgs.cpp:77,188-189). A custom ROM takes precedence over anything embedded. load_custom_rom opens the path as given, then through Path::find_data_file, and refuses a file below 12288 or above 65536 bytes, which stops the start - (src/frontends/common/AppController.cpp:127-171,251-253). mem_initialize + (src/frontends/common/AppController.cpp:142-185,265-267). mem_initialize accepts the buffer at exactly 16384 or 12288 bytes, or larger, taking the trailing 16384 for the //e-class types and the trailing 12288 otherwise - (src/apple2/Memory.cpp:1038-1059). No hash or name is checked: the file is + (src/apple2/Memory.cpp:1082-1103). No hash or name is checked: the file is whatever the user points at. Character generators are res/charset40*.png, converted to XPM by CMake - (CMakeLists.txt:270-299) and included at src/apple2/Video.cpp:39-43. One of + (CMakeLists.txt:262-291) and included at src/apple2/Video.cpp:35-39. One of five is chosen from the machine type and the keyboard language - (src/apple2/Video.cpp:1228-1252). The status font and the splash screen are + (src/apple2/Video.cpp:1255-1279). The status font and the splash screen are XPM as well (src/core/Asset.cpp:15-16,57,63). The four *_Video.rom images - are compiled in, and no source file reads their symbols. + are compiled in, and nothing under src/ reads their symbols. Master.dsk is inserted into slot 6 drive 1 at startup unless the command line names a disk or the configuration autoloads one - (src/frontends/common/AppController.cpp:194-215). asset_find_master_disk + (src/frontends/common/AppController.cpp:210-231). asset_find_master_disk resolves it through Path::find_data_file (src/core/Asset.cpp:25-39), which walks the user data and config directories, the executable directory and its res/ neighbours, the share and etc prefixes beside it, the compiled-in SOURCE_RES_DIR, /usr/local/share/linapple, /usr/share/linapple, every - XDG_CONFIG_DIRS entry and /etc/linapple (src/core/Util_Path.h:116-179). The - same search serves icon.bmp and a --rom path that does not open as given. + XDG_CONFIG_DIRS entry or /etc/xdg/linapple when that variable is unset, and + /etc/linapple (src/core/Util_Path.h:116-179). The same search serves + icon.bmp and a --rom path that does not open as given. The debugger reads its symbol tables through system_state.program_dir, - declared at src/core/LinAppleCore.h:103 and read without ever being + declared at src/core/LinAppleCore.h:102 and read without ever being assigned, so the names resolve against the working directory. - g_file_name_symbols lists nine tables (src/Debugger/Debugger_Symbols.cpp:37-48). + file_name_symbols lists nine tables (src/Debugger/Debugger_Symbols.cpp:37-49). CmdSymbolsLoad reads a table's default file when it receives no argument - (src/Debugger/Debugger_Symbols.cpp:636-652). Its only caller is the LOAD - parameter of the SYM commands (src/Debugger/Debugger_Symbols.cpp:817-819), - and debug_initialize loads no table (src/Debugger/Debug.cpp:29-37). + (src/Debugger/Debugger_Symbols.cpp:644-660). Its only caller is the LOAD + parameter of the SYM commands (src/Debugger/Debugger_Symbols.cpp:823-825), + and debug_initialize loads no table (src/Debugger/Debug.cpp:29-39). ParseSymbolTable opens the file with fopen and a missing one leaves the - debugger running without its symbols (src/Debugger/Debugger_Symbols.cpp:495). + debugger running without its symbols (src/Debugger/Debugger_Symbols.cpp:497). - Peripheral cards are linked into the executable by default. With + Peripheral cards are linked into the executable by default. Each card has + an ENABLE_PERIPHERAL_* option, ON (CMakeLists.txt:538). With BUILD_SHARED_PERIPHERALS, OFF at CMakeLists.txt:43, each card that add_peripheral does not force built-in builds as a shared object - (CMakeLists.txt:554-555,662-666), and peripheral_plugins_init opens every *.so found in the - plugin search paths in either build - (src/apple2/peripherals/Peripheral_Internal.cpp:192-219, + (CMakeLists.txt:548-550,653,663-669), and peripheral_plugins_init opens + every *.so found in the plugin search paths in either build + (src/apple2/peripherals/Peripheral_Internal.cpp:352-437, src/core/Util_Path.h:102-114). linapple.conf carries preferences only (src/core/Registry.cpp, @@ -99,11 +103,16 @@ files: min_size: 143105 max_size: 143364 validation: [size] - source_ref: "src/core/Asset.cpp:20,25-39,97-112; src/apple2/peripherals/disk/formats/SectorDiskImage.cpp:65-66,79-82" + size: 143360 + md5: ee44560f34033efa3bb47b3e0aac1772 + sha1: 7b03befac4fbcef8c649048fa3ff5d095fd48dd3 + source_ref: "src/core/Asset.cpp:20,25-39,97-112; src/apple2/peripherals/disk/formats/SectorDiskImage.cpp:57-60,71-74; CMakeLists.txt:1324-1336" note: > asset_find_master_disk warns and returns false when no search path - holds the file, and the emulator starts with an empty drive. No hash or - content check is performed. LinApple and Batocera ship different images + holds the file, and the emulator starts with an empty drive. The sector + image driver also takes 143403 and 143488 bytes. No hash or content + check is performed at run time. The hashes are those of res/Master.dsk, + which a build test pins. LinApple and Batocera ship different images under this name, both 143360 bytes. - name: icon.bmp @@ -122,7 +131,7 @@ files: - name: APPLE2E.SYM required: false description: "Debugger symbol table for the main ROM" - source_ref: "src/Debugger/Debugger_Symbols.cpp:37-48,636-652" + source_ref: "src/Debugger/Debugger_Symbols.cpp:37-49,644-660" note: > Read into the Main table when SYMMAIN LOAD is entered without a file name. Parsed as text lines of address and symbol name, with no size or @@ -131,7 +140,7 @@ files: - name: A2_BASIC.SYM required: false description: "Debugger symbol table for Applesoft BASIC" - source_ref: "src/Debugger/Debugger_Symbols.cpp:37-48,636-652" + source_ref: "src/Debugger/Debugger_Symbols.cpp:37-49,644-660" note: > Read into the Basic table when SYMBASIC LOAD is entered without a file name. Parsed as text lines of address and symbol name, with no size or @@ -151,7 +160,7 @@ files: size: 49152 md5: 352fdbcae14c6a8c0398822c7a273309 sha1: f1c779af480b5bda2bdd03950c1201a5c5143bea - source_ref: "CMakeLists.txt:95,99-103; scripts/generate_roms.sh:107; src/frontends/common/AppController.cpp:148-159; src/apple2/Memory.cpp:99-100,1038-1059,1124-1134" + source_ref: "CMakeLists.txt:95,99-103; scripts/generate_roms.sh:107; src/frontends/common/AppController.cpp:163-174; src/apple2/Memory.cpp:104-105,1082-1103,1168-1178" note: > Larger than a system ROM: mem_initialize takes the trailing 12288 bytes for this machine type. @@ -165,7 +174,7 @@ files: size: 12288 md5: c619b7edfcf021f3b8fd20d9386676ba sha1: 8bd7ced83e209a15e9b19a05a5ef4b8e996dc1a5 - source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:109; src/frontends/common/AppController.cpp:148-159; src/apple2/Memory.cpp:101-102,1038-1059,1124-1134" + source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:109; src/frontends/common/AppController.cpp:163-174; src/apple2/Memory.cpp:106-107,1082-1103,1168-1178" - name: PRAVETS8M.ROM required: false @@ -176,7 +185,7 @@ files: size: 12288 md5: 76c79535f7cf77973e2c711aa977a124 sha1: f1b4ff018acf95f3355f0d575b66a188d728b687 - source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:111; src/frontends/common/AppController.cpp:148-159; src/apple2/Memory.cpp:103-104,1038-1059,1124-1134" + source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:111; src/frontends/common/AppController.cpp:163-174; src/apple2/Memory.cpp:108-109,1082-1103,1168-1178" - name: PRAVETS8C.ROM required: false @@ -187,7 +196,7 @@ files: size: 16384 md5: 1896d7b98dd940c89f7c8ea899b71006 sha1: c976fe56e57706c161f513a82ba3e0d8cda83904 - source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:110; src/frontends/common/AppController.cpp:148-159; src/apple2/Memory.cpp:105-106,1038-1059,1124-1134" + source_ref: "CMakeLists.txt:96,105-109; scripts/generate_roms.sh:110; src/frontends/common/AppController.cpp:163-174; src/apple2/Memory.cpp:110-111,1082-1103,1168-1178" note: > A //e-class type: mem_initialize takes the trailing 16384 bytes when the file is larger. @@ -201,7 +210,7 @@ files: size: 16384 md5: 8d84b614b545d4eec8799d3f325332cb sha1: f163e5753c18ff0e812a448e8da406f102600edf - source_ref: "CMakeLists.txt:97,111-115; scripts/generate_roms.sh:112; src/frontends/common/AppController.cpp:148-159; src/apple2/Memory.cpp:107-108,1038-1059,1124-1134" + source_ref: "CMakeLists.txt:97,111-115; scripts/generate_roms.sh:112; src/frontends/common/AppController.cpp:163-174; src/apple2/Memory.cpp:112-113,1082-1103,1168-1178" note: > A //e-class type: mem_initialize takes the trailing 16384 bytes when the file is larger. @@ -211,114 +220,114 @@ analysis: mechanism: > res/roms/*.rom compiled into EmbeddedRoms.cpp by scripts/generate_roms.sh at configure and build time, each behind an ENABLE_ROM_* macro - source_ref: "CMakeLists.txt:57-131,301-338; scripts/generate_roms.sh:97-118" + source_ref: "CMakeLists.txt:57-124,293-329; scripts/generate_roms.sh:97-117" extraction: "hashes computed from the res/roms images the generator reads" system_roms: - - symbol: g_rom_apple2 + - symbol: rom_apple2 machine: "Apple ][" machine_type: A2TYPE_APPLE2 image: res/roms/Apple2.rom cmake_option: ENABLE_ROM_APPLE2 default: on - source_ref: "src/apple2/Memory.cpp:1062-1066" + source_ref: "src/apple2/Memory.cpp:1106-1111" size: 12288 md5: 3c406514b9806a7c57ee65fb0b0c39b4 sha1: 09288be705464b608ff190519ab008d3dfcd1b05 - - symbol: g_rom_apple2_plus + - symbol: rom_apple2_plus machine: "Apple ][+" machine_type: A2TYPE_APPLE2PLUS image: res/roms/Apple2_Plus.rom cmake_option: ENABLE_ROM_APPLE2PLUS default: on - source_ref: "src/apple2/Memory.cpp:1068-1072" + source_ref: "src/apple2/Memory.cpp:1112-1117" size: 12288 md5: 572b3005a4fa49bc54917b069b82c1ab sha1: 33a24f5489ba9195b44be77d9afb2252594cb5c7 - - symbol: g_rom_apple2_jplus + - symbol: rom_apple2_jplus machine: "Apple ][ J-Plus" machine_type: A2TYPE_APPLE2JPLUS image: res/roms/Apple2_JPlus.rom cmake_option: ENABLE_ROM_APPLE2_JPLUS default: on - source_ref: "src/apple2/Memory.cpp:1074-1078" + source_ref: "src/apple2/Memory.cpp:1118-1123" size: 12288 md5: f3e8237eca3809bec2a42b984a1332a8 sha1: ad200b3263d08e7235d0871c8595963a07adc905 - - symbol: g_rom_apple2e + - symbol: rom_apple2e machine: "Apple //e Unenhanced" machine_type: A2TYPE_APPLE2E image: res/roms/Apple2e.rom cmake_option: ENABLE_ROM_APPLE2E default: on - source_ref: "src/apple2/Memory.cpp:1080-1084" + source_ref: "src/apple2/Memory.cpp:1124-1129" size: 16384 md5: 346bc782c6a08a531c460e33bc03daf4 sha1: 61fa9254628e5bb7236fb474006116d67684d747 note: "First 4 KB loaded as internal Cx ROM, remaining 12 KB at $D000" - - symbol: g_rom_apple2e_enhanced + - symbol: rom_apple2e_enhanced machine: "Apple //e Enhanced" machine_type: A2TYPE_APPLE2EENHANCED image: res/roms/Apple2e_Enhanced.rom cmake_option: ENABLE_ROM_APPLE2ENHANCED default: on - source_ref: "src/apple2/Memory.cpp:1086-1090" + source_ref: "src/apple2/Memory.cpp:1130-1135" size: 16384 md5: 38063e08c778503fc03ecebb979769e9 sha1: b8ea90abe135a0031065e01697c4a3a20d51198b note: "First 4 KB loaded as internal Cx ROM, remaining 12 KB at $D000" - - symbol: g_rom_clone_base64a + - symbol: rom_clone_base64a machine: "Base64A" machine_type: A2TYPE_CLONE_BASE64A image: res/roms/Base64A.rom cmake_option: ENABLE_ROM_CLONE_BASE64A default: off - source_ref: "src/apple2/Memory.cpp:1092-1098" + source_ref: "src/apple2/Memory.cpp:1136-1142" note: "Trailing 12288 bytes of the image are used" - - symbol: g_rom_clone_pravets82 + - symbol: rom_clone_pravets82 machine: "Pravets 82" machine_type: A2TYPE_CLONE_PRAVETS82 image: res/roms/PRAVETS82.ROM cmake_option: ENABLE_ROM_CLONE_PRAVETS default: off - source_ref: "src/apple2/Memory.cpp:1099-1103" + source_ref: "src/apple2/Memory.cpp:1144-1147" - - symbol: g_rom_clone_pravets8m + - symbol: rom_clone_pravets8m machine: "Pravets 8M" machine_type: A2TYPE_CLONE_PRAVETS8M image: res/roms/PRAVETS8M.ROM cmake_option: ENABLE_ROM_CLONE_PRAVETS default: off - source_ref: "src/apple2/Memory.cpp:1104-1107" + source_ref: "src/apple2/Memory.cpp:1148-1151" - - symbol: g_rom_clone_pravets8c + - symbol: rom_clone_pravets8c machine: "Pravets 8C" machine_type: A2TYPE_CLONE_PRAVETS8C image: res/roms/PRAVETS8C.ROM cmake_option: ENABLE_ROM_CLONE_PRAVETS default: off - source_ref: "src/apple2/Memory.cpp:1108-1112" + source_ref: "src/apple2/Memory.cpp:1152-1155" - - symbol: g_rom_clone_tk3000e + - symbol: rom_clone_tk3000e machine: "TK3000 //e" machine_type: A2TYPE_CLONE_TK3000E image: res/roms/TK3000e.rom cmake_option: ENABLE_ROM_CLONE_TK3000E default: off - source_ref: "src/apple2/Memory.cpp:1113-1118" + source_ref: "src/apple2/Memory.cpp:1157-1162" video_roms: note: > - Compiled in under the macro of their machine. No source file reads - the symbols. The display uses the character_generators below. + Compiled in under the macro of their machine. Nothing under src/ + reads the symbols. The display uses the character_generators below. images: - - symbol: g_rom_apple2_video + - symbol: rom_apple2_video image: res/roms/Apple2_Video.rom cmake_option: ENABLE_ROM_APPLE2 default: on @@ -326,7 +335,7 @@ analysis: size: 2048 md5: 9ac0dc8c4d0002eb45b0b84be0bde5ec sha1: f9d312f128c9557d9d6ac03bfad6c3ddf83e5659 - - symbol: g_rom_apple2_jplus_video + - symbol: rom_apple2_jplus_video image: res/roms/Apple2_JPlus_Video.rom cmake_option: ENABLE_ROM_APPLE2_JPLUS default: on @@ -334,7 +343,7 @@ analysis: size: 2048 md5: 271e2c9bf928b95e7baeff391db45495 sha1: 0a382be58db5215c4a3de53b19a72fab660d5da2 - - symbol: g_rom_apple2e_enhanced_video + - symbol: rom_apple2e_enhanced_video image: res/roms/Apple2e_Enhanced_Video.rom cmake_option: ENABLE_ROM_APPLE2ENHANCED default: on @@ -342,7 +351,7 @@ analysis: size: 4096 md5: 9123fff3442c0e688cc6816be88dd4ab sha1: b2b5d87f52693817fc747df087a4aa1ddcdb1f10 - - symbol: g_rom_clone_base64a_german_video + - symbol: rom_clone_base64a_german_video image: res/roms/Base64A_German_Video.rom cmake_option: ENABLE_ROM_CLONE_BASE64A default: off @@ -354,22 +363,22 @@ analysis: peripheral_firmware: - device: "Disk II controller, 16 sector boot ROM" slot: 6 - symbol: g_rom_disk2 + symbol: rom_disk2 image: res/roms/DISK2.rom cmake_option: ENABLE_ROM_DISK2 default: on - source_ref: "CMakeLists.txt:118,120-124; scripts/generate_roms.sh:115; src/apple2/peripherals/disk/Disk.cpp:1125-1127" + source_ref: "CMakeLists.txt:118,120-124; scripts/generate_roms.sh:115; src/apple2/peripherals/disk/Disk.cpp:1129-1131" size: 256 md5: 2020aa1413ff77fe29353f3ee72dc295 sha1: d4181c9f046aafc3fb326b381baac809d9e38d16 - device: "Disk II controller, P6 sequencer PROM" slot: 6 - symbol: g_rom_disk2_p6 + symbol: rom_disk2_p6 image: res/roms/DISK2-P6.rom cmake_option: ENABLE_ROM_DISK2 default: on - source_ref: "scripts/generate_roms.sh:117; src/apple2/peripherals/disk/Disk.cpp:618-624; CMakeLists.txt:957-970" + source_ref: "scripts/generate_roms.sh:117; src/apple2/peripherals/disk/Disk.cpp:621-627; CMakeLists.txt:1040-1055" size: 256 md5: 5f1be0c1cdff26f5956eef9643911886 sha1: bc39fbd5b9a8d2287ac5d0a42e639fc4d3c2f9d4 @@ -379,7 +388,7 @@ analysis: sequencer returns a constant and the data register never moves. - device: "Disk II controller, 13 sector boot ROM" - symbol: g_rom_disk2_13sector + symbol: rom_disk2_13sector image: res/roms/DISK2-13sector.rom cmake_option: ENABLE_ROM_DISK2 default: on @@ -387,18 +396,18 @@ analysis: size: 256 md5: 4f80448507cf43ab40c17ac08d89e278 sha1: afd060e6f35faf3bb0146fa889fc787adf56330a - note: "Compiled in. No source file reads the symbol" + note: "Compiled in. Nothing under src/ reads the symbol" - device: "Super Serial Card" slot: 2 symbol: super_serial_rom image: res/roms/SSC.rom - source_ref: "src/apple2/peripherals/super_serial_card/SuperSerialRom.h:8-16; src/apple2/peripherals/super_serial_card/SuperSerial.cpp:356-358; CMakeLists.txt:884-887" + source_ref: "src/apple2/peripherals/super_serial_card/SuperSerialRom.h:8-16; src/apple2/peripherals/super_serial_card/SuperSerial.cpp:356-358; CMakeLists.txt:939-943" size: 2048 md5: 67c0d61ab0911183faf05270f881a97e sha1: 6dab633470c6bc4cb3e81d09fda46597caf8ee57 note: > - Not generated and behind no cmake option: the card carries the 2048 + Not generated and behind no ROM option: the card carries the 2048 bytes as an array in SuperSerialRom.h, the last page mapped at $Cn00 and the whole image at $C800. The generator does not read res/roms/SSC.rom. A build test pins its SHA-1 as the reference of @@ -406,40 +415,55 @@ analysis: - device: "Mouse interface card" slot: 4 - symbol: g_rom_mouse_interface + symbol: mouse_rom image: res/roms/MouseInterface.rom - cmake_option: ENABLE_ROM_MOUSE + cmake_option: ENABLE_PERIPHERAL_MOUSE default: on - source_ref: "CMakeLists.txt:126,128-132; scripts/generate_roms.sh:118; src/apple2/peripherals/mouse/Mouse.cpp:537-541" + source_ref: "src/apple2/peripherals/mouse/MouseRom.h:8-19; src/apple2/peripherals/mouse/Mouse.cpp:261-267; CMakeLists.txt:538,664,986-990" size: 2048 md5: 22563ab338024dac7b03510371d49c57 sha1: 3a9d881a8a8d30f55b9719aceebbcf717f829d6f + note: > + Not generated and behind no ROM option: the card carries the 2048 + bytes as an array in MouseRom.h and maps one 256-byte bank at $Cn00, + chosen by PIA port B bits 1-3. ENABLE_PERIPHERAL_MOUSE builds the + card and its firmware together. The generator does not read + res/roms/MouseInterface.rom. A build test pins its SHA-1 as the + reference of that transcription. - device: "Parallel printer card" slot: 1 symbol: printer_rom image: res/roms/Parallel.rom - source_ref: "src/apple2/peripherals/printer/Printer.cpp:30-53,215; CMakeLists.txt:872-874" + source_ref: "src/apple2/peripherals/printer/Printer.cpp:30-55,217; CMakeLists.txt:920-926" size: 256 md5: 5902996f16dc78fc013f6e1db14805b3 sha1: c75c751589cbcc1ad4ab4f63676af7abadd86f5b note: > - Not generated and behind no cmake option: the card carries the 256 + Not generated and behind no ROM option: the card carries the 256 bytes as an array in Printer.cpp. The generator does not read res/roms/Parallel.rom. A build test pins its SHA-1 as the reference of that transcription. - device: "Clock card" symbol: clock_rom - source_ref: "src/apple2/peripherals/clock/ClockCard.cpp:19-29,158" + source_ref: "src/apple2/peripherals/clock/ClockCard.cpp:19-20,34-45,174-176" note: > A 256-byte page written in ClockCard.cpp that answers the ProDOS - ThunderClock identification and read entry points. No image under - res/roms backs it. + ThunderClock identification and read entry points. Each card patches + its slot into the operand at $0D. No image under res/roms backs it. + + - device: "ProDOS block device controller" + symbol: harddisk_rom + source_ref: "src/apple2/peripherals/harddisk/Harddisk.cpp:73-76,250-275,739-742" + note: > + A 256-byte page written in Harddisk.cpp from the ProDOS 8 Technical + Reference Manual, serving two volumes. Each card patches its slot + page into the operand at $09. No image under res/roms backs it. character_generators: - mechanism: "PNG converted to XPM by CMake, included at src/apple2/Video.cpp:39-43" - selection: "machine type, then keyboard language (src/apple2/Video.cpp:1228-1252)" + mechanism: "PNG converted to XPM by CMake, included at src/apple2/Video.cpp:35-39" + selection: "machine type, then keyboard language (src/apple2/Video.cpp:1255-1279)" accepted_geometry: "128x128, or 128x256 for the Euro ROMs carrying a second language" images: - filename: charset40.png @@ -469,7 +493,7 @@ analysis: sha1: f86bd5238604247e04d616850f244b489daef18d symbol_tables: - source_ref: "src/Debugger/Debugger_Symbols.cpp:37-48" + source_ref: "src/Debugger/Debugger_Symbols.cpp:37-49" lookup: "system_state.program_dir + filename, and system_state.program_dir is never assigned" loaded_on_command: - APPLE2E.SYM @@ -498,9 +522,9 @@ analysis: - "save states" - "FTP directory cache" note: > - Produced by the emulator, none is user-supplied. CmdConfigSave builds - the LinAppleDebugger.cfg path and passes it to no open call - (src/Debugger/Debugger_Cmd_Config.cpp:218-221). + Produced by the emulator, none is user-supplied. file_name_config + names LinAppleDebugger.cfg and no open call takes it + (src/Debugger/Debugger_Cmd_Config.cpp:40). unused_resources: - filename: font.bmp