libx48ng/README.md

3.1 KiB

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.

Screenshots

--tui version (ncurses)

screenshot of x48ng --tui running in a terminal

--x11 version

screenshot of x48ng --x11

--sdl version

screenshot of x48ng --sdl

Usage

./dist/x48ng --help

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

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

Bugs to fix

See 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