hp 48sx manual parcial

Upload: flgrhn

Post on 12-Oct-2015

69 views

Category:

Documents


0 download

TRANSCRIPT

Model: 48SXGeneral:Name: Scientific ExpandableHP-Code-Name: CharlemagneFamily: CharlemagneLogic: RPLFeatures: scientific, programmable, clock, alarmsdate arithmetic, hyperbolics, complexbase w/arithmetic, matrix, vector, lists,solver (algebraic, program), symbolicmath, symbolic integration, differentiation,plotting, graphics, etc., etc.Firsts: real units that work, bidirectional I/R,matrix editor, equation writer, kermit,3D complex, stack application, ->Q,serial port, overhead projectorsupport (from HP)Introduction:Date: 1990-03-06Price: $350Discontinuation:Date: transmitting data\/the following ones are in the message area:RAD radians modeGRAD grads modeR\ = ""OFF \-> return \->) repeat (DEF expand trig and hyp functions into EXP and LN->STK put object onto stack-COL delete a matrix column-ROW delete a matrix row/1 divide by 1/> right shift1-VAR makes entry the statistical matrix and displays menu page 21/() double invert and distribute12/24 toggle 12 and 24 hour display format2-VAR makes entry the statistical matrix and displays menu page 4 2D assemble or disassemble a 2d vector3D assemble or disassemble a 3d vector delete item to the right/>DEL-> delete all items to the end of the line/>DEPN recall dependant variableDINV double invertDNEG double negateDOT+ turn on pixel drawingDOT- turn off pixel drawingDRAW plot equation with axesDRPN drop items from stackDSPL PGM sub-menuDUPN duplicate itemsE() replace power-of-power with power-productECHO copy items to stackEDEQ edit equationEDIT EDIT menuEDIT\GS copy statistics data to matrix writerELEC UNITS sub-menuENRG UNITS sub-menuENTRY toggle algebraic and program entry modesEQ+ add equation to EQ/>EQ+ remove last entry from EQEQUATION equation writer applicationEXEC set alarm execution action/>EXEC recall alarm execution actionEXECS show alarm execution actionEXIT exits environemntEXPR highlights subexpressionEXPR= return expression or equation valuesEXTR move cursor to extremumE^ replace power-of-product with power-of-powerF' plot first derivativeF(X) display value of functionFAST toggles display of equation names or names and valuesFCN PLOT sub-menuFM,/FM. set fraction markFORCE UNITS sub-menuGO-> set matrix entry mode to left-to-rightGOv set matrix entry mode to top-to-bottomGRAPH invokes scrolling modeHOUR repeating alarm intervalHR+ adjust hoursHR- adjust hoursHYP MTH sub-menuI/O I/O menu/>INDEP recall independent variableINS switches between insert and replace editingIR/W infrared/wire selectionISECT move cursor to closest intersectionKEEP clear stack levels above currentKEYS remove graphics application menu labelsL() replace product-of-log with log-of-powerL* replace log-of-power with product-of-logLABEL labels axesLAST ARG retains stack and restores last argumentsLAST CMD return last command lineLAST MENU return last menuLAST STACK restore last stackLENG UNITS sub-menuLEVEL enter level number to stackLIBRARY bring up menuLIGHT UNITS sub-menuLINE draw lineM-> merge factors right/>M-> repeat M-> until no changeM/D toggles date display formatMASS UNITS sub-menuMATRX MTH sub-menuMATRIX matrix writer applicationMEMORY bring up menuMIN+ adjust minutesMIN- adjust minutesMODES bring up menuMODL STAT sub-menuMTH bring up menuNEW stores algebraic or matrix under new nameNEXT display but doesn't execute next objectNONE cancel alarm repeatNXEQ rotate list in EQNXT next screen or menuOBJ PRG sub-menuOFF offON turn onON + + adjust contrastON + - adjust contrastON + A + F clear all memoryON + B cancels ON + selectionON + C bring calculator to known state without clearing memoryON + D interactive self-test, exit with ON + CI/O: directly to server modeLIBRARY:current libraries PORT0 PORT1 PORT2MATRIX: EDIT VEC GO-> GOv+ROW -ROW +COL -COL ->STK ^STKMEMORY: MEM BYTES VARS ORDER PATH CRDIRTVARS PVARS NEWO LIBS ATTAC DETACMERG FREE ARCHI RESTO PGDIR/>MEMORY:STO+ STO- STO* STO/ INCR DECRSINV SNEG SCONMODES: STD FIX SCI ENG SYM BEEPSTK ARG CMD CNC ML CLKDEG RAD GRAD XYZ R\DBASE: HEX DEC OCT BIN STWS RCWSRL RR RLB RRB R->B B->RSL SR SLB SRB ASRPLOT: PLOTR PTYPE NEW EDEQ STEQ CATPLOTR: ERASE DRAW AUTO XRNG YRNG INDEPDEPN PTYPE RES CENT SCALE RESETAXES DRAX LABEL *H *W PDIM/>INDEP:recall value/>DEPN: recall valuePTYPE: FUNC CONIC POLAR PARA TRUTH BAR/>RES: recall value/>AXES: recall value/>PDIM: recall valuePTYPE: FUNC CONIC POLAR PARA TRUTH BAR/>STEQ: RCEQ/>PLOT: direct to PLOTR menuPRG: STK OBJ DSPL CTRL BRCH TESTSTK: OVER ROT ROLL ROLLD PICK DEPTHDUP DUP2 DUPN DROP2 DRPNOBJ: OBJ-> EQ-> ->ARR ->LIST ->STR ->TAGR->C C->R DTAG ->UNIT TYPE VTYPESIZE POS REPL SUB NUM CHRPUT GET PUTI GETIDSPL: PICT PVIEW LINE TLINE BOX ARCPIXON PIXOF PIX? PX->C C->PX SIZE->GRO BLAN GOR GXOR REPL SUB->LCD LCD-> CLLCD DISP FREEZ TEXTCTRL: DBUG SST SSTV NEXT HALT KILLINPUT PROM DISP MENU WAIT KEYDOERR ERRN ERRM ERR0 BEEP OFFBRCH: IF CASE START FOR DO WHILETHEN END NEXT STEP UNTIL REPEAELSE IFERR IFT IFTEIF:IF ... THEN ... ELSE ... ENDCASE: THEN ... ENDSTART:START ... STEPFOR: FOR ... STEPPRINT:does a PR1SOLVE: SOLVR ROOT NEW EDEQ STEQ CAT/>STEQ: RCEQSOLVR: list of solver variables LEFT= RT= or EXPR=/>SOLVE:direct to SOLVR menuname does STOname does RCLSTACK application menu:ECHO VIEW PICK ROLL ROLLD ->LISTDUPN DRPN KEEP LEVELSTAT: \GS+ CL\GS NEW EDIT\GS STO\GS CATTOT MEAN SDEV MAX\GS MIN\GS BINSXCOL YCOL BARPL HISTP SCATR \GSLINELR PREDX PREDY CORR COV MODL\GSX \GSY \GSX^2 \GSY^W \GSX*Y N\GSSTO\GS:RCL\GSCAT: 1-VAR PLOT 2-VAR EDIT ->STK VIEWMODL: LIN LOG EXP PWR BEST/>STAT: direct to page 2 of STAT menuTIME: SET ADJST ALRM ACK ACKA CATDATE+ DDAYS DATE TIME TSTR TICKS->HMS HMS-> HMS+ HMS-SET: ->DAT ->TIM A/PM 12/24 M/DADJST: HR+ HR- MIN+ MIN- SEC+ SEC-CLKAALRM: >DATE >TIME A/PM EXEC RPT SETSTOAL RCLAL DELAL FINDARPT: WEEK DAY HOUR MIN SEC NONE/>TIME: direct to alarm catalogPURG EXECS EDIT ->STK VIEWUNITS: LENG AREA VOL TIME SPEED MASSFORCE ENRG POWR PRESS TEMP ELECANGL LIGHT RAD VISCLENG: M CM MM YD FT INMPC PC LYR AU KM MINMI MIUS CHAIN RD FATH FTUSMIL \Gm A FERMIAREA: M^2 CM^2 B YD^2 FT^2 IN^2KM^2 HA A MI^2 MIUS^ ACREVOL: M^3 ST CM^3 YD^3 FT^3 IN^3L GALU GALC GAL QT PTML CU OZFL OZUK TBSP TSPBBL BU PK FBMTIME: YR D H MIN S HZSPEED: M/S CM/S FT/S KPH MPH KNOTC GAMASS: KG G LB OZ SLUG LBTTON TONU T OZT CT GRAINU MOLFORCE: N DYN GF KIP LBF PDLENRG: J ERG KCAL CAL BTU FT*LBTHER MEV EVPOWR: W HPPRESS: PA ATM BAR PSI TORR MMHINHG INH20TEMP: \^oC \^oF K \^oRELEC: V A C \GW F WFDY H MHO S T WBANGL: \^o R GRAD ARCMI ARCS STLIGHT: FC FLAM LX PH SB LMCD LAMRAD: GY RAD REM SV BQ CIRVISC: P STunit: adds the unit to the current object (real number)unit: divide the current object by unit/>UNITS:CONV UBASE UVAL UFACT ->UNITVAR: user variablesname does EVALname does RCLBugs/ROM-Versions::A DEFINE rounds values according to the current display format.ABCD entry of complex in form (A,\QProduces a fraction that clearly has not been reduced tolowest terms.?ABCD PVIEW blows up if given pixel coordinates just to the top leftof the grob ("{ #-1 #-1 }").?ABCD If the clock is running while a GROB is being displayed, theclock valuies are written into and erased from the GROB.?ABCD In the Matrix Writer, any cell containing an absolute valuebetween 1E5 and 1E6 can't be copied to the stack.Explanatio (from [email protected] (Flavio Casetta)):When you press [->STK] a subroutine recalls the current matrix(or vector) along with the cursor coordinates. Then asubroutine extracts the element from the matrix according withthe actual dimension of the array. If the element does notexist it returns a null string. Then a subroutine checks forthe presence of a null string. And here is the pitfall! Theroutine checking for the null string does not attempt to checkin advance the object type lying on the stack. Numbers in therange 100000-999999 have the first five nibbles (3 of exponentand 2 of mantissa) matching the null string pattern. Try outwith ->ASC ! Nevertheless the bug applies also to Complexnumbers within the Real part in the same range. In effect ifyou supply a number like 100000.111111, you will find that the[->STK] works because the last two digits of the mantissa areno longer zeros. Thus the actual range of numbers is100000-999999 rounded to 10 decimal significant digits.In conclusion the bug is due to a call to a subroutine whoseexpected argument is a string and not a number. The mainroutine is located at #63209h and always returns the originalobject plus a flag. A TRUE means that the string is null, aFALSE means it is not null. Notice that it is not a buggyroutine. Simply it should not be called unless you have astring on the stack.I don't see a possible workaround in the usual sense of theword, unless you enter all numbers with at least 11significant digits. What it can be done is a patch routine inRAM consisting of a menu that fixes the problem. Please keepin mind that when the Matrix Writer is not running, you maycorrupt the memory by calling any of these subroutines.Supposedly, no version F ROM will ever be released for the 48. Thisis due to the "leak" via the release of the System RPL tools lastAugust. (After each version is released, the internal tools all havetheir version numbers incremented to prevent confusing any code thatthey affect with released code. Someone forgot to fix this beforereleasing the tools.) There will also never be a version G ROM. Thisis because they messed things up while tinkering. There _may_ (as in,"not impossible") be a version H ROM.A version J ROM (no word on I) appears to have been released aroundDecember 1992. The only visible difference appears to be a factor oftwo or so speedup in the Equation Writer.Notes::In the spring of 1991, HP offered a "trade in" program whereby all48SX owners could trade their units in on one with Revision E ROMs.The Owner's Manual was completely rewritten and published in early1992.This unit was left in production after the introduction of the 48GXonly because there was a bunch of software out there that didn't followthe rules and wouldn't run on a GX.Don't use PICT STO: this causes display "snow." Instead, usesomething like PICT { #0h #0h } ROT REPL.These ASCII characters can't be typed from the keyboard: ; \ ^ `The following and memory scanner information is from Alonzo Gariepy([email protected], posted to Comp.sys.handhelds on 6 March 1990):00000-0FFFF ROM (and registers for the display controller,I/O, and timers)10000-6FFFF ROM70000-7FFFF User/Display RAM (overlaid on Font/Strings ROM)80000-BFFFF 128k for plug-inC0000-FFFFF 128k for plug-inF0000-FFFFF User/Display RAM (when 70000-7FFFF is used forFont/Strings ROM)The most interesting thing about scan mode is that the memory layoutis different than in normal operation. The 32K of user/display RAM ismoved from 70000 to F0000 so that you can see the ROM that is normallyhidden underneath. In normal operation, the address space at 70000 isshared between this ROM and display RAM. The hidden ROM is used forcode and data related to I/O, such as strings and font bitmaps, aswell as for diagnostic functions, such as the self tests and scanmode.The 48 was called the 1152 at least at some point during designdevelopment. At the March 1992 Drexel Conference, some of the mockupswere on display (courtsy of Dennis York from HP). The mockupsconsisted of a 41-ish case with a (fake) 3-line display, a 71-ishcase, a clamshell (18C-ish) case, and a case that looked a lot like a48. In addition was a mockup of a cassette drive.Why can't there be more card slots in the 48SX? (Other than casetooling.) The the address space is full. Of the 512 KBytes (1MNybble) of address space, 256 KBytes is used for the ROM and eachslot has 128 KBytes of address space dedicated to it. (This is alsowhy the TDS 512 KByte cards must be bank-switched.) Thus, the addressspace is full already. But wait! What about the 32 KBytes ofbuilt-in RAM? It lives on top of the last 32 KBytes of ROM. Whencode is executed from here, the 48 must map the ROM in for reading(writes go to the RAM, of course), copy the required code to RAM,unmap the ROM, execute the code, and finally delete it from RAM. Allof this entails a 20-30% performance hit.Apparently, the HP48's toolmaker dictated that the shift keys had tobe located around the outside edge of the keyboard. (I assume that ithas to do with where there is enough room for the extra traces.)If you pull a 48 RAM card and hold it in your hand, it has about a 2week lifetime. If you put the same card (right away!) into thestorage case, the lifetime increases to about a year. This is becausethe storage case incorporates a conductive strip which keeps the leadsgrounded.For a while during production, 48 cases were being warped. This wasdue to a capacitor physically interfering with the case duringassembly. The line was shut down for a week to find this problem.After marketing complained to R&D about (not) making it easy tointernationalize the products, the 48 was designed to be fullycustomizable. Only one version (English) was released.Some people think that you can reset a 48 by reversing the batteries: >>> DON'T > Reference Manual". Unfortunately, both of these works are>> copyrighted, with notices that their contents cannot be reproduced>> or transmitted without permission.> I'd suggest someone with either of the books would ask the damn> permission. This is really getting to be a FAQ....................Excellent suggestion. So I called Jim Donnelly, and he kindly gavehis permission to duplicate the following page from his book.====================================================================== SYSTEM HALT LOGThe command WSLOG returns four strings to the stack showing the cause,date, and time of the four most recent system halt events.The system halt log is not cleared when memory is erased, and may onlybe cleared by placing the calculator in coma mode.Example: 3-03/06/90 09:30:10This string shows a type three system halt that occurred on themorning of March 6, 1990.+------+-----------------------------------+| CODE | CONDITION |+------+-----------------------------------+| 0 | Coma exit || 1 | Low battery system save || 2 | I/O timeout || 3 | Execute through address 0 || 4 | Corrupt system time || 5 | Port change data || 7 | Corrupt RAM test word || 8 | Hardware configuration difficulty || 9 | Corrupt alarm list || A | Corrupt memory || B | Module pulled or card bounce || C | Hardware reset || D | Software difficulty || E | Corrupt configuration table || F | Merged RAM card pulled |+------+-----------------------------------+Note that some events will cause two events to be recorded, and somesystem halt events will cause a coldstart.[page 97 from Jim Donnelly's "The HP 48 Handbook", First Edition;copyright 1990, all rights reserved; reprinted with permission.]======================================================================A few extra notes from Joe Horn:(1) Jim Donnelly will be releasing real soon now a Second Edition of the book especially for the HP48G/GX, greatly expanded and containing lots more examples & goodies, including a whole chapter on System RPL programming! If you plan on keeping your HP48S/SX and haven't gotten the First Edition yet, I strongly suggest that you do so posthaste before it's extinct.(2) The format of the 4 dates in WSLOG's output is controlled by flag -42, the date format flag. The 4 times, however, are always in 24-hour format and are *not* affected by flag -41, the clock format flag.(3) The WSLOG information resides at a fixed RAM address, and therefore makes an excellent chunk of scratch RAM for assembly language programmers, as has been done by several folks here on the net.(4) Darryl Okahata's FAQ list includes a brief discussion of WSLOG as item #31.(5) At the end of time (differs depending on your ROM revision; for rev A-E it's 23:59:59 on 31 December 2088; for rev J it's 31 December 2090) a warmstart occurs, and *two* events get recorded, both with code 4 and date/time of zero. The following second time-warps back one century.(6) A code 2 warmstart (I/O timeout) does *not* refer to a Kermit retry timeout, but to a hardware IR failure only.-Joseph K. Horn- -Peripheral Vision, [email protected]: I don't work for HP, EduCALC, or Armstrong Publishing.