%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% hpHOME %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% HOME-Verzeichnis meines HP48GX Kopieren nur fuer nichtkommerzielle Zwecke erlaubt. Wolfgang Rautenberg http: www.math.fu-berlin.de/user/raut Tel+Fax: 00493083875444 ftp.math.fu-berlin.de/pub/usr/~raut raut@math.fu-berlin.de Mai 2000 ------------------------------------------------------------------- hpHOME ist Teil des HOME-Verzeichnisses meines HP48GX. Trotz seines Reichtums hat hpHOME dank kompakter Programmierung und Datenkompression nur 20 KB. Mit hphome ist auch die Library ot4.lib (LID 1646, 2.8 KB) zu laden (sie enthaelt u.a. die Hilfsmittel zur Datenkompression). hpHOME ist ein backup-Objekt und wird nach Laden mit RESTORE aktiviert. Es umfasst die Inhalte der Packete LIBMAN, HIDE, ExtUsrRPL und KEYMANL, siehe deren Dokumentation. hpHOME ist besonders geeignet fuer den HP48G oder HP48G+, die ohne RAM-Karten arbeiten, und vorbereitet zum Programmieren auf dem HP mit JAZZlight ohne Texteditor, oder auch nur zum Dekompilieren und Anschauen von SysRPL-Programmen. Dazu sind die beiden hier vorhandenen Bibliotheken jazz67l.lib (30 KB) und hptabs.lib (34 KB) zu laden, was aber mindestens einen HP48G+ voraussetzt. Es sind dann immer noch etwa 40 KB frei. Das reicht in der Regel, sonst streiche man einige der grossen Animationen. hpHOME hat sehr schnelle Commands zum Purgen und Ordnen. Das geschieht mit dunklem Display, was den Vorgang beschleunigt und die Batterien schont. Man erhaelt eine laufende Analoguhr und den Monatskalender mit der EEX-Taste. RIGHTSHIFT und LEFTSHIFT blaettern durch die Monate, alpha aktualisiert. Alle anderen Keys (ausser CANCEL) schalten den HP dann aus. Beim Einschalten zu irgend einer spaeteren Zeit startet der Kalender neu (Autostart, siehe auch acs.de.txt). Die Belegungen einiger Shift-Keys werden nur mit Shift-hold aktiviert (aehnlich zu ON-shift-hold-C, der Warmstart) oder aber mit Doppel- Klick wie ein doppelter Mausklick. Beides sind neuartige Bedienungsfunktionen die die Standardfunktion des Keys erhalten. Dies und vieles andere in unserem Betriebssystem verbessern den Standard des HP48GX ganz erheblich. hpHOME enthaelt in HOME drei unabhaengige Directories und den Configurator C (Copyright-Symbol). Er setzt einige System-Flags, schaltet UNDO ein und zeigt das freie RAM an. Bei Problemen immer erst C ausfuehren. Das GAME-Directory enthaelt nebst einigen Animationen die wohl beste Variante von Tetris als separaten Folder. MUSIC enthaelt u.a. die Optionen |COMP| zum Komponieren und |PLAY| zur Wiedergabe von Musikstuecken. |PBOX| ruft eine PlayBox mit vielen Beispielen auf. Ein Satz der Violin-Sonate E-Dur von Bach wird mit dunklem Display gespielt. Waehrend des Spiels kann mit + oder - beschleunigt oder verlangsamt werden. Schaltet automatisch aus und ist daher als Einschlaf- Melodie geeignet, auch wegen des variablen Tempos. Der Notendisplay langer Musikstuecke verlangt temporaer ziemlich viel freies RAM (bis zu 40 KB). Ordner PRG ist komprimiert. Nach Druecken auf Uparrow erscheinen die Files ->RPN und DEMO, sowie Downarrow. Mit diesem wird wieder komprimiert. Spart viel RAM, wenn ein Ordner lange nicht benutzt wird. In diesen muss dazu nur der kleine File Downarrow kopiert werden. ->RPN uebersetzt Programme und algebraische Terme nach RPN, was deren Auswertung beschleunigt. Wichtig ist vor allem das Tools-Menu auf dem CST-Key 23.1 Doppelklick. Seite 1 ist der Key Manager. Fast alle unsere Key-Belegungen wurden mit den hier befindlichen Optionen gemacht. Mit |A?DK| wird ein Objekt in Level 1 an einen Key angebunden, nach welchem gefragt wird. Wird |A?DK| 2mal geklickt, wird dessen Belegung gestrichen. Weitere Informationen siehe keymanl.txt. Die Seite 2 enthaelt in |D<->L| alle tools zum Herstellen und Zerlegen von Bibliotheken und toggelt zwischen |D->LIB| und |L->DIR|. |''| stellt NULLID (den leeren Namen) in den Stack. Im Urzustand des HP bezeichnet '' das Hidden Directory (siehe FAQ), in unserem Betriebssystem wird '' auch zum Speichern von anderen Objekten in Ordnern benutzt. Zum Neueintrag oder Speichern in '' nur |''STO| benutzen, sonst kann es passieren, dass alle Variablen versteckt werden. In einem solchen Falle |HIDE| mit leerer Liste ausfuehren. |HIDE| versteckt Files und macht sie mit leerem Listenargument ("hide nothing") wieder sichtbar. |HIV| liefert alle im aktuellen Verzeichnis versteckten Files. Einzelheiten ueber diese Macros kann man HIDE.TXT entnehmen. Weitere Hilfsmittel sind mit Keys aufrufbar, z.B. der Text- und Graphik-Viewer auf left-shift VIEW, der schnelle Purger auf dem left-shift Purge Key 53.2, usw. Das CST-Menu in HOME enthaelt die folgenden Dienstprogramme: BACO Base Conversion. Umrechnung einer Zahl in DEC, HEXS, OCT, BIN. Ziffer- Eingabe (auch Hex-Ziffern) durch eine der Menuoptionen abschliessen. UCO Unit Conversion, ruft das UNITS Menu und wartet auf die Eingabe zweier Einheiten zwecks Umrechnung. DUparrow Stellt den Namen 'D durchstrichen' (fuer "Display Off") auf den Stack. Wird dieser Name in ein Program eingebunden, so wird von dort an die Ausfuehrung mit ausgeschaltetem Display fortgesetzt, was die Batterien schont und die Programausfuehrung beschleunigt. HD Einfahrt in das Hidden Directory. Fuer Anfaenger nicht zu empfehlen. ->XL erzeugt das zwei Zahlen entsprechende Library-command. Stackdiagramm- Beispiel: 1646 25 -> XL 1646 25 (der versteckte BZ-Dekompressor). A-> gibt ROM- bzw. RAM-Adresse eines beliebigen HP-Objekts als BINT an. (BINT = Internal Binary Integer). Beim Umschalten in den HEXA Modus erscheinen die Addressen als 5-stellige Hexas. Solche < 80000h sind unveraenderliche ROM-Adressen. Die relle Zahl 0 z.B. hat nur 2.5 Bytes und die Adresse 2A3B4A. Wird 0 irgendwo gespeichert und dann in den Stack gestellt, hat sie 10.5 Bytes und eine vom momentanen Status des Rechners abhaengige RAM-Adresse. IBOX-> macht aus einem mehrzeiligen String eine Informations-Box. Die erste Zeile ist dessen Titel, der Rest der Informationstext. Scrollt falls Text nicht auf einer Seite Platz hat. Verwendet z.B. in der Option |ABOUT| des PBOX-Menus in MUSIC. EXIT Wiederherstellung des urspruenglichen Menus. Ein Doppelklick auf RclK im Key-Manager liefert eine Uebersicht ueber die Key- Belegungen von hpHOME, die unten beschrieben werden. Lesbar werden diese wie auch die Standard-Belegungen erst mit DoppelClick 35.1, wenn JAZZlight und die HPTabs geladen wurden. Das Studium der Keybelegungen ist ein wichtiger Schritt zum Erlernen von SystemRPL; nur in dieser Sprache ist der Rechner vollkommen beherrschbar. Aber auch ohne JAZZ kann man mit unseren Tools (vor allem mit Keys 65.3) alle in Files in hpHOME und andere SysRPL-Programme modifizieren. Ohne JAZZ kann dies nur "blind" geschehen, was einige Erfahrung voraussetzt. Die Befehle der zu hphome gehoerenden Bibliothek ot4.lib werden in OT4.DOC beschrieben. OT4 ist das hphome zugrundeliegende Betriebssystem. Wir beschreiben nun die Key-Belegung (keine deutsche Uebersetzung): Remember that all keys retrieve their standard assignment if the USR-mode is left. Some assignments are useful only in the default mode (stack display mode without a command or edit line) while in the PRG-mode or the direct entry mode the key should act as before, in particular a cursor key. Such assignments are not programmable in UsrRPL but are easily generated with the Key manager. The price payed for this flexibility is that assignments are unreadable without SysRPL decompilation tools, in general. But they can still be modified with our tools. The assignment of a shifted key is normally only active if shift is hold, indicated below by LS-hold or RS-hold (LeftShift or RigthShift, resp.). 23.1 (CST-Key). Double-clicked invokes the Tools menu in every mode. Normally clicked executes file i (Symbol Nr.161) when present in the scanned directory, otherwise CST has its standard function. For instance, CST in GAME invokes a temporary menu with direct access to TETRI's PLAY option and the MINESHUNT game added. If this where saved as a list in CST, it would need at least 3x as many bytes. 23.2 LS-hold Library key. Sets the OT4 library menu in every mode. 23.3 RS-hold. Invokes directly the Flag Browser which belongs to the menu of the MODES dialog box. If a change is made in the flag setting, the new setting is put onto the stack (for adapting the configurator). 24.2 LS-hold. Shows the number of bytes of the object in level 1 or, if the stack is empty, waits for entry of an object's name. 24.3 RS-hold. If two names V, V' are put into the appearing input list, V is renamed to V', also if V denotes a directory. If V' already exists in the scanned directory, renaming is refused. So there is no danger anymore of illegally overwriting a file. If only one name V is choosen and the name exists in the path, its path is shown in small fonts in the status area. This path may be shorter than the current path. V and its content are found in the stack. This altogether concerns hidden files as well; these are not covered by the built-in file manager on 24.3. 25.2 LS-hold. Recalls the user assignment of a key in the same way as the RclK-option from the Tools menu. If left-shift is hold and 25.2 is double-clicked, you'll see first the list of all assigned keys. 25.3 Calls the (usually unreadable) standard assignment of a key into the stack, menu keys included, and displays its type and the type name of the assigned object. If this is a library name (alias Rom Pointer) then both this name and its content are recalled and an asterix is appended to the content's type name. With 25.3 one may hack the commands of any internal or external library without splitting it as a whole. Note that the standard assignment of an operation or function key is usually a Rom Pointer, not the operation itself. E.g., pressing SIN after 25.3 yields SIN on two levels, but they are not the same! The SIN in Level 2 is the library name (Rom Pointer) of the SIN-function in Level 1. 34.1 Both 34.1 and 34.2 enter the PICTURE environment. Now, 34.1 immedately enters the scroll mode of PICT. 34.3 The key is inactive in the standard mode. Now it sets PICTURE but the menu-option (x,y) in this environment shows the pixel coordinates of the cursor. Convenient for painting, replacing at the right points in writing complex animations, etc. This special environment cannot be realized with the dialog box PLOT. It's a new plot type which could be called PAINT. 35.1 double-clicked (only useful in the presence of JAZZlight). Disassembles the SysRPL object in Level 1 and edits it immediately. If the input is a lib-name (=RomPointer) you'll see its content, with its lib-name still on the stack. CODEs are not disassembled. If Level 1 contains a string then 35.1 double-clicked tries to recompile it into a SysRPL object. 35.2 The "VIEWER". Normally, 35.2 acts like 35.1. If the stack is empty you are now asked for the name of the object to be viewed and are getting a quick and comfortable view of it in a scroll mode of the text buffer or in the scroll mode of PICTURE (if a grob). In PRG-mode, 35.2 is usually inactive. Now it has a nice feature. While programming one may consult PICTURE without affecting the command line to which one simply returns with CANCEL. Useful for getting data from a graphic while programming. 44.1 UPDIR executed also in direct entry mode. Very useful for programming. 53.1 Shows a pretty analog clock and the calendar of the current month, with autostart option. Alternative Clock+Calendar programs are in the folder TIME. If there is a command line, the key behaves as before. 53.2 The PURGE key is now safe in the sense that it does not take arguments from the stack. Put the names of files or directories to be purged into the appearing list. Much faster than the standard PURGE or PGDIR. 54.2 In the standard mode the more convenient 54.1 clears the stack as well. By now, the stack is saved, the program suspends (HALT indicator appears) and you can do some other manipulations on the stack. CONT recovers the original stack and HALT disappears. Can be used to save several stacks. 54.3 Configurates the HP according to the configurator, kills all suspended programs (the HALT indicator disappears). Useful if a suspended program is not properly left. 54.4 This key is dispensable in all modes. Now executes OVER and prints the OVER command in PRG-mode. The only assigned key in the alpha-plane. 55.2 Yields an input form for ORDER. It is not anymore necessary to create the argument list for ORDER in advance. Orders with dark display and is much faster than the built-in ORDER command. 55.3 Executes the highly important OBJ-> command. In PRG mode the key has its probably seldom used standard function. It is easy to modify the key assignment such that in PRG mode the OBJ-> command is printed. 65.2 LS-hold. A DEBUG tool. An input form is waiting for a name of a program to be debugged. The built-in debug menu appears automatically. 65.3 RS-hold: Toggles a program and its list representation (to be parsed with 55.3 on the stack). The program is regained by doing the inverse. The key also converts an algebraic object into RPN and toggles its program and list presentation. For instance, '1+2=3' yields first 1 2 + 3 = and then { 1 2 + 3 = }. 72.2 LS-hold: Mearures the run time of a program or command with fairly high precision. Put its name into the appearing input list. Clearly, the program or command must find its arguments on the stack. 72.3 RS-hold. A convenient and fast alarm manager for one or more individual wake-up melodies stored in the hidden file \164 (tuner symbol). Invokes an alarm dialog box. After "What" you may or may not write a message. The next line must contain at least the date in the format D.M, e.g., 27.2 is to mean the 27th of February (a 0 before 2 is not necessary). Only January must be encoded by 01, since e.g. 3.1 will be read as 3.10, i.e., 3rd of October. The input 27.22001 will realize the alarm in 2001. Appointment time may be added in this line with a blank's distance from the date. "Wake_Up" is the alarm time and must be written as hh.mmss... according to the output of the TIME command, not with AM or PM. "REPEATE" is more comfortable than the built-in option. Put a number directly into the programming line and after it one of the letters M, H, D, W, Y (for minutes, hours, days, weeks, years). If, e.g., 5M is the input then "5 M" appears in the black field and the alarm will repeate after 5 min. If the input is .5M the alarm repeats after 30 sec. If nY is the input then the alarm repeates after precisely n years at the time of the same day in the same month, no matter whether there is a leap in between or not. Only the values n = 1, 2, 3, 4 are allowed. After having finished the setting one bypasses the alarm browser. During the alarm the HP-screen is dark but the alarm message remains displayed. 72.5 expects flag -42 to be set. 72.6 Toggles between compressing and decompressing an object with BZ. Errors if stack is empty. 72.6 is only virtually assigned since its standard assignment, the cent symbol, is the library name of the BZ-toggler. 82.2 LS-hold. A convenient I/O manager for data tranfer from or to a PC. For sending (a list of) files or folders put the names into the waiting list and enter. If the list is nonempty - the empty list is reserved for the transfer of the whole Home directory, see below - you will get the menu |SEND| |SERVER| |XSEND| |XRECV| |IOP| |EXIT| Remember that SEND is based on KERMIT, XSEND and XRECV on XMODEM. |IOP| invokes the IOPAR-menu and -messages (if flag -58 is'nt set). Press NXT to return to the menu. With an empty input list one gets the menu |HKS| |SERVER| |HXS| |HXR| |IOP| |EXIT| Some of these options turn off the HP after completing their task. |HKS| archives the whole Home directory on a PC in KERMIT under the file name HKS. A KERMIT retransfer is easiest be done by setting the HP into SERVER mode. KERMIT is slow. |HXS| uploads a backup of the Home directory about 3x faster via XMODEM, named HXS on the PC. Note that XMODEM RECEIVE must be executed on the PC pointing to the name HXS. |HXR| downloads HXS via XMODEM if XMODEM SEND is started on the PC, pointing to the name HSX. Then RESTORE is applied as usual; errors if the XMODEM transfer parameter setting was incorrect. In this case the backup object is corrupt. 83.2 LS-hold. Invokes the Port 0 menu as a temporary menu in every mode. 83.3 RS-hold Library key. Sets the OT4 library menu in every mode. 85.2 LS-hold. ExtURPL programming key. Creates an ExtURPL program from any UsrRPL-program written in the command line as usual. Quotings should be made with the library command ` which is assigned to LS-hold 85.2 in PRG- mode. Pressing ENTER, the user program-quotes are stripped and ` will be replaced by the internal quote command ' which prevents evaluation of the object following it. Saves a lot of bytes. However, byte saving is only a byproduct of the use of '. Its main use is this: A list does not contain the name-delimiters and if evaluated, evaluats a global name as well. If ' is put in front of a name inside a list its evaluation is prevented. This concerns other objects as well. In this way, a n y program can be created from a list, even incorrect ones from the point of view of URPL. EXAMPLE 1. Instead of << 'epsilon' RCL >> print << 'epsilon RCL >>. The ouput is 'epsilon RCL with the user program-quotes stripped. This saves 7.5 bytes and, in addition, will faster be exectuted. EXAMPLE 2. Instead of << 1 << RCL >> DOLIST >> print << ' RCL DOLIST >>. The ouput is ' RCL DOLIST which is smaller and faster if applied to VARS (will be still many times faster if DOLIST is replaced by our DOL). 85.3 RS hold. A kind of a built-in editor for writing SysRPL-programs provided JAZZlight without its editor ED is on your HP. A string in Level 1 will be edited, else an edit line is created with the lefthand Sys-RPL program delimiter :: . In the PRG-mode shift hold sets a menu with some important SysRPL-commands and a stack visitor on page 2. The output is a string which can be compiled with the ASS command or with 35.1 double-clicked. 92.2 Tests equality of two objects. Writes SAME in PRG mode. 92.3 Displays type and type name of an object in Level 1. E.g., 1 in Level 1 yields "0: Real Number". If a library name (Rom Pointer) is in Level 1 then type and type name of its content is displayed and also the content is recalled to the stack. To the content's type name an asterix is then appended. For instance, 92.3 applied to DOLIST displays "8: Program*". Both the name DOLIST and its program are found on the stack. * * * Ende des Dokuments