import of sources from latest release found on Sourceforge

Signed-off-by: Gwenhael Le Moine <gwenhael.le.moine@gmail.com>
This commit is contained in:
Gwenhael Le Moine 2015-07-26 11:16:05 +02:00
parent 1d6eefbede
commit e59ca61c98
200 changed files with 27588 additions and 0 deletions

4
AUTHORS Normal file
View file

@ -0,0 +1,4 @@
Eddie C. Dost -- Original Author
G. Allen Morris III -- Maintainer

40
ChangeLog Normal file
View file

@ -0,0 +1,40 @@
2011-08-08 "G. Allen Morris III" <gam3@gam3.net> release 0.6.4
* Default to throttling speed only when key-pressed
* Add throttle switch for speed emulation
* Fix buffer overflow bug
* release keys on loss of focus
* typo in access_time adjust
2010-02-01 "G. Allen Morris III" <gam3@gam3.net> release 0.6.3
* made updates to x48.spec
* put debian directory in dist file
* install X48 app data in correct place
using pkg-config appdefaultdir xt
* removed more debugging messages
* added 'netbook' look for small/short screens
use +netbook on the command line
2010-01-30 "G. Allen Morris III" <gam3@gam3.net> release 0.6.2
* remove setlocal code that was causing a bug.
* removed some debugging code.
2009-06-31 "G. Allen Morris III" <gam3@gam3.net> release 0.6.1
* Fix to XShm to solve the 'LCD' Scramble problem.
2006-04-20 "G. Allen Morris III" <gam3@gam3.net>
* Added simple paste feature
* Repaired debugger non-readline input
* Changed from building with Imakefile to using GNU autoconfig
2005-03-20 "G. Allen Morris III" <gam3@gam3.net>
* added equal key for + and Meta Keys for Alpha
* applied a different fix for the arrow repeat key bug
* fixed a bug in the timer one logic. The cursor now flashes on input.
2005-03-20 "G. Allen Morris III" <gam3@gam3.net>
* added patch [000390] time.h compile bug
* added patch [000391] Arrow key repeat patch
* added ChangeLog file
2005-03-18 "G. Allen Morris III" <gam3@gam3.net>
* starting from x48 0.4.0.

9
INSTALL Normal file
View file

@ -0,0 +1,9 @@
You will only need readline support if you are planning to use the
x48 debugger. So ignore
With ReadLine sup. in Debuger? no
unless you want readline support in the x48 debugger.

75
MANIFEST Normal file
View file

@ -0,0 +1,75 @@
README
Imakefile
config.h
MANIFEST
ChangeLog
utils/Imakefile
utils/ad2c
utils/makeversion
src/Imakefile
src/X48.ad
src/actions.c
src/debugger.c
src/device.c
src/disasm.c
src/emulate.c
src/init.c
src/lcd.c
src/main.c
src/memory.c
src/options.c
src/register.c
src/resources.c
src/rpl.c
src/serial.c
src/timer.c
src/x48_x11.c
src/dump2rom.c
src/checkrom.c
src/annunc.h
src/append.h
src/buttons.h
src/constants.h
src/debugger.h
src/defaults.h
src/device.h
src/disasm.h
src/global.h
src/hp.h
src/hp48.h
src/hp48_emu.h
src/hp48char.h
src/icon.h
src/options.h
src/resources.h
src/rpl.h
src/small.h
src/timer.h
src/version.h
src/x48.man
src/x48_x11.h
romdump/Imakefile
romdump/ROMDump
romdump/README
romdump/ReadRom.s
romdump/Dump
doc/Imakefile
doc/ChangeLog
doc/COPYING
doc/INSTALLING
doc/TODO
doc/CARDS.doc
doc/ROMDump.doc
rpm/x48.spec.in
rpm/x48.spec
debian/README.Debian
debian/changelog
debian/compat
debian/control
debian/copyright
debian/dirs
debian/docs
debian/menu
debian/quit
debian/rules
debian/watch

17
Makefile.am Normal file
View file

@ -0,0 +1,17 @@
AUTOMAKE_OPTIONS = dejagnu
SUBDIRS = src romdump
EXTRA_DIST=rpm/x48.spec \
debian/changelog debian/compat debian/control debian/copyright \
debian/dirs debian/docs debian/menu debian/README.Debian debian/rules
X48 : src/X48.ad
cp $< $@
appdefault_DATA = X48
DISTCHECK_CONFIGURE_FLAGS = --with-appdefaultdir='$${datadir}/X11/app-defaults'

1
NEWS Normal file
View file

@ -0,0 +1 @@

356
README Normal file
View file

