x48ng emulator "engine" as a standalone library
Find a file
Gwenhael Le Moine 533ec56f39
Add Makefile rules to download ROMs
The license of these ROMs is still unclear to me. I'll still embed the
ROMs here to avoid generating unneccesary traffic to hpcalc.org
2023-10-30 10:33:28 +01:00
.github/workflows CI lua more 2023-09-30 11:01:47 +02:00
dist Add Makefile rules to download ROMs 2023-10-30 10:33:28 +01:00
doc_0.6.4 clean doc_0.6.4 content; move installed files into dist/ in which binaries are compiled in too 2023-05-10 15:50:51 +02:00
romdump delete autotools files, use only simple Makefile 2023-04-26 16:51:11 +02:00
src attempt to be more tolerant to older lua 2023-10-29 20:37:07 +01:00
.clang-format update .clang-format and format all the code 2023-09-22 09:44:23 +02:00
.gitignore clean doc_0.6.4 content; move installed files into dist/ in which binaries are compiled in too 2023-05-10 15:50:51 +02:00
AUTHORS add myself to AUTHORS 2023-04-26 19:49:18 +02:00
LICENSE Initial commit 2015-07-26 11:13:05 +02:00
Makefile Add Makefile rules to download ROMs 2023-10-30 10:33:28 +01:00
README.md [ui_text] Wow, --tui --tiny was much easier then I feared! 2023-10-19 11:11:34 +02:00
sdl-screenshot.png refresh screenshots 2023-10-18 17:48:38 +02:00
tui-0.28.0-screenshot.png add screenshots 2023-09-24 22:30:07 +02:00
tui-screenshot.png crop tui screenshot 2023-10-18 17:49:39 +02:00
tui-small-screenshot.png refresh screenshots 2023-10-18 17:48:38 +02:00
tui-tiny-screenshot.png [ui_text] Wow, --tui --tiny was much easier then I feared! 2023-10-19 11:11:34 +02:00
x11-screenshot.png refresh screenshots 2023-10-18 17:48:38 +02:00

x48ng -- HP48 CPU emulator

(I'm not very good at writing, see ./README_0.6.4 for the original README)

This is my fork of x48-0.6.4 where I deviate from the original code and do my own thing.

Usage

x48ng --help

You can use the script setup-x48ng-home.sh or simply run x48ng --rom=<romfilename>

Screenshots

--tui --small version (ncurses)

screenshot of x48ng --tui --small running in a terminal

--tui --tiny version (ncurses)

screenshot of x48ng --tui --tiny running in a terminal

--tui version (ncurses)

screenshot of x48ng --tui running in a terminal

--x11 version

screenshot of x48ng --x11

--sdl version

screenshot of x48ng --sdl

manual setup

  1. Create $XDG_CONFIG_HOME/x48ng (usually ~/.config/x48ng/)
  2. Copy /usr/share/x48ng/ROMs/gxrom-r (or any other rom) to $XDG_CONFIG_HOME/x48ng/rom
  3. Run x48ng --print-config > $XDG_CONFIG_HOME/x48ng/config.lua
  4. Run x48ng

Ncurses UI (--tui)

I had to be a bit 'creative' mapping keys there:

  • On is either F4 or Esc or Home or \
  • Left Shift is either F5 or PgUp or [
  • Right Shift is either F6 or PgDn or ]
  • Alpha is either F8 or Ins or ;

To quit x48ng --tui use F10 or Shift+End or |

What have I done:

  1. renamed it to x48ng to avoid confusion
  2. merged in a SDL1 version I found @ https://code.google.com/archive/p/x48-sdl/source/default/source
  3. removed the code supporting Solaris, HP-UX, etc.
  4. removed the autotools-based build system and wrote a simple Makefile instead
  5. added a x48ng.desktop file and an icon
  6. refactoring as a way to explore/understand the codebase
  7. drop Xresources
  8. link to lua to use it as a config file reader

Bugs to fix

See and report at https://github.com/gwenhael-le-moine/x48ng/issues

What more I would like to do:

short term

  • port from sdl1.2 to sdl2

long(er) term

  • GUI in gtk(4)?
  • support the HP49g ROM?

Compilation

The Makefile will try to autodetect if necessary dependencies for x11 and sdl front-ends are met and enable/disable x11 and sdl front-ends accordingly.

You can force disable x11 front-end by compiling with make WITH_X11=no.

You can force disable sdl front-end by compiling with make WITH_SDL=no.

Ncurses front-end is always built-in.

Dependencies (see .github/workflows/c-cpp.yml for debian packages names)

  • readline

for SDL version:

  • SDL_gfx1
  • SDL 1.2 or sdl12_compat

for x11 version:

  • x11

for Ncurses:

  • ncursesw

Installation

  1. Run sudo make install PREFIX=/usr DOCDIR=/usr/doc/x48ng MANDIR=/usr/man DESTDIR=/tmp/package filling in your own values for PREFIX, DOCDIR, MANDIR and DESTDIR.
  2. once installed run /usr/share/x48ng/setup-x48ng-home.sh to setup your ~/.x48ng/. It sets up a HP 48GX with a 128KB card in port 1 and a 4MB card in port 2
  3. run x48ng and enjoy

Development

  • make FULL_WARNINGS=yes to compile with all warnings
  • make clean and make mrproper to clean between compilation runs
  • make pretty-code to format the code using clang-format and the provided .clang-format

Friends and inspiration