{"id":50561839,"url":"https://github.com/cobacdavid/hprpl","last_synced_at":"2026-06-04T12:01:11.711Z","repository":{"id":356967707,"uuid":"1232762773","full_name":"cobacdavid/hprpl","owner":"cobacdavid","description":"Emacs programming mode for HP 48/49/50 series calculators","archived":false,"fork":false,"pushed_at":"2026-05-28T11:21:58.000Z","size":95,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-05-28T13:15:45.599Z","etag":null,"topics":["hp","hp48g","hp48gx","hp49g","hp50g","rpl","rpn-calculator"],"latest_commit_sha":null,"homepage":"","language":"Emacs Lisp","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/cobacdavid.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-05-08T08:43:19.000Z","updated_at":"2026-05-28T11:22:04.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/cobacdavid/hprpl","commit_stats":null,"previous_names":["cobacdavid/hprpl"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/cobacdavid/hprpl","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobacdavid%2Fhprpl","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobacdavid%2Fhprpl/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobacdavid%2Fhprpl/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobacdavid%2Fhprpl/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/cobacdavid","download_url":"https://codeload.github.com/cobacdavid/hprpl/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/cobacdavid%2Fhprpl/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33903134,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-04T02:00:06.755Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["hp","hp48g","hp48gx","hp49g","hp50g","rpl","rpn-calculator"],"created_at":"2026-06-04T12:01:10.797Z","updated_at":"2026-06-04T12:01:11.706Z","avatar_url":"https://github.com/cobacdavid.png","language":"Emacs Lisp","funding_links":[],"categories":[],"sub_categories":[],"readme":"# HPRPL Mode for GNU Emacs\n\n## Disclaimer\n\nThis mode was originally intended for personal use and created with the HP-48G in mind.\n\n## Suffixes\n\nFiles with the `.hprpl`, `.hp48`, or `.hp50` extensions, or simply run `M-x hprpl-mode`.\n\n## What You Get\n\nThese files provide:\n\n* syntax highlighting, including special highlighting for HP-50G words\n* auto-indentation\n* ASCII/Unicode switching\n* comments auto-insertion\n* a 23-column warning bar in Unicode mode\n* communication with emulators or real machines using `kermit` tool\n* auto-detection of `x48` port (wire)\n\n## Shortcuts\n\n* `C-c h c` adds a comment colon to each non-comment line to keep track of the stack state\n* `C-c h i` prints `x48` screen region to `\"QL-700\"` label printer\n* `C-c h m` loads a module file containing new words\n* `C-c h M` unloads a module file containing new words\n* `C-c h n` captures `x48` screen region to a png file\n* `C-c h p` sends HPRPL code to the `lpr` command using the Unicode version for my `\"QL-700\"` label printer, so prints !\n* `C-c h r` receives data from a port (e.g. `/dev/ttyUSB0`, `/dev/pts/1`, etc.) using `kermit`\n* `C-c h s` sends data to a port (e.g. `/dev/ttyUSB0`, `/dev/pts/1`, etc.) using `kermit`\n* `C-c h u` toggles between Unicode and ASCII (e.g. `ΣLIST` switches to `\\GSLIST`)\n* `C-c h x` launches `x48` (the path is set to `/usr/bin/x48` using the `hprpl-x48-execpath` variable — see below)\n* `C-c h y` launches `x50ng` (the path is set to `/usr/bin/x50ng` using the `hprpl-x50ng-execpath` variable — see below)\n\n## Customizable Variables\n\nFaces are cutomizable using  `M-x customize`.\n\n* `hprpl-x48-execpath`: full path to the `x48` emulator. Default: `\"/usr/bin/x48\"`\n* `hprpl-x50ng-execpath`: full path to the `x50ng` emulator. Default: `\"/usr/bin/x50ng\"`\n* `hprpl-x48-screencapture-bg-color`: background color of `x48` screen in screencapture. Default is `\"#fefefe\"`, `x48`'s original color is `\"#c9dc5c\"`.\n* `hprpl-x48-screencapture-fg-color`:foreground color of `x48` screen in screencapture. Default is `\"#000000\"`, `x48`'s original color is `\"#484e74\"`.\n* `hprpl-kermit-config`: a multiline string configuring `kermit` communication. Default:\n\n```bash\n\"#!/usr/bin/kermit +\nset line %s\nset speed 9600\nset carrier-watch off\nset modem type direct\nset flow none\nset parity none\nset block 1\nset control prefix all\nrobust\n\"\n```\n\nThis configuration can communicate with the `{ 9600 0 0 0 1 3 }` `IOPAR` variable.\n\n \n* `hprpl-kermit-config-alt`: an alternative version of the previous configuration. This allows two configurations to coexist. The default is intended for use with HP-50G :\n```bash\n\"#!/usr/bin/kermit +\nset modem type direct\nset prefixing all\nset port %s\nset speed 9600\nset carrier-watch off\nset flow none\nset parity space\nset send packet-length 80\nset block 3\n\"\n```\n* `hprpl-default-port-node`: port used with `kermit`. Default: `\"/dev/ttyUSB0\"`. You may also be prompted to use the `\"/dev/pts/1\"` port corresponding to `x48`.\n* `hprpl-printer-name`: `CUPS` printer name. Default: `\"QL-700\"`.\n* `hprpl-label-width-mm`: width of the printer label in millimeters. Default: `62`.\n* `hprpl-label-line-height-mm`: height in millimeters of a single line of code (depends on the font used). Default: `4.1`.\n* `hprpl-module-files` : list of file paths containing new words to be loaded at start.\n\n## Adding new words\n\nYou can add new words you use. For example, `ListExt` is a popular lib for the HP-50G.\nIt contains a  lot of new words. You can add them in creating a file containing a word per line. Lines beginning with `#` and empty lines are ignored. A possible file for `ListExt`  may begin with:\n\n``` bash\n# List Creation (CREAT menu)\nLSEQ\nLSEQR\nLASEQ\nLMSEQ\nLDSEQ\nLMRPT\nLWHL\n# List Editing (EDIT menu)\nLDDUP\nLPOP\n...\n...\n```\n\nFor conversion words, you may add both unicode and ASCII versions, for example:\n\n``` bash\nS→SL\nS\\-\u003eSL\n```\n\n## Installation\n\nNo ELPA or MELPA package is currently available.\n\nAdd the following lines to your Emacs configuration file so Emacs can find `hprpl-mode.el`:\n\n```elisp\n(add-to-list 'load-path \"/path/to/the/dir/you/have/installed/the/file/\")\n(require 'hprpl-mode)\n```\n\nFiles `hprpl-ql700.el` and `hprpl-x48.el` have to be placed in the same directory.\n\nIn my configuration, I also use the `indent-bars` package, so I added:\n\n```elisp\n(use-package indent-bars\n  :ensure t\n  :hook (hprpl-mode . indent-bars-mode))\n```\n\n## TODO\n\n* more RPL words\n\n## License\n\nGNU GPL v3 — [https://www.gnu.org/licenses/gpl-3.0.html](https://www.gnu.org/licenses/gpl-3.0.html)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcobacdavid%2Fhprpl","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fcobacdavid%2Fhprpl","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fcobacdavid%2Fhprpl/lists"}