@ -0,0 +1,356 @@
x48 -- HP48 CPU emulator
========================
This is x48, an HP48 CPU emulator. This is Version 0.6.1
if the 'LCD' is scrambled, you might try running x48 in one of the 3 ways below
to see if that will solve the problem.
1. run 'x48 +shm'
2. put 'x48*useXShm: False' in you .Xdefaults file (man xrdb)
3. run './configure --disable-shm' to build x48 without the Shared memory extention.
If it does please leave a bug report at https://developer.berlios.de/bugs/?group_id=3335
======
for version 0.4.0
What's new:
- Implemented CONFIG/UNCNFG more exactly.
- Added support for different RAM or ROM cards.
- Added G/GX support (lost of changes)
new colors, new labels, ...
- Rewrote ROMDump for both S/SX and G/GX. Lots faster now.
Thanks go to Robert Tiismus <robert@Sneezy.net.ut.ee>
- Corrected handling of Display and Menu images, fixed number
of lines in init_display(), to avoid XShmError on virgin
startup
- Catch SIGPIPE and save state, so everything is saved, when
x48 gets terminated by xkill or the window manager
NOTE (from EM48 README by Paul Fox)
===================================
This emulator is capable of providing a faithful replication of the
HP48. In order to do so, it requires a copy of the ROM software
from YOUR calculator. In order to avoid breaking copyright laws,
and upsetting HP, you MUST BE THE PROUD OWNER OF AN HP48 before
running this program. Of course you can run this program without a
copy of the ROM software in order to write trivial machine code
programs but you will not be able to access any of the calculator
functionality.
Instructions on how to download a copy of the ROM are provided
later in this document.
CREDITS
=======
I would like to thank Robert Tiismus <robert@Sneezy.net.ut.ee>
for his help with ROMDump for the G/GX. The ROMDump utility gained
a lot of speed and works for both S/SX and G/GX now.
I used SADHP to disassemble parts of the 48's ROM and some other
programs to test x48, also I very closely looked at SADHP while
writing code for RPL debugging. So here go sincere thanks:
-- Jan Brittenson <bson@ai.mit.edu>
-- Mika Heiskanen <mheiskan@vipunen.hut.fi>
Latest version of SADHP is available from
wuarchive.wust.edu:/systems/hp/hp48Uploads/
Get it to look deeper into your HP48.
I would like to thank Lutz Vieweg <lkv@mania.robin.de> for his
outstanding bug reports. Must be the crazyness of porting gcc to
the 48, and of writing code in assembler, that digs out all the
bugs in x48. Go on like this Lutz.
I must thank Joe Ervin for his article on keyboard handling.
I also must thank Paul Fox, Author of EM48, for his work on his
emulator, the source code was a great help for solving some problems,
specially the memory bank switching. Thanks Paul.
I would also like to thank Alonzo Gariepy for his contribution to
the world on how the HP28/HP48 works.
I would sincerely like to ask HP about giving me a 48 GX, so the world
could receive more complete x48, also I could use some ROM cards, like
the EQ-LIB to implement an easy use of these. Well, I credited HP in
the last releases, but now x48 really gets running and I still haven't
heard a word from them...
Just remember, x48 comes under the terms and conditions of the GPL.
HACKERS PLEA
============
I will continue to work on this product and support it where I have
the time, and would therefore appreciate any patches or bug fixes,
etc which any of you make so that I can keep control of the software.
Information in the form of loose english, context diffs, or
suggestions are welcome so that we can all make this product a
little better.
INSTALLATION
============
I improved handling of differences in Solaris, SunOS, HP/UX, and Linux.
Things are not perfect, anyway.
To configure some things for the Makefiles, edit 'config.h' in the
directory 'x48-0.4.0'. There you can set the compiler, flags to
pass to the compiler, and some other stuff.
To build the emulator do the following in the directory 'x48-0.4.0':
1. xmkmf
2. make
This should give you the programs 'x48', 'dump2rom', 'checkrom', and
'mkcard' in the directory 'x48-0.4.0/bin'.
To get the serial line working, you should set up your .Xdefaults for
x48. The resources concerning the serial line are:
x48*useSerial: True
x48*serialLine: /dev/ttyS0 ; your serial device here, this
; looks good for Linux.
Run 'x48 -help' for a list of command line options.
Look at 'x48-0.4.0/src/X48.ad' for the whole set of Xresources the
program uses.
HOW TO DOWNLOAD A COPY OF THE ROM
=================================
The emulator works by executing an image of the HP48s ROM. In order
to run the emulator you must have a version of your ROM on the system.
**********************************************************************
* This includes the HIDDEN ROM. Please don't use DUMP programs, that *
* don't dump the HIDDEN ROM. The emulator won't run. *
**********************************************************************
To get a memory dump you need to do the following:
- Download the file 'romdump/ROMDump' to your HP.
- To capture a complete ROM, start kermit on your computer, set the
line so it fits your HP, set the speed to 9600 baud and type
'log session', then 'connect'.
- On a HP48 S/SX type '#0h #7FFFFh ROMDump',
on a HP48 G/GX type '#0h #FFFFFh ROMDump'.
This will take about 15 minutes on the S/SX, 30 minutes on the G/GX.
- When done, type the kermit-Escape (usually CTRL-\) followed
by 'C' on your Computer. Say 'quit' to the kermit.
Your ROM should now be in the file 'session.log'.
Now you have a file containing lines like
#00000:2369B108DADF1008
...
This has to be converted to a binary ROM for x48.
Run the command: `dump2rom session.log`
This will convert your dump into a rom file readable by the emulator
called 'rom.dump'.
CHECK the file with the program 'checkrom'.
Type: `checkrom rom.dump`. It should say:
ROM Version is HP48-A
ROM CRC reads 0xcb76 (for Rev. A, will be different for other ROMs)
IROM OK: ROM CRC test passed.
or
ROM Version is HP48-R
ROM CRC 1 reads 0xdfed (for Rev. R, will be different for other ROMs)
ROM CRC 2 reads 0xf0b1 ( --- " --- )
IROM OK: ROM CRC test passed.
If the test failed, something went wrong transfering the ROM. Don't
start thinking about the size or the nibbles in 'rom.dump'. That's
all correct. Do the Transfer again.
If you know how to do it, you could of course only transfer the
'broken' part of the dump, using e.g. '#60000h #60080h ROMDump'
and fix these lines in 'session.log'.
USING THE EMULATOR
==================
Go into the directory, where your ROM dump resides and type 'x48', or
type 'x48 -rom <filename>', where <filename> is the file containing your
ROM dump.
On the first start the emulator will read the ROM dump.
It will start running at the addr 00000. This will result in the
question 'Try to recover memory?' Answer 'NO'.
To use the emulator, click your mouse at the buttons
on the emulator. You have to press the button down long enough, so
the HP-48 will considder it a keypress. Well, this should work.
To do something like ON-E, or ON-A-F, one would use the middle mouse
button to press ON, then the middle mouse button to press A. These
keys should stay depressed. Now use the left mouse button to press F.
This should release all three keys and yield the desired results.
You can check your ROM dump by pressing ON-E. This enters the selftest
of the HP-48. If it says IROM OK after some time, your ROM CRC has
been calculated correctly.
The SX emulator has 32K RAM and two 128K RAM cards, both read/write.
To access all memory you have to do: 1 MERGE 2 MERGE
The GX emulator has 128K RAM and no RAM cards, yet.
To access all memory you have to do: 1 MERGE 2 MERGE
When you hit the 'quit' button of the window frame (under ol(v)wm),
the emulator saves its state, RAM, ROM, and the ports to files in
the directory '$HOME/.hp48/', so the next time it is started, all
your stuff should be still there.
If the emulator gets messed up, or crashes, enter the debugger
by typing CTRL-C in the shell you started x48. At the prompt type
`reset`, confirm with `y`. Then type `cont`.
If this does not help, enter the debugger again, and type
`exit`, confirm with `y`. This will NOT save the stuff, so the next
time you use x48, it should be in the same state as on the last run.
Another way to achive this, is to send SIGTERM or SIGKILL to x48.
USING RAM CARDS
===============
To get a RAM card, use the program 'mkcard' to build the card, and
copy the resulting file to $HOME/.hp48/port1 or $HOME/.hp48/port2.
On the next start of the emulator, the card should be detected and
usable. (Maybe you have to turn it off, and on again...)
KEYBOARD SUPPORT
================
I have added simple keyboard support:
The keys 'A' - 'Z', '0' - '9', '+', '-', '*', '/', 'RETURN', '.', 'SPACE',
'DELETE', and 'BACKSPACE' are mapped to the according keys on the HP-48's
keyboard. The SHIFT keys give you the Orange and Blue shifts. 'ALT' gives
you the `alpha' key, and 'ESC' the `ON' key.
The keys 'F1' - 'F2' also access the menu labels on the HP. The cursor keys
give you the HP-48 keys 'K', 'P', 'Q', and 'R'.
Note that the key 'A' doesn't give you the letter "A" on the HP, but the
button in Row 1, Column 1 on the HP keyboard. The function executed depends
on the Shift State of the HP.
To do something like 'ON-A-F', press and hold `ESC', then press and hold
`A', then press `F' and release all buttons.
TALKING TO THE OUTSIDE WORLD
============================
The emulator shows one line similar to:
wire:/dev/ttyp2 IR:/dev/ttyS0
right below it's display.
If you have a backup off your real HP-48 on your computer, you
could restore it using kermit:
On the emulator enter the IO menu, hit SETUP, configure to
wire, binary, 9600, none, 1, 3.
'wire' is the local computer connection, 'IR' talks to the serial
line of your computer. This is strange, but the other way around
it does not work, yet.
Go to the IO menu again. Hit SERVER. The emulator says:
Awaiting Server Command
On your computer take an unused xterm, go to the directory where
you keep your backups, and start kermit. Configure the line:
type 'set line /dev/ttyp2' <---- use the number from the line
below the display !!!
This should be the pseudo terminal connected to your emulator.
At the kermit prompt type: 'send backup18.08.1994', or however your
backup was called. There should be communication going.
After the transfer you should have a VAR 'backup18.08.1994'. Hit
the menu key for it. It says BackupHOMEDIR. Type RESTORE. That's
all.
Talking to the serial line, to e.g. another real HP-48 works the
same, just configure the IO to IR.
!!! Note that the communcication speed is 2400 Baud here,
because the emulator, or better the HP48, thinks he is
doing IR transfer.
KNOWN BUGS
==========
Very slow, especially the GX compared to a real GX.
Lots of guesses in the devices section of the emulator. I could realy
use the 'SATURN HARDWARE SPECIFICATION' from HP. If anyone has access
to it, send a copy, or tell me where to get it.
Documentation is missing. There should be a file 'x48.texinfo' to
describe the various options and flags of x48.
ACCESS TO THE AUTHOR
====================
Please send any bug reports, context-diffs or suggestions to
ecd@dressler.de
Eddie C. Dost
61, Rue de la Chapelle
4850 Moresnet-Chapelle
Belgium
Have Fun.

9
autogen.sh Executable file
View file

@ -0,0 +1,9 @@
#! /bin/sh
set -x
aclocal
#libtoolize --force --copy
autoheader
automake --add-missing --copy -Wno-portability
autoconf

139
configure.ac Normal file
View file

@ -0,0 +1,139 @@
m4_include([version.m4])
AC_INIT([x48],[VERSION_NUMBER],[x48-bugs@gam3.net])
AC_COPYRIGHT([Copyright (c) 2006-2010 G. Allen Morris III])
AC_CANONICAL_TARGET
AC_PREREQ(2.59)
AC_CONFIG_SRCDIR([config.h.in])
AC_CONFIG_HEADER([config.h])
# Checks for programs.
AC_PROG_CC
AC_PROG_INSTALL
AC_PROG_LN_S
AC_PROG_CPP
AC_PATH_XTRA
if test x"$no_x" = xyes ; then
AC_MSG_ERROR([X development libraries not found])
fi
X_LIBS="$X_LIBS -lX11"
AC_SUBST(X_LIBS)
PKG_PROG_PKG_CONFIG([0.20])
# ********* readline library
AC_ARG_ENABLE(readline,
[ --disable-readline disable readline support],
[ if test x"$enableval" = xyes; then
with_readline="yes, check"
else
with_readline="no"
problem_readline=": Explicitly disabled"
fi ],
[ with_readline="not specified, check" ]
)
AH_TEMPLATE([HAVE_READLINE],[Define if Readline is used.])
if test x"$with_readline" != xno; then
AC_CHECK_LIB(readline, readline,
with_readline=yes;
LIBS="$LIBS -lreadline";
AC_DEFINE(HAVE_READLINE),
with_readline=no;
problem_readline=": Can't detect readline library.",
[])
AC_CHECK_LIB(history, add_history)
AC_CHECK_HEADERS([readline/readline.h])
AC_CHECK_HEADERS([readline/history.h])
fi
# ********* MIT Shared Memory Extension
AC_ARG_ENABLE(shm,
[ --disable-shm disable MIT Shared Memory Extension],
[ if test x"$enableval" = xyes; then
with_shm="yes, check"
else
with_shm="no"
problem_shm=": Explicitly disabled"
fi ],
[ with_shm="not specified, check" ]
)
AH_TEMPLATE([HAVE_XSHM],[Define if MIT Shared Memory extension is used.])
if test x"$with_shm" != xno; then
AC_CHECK_HEADER(X11/extensions/XShm.h, [
AC_CHECK_LIB(Xext, XShmQueryExtension,
with_shm=yes; AC_DEFINE(HAVE_XSHM),
with_shm=no;
problem_shm=": Can't detect MIT Shared Memory ext.",
[$X_LIBS $X_PRE_LIBS -lX11 $X_EXTRA_LIBS])
],problem_shm=": Can't detect MIT Shared Memory headers.",[#include <X11/Xlib.h>])
fi
if test x"$with_shm" = xyes ; then
X_LIBS="$X_LIBS -lXext"
fi
# Checks for libraries.
AC_CHECK_LIB([GL], [XCloseDisplay])
# Checks for header files.
AC_HEADER_STDC
AC_CHECK_HEADERS([fcntl.h memory.h stdlib.h string.h sys/ioctl.h sys/time.h termios.h unistd.h stdint.h])
# Checks for typedefs, structures, and compiler characteristics.
AC_C_CONST
AC_C_INLINE
AC_TYPE_SIZE_T
AC_HEADER_TIME
AC_STRUCT_TM
AC_DEFINE([VERSION_MAJOR], _VERSION_MAJOR, [The major version number])
AC_DEFINE([VERSION_MINOR], _VERSION_MINOR, [The minor version number])
AC_DEFINE([PATCHLEVEL], _PATCHLEVEL, [The patch level])
AC_DEFINE_UNQUOTED([COMPILE_TIME], "`date`", [Date program was compiled])
AC_DEFINE([COMPILE_BY], ["G. Allen Morris III"], [Name of person that compiled this program])
AC_DEFINE([COMPILE_VERSION], [0], [description])
# Checks for library functions.
AC_PROG_GCC_TRADITIONAL
AC_FUNC_MALLOC
AC_FUNC_SELECT_ARGTYPES
AC_FUNC_STAT
AC_CHECK_FUNCS([bzero gethostname gettimeofday memset mkdir select strdup strrchr uname])
PKG_CHECK_MODULES(APPDEFS, xt)
AC_ARG_WITH([appdefaultdir],
[AC_HELP_STRING([--with-appdefaultdir=DIR],
[Xt app-defaults directory (default: from pkg-config)])],
[appdefaultdir="$withval"],
[appdefaultdir=`$PKG_CONFIG --variable=appdefaultdir xt`])
AC_SUBST(appdefaultdir)
AM_INIT_AUTOMAKE
AC_CONFIG_FILES([Makefile
romdump/Makefile
src/x48.man
rpm/x48.spec
src/Makefile])
AC_OUTPUT
echo "
X48 Configuration:
Version: $VERSION$VERSIONINFO
Executables: $bindir
Man pages: $mandir
With ReadLine sup. in Debuger? $with_readline$problem_readline
With Shared memory for XImage? $with_shm$problem_shm
# See INSTALL for the description of what this may mean."

9
debian/README.Debian vendored Normal file
View file

@ -0,0 +1,9 @@
x48 for Debian
--------------
This program requires you to create a .hp48 directory in your home
directory, and put a rom dump into that directory.
Rom dumps are available from http://developer.berlios.de/projects/x48/
-- G. Allen Morris III <gam3@gam3.net>, Wed, 5 Jan 2005 14:54:21 -0500

66
debian/changelog vendored Normal file
View file

@ -0,0 +1,66 @@
x48 (0.6.4) unstable; urgency=low
* Default to throttling speed only when key-pressed
* Add throttle switch for speed emulation
* Fix buffer overflow bug
* release keys on loss of focus
* typo in access_time adjust
-- G. Allen Morris III <gam3@gam3.net> Tue, 09 Aug 2011 22:43:23 -0700
x48 (0.6.3) unstable; urgency=low
* update to x48.spec
* put debian directory in dist file
* install X48 app data in correct place
using pkg-config appdefaultdir xt
* removed more debugging messages
-- G. Allen Morris III <gam3@gam3.net> Sat, 30 Jan 2010 18:16:00 -0500
x48 (0.6.2) unstable; urgency=low
* Remove some Local code that was causing bug 016244, 016778
* Removed some debugging code
-- G. Allen Morris III <gam3@gam3.net> Sat, 30 Jan 2010 10:15:43 -0500
x48 (0.6.1) unstable; urgency=low
* Cleaned up the configure.ac file
it now fails if X is missing and includes X11 and Xext in X_LIBS
* Applied patch for bug ID 015996 (berlios) this should solve the
scrambled 'LCD' problem.
-- G. Allen Morris III <gam3@gam3.net> Fri, 31 Jul 2009 22:32:55 -0400
x48 (0.6.0) unstable; urgency=low
* Added simple paste feature
* Repaired debugger non-readline input
* Changed from building with Imakefile to using GNU autoconfig
-- G. Allen Morris III <gam3@gam3.net> Thu, 20 Apr 2006 08:09:01 -0400
x48 (0.4.3) unstable; urgency=low
* Imporved mouse and refresh
* Unix98 PTY (Preferred)
* Fix to clock
-- G. Allen Morris III <gam3@gam3.net> Fri, 22 Apr 2005 13:00:14 -0400
x48 (0.4.2) unstable; urgency=low
* Cursor Flashing
* Auto repeat on movement and del keys.
-- G. Allen Morris III <gam3@gam3.net> Fri, 22 Apr 2005 13:00:14 -0400
x48 (0.4.0) unstable; urgency=low
* Initial Release.
-- G. Allen Morris III <gam3@gam3.net> Wed, 5 Jan 2005 14:54:21 -0500

1
debian/compat vendored Normal file
View file

@ -0,0 +1 @@
5

13
debian/control vendored Normal file
View file

@ -0,0 +1,13 @@
Source: x48
Section: x11
Priority: optional
Maintainer: G. Allen Morris III <gam3@gam3.net>
Build-Depends: debhelper (>= 5.0.0), libx11-dev, libxext-dev, pkg-config, libxt-dev, autoconf
Standards-Version: 3.8.2
Package: x48
Architecture: any
Depends: ${shlibs:Depends}, ${misc:Depends}
Description: a HP48 calculator emulator
This is an emulator of the HP 48 SX and GX calculator.
You will need a ROM dump to use it.

27
debian/copyright vendored Normal file
View file

@ -0,0 +1,27 @@
This package was debianized by G. Allen Morris III <gam3@gam3.net> on
Wed, 5 Jan 2005 14:54:21 -0500.
It was downloaded from http://developer.berlios.de/projects/x48/
Copyright: 1994 Eddie C. Dost <ecd@dressler.de>
Upstream Author: Eddie C. Dost <ecd@dressler.de>
License:
This software is Copyright (C) 1994 Eddie C. Dost <ecd@dressler.de>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
This program is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License Version 2, found on Debian systems
in the file /usr/share/common-licenses/GPL .

1
debian/dirs vendored Normal file
View file

@ -0,0 +1 @@
usr/bin

1
debian/docs vendored Normal file
View file

@ -0,0 +1 @@
README

2
debian/menu vendored Normal file
View file

@ -0,0 +1,2 @@
?package(x48):needs="X11|text|vc|wm" section="Apps/Math"\
title="x48" command="/usr/bin/x48"

89
debian/rules vendored Executable file
View file

@ -0,0 +1,89 @@
#!/usr/bin/make -f
# -*- makefile -*-
#export DH_VERBOSE=1
CFLAGS = -Wall -g
ifneq (,$(findstring noopt,$(DEB_BUILD_OPTIONS)))
CFLAGS += -O0
else
CFLAGS += -O2
endif
configure: configure-stamp
configure-stamp:
dh_testdir
autoreconf
./configure --prefix=/usr
touch configure-stamp
build: build-stamp
build-stamp: configure-stamp
dh_testdir
$(MAKE)
touch build-stamp
clean:
dh_testdir
dh_testroot
rm -f build-stamp configure-stamp
# Add here commands to clean up after the build process.
[ ! -f Makefile ] || $(MAKE) distclean
dh_clean
install: build
dh_testdir
dh_testroot
dh_clean -k
dh_installdirs
# Add here commands to install the package into debian/x48.
$(MAKE) install DESTDIR=$(CURDIR)/debian/x48
# Build architecture-independent files here.
binary-indep: build install
# We have nothing to do by default.
# Build architecture-dependent files here.
binary-arch: build install
dh_testdir
dh_testroot
dh_installchangelogs
dh_installdocs
dh_installexamples
# dh_install
# dh_installmenu
# dh_installdebconf
# dh_installlogrotate
# dh_installemacsen
# dh_installpam
# dh_installmime
# dh_installinit
# dh_installcron
# dh_installinfo
dh_installman
dh_link
dh_strip
dh_compress
dh_fixperms
# dh_perl
# dh_python
# dh_makeshlibs
dh_installdeb
dh_shlibdeps
dh_gencontrol
dh_md5sums
dh_builddeb
binary: binary-indep binary-arch
.PHONY: build clean binary-indep binary-arch binary install configure

6
debian/watch vendored Normal file
View file

@ -0,0 +1,6 @@
# Example watch control file for uscan
# Rename this file to "watch" and then you can run the "uscan" command
# to check for upstream updates and more.
# Site Directory Pattern Version Script
version=2
http://www.hpcalc.org/hp48/pc/emulators/x48-(.*)\.tgz

16
doc/CARDS.doc Normal file
View file

@ -0,0 +1,16 @@
Q: How do you dump the Equation Lib?
A: Well, I guess you would have to use some sort of Card copying
program from the HP48. This should give you an Image of the card.
You should convert it into an x48 rom-file. Look at dump2rom.c.
There should be changes for the size of the Card!!!
Then you should copy this to "$HOME/.hp48/port1" or "$HOME/.hp48/port2".
Change the file to read only, use 'chmod 444 $HOME/.hp48/port1'.
The emulator will notice, this is a ROM.
You are mainly on your own here, I don't have such a card, so I can't
try, but I hope it helps.

339
doc/COPYING Normal file
View file

@ -0,0 +1,339 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
675 Mass Ave, Cambridge, MA 02139, USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
Appendix: How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) 19yy <name of author>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) 19yy name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

190
doc/ChangeLog Normal file
View file

@ -0,0 +1,190 @@
1995/01/16 Version 0.4.0 On the net
- Implemented CONFIG/UNCNFG more exactly.
- Added support for different RAM or ROM cards.
- Added G/GX support (lost of changes)
new colors, new labels, ...
- Rewrote ROMDump for both S/SX and G/GX. Lots faster now.
Thanks go to Robert Tiismus <robert@Sneezy.net.ut.ee>
- Corrected handling of Display and Menu images, fixed number
of lines in init_display(), to avoid XShmError on virgin
startup
- Catch SIGPIPE and save state, so everything is saved, when
x48 gets terminated by xkill or the window manager
**********************************************************************
1994/12/07 Version 0.3.5 On the net
- Serial and terminal lines now have the baudrate set
correctly.
. Watch out for the IR (serial) connection: speed is
always set to 2400 Baud by the HP
. On the wire (terminal) connection speed is set to the
selected value
- Removed stupid rounding in adjtime routine
. This caused missing of some part of a second when
adjusting the time on the HP
- Suppress adjusting timer2 if this would cause an
increase of the timer, slow down the timer instead.
. Thanks go to Lutz Vieweg (he spotted this bug, while
trying to use QED. (lkv@mania.robin.de)
- Support for contrast control (ON_+, ON_-) added
- Started command line parsing... (see below)
Changes to the X11 Interface
----------------------------
- Implemented color-icon. Show state of HP48 in icon:
. if 'x48' is displayed, calculator is on.
. if 'x48' is blinking, calculator is transfering data.
- Implemented use of the WM_SAVE_YOURSELF protocol.
- x48 now uses Xrm...() functions to parse and use
Xresources and the command line.
- Better handling of ButtonPresses and KeyPresses
- The program now sets the WM_COMMAND property
- Now colors look well on monochrome and gray
- A new Colormap is allocated if the standard Colormap is full
- All possible visuals are supported by the color allocation
modell (at least on Linux, I don't really know how to handle
DirectColor ...)
**********************************************************************
1994/11/02 Version 0.3.4 On the net
- Real time support mostly works (uses system time)
- Stores ROM, RAM, and Ports in 'compressed' format
- tty lines work on HPUX
Thanks go to Lutz Vieweg (lkv@mania.robin.de)
- debugger now works on operating systems, where timers interrupt
the read system call.
- Debugger now uses Class instruction set
- Disassembler completed (at least hope so)
**********************************************************************
1994/10/06 Version 0.3.3 On the net
- checkrom, a program to test the ROM CRC included
- tty lines work on IRIX
Thanks go to !!!LOOK AT THE MAIL!!!
- faster X11 interface
Uses Pixmaps now to update changed nibbles.
Whenever possible uses XSHM Extension to update
the display.
- Start of debugger implementation
- Disassembler started (HP & Alonzo)
- SHUTDN bug fixed (didn't wake on received chars)
Thanks go to Lutz Vieweg (lkv@mania.robin.de)
- Display bit offset implemented
**********************************************************************
1994/10/02 Version 0.3.2 not published
- Major speed improvement due to scheduling of emulator
specific events (timers, adjtime, receive, ...)
This *really* speeds up the main emulator loop.
**********************************************************************
1994/09/30 Version 0.3.1 not published
- Added MAGIC number to ~/.hp48/hp48 file
- Minor optimizations
**********************************************************************
1994/09/18 Second Release (Version 0.2)
- Pure X11 interface
- Start of real time support
- SHUTDN implemented
- Keyboard support
- Compiles better (less warnings) on SunOS, Solaris
**********************************************************************
1994/08/26 Initial Release (Version 0.1)
- Emulates the HP48sx fairly
- Compiles well only on Linux
- Uses XView Panel and Canvas
- Must be started in source directory
- No SHUTDN
- No real time
- Misses HP48 keyboard interrupts
- Slow
**********************************************************************
1994/07 Look at em48 by Paul Fox
- Starts to run like a HP48
**********************************************************************
1994/05 First Versions
- No Display at all, merely debugging output
**********************************************************************
1994/04 Fed up with stupid Desktop Calculators

34
doc/INSTALLING Normal file
View file

@ -0,0 +1,34 @@
INSTALLATION
============
I improved handling of differences in Solaris, SunOS, HP/UX, and Linux.
Things are not perfect, anyway.
To configure some things for the Makefiles, edit 'config.h' in the
directory 'x48-0.4.0'. There you can set the compiler, flags to
pass to the compiler, and some other stuff.
To build the emulator do the following in the directory 'x48-0.4.0':
1. xmkmf
2. make
This should give you the programs 'x48', 'dump2rom', and 'checkrom'
'mkcard' in the directory 'x48-0.4.0/bin'.
To get the serial line working, you should set up your .Xdefaults for
x48. The resources concerning the serial line are:
x48*useSerial: True
x48*serialLine: /dev/ttyS0 ; your serial device here, this
; looks good for Linux.
Run 'x48 -help' for a list of command line options.
Look at 'x48-0.4.0/src/X48.ad' for the whole set of Xresources the
program uses.
To use RAM cards (128K or 32K on the SX, up to 4M on the GX), use the
program 'mkcard', and put the resulting file in the directory ~/.hp48/
in a file called 'port1' or 'port2'.

36
doc/ROMDump.doc Normal file
View file

@ -0,0 +1,36 @@
This is ROMDump, a utility to dump the ROM of ANY HP48
======================================================
Usage: (2:hxs, 1:hxs --> ) pop start address from level 2,
pop end address from level 1, and dump
ROM to the serial at 9600 baud using
lines of form "aaaaa:hhhhhhhhhhhhhhhh\n\r"
with 16 nibbles ROM data hhhhhhhhhhhhhhhh
at address aaaaa.
- Download the file ROMDump to your HP.
- To capture a complete ROM, start kermit on your computer,
set the line so that it fits your HP (use speed == 9600)
and type 'log session', then 'connect'.
- On your HP48 S/SX type '#0h #7FFF0h ROMDump' or on the G/GX
'#0h #FFFF0h ROMDump'. This will give you a complete ROM dump.
This will take about 15 minutes on the S/SX, 30 minutes on the G/GX.
- When done, type the kermit-Escape (usually CTRL-\) followed
by 'C' on your Computer. Say 'quit' to the kermit.
- Your ROM should now be in the file 'session.log'.
- To dump a certain range of ROM, enter the start-address in hex
and the end address in hex, and press 'ROMDump'.
(For example: '#7FFF0h #7FFFFh' ROMDump will output
"7FFF0:84054383D21467BC\n\r" on a Version A S/SX.)

35
doc/TODO Normal file
View file

@ -0,0 +1,35 @@
TODO -- HP48sx Emulator x48
===========================
Write an MMU. Will increase speed significantly.
Contact Eric Bryntse:
- ask for description of his Gateway-48 library
to trace down the following bug:
When an alarm wakes up x48, it is not starting
the exec without being given a password.
Find a way to handle NumLock on those Solaris OpenWindows machines...
(take a look at xterm source)
There should be a menu popping up when the HP Logo in the top left is
hit. It should contain some useful things like
- RESET BUTTON
- Configuration (Serial, start kermit automatically, ...)
- Port configuration (pull card, insert ROM/RAM card, etc.)
- Pop up a window with debug outputs (speed, cpu usage, PC, ...)
- The 'About x48' field
!!! Implement an Instruction Cache ... !!! <- SPEED
Speed up register arithmetic. +- SPEED
Implement a function "load file (filename)":
- Read a file starting with "HPHP48-%c"
- try putting it on the stack as HP Object
- should not be hard to store it in a variable called 'filename' then
--> Here we got a fast bypass to the kermit protocol.

4
romdump/Makefile.am Normal file
View file

@ -0,0 +1,4 @@
EXTRA_DIST = ROMDump.s ROMDump

63
romdump/README Normal file
View file

@ -0,0 +1,63 @@
This file is part of ROMDump, a ROM dump utilty for the HP48sx Calculator.
Copyright (C) 1994 Eddie C. Dost (ecd@dressler.de)
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
This is ROMDump, a utility to dump the ROM of ANY HP48
======================================================
Usage: (2:hxs, 1:hxs --> ) pop start address from level 2,
pop end address from level 1, and dump
ROM to the serial at 9600 baud using
lines of form "aaaaa:hhhhhhhhhhhhhhhh\n\r"
with 16 nibbles ROM data hhhhhhhhhhhhhhhh
at address aaaaa.
- Download the file ROMDump to your HP.
- To capture a complete ROM, start kermit on your computer,
set the line so that it fits your HP (use speed == 9600)
and type 'log session', then 'connect'.
- On your HP48 S/SX type '#0h #7FFF0h ROMDump' or on the G/GX
'#0h #FFFF0h ROMDump'. This will give you a complete ROM dump.
This will take about 15 minutes on the S/SX, 30 minutes on the G/GX.
- When done, type the kermit-Escape (usually CTRL-\) followed
by 'C' on your Computer. Say 'quit' to the kermit.
- Your ROM should now be in the file 'session.log'.
- To dump a certain range of ROM, enter the start-address in hex
and the end address in hex, and press 'ROMDump'.
(For example: '#7FFF0h #7FFFFh' ROMDump will output
"7FFF0:84054383D21467BC\n\r" on a Version A S/SX.)
I have included the assembler source (class version) for those
interested in fiddling with the hidden ROM...
Eddie C. Dost (ecd@dressler.de)

BIN
romdump/ROMDump Normal file

Binary file not shown.

464
romdump/ROMDump.s Normal file
View file

@ -0,0 +1,464 @@
;
; $Id: ROMDump.s,v 1.4 1995/01/11 18:21:36 ecd Exp ecd $
;
; This file is part of ROMDump, a ROM dump utility for the HP48 Calculator.
; Copyright (C) 1994 Eddie C. Dost (ecd@dressler.de)
;
; This program is free software; you can redistribute it and/or modify
; it under the terms of the GNU General Public License as published by
; the Free Software Foundation; either version 2 of the License, or
; (at your option) any later version.
;
; This program is distributed in the hope that it will be useful,
; but WITHOUT ANY WARRANTY; without even the implied warranty of
; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
; GNU General Public License for more details.
;
; You should have received a copy of the GNU General Public License
; along with this program; if not, write to the Free Software
; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
;
; Usage:
;
; (2: hxs, 1: hxs --> ) pop start address from level 2,
; pop end address from level 1, and dump
; ROM to the serial at 9600 baud using
; lines of form "aaaaa:hhhhhhhhhhhhhhhh\n\r"
; with 16 nibbles ROM data hhhhhhhhhhhhhhhh
; at address aaaaa.
;
; machine independent addresses (supported by HP)
;
AllowIntr equ $010e5
DisableIntr equ $01115
DOBINT equ $02911
DOCOL equ $02d9d
DOCODE equ $02dcc
SEMI equ $0312b
GETPTRLOOP equ $05143
SAVPTR equ $0679b
GETPTR equ $067d2
CK2NOLASTWD equ $18a8d
CKandDISPATCH1 equ $18fb2
VERSTRING equ $30794
PopASavptr equ $3251c
;
; machine independent addresses (NOT supported by HP)
;
POPHXS equ $53f8d
;
; machine dependent addresses
;
sx_GosubHidC equ $026bf
sx_prog_low equ $700f1 ; IRAMBUFF
sx_prog_high equ $f00f1 ; IRAMBUFF when RAM configured high
gx_GosubHidC equ $026ca
gx_prog_low equ $800f5 ; IRAMBUFF
gx_prog_high equ $c00f5 ; IRAMBUFF when RAM configured high
gx_LINECOUNT equ $8069a
;
; flags used
;
sGX equ 0
sHIGH equ 1
;
; begin off assembler code
;
textr "HPHP48-R"
dcr.5 DOCOL
dcr.5 CK2NOLASTWD
dcr.5 CKandDISPATCH1
dcr.5 DOBINT
dcr.5 $000bb
;
; only executed when (2: hxs, 1: hxs)
;
dcr.5 DOCOL
dcr.5 VERSTRING
dcr.5 DOCODE
code_start
dcr.5 code_end-code_start
jsr DisableIntr
;
; figure out version
;
jsr PopASavptr
move.1 #0, p
move.5 #24, c.p
add.a c, a
move.a a, d1
move.b (d1), a
move.2 #$4a, c.p ; 'J' == last version for S/SX
bclr #sGX, st
ble.b a, c, got_version
bset #sGX, st
got_version
bclr #sHIGH, st
;
; get arguments
;
jsr GETPTR
jsr POPHXS
move.1 #0, p
move.5 #$ffff0, c.p
and.a c, a
move.a a, r4
jsr GETPTR
jsr POPHXS
move.1 #0, p
move.5 #$ffff0, c.p
and.a c, a
move.a a, r3
;
; open IO
;
move.5 #$00110, d1
move.1 #8, a.p
move.1 a, (d1)
;
; set speed to 9600 baud
;
move.2 #$0d, d1
move.1 #6, a.p
move.1 a, (d1)
;
; dump ROM $00000 - $6ffff
;
dump_rom_0
move.a r3, a
move.5 #$6fff0, c.p
bgt.a a, c, dump_rom_7
move.a a, r1
move.a r4, c
move.a c, b
move.5 #$6fff0, c.p
ble.a b, c, end_addr_0
move.a c, b
end_addr_0
subr.a b, a
bcc continue_0
bra.3 dump_done
continue_0
move.a a, r2
bsr.3 prog_start
move.5 #$70000, a.p
move.a a, r3
;
; dump ROM $70000 - $7ffff
;
dump_rom_7
move.a r3, a
move.5 #$7fff0, c.p
bgt.a a, c, dump_done_7
bra.3 continue_7
dump_done_7
bbs #sGX, st, continue_8
bra.3 dump_done
continue_8
bra.3 dump_rom_8
continue_7
move.a a, r1
move.a r4, c
move.a c, b
move.5 #$7fff0, c.p
ble.a b, c, end_addr_7
move.a c, b
end_addr_7
subr.a b, a
bcc continue_7_2
bra.3 dump_done
continue_7_2
move.a a, r2
bbs #sGX, st, gx_dump_rom_7
bsr.3 copy_prog
move.5 #sx_prog_high, c.p
jsr sx_GosubHidC
bsr.3 copy_prog
bra.3 dump_done
gx_dump_rom_7
;
; unconfigure devices at 7e000 - 7ffff
;
move.5 #$7f000, c.p
uncnfg
move.5 #$7e000, c.p
uncnfg
bsr.3 prog_start
;
; reconfigure devices at 7e000 - 7ffff
;
move.5 #$ff000, c.p
config
move.5 #$7f000, c.p
config
move.5 #$ff000, c.p
config
move.5 #$7e000, c.p
config
move.5 #$80000, a.p
move.a a, r3
;
; dump ROM $80000 - $bffff
;
dump_rom_8
move.a r3, a
move.5 #$bfff0, c.p
bgt.a a, c, dump_rom_c
move.a a, r1
move.a r4, c
move.a c, b
move.5 #$bfff0, c.p
ble.a b, c, end_addr_8
move.a c, b
end_addr_8
subr.a b, a
bcc continue_8_2
bra.3 dump_done
continue_8_2
move.a a, r2
bsr.3 copy_prog
move.5 #gx_prog_high, c.p
jsr gx_GosubHidC
bsr.3 copy_prog
move.5 #$c0000, a.p
move.a a, r3
;
; dump ROM $c0000 - $fffff
;
dump_rom_c
move.a r3, a
move.a a, r1
move.a r4, c
move.a c, b
move.5 #$ffff0, c.p
ble.a b, c, end_addr_c
move.a c, b
end_addr_c
subr.a b, a
bcs dump_done
move.a a, r2
bsr.3 copy_prog
bset #sHIGH, st
jsr gx_prog_low
bsr.3 copy_prog
dump_done
;
; close IO
;
bsr.3 send_crnl
move.5 #$00110, d1
move.1 #0, a.p
move.1 a, (d1)
;
; back to RPL
;
jsr AllowIntr
jmp GETPTRLOOP
;
; exchange program with memory at address prog_low
;
copy_prog
move.a pc, c
prog_offset
move.5 #prog_start-prog_offset, a.p
add.a a, c
move.a c, d0
bbs #sGX, st, gx_addr
move.5 #sx_prog_low, d1
bra.3 sx_addr
gx_addr
move.5 #gx_prog_low, d1
sx_addr
move.5 #prog_end-prog_start, a.p
lsr.a #4, a
move.a a, b
copy_word
move.w (d0), a
move.w (d1), c
move.w c, (d0)
move.w a, (d1)
add.a #16, d0
add.a #16, d1
dec.a b
bcc copy_word
rtn
;
; this is the start of the actual dump routine
;
prog_start
bbc #sHIGH, st, skip_uncover_c
;
; uncover ROM at c0000 - fffff
;
move.5 #$7f000, d0
move.b (d0), c
move.5 #gx_LINECOUNT, d0
move.b (d0), c
bset #7, c
move.b c, (d0)
move.5 #$00128, d0
move.b c, (d0)
move.5 #$c0000, c.p
uncnfg
uncnfg
skip_uncover_c
;
; get start address and number of words
;
move.a r1, a
move.a a, d0
move.a r2, a
;
; dump the ROM
;
loop
move.a a, r0
bsr.3 send_addr
move.2 #$3a, c.p
bsr.3 send_char
move.w (d0), c
bsr.3 send_data
bsr.3 send_crnl
add.a #16, d0
move.a r0, a
sub.a #16, a
bcc loop
bbc #sHIGH, st, skip_cover_c
;
; reconfigure memory ports at c0000
;
move.5 #$c0000, c.p
config
config
config
config
move.5 #gx_LINECOUNT, d0
move.b (d0), c
bclr #7, c
move.b c, (d0)
move.5 #$00128, d0
move.b c, (d0)
move.5 #$7f040, d0
move.b (d0), c
skip_cover_c
rtn
;
; send data in C.W as hex characters
;
send_data
move.w c, b
move.2 #$0f, c.p
move.b c, d
bra.3 send_all
;
; send addr in D0 as hex characters
;
send_addr
exg.a a, d0
move.a a, c
exg.a a, d0
exg.1 p, c.4
exg.1 p, c.0
exg.1 p, c.4
exg.1 p, c.3
exg.1 p, c.1
exg.1 p, c.3
move.a c, b
move.2 #$04, c.p
move.b c, d
;
; send D.B many nibbles from B.W
;
send_all
clr.b c
move.p b, c
bsr.3 send_hex_nib
lsr.w #4, b
dec.b d
bcc send_all
rtn
;
; send "\n\r"
;
send_crnl
move.2 #$0d, c.p
bsr.3 send_char
move.2 #$0a, c.p
bsr.3 send_char
rtn
;
; send nibble in C.B as hex character
;
send_hex_nib
move.2 #$30, a.p
add.b a, c
move.2 #$39, a.p
ble.b c, a, send_char
move.2 #$07, a.p
add.b a, c
;
; send character in C.B
;
send_char
move.5 #$00112, d1
xmtrdy
move.1 (d1), a
bbs #0, a, xmtrdy
move.2 #$16, d1
move.b c, (d1)
rtn
prog_end
dcr.8 $00000000
dcr.8 $00000000
code_end
dcr.5 SEMI ; end of DISPATCH
dcr.5 SEMI ; end of program object

45
rpm/x48.spec.in Normal file
View file

@ -0,0 +1,45 @@
Summary: x48 is an HP 48 GX emulator
Name: x48
Version: @VERSION@
Release: 1
License: GPL
Group: Applications/Math
URL: http://developer.berlios.de/projects/x48/
BuildRoot: %{_tmppath}/%{name}-%{version}-root
Requires: libX11 libXext readline
BuildRequires: autoconf libX11-devel libXext-devel readline-devel
BuildRequires: libXt-devel
Source: http://download.berlios.de/x48/%{name}-%{version}.tar.gz
%description
This is an emulator of the HP 48 SX and GX calculator.
Romdumps are available from http://x48.berlios.de/
%define x11_app_defaults_dir %(pkg-config --variable appdefaultdir xt)
%prep
%setup -q
%build
%configure \
--prefix=/usr
make %{?_smp_mflags}
%install
make DESTDIR=$RPM_BUILD_ROOT install
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%doc README
%{_bindir}/x48
%{_bindir}/dump2rom
%{_bindir}/checkrom
%{_bindir}/mkcard
%{_mandir}/man1/*
%{x11_app_defaults_dir}/X48

68
src/Makefile.am Normal file
View file

@ -0,0 +1,68 @@
## Process this file with automake to produce Makefile.in
bin_PROGRAMS = x48 dump2rom mkcard checkrom
BITMAPS = bitmaps/A.h bitmaps/B.h bitmaps/C.h bitmaps/D.h bitmaps/E.h bitmaps/F.h \
bitmaps/G.h bitmaps/H.h bitmaps/I.h bitmaps/J.h bitmaps/K.h \
bitmaps/L.h bitmaps/M.h bitmaps/N.h bitmaps/O.h bitmaps/P.h \
bitmaps/Q.h bitmaps/R.h bitmaps/S.h bitmaps/T.h bitmaps/U.h \
bitmaps/V.h bitmaps/W.h bitmaps/X.h bitmaps/Y.h bitmaps/Z.h \
bitmaps/alpha.h bitmaps/angle.h bitmaps/angle_gx.h \
bitmaps/ann_alpha.h bitmaps/ann_battery.h bitmaps/ann_busy.h \
bitmaps/ann_io.h bitmaps/ann_left.h bitmaps/ann_right.h \
bitmaps/arrow.h bitmaps/arrow_gx.h bitmaps/blank.h \
bitmaps/bracket_gx.h bitmaps/bs.h bitmaps/colon.h \
bitmaps/colon_gx.h bitmaps/comma.h bitmaps/comma_gx.h \
bitmaps/curly_gx.h bitmaps/diff.h bitmaps/div.h bitmaps/down.h \
bitmaps/equal.h bitmaps/equal_gx.h bitmaps/exp.h \
bitmaps/exp_gx.h bitmaps/gx_128K_ram.h bitmaps/gx_green.h \
bitmaps/gx_silver.h bitmaps/hash.h bitmaps/hash_gx.h \
bitmaps/hp.h bitmaps/hp48_blue.h bitmaps/hp48_bottom.h \
bitmaps/hp48_disp.h bitmaps/hp48_green_gx.h \
bitmaps/hp48_icon.h bitmaps/hp48_keys.h bitmaps/hp48_logo.h \
bitmaps/hp48_logo_gx.h bitmaps/hp48_on.h bitmaps/hp48_orange.h \
bitmaps/hp48_text.h bitmaps/hp48_text_gx.h bitmaps/hp48_top.h \
bitmaps/hp48_top_gx.h bitmaps/hp48gx.h bitmaps/hp48sx.h \
bitmaps/integral.h bitmaps/inv.h bitmaps/last.h \
bitmaps/lbrace.h bitmaps/lbracket.h bitmaps/lcurly.h \
bitmaps/left.h bitmaps/menu_label.h bitmaps/minus.h \
bitmaps/mul.h bitmaps/neg.h bitmaps/nl.h bitmaps/nl_gx.h \
bitmaps/parens_gx.h bitmaps/pi.h bitmaps/pi_gx.h \
bitmaps/plus.h bitmaps/pow10.h bitmaps/pow10_gx.h \
bitmaps/power.h bitmaps/prog.h bitmaps/prog_gx.h \
bitmaps/quote_gx.h bitmaps/rbrace.h bitmaps/rbracket.h \
bitmaps/rcurly.h bitmaps/right.h bitmaps/root.h \
bitmaps/root_gx.h bitmaps/science.h bitmaps/shl.h \
bitmaps/shr.h bitmaps/sigma.h bitmaps/slash.h \
bitmaps/small_colon.h bitmaps/sqr.h bitmaps/sqr_gx.h \
bitmaps/sqrt.h bitmaps/string.h bitmaps/three.h bitmaps/two.h \
bitmaps/under.h bitmaps/under_gx.h bitmaps/up.h
x48_SOURCES = actions.c debugger.c device.c \
disasm.c emulate.c errors.c init.c \
lcd.c main.c memory.c options.c register.c \
resources.c romio.c rpl.c serial.c timer.c \
x48_x11.c \
annunc.h append.h buttons.h constants.h debugger.h \
device.h disasm.h errors.h global.h hp48char.h hp48_emu.h \
hp48.h hp.h icon.h mmu.h options.h resources.h romio.h rpl.h \
small.h timer.h version.h X48.ad.h x48_x11.h \
$(BITMAPS)
dump2rom_SOURCES = dump2rom.c
mkcard_SOURCES = mkcard.c
checkrom_SOURCES = checkrom.c romio.c
man1_MANS = x48.man
EXTRA_DIST = $(man1_MANS) X48.ad
INCLUDES = $(X_CFLAGS)
x48_LDADD = $(X_LIBS)

68
src/X48.ad Normal file
View file

@ -0,0 +1,68 @@
!
! This file is part of x48, an emulator of the HP-48sx Calculator.
! Copyright (C) 1994 Eddie C. Dost <ecd@dressler.de>.
!
! This program is free software; you can redistribute it and/or modify
! it under the terms of the GNU General Public License as published by
! the Free Software Foundation; either version 2 of the License, or
! (at your option) any later version.
!
! This program is distributed in the hope that it will be useful,
! but WITHOUT ANY WARRANTY; without even the implied warranty of
! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
! GNU General Public License for more details.
!
! You should have received a copy of the GNU General Public License
! along with this program; if not, write to the Free Software
! Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
!
! $Id: X48.ad,v 1.2 1994/12/07 20:27:35 ecd Exp ecd $
!
!
! X11 related stuff
!
*iconic: False
*visual: Default
*mono: False
*gray: False
*monoIcon: False
*useXShm: True
*smallLabelFont: -*-fixed-bold-r-normal-*-14-*-*-*-*-*-iso8859-1
*mediumLabelFont: -*-fixed-bold-r-normal-*-15-*-*-*-*-*-iso8859-1
*largeLabelFont: -*-fixed-medium-r-normal-*-20-*-*-*-*-*-iso8859-1
*connectionFont: -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso8859-1
!
! informative stuff
!
*verbose: False
*quiet: False
*printVersion: False
*printCopyright: False
*printWarranty: False
!
! resources controlling the connections
!
*useTerminal: True
*useSerial: False
*serialLine: /dev/ttyS0
!
! stuff controlling initialization
!
*completeInitialize: False
*resetOnStartup: False
*romFileName: rom.dump
*homeDirectory: .hp48
!
! resources controlling the debugger
!
*useDebugger: True
*disassemblerMnemonics: class

24
src/X48.ad.h Normal file
View file

@ -0,0 +1,24 @@
"*iconic: False",
"*visual: Default",
"*mono: False",
"*gray: False",
"*monoIcon: False",
"*useXShm: True",
"*smallLabelFont: -*-fixed-bold-r-normal-*-14-*-*-*-*-*-iso8859-1",
"*mediumLabelFont: -*-fixed-bold-r-normal-*-15-*-*-*-*-*-iso8859-1",
"*largeLabelFont: -*-fixed-medium-r-normal-*-20-*-*-*-*-*-iso8859-1",
"*connectionFont: -*-helvetica-medium-r-normal-*-12-*-*-*-*-*-iso8859-1",
"*verbose: False",
"*quiet: False",
"*printVersion: False",
"*printCopyright: False",
"*printWarranty: False",
"*useTerminal: True",
"*useSerial: False",
"*serialLine: /dev/ttyS0",
"*completeInitialize: False",
"*resetOnStartup: False",
"*romFileName: rom.dump",
"*homeDirectory: .hp48",
"*useDebugger: True",
"*disassemblerMnemonics: class",

1087
src/actions.c Normal file

File diff suppressed because it is too large Load diff

55
src/annunc.h Normal file
View file

@ -0,0 +1,55 @@
/*
* This file is part of x48, an emulator of the HP-48sx Calculator.
* Copyright (C) 1994 Eddie C. Dost (ecd@dressler.de)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* $Log: annunc.h,v $
* Revision 1.4 1995/01/11 18:20:01 ecd
* major update to support HP48 G/GX
*
* Revision 1.3 1994/11/02 14:51:27 ecd
* minor fix
*
* Revision 1.3 1994/11/02 14:51:27 ecd
* minor fix
*
* Revision 1.2 1994/10/06 16:28:03 ecd
* changed char to unsigned
*
* Revision 1.1 1994/09/07 12:53:20 ecd
* Initial revision
*
*
* $Id: annunc.h,v 1.4 1995/01/11 18:20:01 ecd Exp ecd $
*/
#ifndef _ANNUNC_H
#define _ANNUNC_H 1
#include "bitmaps/ann_alpha.h"
#include "bitmaps/ann_battery.h"
#include "bitmaps/ann_busy.h"
#include "bitmaps/ann_io.h"
#include "bitmaps/ann_left.h"
#include "bitmaps/ann_right.h"
#endif /* !_ANNUNC_H */

45
src/append.h Normal file
View file

@ -0,0 +1,45 @@
/*
* This file is part of x48, an emulator of the HP-48sx Calculator.
* Copyright (C) 1994 Eddie C. Dost (ecd@dressler.de)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/* $Log: append.h,v $
* Revision 1.3 1995/01/11 18:20:01 ecd
* major update to support HP48 G/GX
*
* Revision 1.2 1994/12/07 20:16:41 ecd
* deleted empty line at top of file
*
* Revision 1.2 1994/12/07 20:16:41 ecd
* deleted empty line at top of file
*
* Revision 1.1 1994/12/07 10:16:15 ecd
* Initial revision
*
*
* $Id: append.h,v 1.3 1995/01/11 18:20:01 ecd Exp ecd $
*/
#ifndef _APPEND_H
#define _APPEND_H 1
#include "global.h"
extern char * append_str __ProtoType__((char *buf, char *string));
extern char * append_tab __ProtoType__((char *buf));
extern char * append_tab_16 __ProtoType__((char *buf));
#endif /* !_APPEND_H */

5
src/bitmaps/A.h Normal file
View file

@ -0,0 +1,5 @@
#define A_width 5
#define A_height 7
static unsigned char A_bits[] = {
0x0e, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11};

5
src/bitmaps/B.h Normal file
View file

@ -0,0 +1,5 @@
#define B_width 5
#define B_height 7
static unsigned char B_bits[] = {
0x0f, 0x11, 0x11, 0x0f, 0x11, 0x11, 0x0f};

5
src/bitmaps/C.h Normal file
View file

@ -0,0 +1,5 @@
#define C_width 5
#define C_height 7
static unsigned char C_bits[] = {
0x0e, 0x11, 0x01, 0x01, 0x01, 0x11, 0x0e};

5
src/bitmaps/D.h Normal file
View file

@ -0,0 +1,5 @@
#define D_width 5
#define D_height 7
static unsigned char D_bits[] = {
0x0f, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0f};

5
src/bitmaps/E.h Normal file
View file

@ -0,0 +1,5 @@
#define E_width 5
#define E_height 7
static unsigned char E_bits[] = {
0x1f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x1f};

5
src/bitmaps/F.h Normal file
View file

@ -0,0 +1,5 @@
#define F_width 5
#define F_height 7
static unsigned char F_bits[] = {
0x1f, 0x01, 0x01, 0x0f, 0x01, 0x01, 0x01};

5
src/bitmaps/G.h Normal file
View file

@ -0,0 +1,5 @@
#define G_width 5
#define G_height 7
static unsigned char G_bits[] = {
0x0e, 0x11, 0x01, 0x01, 0x19, 0x11, 0x0e};

5
src/bitmaps/H.h Normal file
View file

@ -0,0 +1,5 @@
#define H_width 5
#define H_height 7
static unsigned char H_bits[] = {
0x11, 0x11, 0x11, 0x1f, 0x11, 0x11, 0x11};

5
src/bitmaps/I.h Normal file
View file

@ -0,0 +1,5 @@
#define I_width 1
#define I_height 7
static unsigned char I_bits[] = {
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01};

5
src/bitmaps/J.h Normal file
View file

@ -0,0 +1,5 @@
#define J_width 4
#define J_height 7
static unsigned char J_bits[] = {
0x08, 0x08, 0x08, 0x08, 0x08, 0x09, 0x06};

5
src/bitmaps/K.h Normal file
View file

@ -0,0 +1,5 @@
#define K_width 5
#define K_height 7
static unsigned char K_bits[] = {
0x11, 0x09, 0x05, 0x03, 0x05, 0x09, 0x11};

5
src/bitmaps/L.h Normal file
View file

@ -0,0 +1,5 @@
#define L_width 4
#define L_height 7
static unsigned char L_bits[] = {
0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x0f};

5
src/bitmaps/M.h Normal file
View file

@ -0,0 +1,5 @@
#define M_width 5
#define M_height 7
static unsigned char M_bits[] = {
0x11, 0x1b, 0x15, 0x11, 0x11, 0x11, 0x11};

5
src/bitmaps/N.h Normal file
View file

@ -0,0 +1,5 @@
#define N_width 5
#define N_height 7
static unsigned char N_bits[] = {
0x11, 0x11, 0x13, 0x15, 0x19, 0x11, 0x11};

5
src/bitmaps/O.h Normal file
View file

@ -0,0 +1,5 @@
#define O_width 5
#define O_height 7
static unsigned char O_bits[] = {
0x0e, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e};

5
src/bitmaps/P.h Normal file
View file

@ -0,0 +1,5 @@
#define P_width 5
#define P_height 7
static unsigned char P_bits[] = {
0x0f, 0x11, 0x11, 0x0f, 0x01, 0x01, 0x01};

5
src/bitmaps/Q.h Normal file
View file

@ -0,0 +1,5 @@
#define Q_width 5
#define Q_height 7
static unsigned char Q_bits[] = {
0x0e, 0x11, 0x11, 0x11, 0x15, 0x09, 0x16};

5
src/bitmaps/R.h Normal file
View file

@ -0,0 +1,5 @@
#define R_width 5
#define R_height 7
static unsigned char R_bits[] = {
0x0f, 0x11, 0x11, 0x0f, 0x05, 0x09, 0x11};

5
src/bitmaps/S.h Normal file
View file

@ -0,0 +1,5 @@
#define S_width 5
#define S_height 7
static unsigned char S_bits[] = {
0x0e, 0x11, 0x01, 0x0e, 0x10, 0x11, 0x0e};

5
src/bitmaps/T.h Normal file
View file

@ -0,0 +1,5 @@
#define T_width 5
#define T_height 7
static unsigned char T_bits[] = {
0x1f, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04};

5
src/bitmaps/U.h Normal file
View file

@ -0,0 +1,5 @@
#define U_width 5
#define U_height 7
static unsigned char U_bits[] = {
0x11, 0x11, 0x11, 0x11, 0x11, 0x11, 0x0e};

5
src/bitmaps/V.h Normal file
View file

@ -0,0 +1,5 @@
#define V_width 5
#define V_height 7
static unsigned char V_bits[] = {
0x11, 0x11, 0x11, 0x11, 0x0a, 0x0a, 0x04};

5
src/bitmaps/W.h Normal file
View file

@ -0,0 +1,5 @@
#define W_width 5
#define W_height 7
static unsigned char W_bits[] = {
0x11, 0x11, 0x11, 0x11, 0x15, 0x1b, 0x11};

5
src/bitmaps/X.h Normal file
View file

@ -0,0 +1,5 @@
#define X_width 5
#define X_height 7
static unsigned char X_bits[] = {
0x11, 0x11, 0x0a, 0x04, 0x0a, 0x11, 0x11};

5
src/bitmaps/Y.h Normal file
View file

@ -0,0 +1,5 @@
#define Y_width 5
#define Y_height 7
static unsigned char Y_bits[] = {
0x11, 0x11, 0x0a, 0x04, 0x04, 0x04, 0x04};

5
src/bitmaps/Z.h Normal file
View file

@ -0,0 +1,5 @@
#define Z_width 5
#define Z_height 7
static unsigned char Z_bits[] = {
0x1f, 0x10, 0x08, 0x04, 0x02, 0x01, 0x1f};

6
src/bitmaps/alpha.h Normal file
View file

@ -0,0 +1,6 @@
#define alpha_width 12
#define alpha_height 10
static unsigned char alpha_bits[] = {
0x78, 0x00, 0x84, 0x08, 0x82, 0x09, 0x83, 0x05, 0x83, 0x05, 0x83, 0x03,
0x83, 0x01, 0x83, 0x01, 0x46, 0x09, 0x3c, 0x06};

5
src/bitmaps/angle.h Normal file
View file

@ -0,0 +1,5 @@
#define angle_width 8
#define angle_height 7
static unsigned char angle_bits[] = {
0x40, 0x20, 0x10, 0x28, 0x44, 0x42, 0xff};

6
src/bitmaps/angle_gx.h Normal file
View file

@ -0,0 +1,6 @@
#define angle_gx_width 12
#define angle_gx_height 12
static unsigned char angle_gx_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x80, 0x01, 0xc0, 0x00, 0xe0, 0x01,
0xb0, 0x03, 0x18, 0x03, 0x0c, 0x03, 0x06, 0x03, 0xff, 0x0f, 0xff, 0x0f};

6
src/bitmaps/ann_alpha.h Normal file
View file

@ -0,0 +1,6 @@
#define ann_alpha_width 15
#define ann_alpha_height 12
static unsigned char ann_alpha_bits[] = {
0xe0, 0x03, 0x18, 0x44, 0x0c, 0x4c, 0x06, 0x2c, 0x07, 0x2c, 0x07, 0x1c,
0x07, 0x0c, 0x07, 0x0c, 0x07, 0x0e, 0x0e, 0x4d, 0xf8, 0x38, 0x00, 0x00};

View file

@ -0,0 +1,6 @@
#define ann_battery_width 15
#define ann_battery_height 12
static unsigned char ann_battery_bits[] = {
0x04, 0x10, 0x02, 0x20, 0x12, 0x24, 0x09, 0x48, 0xc9, 0x49, 0xc9, 0x49,
0xc9, 0x49, 0x09, 0x48, 0x12, 0x24, 0x02, 0x20, 0x04, 0x10, 0x00, 0x00};

6
src/bitmaps/ann_busy.h Normal file
View file

@ -0,0 +1,6 @@
#define ann_busy_width 15
#define ann_busy_height 12
static unsigned char ann_busy_bits[] = {
0xfc, 0x1f, 0x08, 0x08, 0x08, 0x08, 0xf0, 0x07, 0xe0, 0x03, 0xc0, 0x01,
0x40, 0x01, 0x20, 0x02, 0x10, 0x04, 0xc8, 0x09, 0xe8, 0x0b, 0xfc, 0x1f};

6
src/bitmaps/ann_io.h Normal file
View file

@ -0,0 +1,6 @@
#define ann_io_width 15
#define ann_io_height 12
static unsigned char ann_io_bits[] = {
0x0c, 0x00, 0x1e, 0x00, 0x33, 0x0c, 0x61, 0x18, 0xcc, 0x30, 0xfe, 0x7f,
0xfe, 0x7f, 0xcc, 0x30, 0x61, 0x18, 0x33, 0x0c, 0x1e, 0x00, 0x0c, 0x00};

6
src/bitmaps/ann_left.h Normal file
View file

@ -0,0 +1,6 @@
#define ann_left_width 15
#define ann_left_height 12
static unsigned char ann_left_bits[] = {
0xfe, 0x3f, 0xff, 0x7f, 0x9f, 0x7f, 0xcf, 0x7f, 0xe7, 0x7f, 0x03, 0x78,
0x03, 0x70, 0xe7, 0x73, 0xcf, 0x73, 0x9f, 0x73, 0xff, 0x73, 0xfe, 0x33};

6
src/bitmaps/ann_right.h Normal file
View file

@ -0,0 +1,6 @@
#define ann_right_width 15
#define ann_right_height 12
static unsigned char ann_right_bits[] = {
0xfe, 0x3f, 0xff, 0x7f, 0xff, 0x7c, 0xff, 0x79, 0xff, 0x73, 0x0f, 0x60,
0x07, 0x60, 0xe7, 0x73, 0xe7, 0x79, 0xe7, 0x7c, 0xe7, 0x7f, 0xe6, 0x3f};

5
src/bitmaps/arrow.h Normal file
View file

@ -0,0 +1,5 @@
#define arrow_width 7
#define arrow_height 7
static unsigned char arrow_bits[] = {
0x00, 0x08, 0x18, 0x3f, 0x18, 0x08, 0x00};

7
src/bitmaps/arrow_gx.h Normal file
View file

@ -0,0 +1,7 @@
#define arrow_gx_width 18
#define arrow_gx_height 12
static unsigned char arrow_gx_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x3c, 0x00,
0x00, 0xfc, 0x00, 0xff, 0xff, 0x03, 0xff, 0xff, 0x03, 0x00, 0xfc, 0x00,
0x00, 0x3c, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

5
src/bitmaps/blank.h Normal file
View file

@ -0,0 +1,5 @@
#define blank_width 4
#define blank_height 7
static unsigned char blank_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

6
src/bitmaps/bracket_gx.h Normal file
View file

@ -0,0 +1,6 @@
#define bracket_gx_width 12
#define bracket_gx_height 12
static unsigned char bracket_gx_bits[] = {
0x0f, 0x0f, 0x03, 0x0c, 0x03, 0x0c, 0x03, 0x0c, 0x03, 0x0c, 0x03, 0x0c,
0x03, 0x0c, 0x03, 0x0c, 0x03, 0x0c, 0x03, 0x0c, 0x03, 0x0c, 0x0f, 0x0f};

6
src/bitmaps/bs.h Normal file
View file

@ -0,0 +1,6 @@
#define bs_width 11
#define bs_height 11
static unsigned char bs_bits[] = {
0x20, 0x00, 0x30, 0x00, 0x38, 0x00, 0xfc, 0x07, 0xfe, 0x07, 0xff, 0x07,
0xfe, 0x07, 0xfc, 0x07, 0x38, 0x00, 0x30, 0x00, 0x20, 0x00};

5
src/bitmaps/colon.h Normal file
View file

@ -0,0 +1,5 @@
#define colon_width 2
#define colon_height 10
static unsigned char colon_bits[] = {
0x03, 0x03, 0x03, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

5
src/bitmaps/colon_gx.h Normal file
View file

@ -0,0 +1,5 @@
#define colon_gx_width 8
#define colon_gx_height 12
static unsigned char colon_gx_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0xc3, 0xc3, 0x00, 0x00, 0xc3, 0xc3, 0x00};

5
src/bitmaps/comma.h Normal file
View file

@ -0,0 +1,5 @@
#define comma_width 3
#define comma_height 7
static unsigned char comma_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x06, 0x06, 0x03};

5
src/bitmaps/comma_gx.h Normal file
View file

@ -0,0 +1,5 @@
#define comma_gx_width 3
#define comma_gx_height 12
static unsigned char comma_gx_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07, 0x07, 0x04, 0x04, 0x02};

