Command? scan all No. Delivered From Subject Lines 1 Nov 17 23:26 CHHU Maynard <-[12]-< Terpack 133 2 Nov 18 17:06 CHHU PARIS CHAPTER OFFER [3] 165 3 Nov 18 18:21 CHHU [12} <== [3], copies of disks 39 4 Nov 18 18:27 CHHU TO ALL <++++ [3] 15 5 Nov 18 18:58 CHHU Brian --> Mike 34 6 Nov 18 23:15 CHHU Sam ---> Mike 52 7 Nov 19 3:58 CHHU to Lew from John Baker 11 8 Nov 19 4:04 CHHU to Nick from John Baker 11 9 Nov 19 4:13 CHHU addon to Nick from J Baker 6 10 Nov 21 6:31 CHHU MEMBER ASSESSMENT & SURVEY 4 11 Nov 21 6:37 CHHU Interloop's Graphic Display? 44 12 Nov 21 14:47 CHHU [3]&HYJRB <-[12]-< GENERAL 7 13 Nov 21 18:46 CHHU TO ALL CHHU and you t 263 14 Nov 21 19:37 CHHU Thanks, BIFF! Brian 0 15 Nov 21 20:12 CHHU Maynard from Brian Walsh 21 16 Nov 21 20:52 CHHU to Nick from Baker 152 17 Nov 21 23:42 CHHU Brian from Maynard 25 18 Nov 22 12:21 CHHU To Brian Walsh [41] from Fred Li 5 19 Nov 22 18:51 CHHU Fred Lipschultz from Brian Walsh 25 20 Nov 22 21:06 CHHU hey biff! 4 More... No. Delivered From Subject Lines 21 Nov 23 16:32 CHHU Brian Walsh <--- Fred Lipschultz 3 22 Nov 23 17:19 CHHU Brian Walsh from Tom [70] 7 23 Nov 24 4:27 CHHU to Brian Re: 9114 DDL 4 DATA 18 24 Nov 24 13:52 CHHU NOMAD RAM expansion update 40 25 Nov 24 16:03 CHHU Mike [3] from Brian 18 26 Nov 24 17:42 CHHU Sam --> John 44 27 Nov 25 6:19 CHHU for Markov and all 237 28 Nov 25 6:31 M.GREELIS NEW TELEMAIL RELEASE - 11/16 96 29 Nov 25 11:49 CHHU To all from Larry: Re Survey 59 30 Nov 25 17:49 CHHU Larry from Brian 26 31 Nov 25 19:41 CHHU to Sam <== {3] 15 32 Nov 25 19:54 CHHU to ALL <== [3] 21 33 Nov 26 3:00 CHHU RPN LEX again, by John Baker 803 34 Nov 26 3:47 CHHU to Brian from John Baker 8 35 Nov 26 3:58 CHHU to Mike from John Baker 24 36 Nov 26 5:34 CHHU to the group from John Baker 11 37 Nov 26 6:15 CHHU jbaker< John 29 More... No. Delivered From Subject Lines 41 Nov 26 14:57 CHHU John from Brian 14 42 Nov 26 15:10 CHHU Sam to all 18 43 Nov 26 23:15 CHHU To sSam fm Lew 36 44 Nov 27 6:51 CHHU John Baker, others Re: RPNLEX 17 45 Nov 27 7:05 CHHU BIFF <-- [9] ^?^ 63 46 Nov 27 10:59 CHHU JRB <--- Tom [70], re: RPNLEX 7 47 Nov 27 13:24 CHHU To: John Baker From: drk 7 Command? read 33 Posted: Wed Nov 26, 1986 3:00 AM PST Msg: FGIG-2494-7506 From: CHHU To: chhu Subj: RPN LEX again, by John Baker LEX 'RPNLEX' * TITLE RPN Mode, Ver<860402>, JR Baker CON(2) #5E last scratch CON(2) 5 low token CON(2) 5 high token CON(5) 0 no link NIBHEX F no speed table REL(4) (TxTbSt)+1 offset to Text table CON(4) 0 no message table REL(5) POLHND offset to poll handler * *********************************************************** * EQUATE TABLE * SLEEP EQU #006C2 I/ORES EQU #118FF CKSREQ EQU #00721 POPBUF EQU #010EE I/OALL EQU #1197D NXTSTM EQU #08A48 I/OFND EQU #118BA WIPOUT EQU #1B0AF STR$SB EQU #18149 VAL00 EQU #1AD8F FINLIN EQU #18A3A CRLFOF EQU #02296 AVMEMS EQU #2F594 eMEM EQU #00018 BF2DSP EQU #01C0E pCONFG EQU #000FB COLLAP EQU #091FB BLDDSP EQU #01898 CRLFND EQU #0229E EXPEXC EQU #0F186 EXCPAR EQU #187E8 DSP$00 EQU #185DB POP1N EQU #0BD1C REV$ EQU #1B38E STMTR0 EQU #2F871 CURKEY EQU (STMTR0)+5 STKFLG EQU (STMTR0)+7 BSERR EQU #0939A ESCSEQ EQU #023C1 Insert EQU #00007 DSPSTA EQU #2F475 DSPCHA EQU #01C3E DSPCHC EQU #01C3C MGOSUB EQU #1AF01 SPLITA EQU #0C6BF SPLITC EQU #0C940 SPLTAC EQU #0C934 uRES12 EQU #0C994 * ******************************** * SIN15 EQU #0D71A AB=SIN(AB) COS15 EQU #0D725 AB=COS(AB) TAN15 EQU #0D733 AB=TAN(AB) ASIN15 EQU #0DBCC AB=ASIN(AB) ACOS15 EQU #0DBD7 AB=ACOS(AB) ATAN15 EQU #0DBBE AB=ATAN(AB) AD2-15 EQU #0C363 AB=AB+CD l/X15 EQU #0C33E AB=1/AB SQR15 EQU #0C534 AB=SQRT(AB) LGT15 EQU #0D1AE AB=LOG(AB) Base Ten YX2-15 EQU #0D27A AB=AB^CD MP2-15 EQU #0C43A AB=AB*CD DV2-15 EQU #0C4AC AB=AB/CD * ******************************** * these are offsets into the buffer oLASTX EQU 0 oXREG EQU 16 oYREG EQU 32 oZREG EQU 48 oTREG EQU 64 BUFsiz EQU 85 this is the buffer size bRPN EQU #00FFE this is the buffer ID * *********************************************************** * MAIN TABLE * CON(3) (TxEn01)-(TxTbSt) REL(5) RPN CON(1) 1 keyboard only * *********************************************************** * TEXT TABLE * TxTbSt TxEn01 CON(1) (TxTbTm)-(TxEn01)-4 NIBASC 'RPN' Keyword CON(2) 5 Token 5 of LEX ID #5E TxTbTm NIBHEX 1FF * *********************************************************** * PARSE * PARSE RTNCC * *********************************************************** * EXIT GOSBVL FINLIN send CR/LF to display GOVLNG NXTSTM return to BASIC * *********************************************************** * this is the mainloop, very simple REL(5) PARSE RPN LC(3) bRPN GOSBVL I/ORES does buffer exist ? GOC RPN01 yes GOSUB BUFSET no, create it RPN01 GOSUB STMSOD initialise scratch MAIN01 GOSUB DISPX display X register MAINLP * GOSBVL SLEEP wait for keys GONC CKKBD process key wakeups GOSBVL CKSREQ else check other hardware requests GOTO MAINLP * *********************************************************** * these are the keys defined in edit mode * they do not terminate entry * CKKBD GOSBVL POPBUF pop key buffer to B(B) GOC MAINLP loop if no keys P= 0 C=0 A * KEY02 LC(2) #35 0 key ?C#B B GOYES KEY03 LC(2) #30 GOTO CHRhnd * KEY03 LC(2) #27 1 key ?C#B B GOYES KEY04 LC(2) #31 GOTO CHRhnd * KEY04 LC(2) #28 2 key ?C#B B GOYES KEY05 LC(2) #32 GOTO CHRhnd * KEY05 LC(2) #29 3 key ?C#B B GOYES KEY06 LC(2) #33 GOTO CHRhnd * KEY06 LC(2) #19 4 key ?C#B B GOYES KEY07 LC(2) #34 GOTO CHRhnd * KEY07 LC(2) #1A 5 key ?C#B B GOYES KEY08 LC(2) #35 GOTO CHRhnd * KEY08 LC(2) #1B 6 key ?C#B B GOYES KEY09 LC(2) #36 GOTO CHRhnd * KEY09 LC(2) #0B 7 key ?C#B B GOYES KEY10 LC(2) #37 GOTO CHRhnd * KEY10 LC(2) #0C 8 key ?C#B B GOYES KEY11 LC(2) #38 GOTO CHRhnd * KEY11 LC(2) #0D 9 key ?C#B B GOYES KEY12 LC(2) #39 GOTO CHRhnd * KEY12 LC(2) #36 . key (decimal point, radix) ?C#B B GOYES KEY13 LC(2) #2E GOTO CHRhnd * KEY13 LC(2) #18 = key, used as CHS (Change Sign) ?C#B B GOYES KEY14 LC(2) #2D GOTO CHRhnd * KEY14 LC(2) #03 E key, used for Exponent entry ?C#B B GOYES KEY15 LC(2) #45 GOTO CHRhnd * KEY15 LC(2) #2F < Left key ?C#B B GOYES KEY16 LC(2) #44 GOTO ESChnd * KEY16 LC(2) #30 > Right key ?C#B B GOYES KEY17 LC(2) #43 GOTO ESChnd * KEY17 LC(2) (#2F)+112 g< Far Left key ?C#B B GOYES KEY18 LC(2) #04 GOTO ESChnd * KEY18 LC(2) (#30)+112 g> Far Right key ?C#B B GOYES KEY19 LC(2) #03 GOTO ESChnd * KEY19 LC(2) (#31)+56 the I/R key ?C#B B GOYES KEY20 GOTO I/Rhnd * KEY20 LC(2) (#30)+56 the -CHAR key ?C#B B GOYES KEY21 LC(2) #4F GOTO ESChnd * KEY21 LC(2) (#33)+56 the -LINE key ?C#B B GOYES trmkys LC(2) #4B GOTO ESChnd * trmkys GOTO TRMKYS following keys are immediate execute * *********************************************************** * CHRhnd RSTK=C save char LC(2) #3E GOSBVL ESCSEQ turn cursor on C=RSTK restore char GOSBVL DSPCHC send to display GOSBVL BLDDSP update LCD GOTO MAINLP * *********************************************************** * ESChnd GOSBVL ESCSEQ send escape sequence GOSBVL BLDDSP GOTO MAINLP * *********************************************************** * I/Rhnd D0=(5) (DSPSTA)+3 C=DAT0 X read display status CSTEX ?ST=0 Insert set carry if insert now off GOYES I/R10 I/R10 ST=C restore ST LCASC 'N' GOC I/R20 set insert if carry set LCASC 'R' I/R20 GOTO ESChnd * *********************************************************** * BUFSET LC(5) BUFsiz B=C A size of desired buffer LC(3) bRPN ID of desired buffer GOSBVL MGOSUB CON(5) I/OALL create buffer GOC BUF01 GOVLNG BSERR * BUF01 LC(5) BUFsiz GOVLNG WIPOUT initialise contents to zeros * *********************************************************** * STMSOD LC(3) bRPN GOSBVL I/OFND find buffer CD1EX D1=(5) STMTR0 DAT1=C A write start to STMTR0 D1=(2) STKFLG C=0 P C=C+1 P DAT1=C P enable stack lift RTN * *********************************************************** * this code displays the contents of the X Register DISPX GOSBVL COLLAP collapse mathstack D1=C point D1 @ mathstack D0=(5) AVMEMS A=DAT0 A read AVMEMS D1=D1- 16 CD1EX D1=C ?C>A A stack collision ? GOYES DISPX1 no LC(4) eMEM yes GOVLNG BSERR * DISPX1 D0=(5) STMTR0 A=DAT0 A LC(5) oXREG A=A+C A D0=A point to XREG C=DAT0 16 read XREG DAT1=C 16 write to stack GOSBVL STR$SB convert to string GOSBVL REV$ DISPX3 D1=D1+ 2 C=DAT1 A read length CSRB convert to bytes D1=D1+ 14 point to string C=C-1 A zero base DISPX2 R0=C save count A=DAT1 B read char CD1EX RSTK=C save D1 GOSBVL DSPCHA write char to display C=RSTK D1=C restore D1 D1=D1+ 2 point to next char C=R0 C=C-1 A decrement count GONC DISPX2 loop for more D1=D1- 2 adjust D1 GOSBVL CRLFND send CR/LF RTNCC * ******************************** * POLHND LC(2) pCONFG ?B=C B turn on ? GOYES POL10 ?B=0 B VER$ poll ? GOYES POL20 RTNSXM no, not ours * POL10 LC(3) bRPN GOSBVL I/ORES save buffer RTNSXM * POL20 C=R3 get stack pointer D1=C A=R2 get AVMEMS D1=D1- (VE)-(VS)-2 allow for our string CD1EX ?A>C A go too far ? GOYES POL30 yes, exit D1=C no, restore stack pointer R3=C also save for next LEX file VS LCASC ' RPN:B' VE DAT1=C (VE)-(VS)-2 write our response POL30 RTNSXM * *********************************************************** * once here, we know the key is a terminating key TRMKYS D0=(5) CURKEY C=B B DAT0=C B save term key RSTK=C GOSBVL CRLFOF send CR/LF, turn cursor off C=RSTK B=C A restore key to B(B) LC(2) #2B ON key, used as CLX ?C#B B GOYES TMKY02 D0=(5) STKFLG C=0 W DAT0=C P disable stack lift D0=(2) STMTR0 A=DAT0 A D0=A D0=D0+ 16 @X DAT0=C W zero X GOTO MAIN01 TMKY02 GOSBVL COLLAP D1=C set D1 to stack ST=1 0 GOSBVL DSP$00 read display buffer D1=D1+ 2 A=DAT1 A read string length ASRB convert nibs to bytes A=A-1 B zero base ?A#0 B more that CR in line ? GOYES TMKY01 yes GOTO TMKY03 no TMKY01 D1=D1- 2 restore D1 to string head ST=1 10 GOSBVL VAL00 convert string to number D0=(5) STMTR0 A=DAT0 A read sod LC(5) oXREG A=A+C A D0=A point to XREG GOSBVL POP1N SETHEX R0=A save number D1=(5) STKFLG C=DAT1 P ?C=0 P stack lift disabled ? GOYES TMKY05 yes, overwrite current X GOSUB STKLFT no, lift stack prior to write CD1EX CD0EX A=R0 restore value TMKY05 DAT0=A 16 write to XREG GOTO TMKY03 * *********************************************************** * STKLFT D1=(5) STMTR0 A=DAT1 A D1=A D1=D1+ 16 @X A=DAT1 W D1=D1+ 16 @Y C=DAT1 W DAT1=A W X-->Y D1=D1+ 16 @Z A=DAT1 W DAT1=C W Y-->Z D1=D1+ 16 @T DAT1=A W Z-->T D1=D1- 16 D1=D1- 16 D1=D1- 16 @X for exit RTN * ******************************** * STKDRP D1=(5) STMTR0 A=DAT1 A D1=A @L D1=D1+ 16 @X D1=D1+ 16 @Y D1=D1+ 16 @Z D1=D1+ 16 @T A=DAT1 W D1=D1- 16 @Z C=DAT1 W DAT1=A W T-->Z D1=D1- 16 @Y A=DAT1 W DAT1=C W Z-->Y D1=D1- 16 @X C=DAT1 W DAT1=A W Y-->X D1=D1- 16 @L DAT1=C W X-->L D1=D1+ 16 @X for exit RTN * ******************************** * ROLLUP D1=(5) STMTR0 A=DAT1 A D1=A D1=D1+ 16 @X A=DAT1 W D1=D1+ 16 @Y C=DAT1 W DAT1=A W X-->Y D1=D1+ 16 @Z A=DAT1 W DAT1=C W Y-->Z D1=D1+ 16 @T C=DAT1 W DAT1=A W Z-->T D1=D1- 16 D1=D1- 16 D1=D1- 16 @X DAT1=C W T-->X RTN * ******************************** * ROLLDN D1=(5) STMTR0 A=DAT1 A D1=A D1=D1+ 16 @X A=DAT1 W D1=D1+ 16 D1=D1+ 16 D1=D1+ 16 @T C=DAT1 W DAT1=A W X-->T D1=D1- 16 @Z A=DAT1 W DAT1=C W T-->Z D1=D1- 16 @Y C=DAT1 W DAT1=A W Z-->Y D1=D1- 16 @X DAT1=C W Y-->X RTN * *********************************************************** * except CLX, all terminating keys follow here * TMKY03 D0=(5) CURKEY A=DAT0 B B=A B * LC(2) (#2B)+56 fON key, exits RPN ?C#B B GOYES TMKY00 GOTO EXIT * TMKY00 LC(2) #26 ENDLINE key, used as ENTER ?C#B B GOYES TMKY04 GOSUB STKLFT D0=(5) STKFLG C=0 P DAT0=C P disable stack lift GOTO MAIN01 * TMKY04 LC(2) #33 DOWN key, used as ROLLDOWN ?C#B B GOYES TMKY06 GOSUB ROLLDN GOTO MAIN01 * TMKY06 LC(2) #32 pUP key, used as ROLLUP ?C#B B GOYES TMKY07 GOSUB ROLLUP GOTO MAIN01 * TMKY07 D0=(5) STKFLG C=0 P C=C+1 P DAT0=C P enable stack lift * LC(2) #38 + key ?C#B B GOYES TMKY08 GOSUB GETBIN GOSBVL AD2-15 GOTO BINRTN * TMKY08 LC(2) #2A - key ?C#B B GOYES TMKY09 GOSUB GETBIN C=-C-1 S toggle sign GOSBVL AD2-15 GOTO BINRTN * TMKY09 LC(2) #1C * key ?C#B B GOYES TMKY10 GOSUB GETBIN GOSBVL MP2-15 GOTO BINRTN * TMKY10 LC(2) #0E / key ?C#B B GOYES TMKY11 GOSUB GETBIN GOSBVL DV2-15 GOTO BINRTN * *********************************************************** * this sets up binary functions GETBIN D0=(5) STMTR0 A=DAT0 A D0=A D0=D0+ 16 C=DAT0 W C=XREG D0=D0+ 16 A=DAT0 W A=YREG SETDEC GOSBVL SPLTAC RTN * ******************************** * this is the binary function return BINRTN GOSBVL COLLAP D1=C set D1 to mathstack GOSBVL uRES12 SETHEX R0=C GOSUB STKDRP drop stack for binary function C=R0 DAT1=C W write result to X GOLONG MAIN01 * *********************************************************** * TMKY11 LC(2) (#35)+56 f0 key, used as Last X ?C#B B GOYES TMKY12 GOSUB STKLFT D1=D1- 16 C=DAT1 W Read Last X D1=D1+ 16 DAT1=C W L-->X GOLONG MAIN01 * TMKY12 LC(2) (#36)+56 f. key, used as X<>Y exchange ?C#B B GOYES TMKY13 D0=(5) STMTR0 A=DAT0 A D0=A D0=D0+ 16 @X A=DAT0 W D0=D0+ 16 @Y C=DAT0 W DAT0=A W X-->Y D0=D0- 16 @X DAT0=C W Y-->X GOLONG MAIN01 * TMKY13 LC(2) (#37)+56 f, used as 1/X ?C#B B GOYES TMKY14 GOSUB GETUNY GOSBVL l/X15 GOTO UNYRTN * TMKY14 LC(2) (#38)+56 f+ key, used as Y^X ?C#B B GOYES TMKY15 GOSUB GETBIN GOSBVL YX2-15 GOTO BINRTN * TMKY15 LC(2) (#19)+56 f4 key, used as SIN ?C#B B GOYES TMKY16 GOSUB GETUNY GOSBVL SIN15 GOTO UNYRTN * TMKY16 LC(2) (#1A)+56 f5 key, used as COS ?C#B B GOYES TMKY17 GOSUB GETUNY GOSBVL COS15 GOTO UNYRTN * TMKY17 LC(2) (#1B)+56 f6 key, used as TAN ?C#B B GOYES TMKY18 GOSUB GETUNY GOSBVL TAN15 GOTO UNYRTN * TMKY18 LC(2) (#27)+56 f1 key, used as ASIN ?C#B B GOYES TMKY19 GOSUB GETUNY GOSBVL ASIN15 GOTO UNYRTN * TMKY19 LC(2) (#28)+56 f2 key, used as ACOS ?C#B B GOYES TMKY20 GOSUB GETUNY GOSBVL ACOS15 GOTO UNYRTN * TMKY20 LC(2) (#29)+56 f3 key, used as ATAN ?C#B B GOYES TMKY21 GOSUB GETUNY GOSBVL ATAN15 GOTO UNYRTN * TMKY21 LC(2) (#2A)+56 f- key, used as LOG base 10 ?C#B B GOYES TMKY22 GOSUB GETUNY GOSBVL LGT15 GOTO UNYRTN * TMKY22 LC(2) (#0E)+56 f/ key, used as square root ?C#B B GOYES TMKY23 GOSUB GETUNY GOSBVL SQR15 GOTO UNYRTN * TMKY23 LC(2) #0A P key, used as PI ?C#B B GOYES MKY24 LCHEX 0314159265359000 load 12 form of PI A=C W put in A GOTO UNYRT1 go to 12 form return, hex still set * TMKY24 GOLONG MAIN01 end of defined keys * *********************************************************** * this is unary function overhead code * GETUNY D0=(5) STMTR0 A=DAT0 A D0=A D0=D0+ 16 @X A=DAT0 W read X register SETDEC GOSBVL SPLITA split to 15 form RTN * UNYRTN GOSBVL COLLAP collapse mathstack D1=C point to mathstack GOSBVL uRES12 convert 15 form in AB to 12 form SETHEX restore mode UNYRT1 D0=(5) STMTR0 A=DAT0 A D0=A D0=D0+ 16 @X A=DAT0 W read old X contents DAT0=C W overwrite X with result D0=D0- 16 @L DAT0=A W write old X to LASTX GOLONG MAIN01 * *********************************************************** * END