Test ran at 2025-10-09 01:16:44.041781+00:00 SOLUTION: hp41cx_tools=1.8.0: Cross-platform tools to supercharge your HP-41CX emulator experience Origin: source archive hp41cx_tools-1.8.0.tgz at https://sourceforge.net/projects/calculator-scripts/files/Alire/hp41cx_tools-1.8.0.tgz with hashes sha256:761cdea058f556d7f12aa25dcaa3a5c7cabed687b5b2916903e66155263e89c7, sha512:c0dd6c8e281a7b960e8bef0fd162977a1a8c0bd47af03c18db59adfba9c689fd5b16c40d30cf841a012e815952c5ac2fc1a9463e4bbef80631efb44dca4297e1 Properties: Author: Martin Krischik Build Switches: Description: Cross-platform tools to supercharge your HP-41CX emulator experience Executable: hp41cx_tools-main Executable: hp41cx_tools-dm41_to_px41 Executable: hp41cx_tools-px41_to_dm41 Executable: hp41cx_tools-unicode_to_dm41 Executable: hp41cx_tools-unicode_to_px41 License: GPL-3.0-or-later Long_Description: ## HP-41CX Emulator Tools Step into the golden era of retro computing with **hp41cx_tools**, a versatile suite that turbocharges your HP-41CX emulator adventures! Unlike many tools shackled to Windows, this toolkit runs flawlessly on **macOS**, **Linux**, and **Windows**, making it the ultimate companion for enthusiasts using the iconic [PX-41CX](https://paxer.net/PX-41CX/) from Paxer or the sleek [DM41X](https://www.swissmicros.com/product/dm41x) from SwissMicros. Channel your inner 1980s programming wizard and master memory dumps, FOCAL source code, *and now encoding* with ease - compiling UTF-8 FOCAL straight into upload-ready dump files for the PX-41CY emulator. Built with the precision of **Ada 2022** for unshakeable reliability, these tools decode, convert, and encode data with the finesse of the HP-41CX's legendary keystrokes. Paired with intuitive **ZShell scripts** for macOS and Linux, the suite streamlines complex workflows, whether you're on a modern MacBook, a Linux workstation, or a Windows PC. This cross-platform prowess ensures every retro computing fan can join the fun, no matter their setup - grateful shoutout to Pierre Houbert's pioneering [PX41CX_Interface.xls](https://paxer.net/PX-41CX_Interface.zip) and its VisualBasic wizardry, which lit the fuse for this focused PX-41CX/DM41X journey. ### Key Features - **Memory Dump Decoder**: Transform raw HP-41CX emulator memory dumps into readable FOCAL source code with pinpoint accuracy. - **Source Code Converter**: Seamlessly convert between PX-41CX and DM41X FOCAL code styles, bridging emulator ecosystems. - **FOCAL Encoder**: Compile modern UTF-8 encoded FOCAL programs into precise dump files, ready for PX-41CY emulator upload - vintage vibes meet UTF-8 pipelines. - **Unicode Support**: Convert Unicode-encoded FOCAL programs to PX-41CX or DM41X formats, blending vintage charm with modern workflows. - **Cross-Platform Power**: Runs natively on macOS, Linux, and Windows - like a portable Ada generic, no OS exceptions. - **Open Source**: Hosted on [SourceForge](https://sourceforge.net/p/calculator-scripts/code/ci/master/tree/Tools/hp41cx_tools/src/), ready for you to hack, extend, and share with the retro computing community. - **Comprehensive Docs**: Explore detailed guides via [GNATdoc](https://calculator-scripts.sourceforge.io/gnatdoc/hp41cx-tools). ### Why You'll Love It Relive the thrill of programming the HP-41CX, the calculator that defined a generation of scientific and hobbyist triumphs. Whether you're decoding vintage memory dumps, converting code styles, or encoding fresh FOCAL scripts, **hp41cx_tools** brings the past to life with unmatched versatility. Join the retro computing revolution and make your emulator sing - on any desktop OS! Maintainer: Martin Krischik Maintainers_Logins: krischik Name: hp41cx_tools Tag: calculator Tag: tools Tag: retrocomputing Tag: ada-2022 Tag: hp-41cx Tag: dm41x Tag: px41cx Tag: cross-platform Version: 1.8.0 Website: https://calculator-scripts.sourceforge.io/hp41cx-tools/ Dependencies (direct): adacl^7.0.1 adacl_regexp^7.0.0 adacl_sar^7.0.0 Dependencies (solution): adacl=7.0.1 adacl_regexp=7.0.1 adacl_sar=7.0.1 Dependencies (graph): adacl_regexp=7.0.1 --> adacl=7.0.1 (^7.0.0) adacl_sar=7.0.1 --> adacl=7.0.1 (^7.0.0) hp41cx_tools=1.8.0 --> adacl=7.0.1 (^7.0.1) hp41cx_tools=1.8.0 --> adacl_regexp=7.0.1 (^7.0.0) hp41cx_tools=1.8.0 --> adacl_sar=7.0.1 (^7.0.0) LOG: [alr test] Testing hp41cx_tools=1.8.0 [alr test] Spawning retrieval for remote crate: alr -d -n get hp41cx_tools=1.8.0 Note: Deploying hp41cx_tools=1.8.0... #=#=# ##O#-# ######################################################################## 100.0% ######################################################################## 100.0% ######################################################################## 100.0% ######################################################################## 100.0%##O=# # #################### 29.0% ######################################################################## 100.0% Note: Deploying adacl_regexp=7.0.1... #=#=# ##O#-# ######################################################################## 100.0% ######################################################################## 100.0% ######################################################################## 100.0% 0.0% ######################################################################## 100.0%##O=# # #-#O=# # ######################################################################## 100.0% Note: Deploying adacl_sar=7.0.1... #=#=# ######################################################################## 100.0% ######################################################################## 100.0% ######################################################################## 100.0% ######################################################################## 100.0%##O#-# ######################################################################## 100.0% hp41cx_tools=1.8.0 successfully retrieved. Dependencies were solved as follows: + adacl 7.0.1 (new) + adacl_regexp 7.0.1 (new) + adacl_sar 7.0.1 (new) [alr test] Spawning default test for remote crate: alr -d -n build --release -- -cargs:Ada -gnatwn Note: Building hp41cx_tools=1.8.0/hp41cx_tools.gpr... Setup [mkdir] object directory for project AdaCL_RegExp [mkdir] library directory for project AdaCL_RegExp [mkdir] object directory for project AdaCL_SAR [mkdir] library directory for project AdaCL_SAR [mkdir] object directory for project HP41CX_Tools [mkdir] exec directory for project HP41CX_Tools Compile [Ada] hp41cx_tools-main.adb [Ada] hp41cx_tools-dm41_to_px41.adb [Ada] hp41cx_tools-px41_to_dm41.adb [Ada] hp41cx_tools-unicode_to_dm41.adb [Ada] hp41cx_tools-unicode_to_px41.adb [Ada] adacl_sar_config.ads [Ada] adacl-wide_sar-filter-replace.ads [Ada] adacl-sar-filters-search-includes.adb [Ada] adacl-wide_wide_sar-filter-remove.ads [Ada] adacl-wide_wide_sar-filter-filter_after_last.adb [Ada] adacl-sar-line-read_file.adb [Ada] adacl-wide_sar-filters-search.adb [Ada] adacl-sar-filter-remove-tab.adb [Ada] adacl-wide_wide_sar-filters.adb [Ada] adacl-sar-filter-filter_line.adb [Ada] adacl-wide_wide_sar-filter-filter_before_first.adb [Ada] adacl-wide_sar.ads [Ada] adacl-sar-line-write_file.adb [Ada] adacl-wide_wide_sar-filter.adb [Ada] adacl-wide_wide_sar-filters-search-includes.adb [Ada] adacl-wide_wide_sar-filter-filter_lines.adb [Ada] adacl-wide_wide_sar-filter-filter_line.adb [Ada] adacl-wide_wide_sar-filter-insert.adb [Ada] adacl-wide_wide_sar-line-list.ads [Ada] adacl-wide_sar-filter-remove-line.adb [Ada] adacl-wide_sar-filter-insert-line.adb [Ada] adacl-sar-filters.adb [Ada] adacl-wide_sar-line-list.ads [Ada] adacl-wide_wide_sar-line-write_file.adb [Ada] adacl-sar-filter-insert-line.adb [Ada] adacl-sar-filter.adb [Ada] adacl-sar-filter-filter_after_last.adb [Ada] adacl-wide_wide_sar-line-read_file.adb [Ada] adacl-wide_sar-filters-search-includes.adb [Ada] adacl-sar-line.ads [Ada] adacl-wide_wide_sar-filters-search-excludes.adb [Ada] adacl-wide_wide_sar-line.ads [Ada] adacl-sar-filter-insert-text.adb [Ada] adacl-sar-filter-filter_lines.adb [Ada] adacl-wide_sar-filter-filter_line.adb [Ada] adacl-wide_wide_sar-filter-replace-text.adb [Ada] adacl-sar-filter-insert.adb [Ada] adacl-sar-filter-replace.ads [Ada] adacl-wide_sar-filter-remove-tab.adb [Ada] adacl-wide_sar-filter-replace-text.adb [Ada] adacl-wide_wide_sar.ads [Ada] adacl-wide_sar-filter-filter_after_last.adb [Ada] adacl-wide_sar-filters-search-excludes.adb [Ada] adacl-sar-filter-remove-line.adb [Ada] adacl-wide_sar-filter-remove-comment.adb [Ada] adacl-wide_sar-line.ads [Ada] adacl-wide_sar-filter.adb [Ada] adacl-wide_sar-line-read_file.adb [Ada] adacl-wide_wide_sar-filters-search.adb [Ada] adacl-sar-filter-remove.ads [Ada] adacl-sar-filters-search-excludes.adb [Ada] adacl-wide_sar-filter-remove.ads [Ada] adacl-wide_wide_sar-filter-insert-text.adb [Ada] adacl-wide_sar-filter-list.ads [Ada] adacl-sar-filter-list.ads [Ada] adacl-sar-line-list.ads [Ada] adacl-sar-filters-search.adb [Ada] adacl-wide_wide_sar-filter-insert-line.adb [Ada] adacl-wide_sar-filter-trim.adb [Ada] adacl-wide_sar-filters.adb [Ada] adacl-sar-filter-replace-indent.adb [Ada] adacl-wide_wide_sar-filter-remove-tab.adb [Ada] adacl-wide_wide_sar-filter-remove-line.adb [Ada] adacl-wide_sar-filter-insert-text.adb [Ada] adacl-wide_wide_sar-filter-replace.ads [Ada] adacl-wide_sar-filter-replace-indent.adb [Ada] adacl-wide_sar-filter-insert.adb [Ada] adacl-wide_wide_sar-filter-replace-indent.adb [Ada] adacl-wide_sar-line-write_file.adb [Ada] adacl-wide_wide_sar-filter-list.ads [Ada] adacl-sar-filter-remove-comment.adb [Ada] adacl-wide_sar-filter-filter_before_first.adb [Ada] adacl-wide_wide_sar-filter-trim.adb [Ada] adacl-sar-filter-trim.adb [Ada] adacl-wide_wide_sar-filter-remove-comment.adb [Ada] adacl-sar-filter-replace-text.adb [Ada] adacl-wide_sar-filter-filter_lines.adb [Ada] adacl-sar-filter-filter_before_first.adb [Ada] adacl-sar.ads [Ada] adacl_regexp_config.ads [Ada] adacl-strings-spitbol-table_vstring.ads [Ada] adacl-wide_wide_strings-spitbol-patterns.adb [Ada] adacl-wide_strings-spitbol-table_integer.ads [Ada] adacl-wide_wide_strings-spitbol-table_integer.ads [Ada] adacl-wide_strings-spitbol-table_vstring.ads [Ada] adacl-wide_strings-spitbol.adb [Ada] adacl-wide_wide_strings-spitbol-table_vstring.ads [Ada] adacl-wide_wide_strings-spitbol.adb [Ada] adacl-wide_wide_strings-regexp.ads [Ada] adacl-wide_strings-spitbol-table_boolean.ads [Ada] adacl-wide_strings-regexp.ads [Ada] adacl-wide_strings-spitbol-patterns.adb [Ada] adacl-wide_wide_strings-spitbol-table_boolean.ads [Ada] adacl-strings-spitbol-patterns.adb [Ada] adacl-generic_strings-hash.adb [Ada] adacl-strings-spitbol-table_boolean.ads [Ada] adacl-strings-spitbol.adb [Ada] adacl-strings-spitbol-table_integer.ads [Ada] adacl-generic_strings-regexp.adb [Ada] adacl-generic_strings.ads [Ada] adacl-strings-regexp.ads [Ada] hp41cx_tools.ads [Ada] hp41cx_tools-filter.adb [Ada] hp41cx_tools-commandline.adb [Ada] hp41cx_tools-converter.adb [Ada] hp41cx_tools-decoder.adb [Ada] hp41cx_tools-encoder.adb [Ada] hp41cx_tools-registers.adb [Ada] hp41cx_tools_config.ads [Ada] hp41cx_tools-alarm.adb Build Libraries [gprlib] AdaCL_RegExp.lexch [gprlib] AdaCL_SAR.lexch [archive] libAdaCL_SAR.a [archive] libAdaCL_RegExp.a [index] libAdaCL_RegExp.a [index] libAdaCL_SAR.a Bind [gprbind] hp41cx_tools-main.bexch [gprbind] hp41cx_tools-dm41_to_px41.bexch [Ada] hp41cx_tools-main.ali [Ada] hp41cx_tools-dm41_to_px41.ali [gprbind] hp41cx_tools-px41_to_dm41.bexch [Ada] hp41cx_tools-px41_to_dm41.ali [gprbind] hp41cx_tools-unicode_to_dm41.bexch [Ada] hp41cx_tools-unicode_to_dm41.ali [gprbind] hp41cx_tools-unicode_to_px41.bexch [Ada] hp41cx_tools-unicode_to_px41.ali Link [link] hp41cx_tools-main.adb [link] hp41cx_tools-dm41_to_px41.adb [link] hp41cx_tools-px41_to_dm41.adb [link] hp41cx_tools-unicode_to_dm41.adb [link] hp41cx_tools-unicode_to_px41.adb Success: Build finished successfully in 46.55 seconds. Found declared GPR file: hp41cx_tools.gpr [alr test] Test completed SUCCESSFULLY