6
src/bitmaps/curly_gx.h Normal file
View file

@ -0,0 +1,6 @@
#define curly_gx_width 14
#define curly_gx_height 12
static unsigned char curly_gx_bits[] = {
0x0c, 0x0c, 0x06, 0x18, 0x06, 0x18, 0x06, 0x18, 0x06, 0x18, 0x03, 0x30,
0x06, 0x18, 0x06, 0x18, 0x06, 0x18, 0x06, 0x18, 0x06, 0x18, 0x0c, 0x0c};

5
src/bitmaps/diff.h Normal file
View file

@ -0,0 +1,5 @@
#define diff_width 5
#define diff_height 7
static unsigned char diff_bits[] = {
0x0e, 0x10, 0x10, 0x1e, 0x11, 0x11, 0x0e};

6
src/bitmaps/div.h Normal file
View file

@ -0,0 +1,6 @@
#define div_width 10
#define div_height 10
static unsigned char div_bits[] = {
0x30, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0x03, 0xff, 0x03,
0x00, 0x00, 0x00, 0x00, 0x30, 0x00, 0x30, 0x00};

6
src/bitmaps/down.h Normal file
View file

@ -0,0 +1,6 @@
#define down_width 11
#define down_height 11
static unsigned char down_bits[] = {
0xff, 0x07, 0xfe, 0x03, 0xfe, 0x03, 0xfc, 0x01, 0xfc, 0x01, 0xf8, 0x00,
0xf8, 0x00, 0x70, 0x00, 0x70, 0x00, 0x20, 0x00, 0x20, 0x00};

