c3ab4004ad
Signed-off-by: Gwenhael Le Moine <gwenhael.le.moine@gmail.com>
239 lines
7.9 KiB
Text
239 lines
7.9 KiB
Text
|
|
Emu48 - an HP48 emulator
|
|
Copyright (C) 1995 Sebastien Carlier (sebc@cybera.anet.fr)
|
|
|
|
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.
|
|
|
|
Emu48 - an HP48 emulator
|
|
========================
|
|
|
|
This is Emu48, another HP48 CPU emulator. This is Version 0.37
|
|
It's at least 25% faster than a real HP48GX on an Intel DX2-66,
|
|
and it's very small. Though I did nothing to allow that, Emu48
|
|
can emulate BOTH HP48G/GX and HP48S/SX. You've just to give it
|
|
the proper rom dump file.
|
|
Emu48 is now compatible with Emul48 rom and ram files, but it
|
|
will always write them in its own style.
|
|
|
|
|
|
|
|
|
|
NOTE (from x48 by Eddie C. Dost, 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
|
|
=======
|
|
|
|
Thanks to all these friendly guys I met on the #hp48 channel on IRC :
|
|
alonzo (Alonzo Gariepy - helped a lot in optimizing Emu48)
|
|
fin (Mika Heiskanen - his Jazz is great)
|
|
moyer |
|
|
BeeF | helpful ideas, documentations, testing programs...
|
|
hideki |
|
|
and the others I might have forgotten.
|
|
|
|
Some parts of this README come from x48 README by Eddie C. Dost.
|
|
|
|
|
|
COMPILING THE SOURCES
|
|
=====================
|
|
|
|
Copy the proper makefile into the main directory and run 'make'.
|
|
|
|
Supported plateforms :
|
|
Linux/svgalib
|
|
MsDos/go32
|
|
MsDos/PharLap
|
|
Windows 95/NT
|
|
|
|
|
|
|
|
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
|
|
==================
|
|
|
|
* Press the RIGHT Control key to quit the emulator.
|
|
* Press the RIGHT Alt key to quit the emulator WITHOUT SAVING its state.
|
|
* If(When?) the emulator crashes, quit it with [RightCtrl], and run
|
|
emu48 -W
|
|
If it doesn't work, try using -WC instead of -W.
|
|
If this fails, delete the file named 'saturn' and run emu48.
|
|
|
|
|
|
USING RAM CARDS
|
|
===============
|
|
|
|
To get a RAM card, just create files named 'port1' and 'port2' with
|
|
something like this :
|
|
echo > port1
|
|
or echo > port2
|
|
|
|
You can now create files named 'port2.1', 'port2.2'...'port2.31' to have
|
|
a card bigger than 128k in port 2.
|
|
|
|
|
|
KEYBOARD SUPPORT
|
|
================
|
|
|
|
ON = Esc
|
|
A = A, Insert B = B, Home
|
|
C = C, PageUp D = D, Delete
|
|
E = E, End F = F, PageDown
|
|
G,MTH = G H,PRG = H
|
|
I,CST = I J,VAR = J
|
|
K,UP = K, Up Arrow L,NXT = L
|
|
M,' = M, ' N,STO = N
|
|
O,EVAL = O P,LEFT = P, Left Arrow
|
|
Q,DOWN = Q, Down Arrow R,RIGHT= E, Right Arrow
|
|
S,SIN = S T,COS = T
|
|
U,TAN = U V,SQRT = V
|
|
W,Y^X = W X,1/X = X
|
|
ENTER = ENTER Y,+/- = Y
|
|
Z,EEX = Z DEL = Keypad Del
|
|
<= = BackSpace ALPHA = Left Shift, Right Shift
|
|
<~| = Left Crtl |~> = Left Alt
|
|
0 = 0, Keypad 0 1 = 1, Keypad 1
|
|
2 = 2, Keypad 2 3 = 3, Keypad 3
|
|
4 = 4, Keypad 4 5 = 5, Keypad 5
|
|
6 = 6, Keypad 6 7 = 7, Keypad 7
|
|
8 = 8, Keypad 8 9 = 9, Keypad 9
|
|
. = . SPC = Space
|
|
/ = /, Keypad / * = Keypad *
|
|
- = -, Keypad - + = Keypad +
|
|
|
|
|
|
TALKING TO THE OUTSIDE WORLD
|
|
============================
|
|
|
|
* To load a kermit file from disk, name it as 'port1' in the directory
|
|
in which the emulator is. Then run the emulator, type the following
|
|
program and store it as 'GET1' :
|
|
|
|
<< GROB 8 3 0100C0 #4017h SYSEVAL #56B6h SYSEVAL DROP NEWOB >>
|
|
|
|
When you execute this program, it will put on the stack the content
|
|
of the file you renamed as 'port1'.
|
|
This works only for binary files.
|
|
|
|
* Serial ports aren't emulated. Instead, the XMIT command will write
|
|
its output to a file named 'wire'. You can use the 'SND.PRG' file
|
|
along with the DEV library (download them 'GET1') to send an object
|
|
on the stack to the file 'wire', which will be exactly like a kermit
|
|
binary file. You must quit the emulator and rename 'wire' before
|
|
sending another file, otherwise you'll only be able to recover the
|
|
first file.
|
|
|
|
|
|
KNOWN BUGS
|
|
==========
|
|
|
|
Timer handling isn't really good. I'm fixing that.
|
|
|
|
I must also provide different keyboard mappings.
|
|
|
|
Someone told me Emu48 didn't display anything on his computer. This should
|
|
be checked.
|
|
|
|
|
|
|
|
ACCESS TO THE AUTHOR
|
|
====================
|
|
|
|
Please send any bug reports, context-diffs or suggestions to
|
|
|
|
sebc@cybera.anet.fr
|
|
|
|
Sebastien Carlier
|
|
10, Allee des bergeronnettes
|
|
35340 LIFFRE
|
|
FRANCE
|