/4 TECO NUMBER PROCESSOR / 08-APR-79 FIXED 8BIT BUG .ENABLE 7BIT .MACRO .ERROR ERNUM .GLOBAL ERR'ERNUM ERR'ERNUM: ERR .ENDM .MACRO .SORT ARG1,ARG2 SORT; ARG1; ARG2-ARG1 .ENDM .GLOBAL CCPR,COPR,CDOT,TSTD,VT05A,NMBR .GLOBAL CAMP,CNBS,CVIR,CAST,CMIN,CPLS .GLOBAL CTL.UA,NCOMCL,CCLN,ESCAPE,CHR.F .GLOBAL NCOM,NRET,NMBR2,NMRBAS,NP,SCHTAB .EXTERNAL ERR,NCHK,POPL,GETNUM,PUSHL,POPJ,PUTT,SORT .ZTERNAL CHAR,ZM60,NMT,N,NLINK,Z11,NFLG .ZTERNAL P,ZM12,Z7770,CLNF,CAAM .EXTERNAL SCAN,MQLDVI,SCANUP .EXTERNAL SCHINV,SCHSEP,CSWT1,SCHCTQ,SCHCTE,SCHUPA .EXTERNAL CHR.FN,CHR.FS,CHR.FB MTWO=STA CLL RAL MTHREE=STA CLL RTL .SBTTL Cmd 0 .SBTTL Cmd 1 .SBTTL Cmd 2 .SBTTL Cmd 3 .SBTTL Cmd 4 .SBTTL Cmd 5 .SBTTL Cmd 6 .SBTTL Cmd 7 .SBTTL Cmd 8 .SBTTL Cmd 9 .ASECT TECNUM *1200 NMBR, TAD CHAR /NUMBER FOUND IN COMMAND STRING TAD ZM60 NMBR2, DCA NMT CLL NCHK /CHECK NUMBER FLAG JMP NNEW /NOT UP, NEW OPERAND TAD DOPR DCA NOPR /USE SAME OPERATOR AS FOR THE PREVIOUS DIGITS TAD NP /MULTIPLY PREV DIGITS BY 10 CLL RTL NMRBAS, TAD NP /REPLACED BY "NOP" FOR OCTAL CLL RAL /** COULD CHECK FOR OVERFLOW IN THIS AREA NNEW, TAD NMT NCOM, DCA NP /CURRENT NUMBER TAD NP NOPR, SKP /DISPATCH JUMP FOR OPERATOR CML CIA TAD NACC /CURRENT EXPRESSION VALUE DCA N RAL TAD NACCLK /ADD IN OLD LINK RAR SKP CLA NRET, DCA N RAL DCA NLINK /SAVE LINK FOR POSSIBLE COMPARISON TEST TAD NOPR DCA DOPR TAD NULLOP DCA NOPR /SET OPERATOR TO NULL OP STA JMP DCPOPJ /SET NUMBER FLAG AND EXIT .SBTTL Cmd ) CCPR, STL CLA RTL /2 POPL NOPR NACC NACCLK GETNUM JMP NCOM /COMBINE OLD NUMBER AND PARENTHESIZED RESULT .SBTTL Cmd ( COPR, MTHREE PUSHL NACCLK NACC NOPR DCA N DCA NLINK JMP CPLS /CLEAN OUT INSIDE PARENS .SBTTL Cmd . CDOT, TAD P /COMMAND . /** COULD CAUSE ERROR IF NFLG SET JMP NCOMCL /NEWLNK, 0 /SKIP IF DIGIT TSTD, 0 TAD ZM60 CLL TAD ZM12 SNL CLA ISZ TSTD JMP I TSTD .SBTTL Cmd & .SBTTL Cmd # .SBTTL Cmd / .SBTTL Cmd * .SBTTL Cmd - .SBTTL Cmd + CAMP, MTWO /*K* LOGICAL AND ** CNBS, TAD (NIOR-NDIV /LOGICAL OR CVIR, TAD Z11 /DIVISION CAST, TAD (NMPY&177+5200-7400 /MULTIPLICATION CMIN, TAD Z7770 /SUBTRACTION CPLS, TAD (SKP /ADDITION DCA NOPR /COMMON TO ALL NUMERIC OPERATORS TAD N DCA NACC TAD NLINK DCA NACCLK DCA NP DCPOPJ, DCA NFLG /CLEAR NUMBER FLAG POPJ NAND, AND NACC /BITWISE AND OF BINARY NUMBERS JMP NRET /** KEEP THESE TWO OPNS TOGETHER NIOR, CMA /BITWISE OR OF BINARY VALUES AND NACC TAD NP NULLOP, JMP NRET NACCLK, 0 /LINK OF EXPRESSION WITHOUT NP NMPY, CIA /*** REALLY OUGHT TO IMPLEMENT 13-BIT MULTIPLY DCA ND TAD NACCLK CLL RAR /SET UP OLD LINK TAD NACC ISZ ND JMP .-2 JMP NRET NACC, 0 /VALUE OF EXPRESSION WITHOUT NP NDIV, DCA ND TAD NACC MQLDVI ND, 0 JMP NRET CTL.UA, SCAN /^^ COMMAND - VALUE OF NEXT CHAR IN COMMAND LINE NCOMCL, CLL JMP NCOM /GO INTO NUMBER PROCESSOR DOPR, 0 /PREVIOUS OPERATOR NP, 0 /VALUE OF CURRENT NUMBER /SEARCH STRING MODIFIERS ^N,^Q,^S, AND ^X S.NOT==SCHINV&177+5200 S.SEP==SCHSEP&177+5200 S.ANY==CSWT1&177+5200 SCHTAB, S.NOT /^N: ANYTHING BUT SCHCTQ /^Q: LITERALLY S.SEP /^S: ANY SEPARATOR S.ANY /^X: ANYTHING SCHCTQ /^R SCHCTE /^E SCHUPA /^ (MUST BE LAST ENTRY) .SBTTL Cmd : CCLN, STA DCA CLNF POPJ ESCAPE, 0 TAD CAAM /TYPE ESCAPE VT05A, PUTT TAD I ESCAPE PUTT /TYPE ARGUMENT JMP I ESCAPE /OK TO RETURN TO ARGUMENT .SBTTL Cmd F FTAB, CHR.FN CHR.FS CHR.FB FLST, "N /FN "S /FS "_ /F_ CHR.F, SCANUP /COMMAND F .SORT FLST,FTAB .ERROR 31 /BAD F COMMAND PAGE