5
src/bitmaps/equal.h Normal file
View file

@ -0,0 +1,5 @@
#define equal_width 5
#define equal_height 7
static unsigned char equal_bits[] = {
0x00, 0x1f, 0x00, 0x00, 0x1f, 0x00, 0x00};

5
src/bitmaps/equal_gx.h Normal file
View file

@ -0,0 +1,5 @@
#define equal_gx_width 8
#define equal_gx_height 12
static unsigned char equal_gx_bits[] = {
0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x00};

6
src/bitmaps/exp.h Normal file
View file

@ -0,0 +1,6 @@
#define exp_width 11
#define exp_height 9
static unsigned char exp_bits[] = {
0x80, 0x04, 0x00, 0x03, 0x00, 0x01, 0x8c, 0x02, 0x52, 0x02, 0x09, 0x00,
0x07, 0x00, 0x21, 0x00, 0x1e, 0x00};

5
src/bitmaps/exp_gx.h Normal file
View file

@ -0,0 +1,5 @@
#define exp_gx_width 13
#define exp_gx_height 12
static unsigned char exp_gx_bits[] = {
0x00, 0xfb, 0x00, 0xf6, 0x00, 0xe6, 0x00, 0xf6, 0x80, 0xed, 0x18, 0xe0,
0x36, 0xe0, 0x36, 0xe0, 0x1f, 0xe0, 0x03, 0xe0, 0x13, 0xe0, 0x0e, 0xe0};

