MATRIX v1.2 =========== MATRIX writer replacement by Arnold Moy (c)1996. CONTENTS ======== 1. Introduction 1.1 Copyright and Disclaimer 1.2 The MATRIX Library 1.2.1 Features 2. Installing and Removing the MATRIX Library 2.1 Installing the Library 2.2 Universal Font Library (UFL) 2.3 Bytes and Checksum 2.4 User Key Assignment 2.5 Java support 2.6 Removing the Library 3. Usage 3.1 Commands 3.2 Explanation of Menu Functions EDIT COPY PASTE GO> +ROW -ROW +COL -COL VEC DIMS SPEED VEC 3.3 Explanation of Keys 3.3.1 Matrix keys 3.3.2 Editor keys 3.4 matrixPAR 4. Acknowledgments 5. History 6. Resources and References 1. Introduction --------------- 1.1 Copyright and Disclaimer ----------------------------- All files in the MATRIX package are copyrighted(c) by Arnold Moy unless otherwise noted. The software contained in this package is provided as free of charge and therefore contains no warranty of any kind. Should the Software prove defective, you and not the author assume the entire cost of any service and repair. This disclaimer of warranty constitutes an essential part of the agreement. 1.2 The MATRIX Library ---------------------- The MATRIX library essentially replaces the built-in matrix writer. Almost entirely written in assembly language, all aspects of operation are vastly improved upon when compared to the built-in matrix writer. 1.2.1 Features -------------- o very large matrices can be created and edited without any significant loss in performance o support for real and complex matrices o multi-element entry o cell copy and paste function o fast row and column inserting and removing o variable scrolling speed o variable column widths o fast editor (EDLIN) o user settings saved upon exit o uses the UFL (Universal Font Library) o works on all HP48 models (S,G,SX,GX) o works from any port 2. Installing and Removing the MATRIX Library --------------------------------------------- The MATRIX library requires at least 13.5k to install and an auxiliary library called the Universal Font Library (UFL) must be present. 2.1 Installing -------------- a) send the library to the HP48 b) put a copy of the library on the stack c) enter the port number to store the library (0-33 GX, 0-2 SX) d) here is an example of the stack setup so far: -------------------------- 4: 3: 2: Library 1019: MAT... 1: 0 | | | | | | | e) at this point, press [STO] f) perform a warmstart with [ON][C] or turn on and off the HP48 g) erase the variable containing the library. eg. 'MATRIX12.LIB' PURGE h) read the next section for the Universal Font Library (UFL) requirements 2.2 Universal Font Library (UFL) -------------------------------- The MATRIX library requires the UFL to be present. Read the UFL documentation from the UFL package (included) for more information From the UFL package, one of two libraries must be present. Either ufl1.lib or ufl3.lib and not ufl2.lib because the MATRIX library requires FNT1. If you have not installed one of the UFL libraries, install it now: a) send the library(ufl1.lib or ufl3.lib) to the HP48 b) put a copy of the library on the stack c) enter the port number to store the library (0-33 GX, 0-2 SX) d) here is an example of the stack setup so far: -------------------------- 4: 3: 2: Library 257: UFL... 1: 0 | | | | | | | e) at this point, press [STO] f) perform a warmstart with [ON][C] or turn on and off the HP48 g) erase the variable containing the library. h) The MATRIX library is ready for use. 2.3 Bytes and Checksum ---------------------- Bytes: 13222 Checksum: # AFCDh 2.4 User Key Assignment ------------------------ The MATRIX command can be assigned to a specific key for convenient and rapid access. Here is an example to replace the standard key assignment used for the built-in matrix writer: { << MATRIX >> 51.3 } STOKEYS Refer to the HP48 manual for more information on User Key Assignments. 2.5 Java Support ----------------- If you have Java v3.0 or higher installed, [rshift][ENTER] will automatically execute NEWMAT and [down-arrow] will execute the MATRIX command. 2.6 Removing the Library ------------------------- a) :0: 1019 DETACH b) :0: 1019 PURGE Depending on which port number the MATRIX library was stored, :0: in the above can be replaced by the appropriate port number. 3. Usage -------- 3.1 Commands ------------ MATRIX - either starts a new matrix if no valid matrix exists on stack level 1 or edits a valid matrix on stack level 1. NEWMAT - starts a new matrix, no stack arguments required ERASEMP - erases matrixPAR from hidden directory 3.2 Explanation of Menu Functions --------------------------------- EDIT ---- o edit the current highlighted cell COPY ---- o copy the current highlighted cell contents to the clipboard PASTE ----- o paste the clipboard contents to the current highlighted cell GO> --- o move the highlight cursor right after each entry o function active indicated by box displayed in menu key o works in conjunction with RTN, see RTN GO\/ ---- o move the highlight cursor down after each entry o function active indicated by box displayed in menu key o works in conjunction with RTN, see RTN RTN --- o when RTN and GO> are activated(box displayed in menu keys): when the last element in a row has been reached, the cursor will return to the first column of the next adjacent row below o when RTN and GO\/ are activated(box displayed in menu keys): when the last last element in a column has been reached, the entry cursor will return to the first row of the next right adjacent column o RTN can only be activated when either GO> or GO\/ are activated +ROW ---- o add a row -ROW ---- o delete a row +COL ---- o add a column -COL ---- o delete a column ---- o make the column width wider o less columns are displayed DIMS ---- o show dimensions, hold key down SPEED ----- o 3 speeds for scrolling and key repeating are available o pressing this key cycles through the different speeds o The speed is indicated in the top left corner o >=slow >>=medium >>>=fast VEC --- o toggle between vector mode and matrix mode o when vec is on(box displayed in menu key), one row arrays are returned as vectors [1 2 3] o when vec is off(box not displayed in menu key), one row arrays are returned as matrices [[1 2 3]] 3.3 Explanation of Keys ----------------------- 3.3.1 Matrix keys ------------------ +-------+-------+-------+-------+-------+-------+ | | | | | | | | | | | | | | | | | | | | | +-------+-------+-------+-------+-------+-------+ | |DIMS |SPEED |UP | | | | | | | | | | | | | |JMPUP | | +-------+-------+-------+-------+-------+-------+ | |COPY |PASTE |LEFT |DOWN |RIGHT | | | | | | | | | | | |JMPLEFT|JMPDOWN|JMPRGHT| +-------+-------+-------+-------+-------+-------+ | | | | | | | | | | | | | | | | | | | | | +-------+-------+-------+-------+-------+-------+ |EXIT |NEG |1E | | | | | | | | | | | | | | | +-------+---------+---------+---------+---------+ |alpha |7 |8 |9 | | | | | | |() | | | | | | | +-------+---------+---------+---------+---------+ |lshift |4 |5 |6 | | | | | | | | | | | | | | +-------+---------+---------+---------+---------+ |rshift |1 |2 |3 | | | | | | | | | | | | | | +-------+---------+---------+---------+---------+ |EXIT |0 |. | | | | | | | | | | | | | | | +-------+---------+---------+---------+---------+ +-------+ | | <--- non-shifted/alpha | | <--- left-shift | | <--- right-shift +-------+ - make the column width wider DIMS - show dimensions, hold key down SPEED - 3 speeds for scrolling and key repeating are available - pressing this key cycles through the different speeds - The speed is indicated in the top left corner - >=slow >>=medium >>>=fast UP - move highlight cursor up COPY - copy the current highlighted cell contents to the clipboard PASTE - paste the clipboard contents to the current highlighted cell LEFT - move highlight cursor left DOWN - move highlight cursor down RIGHT - move highlight cursor right JMPUP - jump to the extreme top JMPLEFT - jump to the extreme left JMPDOWN - jump to the extreme bottom JMPRGHT - jump to the extreme right EXIT - exit program NEG - negate sign 1E - exponent () - complex number delimiters . - 9 - digits 3.3.2 Editor keys ------------------ The MATRIX library incoporates EDLIN, the one line editor. Here is a description of the relevant keys. +-------+-------+-------+-------+-------+-------+ |A |B |C |D |E |F | | | | | | | | | | | | | | | +-------+-------+-------+-------+-------+-------+ |G |H |SPEED/I|J |K |L | | | | | | | | | | | | | | | +-------+-------+-------+-------+-------+-------+ |M |N |O |P |Q |R | | | | | | | | | | | | | | | +-------+-------+-------+-------+-------+-------+ |S |T |U |V |W |X | | | | | | | | | | | | | | | +-------+-------+-------+-------+-------+-------+ |EXIT |NEG/Y |1E/Z |DEL |BS | | | | |DELLINE| | | | |TOGOVER|DELRGHT| | +-------+---------+---------+---------+---------+ |alpha |7 |8 |9 |/ | | | | | |() | | | | | |# | +-------+---------+---------+---------+---------+ |lshift |4 |5 |6 |* | | | | | |[] | | | | | |_ | +-------+---------+---------+---------+---------+ |rshift |1 |2 |3 |- | | | | | |<<>> | | | | | |"" | +-------+---------+---------+---------+---------+ |ABORT |0 |. |SPC |+ | | | | | |{} | | | | | |:: | +-------+---------+---------+---------+---------+ +-------+ | | <--- non-shifted/alpha | | <--- left-shift | | <--- right-shift +-------+ Most keys are mapped according to the standard built-in editor. Here are a few important keys to know about: SPEED - 3 speeds for scrolling and key repeating are available - pressing this key cycles through the different speeds - the speed is indicated in the top left corner - >=slow >>=medium >>>=fast EXIT - keep changes and exit NEG - negate TOGOVER - toggle between insert and overwrite mode, - current mode displayed in the upper left corner - INS=insert mode OVR=overwrite mode DEL - delete DELINE - delete the entire edit line DELRGHT - delete to the right of the cursor BS - backspace ABORT - abort and discard any changes 3.4 matrixPAR ------------- Certain settings will be saved upon exit. Here is a list: GO direction and RTN Column width Speed Matrix type Insert/Overwrite The variable matrixPAR is stored in the hidden directory and can be removed by using the ERASEMP command. 4. Acknowledgments ------------------ The following people have been instrumental in the development and refinement of the MATRIX project. Al Arduengo - beta tester Andre Schoorl - beta tester Dan Kirkland - programming assistance Detlef Mueller - programming assistance Jack Levy - beta tester Manoj Kasichainula - beta tester Mika Heiskanen - programming assistance Nathanael Morriss - beta tester Othniel Rawlins - beta tester Will Laughlin - programming assistance Richard Steventon - programming assistance 5. History ---------- Changes 1.1 to 1.2 - updated package by including UFL v1.0.1 - fixed negate problem with complex numbers Changes 1.0 to 1.1 - fixed data ordering in memory problem (>TOPTEMP), works from covered ports now Changes 1.0e to 1.0(release) - fixed negate problem in editor Changes 1.0d to 1.0e - fixed RSTK overflow related warmstart problem - fixed low memory UART buffer back-up condition - fixed string reference problem during UART buffer back-up - fixed auto-spacing for function keys - fixed array object reference problem Changes 1.0c to 1.0d - added xERASEMP - added [ABOUT] - changed error message to INVALID ELEMENT - fixed significant digits editing problem (EDITDECOMP$) - added menu functions while editing [WID>], [WID\/] [RTN] - fixed complex polar mode bug (interrupts) - added multi-element entry - added remember speed - added keys for [PRG], COPY [STO], PASTE [EVAL] - changed speed key from [EVAL] to [VAR] - rearranged menu layout and added [DIMS] and [SPEED] menu keys - added [RTN] return cursor - display cell contents for one column fixed Changes 1.0b to 1.0c - fixed [ATTN] problem - added xNEWMAT - added key to display dimensions - added speed indicator - made GO work more like the built-in matrix writer - added negate sign key for EDLIN and MATRIX - changed speed key from [+/-] to [EVAL] key 6. Resources and References --------------------------- HPTools - PC based System RPL and Assembly Language compiler ftp://hpcvbbs.external.hp.com/dist/ Jazz - HP48 based System RPL and Assembly Language development tools http://www.hut.fi/~mheiskan/ UFL - Universal Font Library http://www.engr.uvic.ca/~aschoorl/ufl/ Arnold Moy - email: amoy@geog.ubc.ca WWW: http://www.geog.ubc.ca/~amoy/