/3 F-OVERLAY TO TECO / 08-APR-79 FIXED READ WITH NO WAIT BUG WITH ECHO OFF / ADDED ELSE PROCESSING .ENABLE 7BIT .MACRO .ERROR ERNUM .GLOBAL ERR'ERNUM ERR'ERNUM: ERR .ENDM .MACRO .SORT ARG1,ARG2 SORT; ARG1; ARG2-ARG1 .ENDM MTHREE=CLL STA RTL .EXTERNAL IOVRLC,QOVRLC,EOVRLC,XOVRLC .EXTERNAL EDFLAG .EXTERNAL NCHK,POPJ,NNEW13,NMRBAS,POPJ,ERR,CRLF .ZTERNAL N,Z40,NP,Z4,RADIX,NLINK,DVT1,LASTC .ZTERNAL CLNF,ZZ,P,Z12,Z377,M,CFLG,SCHAR .EXTERNAL EU1,EU2,KTYPE,PUTT,TYPE,ET1,ET8,SCHU,YSKP,EH4,TQMK,T0 .EXTERNAL MQLDVI,NCHK,POKE,SCAN,TPUT,UPOC .EXTERNAL NMBR2,PUSHJ,CMIN,VBAR .GLOBAL FOVRLY .GLOBAL CTL.D,CTL.O,CBSL,CEQL .GLOBAL DRAD .GLOBAL CHR.ED,CHR.EH,CHR.EO,CHR.ES,CHR.ET,CHR.EU .ASECT TECOVF *7200 RELOC 3200 IOVRLC QOVRLC EOVRLC XOVRLC FOVRLY, 0 .SBTTL Cmd EU .SBTTL Cmd ET .SBTTL Cmd ES .SBTTL Cmd EO .SBTTL Cmd EH .SBTTL Cmd ED CHR.EU, IAC CHR.ET, IAC CHR.ES, IAC CHR.EO, IAC CHR.EH, IAC CHR.ED, TAD (EDFLAG /*K* FLAGS MUST BE CONSECUTIVE FOR MORE REASONS THAN 1 DCA XXFLAG NCHK /ANY ARGUMENT? JMP 9$ /NO, RETURN VALUE ISZ CFLG /WERE 2 ARGUMENTS SPECIFIED? JMP 8$ /NO TAD M /YES CMA AND I XXFLAG DCA I XXFLAG /TURN OFF BITS SPECIFIED BY M TAD N CMA AND I XXFLAG /TURN OFF BITS SPECIFIED BY N, THEN TURN THEM ON 8$: TAD N /YES DCA I XXFLAG /SET NEW VALUE DCA CFLG TAD XXFLAG TAD XX$ DCA XXSUB TAD I XXSUB DCA PTR$ L$: TAD I PTR$ SNA POPJ /DONE, RETURN TO 0 DCA MASK$ /SAVE MASK ISZ PTR$ TAD I PTR$ DCA 1$ /SAVE SKIP CONDITION ISZ PTR$ TAD I PTR$ DCA LOC$ /SAVE LOC TO CHANGE ISZ PTR$ TAD I XXFLAG /LOOK AT FLAG AND MASK$ /'AND' WITH MASK 1$: HLT /SKIP INSTRUCTION JMP 3$ TAD I PTR$ DCA I LOC$ ISZ PTR$ 2$: ISZ PTR$ JMP L$ 3$: ISZ PTR$ TAD I PTR$ DCA I LOC$ JMP 2$ 9$: TAD I XXFLAG /GET VALUE JMP I (NNEW13 /MAKE NEW 13-BIT VALUE XX$: -EDFLAG+XXSUBS PTR$: 0 LOC$: 0 MASK$: 0 XXSUB, 0 XXFLAG, 0 /POINTS TO FLAG IN MEMORY ABOVE 4000 .NOLIST BE / MASK;SKIP;LOC;VALUE IF SKIPS;VALUE IF NO SKIP EUSUB, 7777; SMA CLA; EU1; CLA; SNA CLA 7777; SPA SNA CLA; EU2; TAD Z40;NOP 0 ETSUB, 1; SNA CLA; KTYPE; PUTT; TYPE 1; SNA CLA; ET1; PUTT; TYPE 10; SNA CLA; ET8; DCA SCHAR;TYPE 0 EDSUB, 1; SNA CLA; SCHU; -1; "^ 2; SNA CLA; YSKP; SKP CLA;SZA CLA 0 EHSUB, 4; SNA CLA; EH4; TQMK; T0 0 .LIST BE /RADIX TABLES: /MUST BE IN SAME OVERLAY AS = AND ^O AND ^D ORAD, NOP 1000 100 10 DRAD, NP&177+1200 /TAD NP 1000. 100. 10. .SBTTL Cmd ^D .SBTTL Cmd ^O CTL.D, TAD Z4 /SET RADIX DECIMAL CTL.O, TAD (ORAD /SET RADIX OCTAL DCA RADIX TAD I RADIX DCA I (NMRBAS /EITHER "NOP"(8) OR "TAD NP"(10) POPJ /MUST ALL BE TOGETHER IN SAME OVERLAY PAGE /NUMERICAL OUTPUT ROUTINE ZEROD, 0 DCA ZER$ /INITIALIZE "LEADING ZEROS" FLAG TAD I ZEROD ISZ ZEROD DCA DEV$ /SAVE OUTPUT ROUTINE ADDRESS TAD NLINK /POS OR NEGATIVE? SNA CLA JMP 2$ /POSITIVE TAD RADIX TAD (-ORAD SNA CLA JMP 1$ /OCTAL TAD N /DECIMAL CIA DCA N /NEGATE SKP 1$: TAD Z4 /CONVERT - TO 1 TAD ("- JMS I DEV$ /OUTPUT MINUS SIGN 2$: MTHREE DCA CNT$ /ITERATION COUNT TAD RADIX DCA R$ 3$: ISZ R$ TAD I R$ DCA 4$ /GET DIVISOR TAD N MQLDVI /DIVIDE BY A POWER OF THE BASE 4$: 0 TAD ZER$ SNA JMP 5$ /IGNORE LEADING ZEROS TAD ("0 JMS I DEV$ STL RAR DCA ZER$ /SET LEADING ZEROS FLAG 5$: TAD DVT1 /GET REMAINDER DCA N ISZ CNT$ /GO AROUND AGAIN? JMP 3$ /WHY NOT? TAD N TAD ("0 JMS I DEV$ /OUTPUT LAST DIGIT NO MATTER WHAT JMP I ZEROD DEV$: 0 /WHERE WE'RE SENDING THE DIGITS ZER$: 0 CNT$: 0 R$: 0 .SBTTL Cmd = CEQL, NCHK /COMMAND = .ERROR 21 /NO NUMBER TAD RADIX DCA TMP$ JMS I (POKE /LOOK AHEAD ONE CHARACTER TAD (-"= /CHECK FOR = SIGN SZA CLA JMP 1$ /SINGLE = SCAN /DOUBLE = (PASS UP SECOND ONE) SKP CLA /CLEAR AC 1$: TAD Z4 TAD (ORAD DCA RADIX /SET OCTAL RADIX TEMPORARILY JMS ZEROD TPUT TAD TMP$ DCA RADIX /RESTORE ORIGINAL RADIX ISZ CLNF /: SEEN? CRLF /NO, END WITH CRLF DCA CLNF POPJ TMP$: 0 .SBTTL Cmd \ .SBTTL Cmd | CBSL, TAD LASTC /GET CHARACTER BEFORE IT WAS TRANSLATED TO UPPER CASE AND Z40 /SEE IF IT WAS \ OR | (VERICAL BAR) SZA CLA JMP I (VBAR /COMMAND | (VERTICAL BAR) NCHK /COMMAND \ (BACKSLASH) JMP CBSN JMS ZEROD UPOC POPJ CBSN, PUSHJ NMBR2 /INITIALIZE RESULT TO 0 JMS PTCH TAD (-"- /CHECK FOR MINUS SIGN SZA JMP .+3 /NOT MINUS PUSHJ CMIN /RECORD MINUS SIGN CIA CLL RTR SNA CLA /CHECK FOR PLUS SIGN L$: ISZ P /BUMP POINTER PAST SIGN JMS PTCH TAD (-72 CLL TAD Z12 SNL /IS IT A DIGIT? POPJ /NO PUSHJ NMBR2 /YES - ACCUMULATE IT JMP L$ /AND LOOP PTCH, 0 TAD P /V3C STL CIA /CHECK FOR END OF BUFFER TAD ZZ SZL SNA CLA POPJ CDF 10 TAD I P /GET A CHAR AND Z377 CDF 0 JMP I PTCH XXSUBS, EDSUB EHSUB EOSUB ESSUB ETSUB EUSUB / EVSUB / CXSUB CXSUB, EVSUB, ESSUB, EOSUB, 0 PAGE RELOC