20
src/bitmaps/gx_128K_ram.h Normal file
View file

@ -0,0 +1,20 @@
#define gx_128K_ram_width 43
#define gx_128K_ram_height 31
static unsigned char gx_128K_ram_bits[] = {
0xfe, 0xdf, 0xff, 0xff, 0x03, 0x00, 0xfe, 0xdf, 0xff, 0xff, 0x03, 0x00,
0xfe, 0xdf, 0xff, 0xff, 0x03, 0x00, 0xe2, 0xdf, 0xff, 0xff, 0x03, 0x00,
0x9c, 0xdf, 0xff, 0xff, 0x03, 0x00, 0x7e, 0xdf, 0xff, 0xff, 0x01, 0x00,
0x7e, 0xdf, 0xff, 0xff, 0x01, 0x00, 0xfe, 0xde, 0xff, 0xff, 0x02, 0x00,
0xfe, 0xde, 0xff, 0xff, 0x02, 0x00, 0xfe, 0xdd, 0xff, 0x7f, 0x03, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfe, 0xdd, 0xff, 0xbf, 0x03, 0x00,
0xfe, 0xdb, 0xff, 0xdf, 0x03, 0x00, 0xfe, 0xdb, 0xff, 0xef, 0x03, 0x00,
0xfe, 0xd7, 0xff, 0xf7, 0x03, 0x00, 0xfe, 0xcf, 0xff, 0xfb, 0x03, 0x00,
0xfe, 0xcf, 0xff, 0xfc, 0x03, 0x00, 0xfe, 0x1f, 0x3f, 0xff, 0x03, 0x00,
0xfe, 0xdf, 0xc0, 0xff, 0x03, 0x00, 0xfe, 0xdf, 0xff, 0xff, 0x03, 0x00,
0xfe, 0xdf, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xc4, 0x30, 0x12, 0x1c, 0x44, 0x04,
0x27, 0x49, 0x0a, 0x24, 0x46, 0x04, 0x84, 0x39, 0x06, 0x24, 0xc9, 0x06,
0x62, 0x24, 0x07, 0x9e, 0xaf, 0x06, 0x12, 0x24, 0x09, 0x92, 0xa8, 0x05,
0xf2, 0x18, 0x11, 0x52, 0x28, 0x05};

