libx48ng/README.md

127 lines
3.9 KiB
Markdown
Raw Normal View History

2023-04-30 18:16:13 +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.
2023-10-18 17:48:38 +02:00
## Usage
`x48ng --help`
You can use the script `setup-x48ng-home.sh` or simply run `x48ng --rom=<romfilename>`
2023-09-24 22:30:07 +02:00
## Screenshots
2023-10-18 17:48:38 +02:00
### `--tui --small` version (ncurses)
![screenshot of x48ng --tui --small running in a terminal](./tui-small-screenshot.png?raw=true "screenshot of x48ng --tui running in a terminal")
### `--tui --tiny` version (ncurses)
![screenshot of x48ng --tui --tiny running in a terminal](./tui-tiny-screenshot.png?raw=true "screenshot of x48ng --tui running in a terminal")
2023-09-24 22:30:07 +02:00
### `--tui` version (ncurses)
2023-10-18 17:48:38 +02:00
![screenshot of x48ng --tui running in a terminal](./tui-screenshot.png?raw=true "screenshot of x48ng --tui running in a terminal")
2023-09-24 22:30:07 +02:00
### `--x11` version
2023-10-18 17:48:38 +02:00
![screenshot of x48ng --x11](./x11-screenshot.png?raw=true "screenshot of x48ng --x11")
2023-09-24 22:30:07 +02:00
### `--sdl` version
2023-10-18 17:48:38 +02:00
![screenshot of x48ng --sdl](./sdl-screenshot.png?raw=true "screenshot of x48ng --sdl")
2023-09-20 16:10:59 +02:00
### manual setup
2023-10-01 21:03:26 +02:00
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:
- _Enter_ is either `Return` or `Ctrl-J` or `F1`
- _Left Shift_ is either `PgUp` or `[` or `F2`
- _Right Shift_ is either `PgDn` or `]` or `F3`
- _Alpha_ is either `Ins` or `;` or `F4`
- _On_ is either `Esc` or `Home` or `\` or `F5`
- finally `|` or `Shift+End` or `F10` or `F7` **quits** x48ng
2023-11-02 10:06:43 +01:00
The keybindings of the `Fx` have been standardized across all 3 UIs (x11, sdl and tui)
2023-04-30 18:16:13 +02:00
## What have I done:
2023-04-30 19:16:49 +02:00
0. renamed it to x48ng to avoid confusion
2023-04-30 18:16:13 +02:00
1. merged in a SDL1 version I found @ https://code.google.com/archive/p/x48-sdl/source/default/source
2. removed the code supporting Solaris, HP-UX, etc.
3. removed the autotools-based build system and wrote a simple Makefile instead
2023-04-30 19:16:49 +02:00
4. added a x48ng.desktop file and an icon
2023-09-15 10:22:34 +02:00
5. refactoring as a way to explore/understand the codebase
2023-10-01 21:03:26 +02:00
6. drop Xresources
7. link to lua to use it as a config file reader
2023-04-30 18:16:13 +02:00
2023-05-10 14:44:38 +02:00
## Bugs to fix
2023-10-01 21:03:26 +02:00
See and report at https://github.com/gwenhael-le-moine/x48ng/issues
2023-05-10 14:44:38 +02:00
2023-04-30 18:16:13 +02:00
## What more I would like to do:
2023-09-13 21:57:55 +02:00
### short term
- port from sdl1.2 to sdl2
### long(er) term
- GUI in gtk(4)?
- support the HP49g ROM?
2023-04-30 18:16:13 +02:00
## 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.
2023-09-15 10:22:34 +02:00
### Dependencies (see .github/workflows/c-cpp.yml for debian packages names)
2023-09-15 10:22:34 +02:00
- readline
for SDL version:
2023-09-15 10:22:34 +02:00
- SDL_gfx1
2023-09-23 19:38:00 +02:00
- SDL 1.2 or sdl12_compat
2023-04-30 18:16:13 +02:00
for x11 version:
- x11
for Ncurses:
- ncursesw
2023-04-30 18:16:13 +02:00
## 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.
2023-04-30 19:16:49 +02:00
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
2023-04-30 18:16:13 +02:00
3. run `x48ng` and enjoy
## Development
- `make FULL_WARNINGS=yes` to compile with all warnings
2023-09-13 21:57:55 +02:00
- `make clean` and `make mrproper` to clean between compilation runs
2023-04-30 18:16:13 +02:00
- `make pretty-code` to format the code using `clang-format` and the provided `.clang-format`
2023-09-16 13:43:00 +02:00
## Friends and inspiration
- https://github.com/gwenhael-le-moine/x48 (original x48 slightly touched but not too much)
- https://github.com/shagr4th/droid48 (x48 ported to Android)
- https://hp.giesselink.com/emu48.htm (The Emu48)
- https://github.com/dgis/emu48android (Emu48 ported to Android)
- https://github.com/gwenhael-le-moine/jsEmu48 (another HP 48 emulator)