{"id":264,"date":"2013-05-02T12:37:08","date_gmt":"2013-05-02T12:37:08","guid":{"rendered":"http:\/\/www.flagsoft.com\/cmswp\/?page_id=264"},"modified":"2019-08-07T14:36:34","modified_gmt":"2019-08-07T12:36:34","slug":"hp48-emulator","status":"publish","type":"page","link":"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/","title":{"rendered":"HP48 Emulator"},"content":{"rendered":"<p>[Dieser Artikel erschien im Linux-Magazin 1997, Autor des Textes ist Michael Mustun.]<\/p>\n<p>HP48 Emulator<\/p>\n<h2>Nacheiferer 4<\/h2>\n<hr noshade=\"noshade\" \/>\n<p><i><span style=\"color: #0000ff;\"> x48 emuliert einen HP48 Taschenrechner. Was f\u00fcr Stolpersteine einem bei der Inbetriebnahme dieses Emulators begegnen k\u00f6nnen, und was man mit dem Taschenrechner der Taschenrechner sonst noch so machen kann, ist hier zu lesen. <\/span><\/i><\/p>\n<hr noshade=\"noshade\" \/>\n<p>&nbsp;<\/p>\n<p><strong>UPDATE:<\/strong><\/p>\n<p>Super Anlei\u00adtung \u2014 herz\u00adli\u00adchen\u00a0Dank!<\/p>\n<p>Lei\u00adder hat sich in den letz\u00adten 7 Jah\u00adren Eini\u00adges ge\u00e4n\u00addert, auch x48 hat inzwi\u00adschen die Ver\u00adsi\u00adons\u00adnum\u00admer 0.6.4. erreicht. Der Weg, den Source Code zu kom\u00adpi\u00adlie\u00adren, ist ganz ein\u00adfach, aber v\u00f6l\u00adlig anders als in der README-Datei bzw. hier beschrie\u00adben. Unter Kubuntu 14.04 <span class=\"caps\">LTS<\/span> muss erst ein\u00admal autoconf2.13 instal\u00adliert wer\u00adden, dann geht es\u00a0los:<\/p>\n<p>1) Paket her\u00adun\u00adter\u00adla\u00adden [1] und ent\u00adpa\u00adcken<br \/>\n.<br \/>\n2) Im neuen Ver\u00adzeich\u00adnis kompilieren:<\/p>\n<p>.\/autogen.sh<br \/>\n.\/configure<br \/>\nmake<br \/>\nsudo make install<\/p>\n<p>3) Rom Datei installieren<\/p>\n<p>Die gew\u00fcnschte Rom-Datei nach ~.\/hp48 als \u2018rom\u2019 kopieren.<\/p>\n<p>4) Reset vor dem ers\u00adten Pro\u00adgramm\u00adstart<br \/>\nx48 \u2013reset \u2013initia\u00adlize \u2013rom ~\/.hp48\/rom<\/p>\n<p>Fer\u00adtig!<\/p>\n<p>1: <a href=\"http:\/\/sourceforge.net\/projects\/x48.berlios\/files\/x48-0.6.4.tar.bz2\/download\" rel=\"nofollow\">http:\/\/sourceforge.net\/projects\/x48.berlios\/files\/x48-0.6.4.tar.bz2\/download<\/a><\/p>\n<p>Quelle: http:\/\/www.flagsoft.com\/cmswp\/en\/1997\/01\/01\/hp48-emulator\/<\/p>\n<p>---<\/p>\n<p>However, I was trying to compile it on OS X but with no luck, getting this error:<\/p>\n<pre>debugger.c:1588:3: error: non-void function 'get_stack' should return a value [-Wreturn-type]\r\n\u00a0 return;\r\n\u00a0 ^<\/pre>\n<p>---<\/p>\n<p>&nbsp;<\/p>\n<p>Wer kennt ihn nicht -- den HP48 Taschenrechner. Doch wie man eine 128K RAM Karte baut, den Rechner in Assembler, RPL oder C programmiert, oder gar den Rechner \u00f6ffnet -- das alles und mehr ist im Internet zu finden (s. Tabelle <i>Infos und Quellen rund um den HP48<\/i>) und d\u00fcrfte so manchen Hunger nach mehr Informationen und Daten zu diesem Klassiker unter den Taschenrechner stillen.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-397 size-full\" src=\"http:\/\/www.flagsoft.com\/cmswp\/wp-content\/uploads\/1997\/01\/x48-scr1.jpg\" alt=\"&lt;br \/&gt;&lt;br \/&gt; &lt;pre&gt;[cml_media_alt id='397']x48-scr1[\/cml_media_alt]\" width=\"464\" height=\"498\" srcset=\"https:\/\/www.flagsoft.com\/cmswp\/wp-content\/uploads\/1997\/01\/x48-scr1.jpg 464w, https:\/\/www.flagsoft.com\/cmswp\/wp-content\/uploads\/1997\/01\/x48-scr1-279x300.jpg 279w\" sizes=\"auto, (max-width: 464px) 100vw, 464px\" \/><br \/>\n<b><span style=\"font-size: small;\">Abbildung 1: Nur eine der vielen Web-Seiten \u00fcber den HP48...<\/span><\/b><\/p>\n<p>Oder wie w\u00e4re es mit einer kompletten Emulation auf Ihrem Linux Rechner? x48 ist ein solcher Emulator. Er emuliert einen Hewlett-Packards HP48 S\/SX oder G\/GX, je nach Wunsch (genauer: je nach ROM-Datei). Dieser Artikel beschreibt nebst der Beschaffung der Quellen, Kompilierung, Installation und Konfiguration auch die T\u00fccken, die einem dabei \u00fcber Weg laufen k\u00f6nnen.<\/p>\n<p>Unterst\u00fctzt wird:<\/p>\n<ul>\n<li>HP48 S\/SX und G\/GX<\/li>\n<li>Erweiterungs-Karten (128K oder 32K auf dem SX, bis 4M auf dem GX)<\/li>\n<li>der serielle Port des x48 geht auf das Filesystem<\/li>\n<li>die IR-Schnittstelle des x48 geht auf die serielle Leitung des PC's (Einschr\u00e4nkung auf max. 2400 Baud)<\/li>\n<li>Sound (nur \u00fcber eine Soundkarte?)<\/li>\n<\/ul>\n<p>Nicht unterst\u00fctzt wird:<\/p>\n<ul>\n<li>?<\/li>\n<\/ul>\n<p>Ben\u00f6tigt wird:<\/p>\n<ul>\n<li>Ihr HP Taschenrechner f\u00fcr die ROM-Datei<\/li>\n<li>X-Window-System (X11)<\/li>\n<li>Ein serielles Kabel f\u00fcr die Daten\u00fcbertragung (Wer noch eine serielles Kabel braucht, findet unter [1] eine gute Bauanleitung.)<\/li>\n<\/ul>\n<p>(\u00dcbrigens, ein HP48 Emulator gibt's nicht nur f\u00fcr Unix-Systeme, Emu48 ist z.B. eine Version f\u00fcr DOS\/Windows....aber wir interessieren uns hier nat\u00fcrlich f\u00fcr die Version unter Linux... \ud83d\ude42<\/p>\n<h3>Installation<\/h3>\n<p>Zuerst muss man sich den Quellcode beschaffen. Die Quellen findet man unter <i>ftp:\/\/www.sunsite.unc.edu<\/i> im Verzeichnis <i>\/pub\/Linux\/system\/Emulators\/<\/i>, oder entsprechend auf den Sunsite-Mirrors.<br \/>\nNach dem Download kann die Datei <i>x48-0.4.0.tar.gz<\/i> mit <i>tar xzfv x48-0.4.0.tar.gz<\/i> entpackt werden. Weiter sollte man noch ein chown und chgrp ausf\u00fchren, <i># chown -R root x48-0.4.0<\/i>, <i>chgrp -R root x48-0.4.0<\/i> erledigt das.<\/p>\n<p>Im Verzeichnis 'x48-0.4.0' muss die Datei <i>config.h<\/i> editiert werden. Hier werden Compiler-Flags, aber vor allem das Betriebssystem eingestellt.<\/p>\n<p>Datei <i>config.h<\/i><\/p>\n<pre>\/*\r\n * If you have class (hp48 assembler), \r\n * uncomment the following line\r\n *\/\r\n\/* #define HAVE_CLASS *\/\r\n\r\n\/*\r\n * If you don't have the XShm extension, \r\n * comment the following line\r\n *\/\r\n\/* #define HAVE_XSHM *\/\r\n\r\n\/*\r\n * Which OS are you on?\r\n *\/\r\n#define UNIX_DEF -DLINUX\r\n\/* #define UNIX_DEF -DSOLARIS *\/\r\n\/* #define UNIX_DEF -DSUNOS *\/\r\n\/* #define UNIX_DEF -DIRIX *\/\r\n\/* #define UNIX_DEF -DHPUX *\/<\/pre>\n<p>Die Eingabe von<\/p>\n<pre>  1. xmkmf\r\n  2. make<\/pre>\n<p>im Verzeichnis 'x48-0.4.0' unter X-Window erzeugt den Emulator <i>x48<\/i>, den ASCII-ROM-file-to-bin-file Converter <i>dump2rom<\/i> und das ROM-Checkprogramm <i>checkrom<\/i>; weiter das Hilfprogramm f\u00fcr die Erweiterungskarten <i>mkcard<\/i>.<\/p>\n<p>Schon nach kurzer Zeit l\u00e4uft make mit der Fehlermeldung<\/p>\n<pre>cd src ; make all\r\nmake[1]: Entering directory `\/tmpinst\/ \\\r\n  Emulators\/x48-0.4.0\/src'\r\nMakefile:581: *** missing separator.  Stop.\r\nmake[1]: Leaving directory `\/tmpinst\/ \\\r\n  Emulators\/x48-0.4.0\/src'\r\nmake: *** [all] Error 2<\/pre>\n<p>in den Hammer. Offensichlich liegt ein Bug im automatisch erzeugten \"\/src\/Makefile\" vor. Wir schauen nach und finden die Zeilen:<\/p>\n<pre>577 $(BIN)\/mkcard: $(OBJS4) $(DEPLIBS4)\r\n578         $(RM) $@\r\n579         $(CC) -o $@ $(LDOPTIONS) \\\r\n  $(OBJS4) $(LDLIBS)  $(EXTRA_LOAD_FLAGS)\r\n580\r\n581 SaberProgramTarget($(BIN)\/mkcard, \\\r\n  $(SRCS4),$(OBJS4),,)\r\n582<\/pre>\n<p>In Zeile 581 fehlt ein Doppelpunkt nach \"SaberProgramTarget\". Wir korrigieren den Fehler aber nicht im Makefile; denn schon die \"\/src\/Imakefile\" Datei k\u00f6nnte falsch sein. Also suchen wir nach 'SaberProgramTarget'. Wir werden f\u00fcndig:<\/p>\n<pre>98 #ifndef ComplexProgramTarget_4\r\n99 #define ComplexProgramTarget_4(program, \\\r\n  locallib,syslib)  @@\\\r\n100 program: $(OBJS4) $(DEPLIBS4)   @@\\\r\n101         RemoveTargetProgram($@) @@\\\r\n102         $(CC) -o $@ $(LDOPTIONS) \\\r\n  $(OBJS4) locallib $(LDLIBS) syslib \\\r\n  $(EX TRA_LOAD_FLAGS) @@\\\r\n103                                 @@\\\r\n104 SaberProgramTarget(program,$(SRCS4), \\\r\n  $(OBJS4),locallib,syslib) @@\\\r\n105                                   @@\\\r\n106 InstallProgram(program,$(BINDIR)) @@\\\r\n107 InstallManPage(program,$(MANDIR))\r\n108 #endif \/* ComplexProgramTarget_4 *\/<\/pre>\n<p>Nach \"SaberProgramTarget\" muss ein Doppelpunkt (:) gefolgt von mindestens einem Leerzeichen eingef\u00fcgt werden. Die neue Zeile heisst jetzt:<\/p>\n<pre>104 SaberProgramTarget:\t  (program,$(SRCS4), \\\r\n  $(OBJS4),locallib,syslib) @@\\<\/pre>\n<p>Nach diesen Korrekturen und nochmaligem 'xmkmf' und 'make' wird alles \u00fcbersetzt.<\/p>\n<p>Nun muss alles noch an den richtigen Ort. <i>make -n install<\/i> liefert schon mal, wo das Programm \u00fcberall Dateien hinkopiert, ohne dabei eine Aktion auszuf\u00fchren. Die Bin\u00e4rdateien k\u00e4men ins Verzeichnis '\/usr\/X11R6\/bin', und die globale Application-Default-Datei w\u00fcrde mit den Permission Bits 0444 ins '\/usr\/X11R6\/lib\/X11\/app-defaults\/X48' Verzeichnis kopiert. Ist man damit einverstanden, kann der x48 mit <i>make install<\/i> installiert werden.<br \/>\nMit der Eingabe von <i># make -n install BINDIR=\/usr\/local\/bin<\/i> kann ein anderes Installations-Verzeichnis angegeben werden.<\/p>\n<p>Wir w\u00e4hlen aber mal die Installation von Hand. Die bietet n\u00e4hmlich den Vorteil, alle Dateien von einem Programm in einem Verzeichnis zu haben-- - wenn das Programm einen Update erhalten soll, so gen\u00fcgt ein Anpassen der Links.<\/p>\n<ul>\n<li>Alles wird ins Verzeichnis '\/usr\/local\/x48\/' kopiert.<\/li>\n<li>Danach werden die gew\u00fcnschten Permission Bits gesetzt.<\/li>\n<li>Nun m\u00fcssen noch ein paar Links gemacht werden:\n<ul>\n<li>'cd \/usr\/local\/bin\/', 'ln -s \/usr\/local\/x48\/bin\/x48', dasselbe f\u00fcr 'checkrom', 'dump2rom' und 'mkcard'<\/li>\n<li>und mit 'cd \/usr\/X11R6\/lib\/X11\/app-defaults\/', 'ln -s \/usr\/local\/x48\/src\/X48.ad X48' f\u00fcr die Application Default Datei.<\/li>\n<\/ul>\n<\/li>\n<li>fertig!<\/li>\n<\/ul>\n<p>Wer nicht selber kompilieren will, findet unter [2] die Linux-ELF Version.<\/p>\n<p>F\u00fcr den Betrieb der seriellen Schnittstelle m\u00fcssen noch Eintr\u00e4ge in der Datei '.Xdefaults' (oder jenachdem, in welcher Datei die eigenen Resourceneinstellungen vorgenommen werden) konfiguriert werden. Mit <i>xrdb -merge .Xdefaults<\/i> werden die Eintr\u00e4ge aktiv.<\/p>\n<pre>x48*useSerial:  True\r\nx48*serialLine: \/dev\/ttyS0\r\n  ; your serial device here, this\r\n  ; looks good for Linux.<\/pre>\n<p>F\u00fcr weitere Infos schaue man in der Datei <i>x48-0.4.0\/src\/X48.ad<\/i> nach.<\/p>\n<h3>ROM Dump...<\/h3>\n<p>Nun ben\u00f6tigen wir noch das ROM-Dump. Das wird mit dem mitgeliefertem Program <i>ROMDump<\/i> im Verzeichnis 'romdump' erledigt. Dieses Programm wird auf den HP geladen. Dann wird auf dem PC ein Kermit-Programm mit der \u00dcbertragunsrate von 9600 Baud gestartet, weiter m\u00fcssen die empfangenen Daten mit <i>log session<\/i> in eine ASCII-Datei gespeichert werden. Um ein Verbindungsaufbau von Seiten PC zu starten, muss noch <i>connect<\/i> eingegeben werden.<\/p>\n<p>Auf dem HP kann nun mit der Eingabe von <i>#0h #7FFFFh ROMDump<\/i> (HP48 S\/SX) oder <i>#0h #FFFFFh ROMDump<\/i> (HP48 G\/GX) der Vorgang gestartet werden. Eine Wartezeit von ca. 30 Minuten ist nun angesagt...<br \/>\nNach der \u00dcbertragung kann die Verbindung abgebrochen werden. Der ROM-Dump sollte nun in der Datei <i>session.log<\/i> sein. Diese Datei hat etwa folgenden Inhalt:<\/p>\n<pre>#00000:2369B108DADF1008\r\n...\r\n(und so weiter...)<\/pre>\n<p>Diese ASCII-Datei kann dann mit dem Programm-Aufruf <i>dump2rom session.log<\/i> in (endlich) eine f\u00fcr den Emulator lesbare bin\u00e4re ROM-Dump Datei namens <i>rom.dump<\/i> konvertiert werden.<\/p>\n<p>Gesagt getan. Das Programm <i>#0h #7FFFFh ROMDump<\/i> kommt aber nur von <i>#0h<\/i> bis <i>#03F0h<\/i>... (ein Programmfehler?!)<br \/>\nNun, es gibt auch eine HP interne Routine, die eingentlich dasselbe erledigt (nur etwas langsamer wegen den Bildschirmausgaben). Und das geht so:<br \/>\nDie Tastenkombination [on] + [D] versetzt den HP in einen 'speziellen' Modus (Aber Achtung! Bitte vorher alle Daten sichern!). Weiter geht's mit [(backspace)]. Nun sieht man etwa folgendes:<\/p>\n<pre>705D9:1B8DB178E5A111B6<\/pre>\n<p>Links neben dem Doppelpunkt steht die Adresse, rechts die Bytes. Mit der Taste [del] kann die Adresse auf C0000 eingestellt werden. Nun muss mit der Taste [(pfeil-nach-unten)] die Adresse auf 00000 eingestellt werden. Die Taste \".\" (Punkt) wird die aktuelle Zeile gesendet; mit der Taste [spc] (Space) wird ab der aktuellen Zeile gesendet...bis mit \"on\" + c c [sic!] unterbrochen wird. Allerdings stopt der Prozess alle paar Minuten -- ein Druck auf die Taste [spc] macht aber brav weiter... Hat man alle gew\u00fcnschten Bytes, so kann die Verbindung abgebrochen werden. Endlich haben wir die ASCII-ROM-Datei! Aber auch das Programm 'dump2rom' macht Probleme. Die Eingabe <i>dump2rom session.log<\/i> endet mit einem einer Fehlermeldung. Wieso? Weil die Datei nicht unter Linux, sondern mit einem Kermit Programm unter DOS empfangen wurde, enth\u00e4lt die ASCII-Datei noch nach jeder Zeile ein CR (Carriage Return, Hex 0Dh). Dieses Byte muss weg. Das geht so:<\/p>\n<pre># cat session.log | tr \"\\r\" \"x\" &gt; session2.log\r\n# sed -e 's\/x\/\/' session2.log &gt; session3.log<\/pre>\n<p>(Nat\u00fcrlich w\u00e4hre das alles nicht n\u00f6tig gewesen, wenn wir direkt unter Linux mit kermit die ASCII-Datei empfangen h\u00e4tten --aber eben-- wenn es sein muss, geht's auch so...).<br \/>\nDie cat-tr Zeile ersetzt jedes DOS CR (=0x0d) in ein 'x'. Die sed Zeile l\u00f6scht dieses 'x'. Das Ergebnis ist eine 'reine' Unix ASCII-Datei mit Zeilenabschlusszeichen LF (=0x0a).<br \/>\n(PS: Ein WinNT Anwender m\u00fcsste hier wohl passen...)<br \/>\nNun kann mit <i>dump2rom session3.log<\/i> die fertige Datei 'rom.dump' erstellt werden.<\/p>\n<p>Den ROM-Dump kann man nun auch noch gleich mit <i>checkrom rom.dump<\/i> auf Korrektheit \u00fcberpr\u00fcfen. Das sieht so aus (abh\u00e4ngig von der ROM-Version):<\/p>\n<pre># .\/checkrom rom.dump\r\nROM Version is HP48-J\r\nROM CRC reads 0x9602\r\nIROM OK: ROM CRC test passed.\r\n#<\/pre>\n<p>Wenn alles ok ist, muss die ROM-Dump Datei ins 'bin' Verzeichnis des Emulators kopiert werden.<\/p>\n<p>RAM-Karten standen dem Autor nicht zur Verf\u00fcgung, aber soviel sei doch gesagt: Um eine RAM Karte zu benutzen (128K oder 32K auf dem SX, bis 4M auf dem GX), wird mit dem Programm <i>mkcard<\/i> eine Datei <i>port1<\/i> bzw. <i>port2<\/i> erstellt und ins Verzeichnis ~\/.hp48\/ kopiert. x48 erkennt dann diese 'Erweiterunskarten' automatisch.<br \/>\nF\u00fcr ROM-Karten gilt dasselbe wie f\u00fcr RAM-Karten, nur dass hier noch mit <i>chmod 444 $HOME\/.hp48\/port1<\/i> die Datei auf 'alle-nur-read-only' gesetzt werden muss. x48 behandelt dann diese Datei gewissermassen als ROM.<\/p>\n<p>&nbsp;<\/p>\n<h3>Der erste Start...<\/h3>\n<p>Gestartet wird x48 mit der Eingabe von <i>x48<\/i>, oder mit der expliziten Angabe einer ROM-Datei (x48 -rom &lt;romdatei&gt;). Die Kommandozeilenoptionen k\u00f6nnen mit <i>x48 -help<\/i> angezeigt werden. Endlich! Abbildung 2 zeigt das Prachtsst\u00fcck. Abbildung 3 zeigt x48 in Aktion.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-396 size-full\" src=\"http:\/\/www.flagsoft.com\/cmswp\/wp-content\/uploads\/1997\/01\/x48-pic1.jpg\" alt=\"&lt;br \/&gt;&lt;br \/&gt; &lt;pre&gt;[cml_media_alt id='396']x48-pic1[\/cml_media_alt]\" width=\"340\" height=\"765\" srcset=\"https:\/\/www.flagsoft.com\/cmswp\/wp-content\/uploads\/1997\/01\/x48-pic1.jpg 340w, https:\/\/www.flagsoft.com\/cmswp\/wp-content\/uploads\/1997\/01\/x48-pic1-133x300.jpg 133w\" sizes=\"auto, (max-width: 340px) 100vw, 340px\" \/><br \/>\n<b><span style=\"font-size: small;\">Abbildung 2: Die M\u00fche hat sich gelohnt...<\/span><\/b><br \/>\nAuf die Frage <i>Try to recover memory?<\/i> muss mit <i>no<\/i> geantwortet werden. Nun kann man auch gleich mal den Selftest laufen lassen ([on] + [e]). Dazu wird mit der mittleren Maustaste auf [on] geklickt, danach mit der linken auf [e]. Mit \"on\" + c \/c [sic!] wird unterbrochen. Mit der Tastatur gehts auch: [ESC] ist [on], [linkes shift] ist [&lt;-|], [rechtes shift] ist [|-&gt;], [META] ist [\"alpha\"], ...<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\" wp-image-395 size-full alignnone\" src=\"http:\/\/www.flagsoft.com\/cmswp\/wp-content\/uploads\/1997\/01\/x48-game1.jpg\" alt=\"[cml_media_alt id='395']x48-game1[\/cml_media_alt]\" width=\"299\" height=\"181\" \/><\/p>\n<p><b><span style=\"font-size: small;\">Abbildung 3: x48 in Aktion...<\/span><\/b><\/p>\n<h3>...Segfault<\/h3>\n<p>Was aber, wenn der Emulator mit einem \"Segmentation fault\" aussteigt? Hier meine Ergebnisse nach ein paar Debbuging-Sessions: Auf einem coff (a.out) System musste der Schritt 4 (4. Values from XResourceManagerString() or ~\/.Xdefaults) in der Datei \"\/src\/x48_x11.c\" mit #if 0 ... #endif vollst\u00e4ndig auskommentiert werden. Danach funktionierte alles. Bei einem anderen Fall (auf einem ELF System) wollte der Emulator von einer nicht vorhanden Erweiterungskarte lesen. Dort musste in der Datei \"\/src\/memory.c\" in der Funktion \"read_nibble_sx\" die Zeile 1018 (return saturn.port2[(addr - 0xc0000) &amp; port2_mask];) ganz auskommentiert werden. Danach war alles ok.<\/p>\n<h3>Gut Verbunden<\/h3>\n<p>Im Emulator sieht man eine Zeile, die angibt, \u00fcber welchen Device die serielle Schnittstelle und die lokale Harddisk erreicht wird.<\/p>\n<pre>  wire:\/dev\/ttyp2      IR:\/dev\/ttyS0<\/pre>\n<p>Mit der Einstellung <i>[I\/O] Men\u00fc, [SETUP]: wire, binary, 9600, none 0, 1, 3<\/i> und <i>[I\/O] Men\u00fc, [SERVER], Awaiting Server Cmd.<\/i> seitens x48 und <i>kermit starten, set line \/dev\/ttyp2, send backup-datei<\/i> seitens Kermit-Programm kann eine HP-Backup-Datei geladen werden.<\/p>\n<p>Software findet man zu hauf im Internet. Siehe auch Tabelle 'Infos und Quellen'.<\/p>\n<p>Mir bleibt da nur noch viel Spass zu w\u00fcnschen!<\/p>\n<p>Copyright \u00a9 1997 Linux-Magazin Verlag<\/p>\n","protected":false},"excerpt":{"rendered":"<p>[Dieser Artikel erschien im Linux-Magazin 1997, Autor des Textes ist Michael Mustun.] HP48 Emulator Nacheiferer 4 x48 emuliert einen HP48 Taschenrechner. Was f\u00fcr Stolpersteine einem bei der Inbetriebnahme dieses Emulators begegnen k\u00f6nnen, und was man mit dem Taschenrechner der Taschenrechner sonst noch so machen kann, ist hier zu lesen. &nbsp; UPDATE: Super Anlei\u00adtung \u2014 herz\u00adli\u00adchen\u00a0Dank! &hellip;<\/p>\n<p class=\"read-more\"> <a class=\"\" href=\"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/\"> <span class=\"screen-reader-text\">HP48 Emulator<\/span> Weiterlesen &raquo;<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"parent":3022,"menu_order":23,"comment_status":"open","ping_status":"open","template":"","meta":{"_uag_custom_page_level_css":"","_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"","footnotes":"","_links_to":"","_links_to_target":""},"class_list":["post-264","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.8 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>HP48 Emulator - Flagsoft<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"HP48 Emulator - Flagsoft\" \/>\n<meta property=\"og:description\" content=\"[Dieser Artikel erschien im Linux-Magazin 1997, Autor des Textes ist Michael Mustun.] HP48 Emulator Nacheiferer 4 x48 emuliert einen HP48 Taschenrechner. Was f\u00fcr Stolpersteine einem bei der Inbetriebnahme dieses Emulators begegnen k\u00f6nnen, und was man mit dem Taschenrechner der Taschenrechner sonst noch so machen kann, ist hier zu lesen. &nbsp; UPDATE: Super Anlei\u00adtung \u2014 herz\u00adli\u00adchen\u00a0Dank! &hellip; HP48 Emulator Weiterlesen &raquo;\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/\" \/>\n<meta property=\"og:site_name\" content=\"Flagsoft\" \/>\n<meta property=\"article:modified_time\" content=\"2019-08-07T12:36:34+00:00\" \/>\n<meta property=\"og:image\" content=\"http:\/\/www.flagsoft.com\/cmswp\/wp-content\/uploads\/1997\/01\/x48-scr1.jpg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data1\" content=\"10 Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/\",\"url\":\"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/\",\"name\":\"HP48 Emulator - Flagsoft\",\"isPartOf\":{\"@id\":\"https:\/\/www.flagsoft.com\/cmswp\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/#primaryimage\"},\"thumbnailUrl\":\"http:\/\/www.flagsoft.com\/cmswp\/wp-content\/uploads\/1997\/01\/x48-scr1.jpg\",\"datePublished\":\"2013-05-02T12:37:08+00:00\",\"dateModified\":\"2019-08-07T12:36:34+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/#breadcrumb\"},\"inLanguage\":\"de-CH\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de-CH\",\"@id\":\"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/#primaryimage\",\"url\":\"http:\/\/www.flagsoft.com\/cmswp\/wp-content\/uploads\/1997\/01\/x48-scr1.jpg\",\"contentUrl\":\"http:\/\/www.flagsoft.com\/cmswp\/wp-content\/uploads\/1997\/01\/x48-scr1.jpg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.flagsoft.com\/cmswp\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Product Testing\",\"item\":\"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"HP48 Emulator\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.flagsoft.com\/cmswp\/#website\",\"url\":\"https:\/\/www.flagsoft.com\/cmswp\/\",\"name\":\"Flagsoft\",\"description\":\"ALPHA Schulmagazin, Byztxt, Strongsdict, Remote Control Cursor for Mac, PictureViewer4Mac, sdspeed free SD Card Reader for Mac OS X, Byztxt Light, 1A Shopping List, Kindle Book Template\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.flagsoft.com\/cmswp\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de-CH\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"HP48 Emulator - Flagsoft","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/","og_locale":"de_DE","og_type":"article","og_title":"HP48 Emulator - Flagsoft","og_description":"[Dieser Artikel erschien im Linux-Magazin 1997, Autor des Textes ist Michael Mustun.] HP48 Emulator Nacheiferer 4 x48 emuliert einen HP48 Taschenrechner. Was f\u00fcr Stolpersteine einem bei der Inbetriebnahme dieses Emulators begegnen k\u00f6nnen, und was man mit dem Taschenrechner der Taschenrechner sonst noch so machen kann, ist hier zu lesen. &nbsp; UPDATE: Super Anlei\u00adtung \u2014 herz\u00adli\u00adchen\u00a0Dank! &hellip; HP48 Emulator Weiterlesen &raquo;","og_url":"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/","og_site_name":"Flagsoft","article_modified_time":"2019-08-07T12:36:34+00:00","og_image":[{"url":"http:\/\/www.flagsoft.com\/cmswp\/wp-content\/uploads\/1997\/01\/x48-scr1.jpg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Gesch\u00e4tzte Lesezeit":"10 Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/","url":"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/","name":"HP48 Emulator - Flagsoft","isPartOf":{"@id":"https:\/\/www.flagsoft.com\/cmswp\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/#primaryimage"},"image":{"@id":"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/#primaryimage"},"thumbnailUrl":"http:\/\/www.flagsoft.com\/cmswp\/wp-content\/uploads\/1997\/01\/x48-scr1.jpg","datePublished":"2013-05-02T12:37:08+00:00","dateModified":"2019-08-07T12:36:34+00:00","breadcrumb":{"@id":"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/#breadcrumb"},"inLanguage":"de-CH","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/"]}]},{"@type":"ImageObject","inLanguage":"de-CH","@id":"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/#primaryimage","url":"http:\/\/www.flagsoft.com\/cmswp\/wp-content\/uploads\/1997\/01\/x48-scr1.jpg","contentUrl":"http:\/\/www.flagsoft.com\/cmswp\/wp-content\/uploads\/1997\/01\/x48-scr1.jpg"},{"@type":"BreadcrumbList","@id":"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/hp48-emulator\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.flagsoft.com\/cmswp\/"},{"@type":"ListItem","position":2,"name":"Product Testing","item":"https:\/\/www.flagsoft.com\/cmswp\/product-testing\/"},{"@type":"ListItem","position":3,"name":"HP48 Emulator"}]},{"@type":"WebSite","@id":"https:\/\/www.flagsoft.com\/cmswp\/#website","url":"https:\/\/www.flagsoft.com\/cmswp\/","name":"Flagsoft","description":"ALPHA Schulmagazin, Byztxt, Strongsdict, Remote Control Cursor for Mac, PictureViewer4Mac, sdspeed free SD Card Reader for Mac OS X, Byztxt Light, 1A Shopping List, Kindle Book Template","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.flagsoft.com\/cmswp\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de-CH"}]}},"uagb_featured_image_src":{"full":false,"thumbnail":false,"medium":false,"medium_large":false,"large":false,"1536x1536":false,"2048x2048":false,"mailpoet_newsletter_max":false,"woocommerce_thumbnail":false,"woocommerce_single":false,"woocommerce_gallery_thumbnail":false,"yarpp-thumbnail":false,"slide-thumbnail":false},"uagb_author_info":{"display_name":"M","author_link":"https:\/\/www.flagsoft.com\/cmswp\/author\/admin\/"},"uagb_comment_info":0,"uagb_excerpt":"[Dieser Artikel erschien im Linux-Magazin 1997, Autor des Textes ist Michael Mustun.] HP48 Emulator Nacheiferer 4 x48 emuliert einen HP48 Taschenrechner. Was f\u00fcr Stolpersteine einem bei der Inbetriebnahme dieses Emulators begegnen k\u00f6nnen, und was man mit dem Taschenrechner der Taschenrechner sonst noch so machen kann, ist hier zu lesen. &nbsp; UPDATE: Super Anlei\u00adtung \u2014 herz\u00adli\u00adchen\u00a0Dank!&hellip;","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.flagsoft.com\/cmswp\/wp-json\/wp\/v2\/pages\/264","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.flagsoft.com\/cmswp\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.flagsoft.com\/cmswp\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.flagsoft.com\/cmswp\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flagsoft.com\/cmswp\/wp-json\/wp\/v2\/comments?post=264"}],"version-history":[{"count":2,"href":"https:\/\/www.flagsoft.com\/cmswp\/wp-json\/wp\/v2\/pages\/264\/revisions"}],"predecessor-version":[{"id":5795,"href":"https:\/\/www.flagsoft.com\/cmswp\/wp-json\/wp\/v2\/pages\/264\/revisions\/5795"}],"up":[{"embeddable":true,"href":"https:\/\/www.flagsoft.com\/cmswp\/wp-json\/wp\/v2\/pages\/3022"}],"wp:attachment":[{"href":"https:\/\/www.flagsoft.com\/cmswp\/wp-json\/wp\/v2\/media?parent=264"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}