14
src/bitmaps/gx_green.h Normal file
View file

@ -0,0 +1,14 @@
#define gx_green_width 34
#define gx_green_height 22
static unsigned char gx_green_bits[] = {
0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff, 0xff, 0xff, 0x03, 0xff, 0xff,
0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff,
0x03, 0xff, 0xff, 0xff, 0xff, 0x03, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00,
0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00, 0xfc, 0x03, 0x00, 0x00, 0x00,
0xf0, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x03,
0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00,
0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0xf0,
0x03, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00,
0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00, 0xf0, 0x03, 0x00, 0x00, 0x00,
0xf0, 0x03};

13
src/bitmaps/gx_silver.h Normal file
View file

@ -0,0 +1,13 @@
#define gx_silver_width 35
#define gx_silver_height 21
static unsigned char gx_silver_bits[] = {
0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x00, 0x40,
0x00, 0x00, 0x00, 0x38, 0x40, 0x00, 0x00, 0x00, 0xc4, 0x40, 0x00, 0x00,
0x00, 0x02, 0x41, 0x00, 0x00, 0x04, 0x02, 0x41, 0x00, 0x00, 0x04, 0x02,
0x42, 0x00, 0x00, 0x02, 0x01, 0x42, 0x00, 0x00, 0x02, 0x01, 0x44, 0x00,
0x00, 0x01, 0xfd, 0xff, 0xff, 0xff, 0x07, 0x01, 0x44, 0x00, 0x80, 0x00,
0x01, 0x48, 0x00, 0x40, 0x00, 0x01, 0x48, 0x00, 0x20, 0x00, 0x00, 0x50,
0x00, 0x10, 0x00, 0x00, 0x60, 0x00, 0x08, 0x00, 0x00, 0x60, 0x00, 0x06,
0x00, 0x00, 0xc0, 0x81, 0x01, 0x00, 0x00, 0x40, 0x7e, 0x00, 0x00, 0x00,
0x40, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00};

5
src/bitmaps/hash.h Normal file
View file

@ -0,0 +1,5 @@
#define hash_width 5
#define hash_height 7
static unsigned char hash_bits[] = {
0x00, 0x0a, 0x1f, 0x0a, 0x0a, 0x1f, 0x0a};

5
src/bitmaps/hash_gx.h Normal file
View file

@ -0,0 +1,5 @@
#define hash_gx_width 8
#define hash_gx_height 12
static unsigned char hash_gx_bits[] = {
0x00, 0x00, 0x48, 0x48, 0xfe, 0x24, 0x24, 0x7f, 0x12, 0x12, 0x00, 0x00};

28
src/bitmaps/hp.h Normal file
View file

@ -0,0 +1,28 @@
#define hp_width 96
#define hp_height 24
static unsigned char hp_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xf8, 0x9f, 0xfd, 0x3f, 0x60, 0xcc, 0x6f, 0x66, 0x83, 0xdf, 0xff, 0x3f,
0xfc, 0x9f, 0xf1, 0x7f, 0x60, 0xcc, 0x60, 0x66, 0x83, 0x01, 0x06, 0x06,
0xfc, 0xc7, 0xc0, 0x7f, 0x60, 0xcc, 0x60, 0x66, 0x83, 0x01, 0x06, 0x06,
0xfc, 0xc3, 0x80, 0x7f, 0x60, 0xcc, 0x40, 0x26, 0x83, 0x01, 0x06, 0x06,
0xfc, 0x61, 0x00, 0x7f, 0xe0, 0xcf, 0xcf, 0x36, 0x83, 0x1f, 0x06, 0x06,
0xfc, 0x60, 0x00, 0x7e, 0x60, 0xcc, 0xc0, 0x36, 0x83, 0x01, 0x06, 0x06,
0xfc, 0x30, 0x00, 0x7e, 0x60, 0xcc, 0x80, 0x19, 0x83, 0x01, 0x06, 0x06,
0x7c, 0xb0, 0x68, 0x7c, 0x60, 0xcc, 0x80, 0x19, 0x83, 0x01, 0x06, 0x06,
0x7c, 0xf8, 0xf9, 0x7c, 0x60, 0xcc, 0x8f, 0x19, 0xbf, 0x1f, 0x06, 0x06,
0x7c, 0x98, 0xcd, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7c, 0xcc, 0xcc, 0x7c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x7c, 0xcc, 0x66, 0x7c, 0xe0, 0x87, 0x81, 0x67, 0x0c, 0xc3, 0xcf, 0x0f,
0x7c, 0x66, 0x66, 0x7c, 0x60, 0xcc, 0xc3, 0x6c, 0x86, 0xc7, 0xd8, 0x18,
0x7c, 0x66, 0x3f, 0x7e, 0x60, 0x4c, 0x62, 0x60, 0x83, 0xc4, 0xd8, 0x30,
0xfc, 0x00, 0x03, 0x7e, 0x60, 0x6c, 0x66, 0xe0, 0xc1, 0xcc, 0xd8, 0x30,
0xfc, 0x80, 0x01, 0x7f, 0xe0, 0x67, 0x66, 0xe0, 0xc1, 0xcc, 0xcf, 0x30,
0xfc, 0x81, 0x81, 0x7f, 0x60, 0xe0, 0x67, 0x60, 0xc3, 0xcf, 0xcc, 0x30,
0xfc, 0xc3, 0xc0, 0x7f, 0x60, 0x30, 0x6c, 0x60, 0x66, 0xd8, 0xd8, 0x30,
0xfc, 0xcf, 0xf0, 0x7f, 0x60, 0x30, 0xcc, 0x6c, 0x6c, 0xd8, 0xd8, 0x18,
0xf8, 0x6f, 0xfe, 0x3f, 0x60, 0x30, 0x8c, 0x67, 0x78, 0xd8, 0xd8, 0x0f,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

9
src/bitmaps/hp48_blue.h Normal file
View file

@ -0,0 +1,9 @@
#define hp48_blue_width 5
#define hp48_blue_height 57
static unsigned char hp48_blue_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0x1c};

26
src/bitmaps/hp48_bottom.h Normal file
View file

@ -0,0 +1,26 @@
#define hp48_bottom_width 32
#define hp48_bottom_height 64
static unsigned char hp48_bottom_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xff, 0xff, 0xff, 0xff, 0x63, 0x8c, 0x31, 0xc6, 0x63, 0x8c, 0x31, 0xc6,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0x8c, 0x31, 0xc6,
0x63, 0x8c, 0x31, 0xc6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x63, 0x8c, 0x31, 0xc6, 0x63, 0x8c, 0x31, 0xc6, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x03, 0x8c, 0x31, 0xc6, 0x03, 0x8c, 0x31, 0xc6,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0x30, 0x0c, 0xc3,
0xe3, 0x30, 0x0c, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xe3, 0x30, 0x0c, 0xc3, 0xe3, 0x30, 0x0c, 0xc3, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xe3, 0x30, 0x0c, 0xc3, 0xe3, 0x30, 0x0c, 0xc3,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0x30, 0x0c, 0xc3,
0xe3, 0x30, 0x0c, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff};

11
src/bitmaps/hp48_disp.h Normal file
View file

@ -0,0 +1,11 @@
#define hp48_disp_width 29
#define hp48_disp_height 21
static unsigned char hp48_disp_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xf8, 0xff, 0xff, 0x1f,
0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f,
0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f,
0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f,
0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f, 0xf8, 0xff, 0xff, 0x1f};

View file

@ -0,0 +1,23 @@
#define hp48_green_gx_width 29
#define hp48_green_gx_height 57
static unsigned char hp48_green_gx_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e,
0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00};

26
src/bitmaps/hp48_icon.h Normal file
View file

@ -0,0 +1,26 @@
#define hp48_icon_width 32
#define hp48_icon_height 64
static unsigned char hp48_icon_bits[] = {
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x07, 0xe0, 0xff, 0xff,
0x07, 0xe0, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x07, 0xff, 0x01, 0xe0, 0xff, 0xff, 0xff, 0xff, 0x07, 0x00, 0x00, 0xe0,
0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0,
0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0,
0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0,
0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0, 0x07, 0x00, 0x00, 0xe0,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x63, 0x8c, 0x31, 0xc6, 0x63, 0x8c, 0x31, 0xc6, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x63, 0x8c, 0x31, 0xc6, 0x63, 0x8c, 0x31, 0xc6,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0x63, 0x8c, 0x31, 0xc6,
0x63, 0x8c, 0x31, 0xc6, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0x63, 0x8c, 0x31, 0xc6, 0x63, 0x8c, 0x31, 0xc6, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0x03, 0x8c, 0x31, 0xc6, 0x03, 0x8c, 0x31, 0xc6,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0x30, 0x0c, 0xc3,
0xe3, 0x30, 0x0c, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xe3, 0x30, 0x0c, 0xc3, 0xe3, 0x30, 0x0c, 0xc3, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff, 0xe3, 0x30, 0x0c, 0xc3, 0xe3, 0x30, 0x0c, 0xc3,
0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xe3, 0x30, 0x0c, 0xc3,
0xe3, 0x30, 0x0c, 0xc3, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff,
0xff, 0xff, 0xff, 0xff};

25
src/bitmaps/hp48_keys.h Normal file
View file

@ -0,0 +1,25 @@
#define hp48_keys_width 30
#define hp48_keys_height 61
static unsigned char hp48_keys_bits[] = {
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x9c, 0x73, 0xce, 0x39, 0x9c, 0x73, 0xce, 0x39, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x9c, 0x73, 0xce, 0x39, 0x9c, 0x73, 0xce, 0x39,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x9c, 0x73, 0xce, 0x39,
0x9c, 0x73, 0xce, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x9c, 0x73, 0xce, 0x39, 0x9c, 0x73, 0xce, 0x39, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0xfc, 0x73, 0xce, 0x39, 0xfc, 0x73, 0xce, 0x39,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xcf, 0xf3, 0x3c,
0x1c, 0xcf, 0xf3, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0xcf, 0xf3, 0x3c, 0x00, 0xcf, 0xf3, 0x3c, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0xcf, 0xf3, 0x3c, 0x00, 0xcf, 0xf3, 0x3c,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1c, 0xcf, 0xf3, 0x3c,
0x1c, 0xcf, 0xf3, 0x3c};

Some files were not shown because too many files have changed in this diff Show more