TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Table of contents 1- 5 TECO-11 2- 1 INTERNAL GLOBALS 3- 1 ASSEMBLY PARAMETERS 4- 1 READ/WRITE AREAS USED BY TECO 5- 1 EXTERNAL GLOBALS 6- 1 DOCUMENTATION OF 'TECOIO' SUBROUTINES 7- 1 GENERAL PDP-11 DEFINITIONS 7- 14 CHARACTER DEFINITIONS 8- 1 MACROS 9- 1 Q-REGISTER NUMBER DEFINITIONS 10- 1 DEFINE THE OFFSETS FROM R5 11- 1 INITIALIZE TECO'S CODE, LISTENING, DISPATCH, MESSAGE SECTIONS 12- 20 COMMAND CHARACTER '? 13- 1 SCAN 13- 32 COMMAND CHARACTER 'C-100 14- 1 COMMAND INPUT - STAR 14- 27 COMMAND INPUT - SPACE 14- 38 COMMAND INPUT - BELL 14- 47 COMMAND INPUT - QUESTION MARK 15- 1 MAIN ENTRY/RE-ENTRY POINT 17- 1 COMMAND INPUT - DELETE 17- 8 COMMAND INPUT - CONTROL/U 18- 1 COMMAND INPUT - ACCENT GRAVE 18- 7 COMMAND INPUT - ESCAPE 18- 22 INTERPRETER 18- 44 COMMAND CHARACTER '^ 19- 1 COMMAND INPUT - LINE FEED 19- 5 COMMAND INPUT - BACKSPACE 20- 1 COMMAND INPUT - CONTROL/W 21- 3 COMMAND CHARACTER 'L 22- 3 COMMAND CHARACTER LAB 22- 14 COMMAND CHARACTER RAB 22- 32 COMMAND CHARACTER ESC 23- 1 COMMAND CHARACTER '; 24- 3 COMMAND CHARACTER '= 24- 22 COMMAND CHARACTER FF 24- 28 COMMAND CHARACTER '! 24- 30 COMMAND CHARACTER 'A-100 25- 1 COMMAND CHARACTER '\ 26- 3 COMMAND CHARACTER '" 27- 9 COMMAND CHARACTER '' 27- 20 COMMAND CHARACTER VBR 28- 3 COMMAND CHARACTER 'U-100 28- 22 COMMAND CHARACTER 'X 29- 3 COMMAND CHARACTER 'F 29- 12 COMMAND CHARACTER 'S 31- 8 COMMAND CHARACTER '_ 31- 12 COMMAND CHARACTER 'N 32- 14 COMMAND CHARACTER 'G 33- 1 COMMAND CHARACTER 'I-100 33- 9 COMMAND CHARACTER 'I 35- 1 COMMAND CHARACTER 'P 35- 2 COMMAND CHARACTER "PW 36- 3 COMMAND CHARACTER 'Y 38- 26 COMMAND CHARACTER 'E 40- 4 COMMAND CHARACTER 'V 40- 28 COMMAND CHARACTER 'T TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Table of contents 40- 35 COMMAND CHARACTER 'W 40- 53 COMMAND CHARACTER 'O-100 40- 55 COMMAND CHARACTER 'D-100 42- 1 COMMAND CHARACTER 'A 43- 1 COMMAND CHARACTER 'N-100 43- 5 COMMAND CHARACTER 'B-100 43- 9 COMMAND CHARACTER 'S-100 43- 13 COMMAND CHARACTER 'F-100 43- 17 COMMAND CHARACTER 'H-100 43- 23 COMMAND CHARACTER 'H 43- 26 COMMAND CHARACTER 'Z 43- 30 COMMAND CHARACTER 'Y-100 43- 34 COMMAND CHARACTER '. 43- 38 COMMAND CHARACTER ', 43- 44 COMMAND CHARACTER NUL 43- 45 COMMAND CHARACTER LF 43- 46 COMMAND CHARACTER CR 43- 47 COMMAND CHARACTER SPACE 43- 48 COMMAND CHARACTER DEL 44- 1 COMMAND CHARACTER 'T-100 45- 1 COMMAND CHARACTER '^-100 45- 9 COMMAND CHARACTER 'Z-100 45- 15 COMMAND CHARACTER 'Q 45- 29 COMMAND CHARACTER '% 46- 3 COMMAND CHARACTER '& 46- 5 COMMAND CHARACTER '# 46- 7 COMMAND CHARACTER '/ 46- 9 COMMAND CHARACTER '* 46- 11 COMMAND CHARACTER '- 46- 14 COMMAND CHARACTER '+ 46- 22 COMMAND CHARACTER '( 46- 34 COMMAND CHARACTER ') 47- 1 COMMAND CHARACTER '9 47- 2 COMMAND CHARACTER '8 47- 5 COMMAND CHARACTER '7 47- 6 COMMAND CHARACTER '6 47- 7 COMMAND CHARACTER '5 47- 8 COMMAND CHARACTER '4 47- 9 COMMAND CHARACTER '3 47- 10 COMMAND CHARACTER '2 47- 11 COMMAND CHARACTER '1 47- 12 COMMAND CHARACTER '0 47- 45 COMMAND CHARACTER 'B 48- 37 COMMAND CHARACTER '_-100 49- 3 COMMAND CHARACTER 'E-100 49- 7 COMMAND CHARACTER 'X-100 49- 50 COMMAND CHARACTER 'Q-100 50- 1 COMMAND CHARACTER 'U 50- 14 COMMAND CHARACTER 'R-100 51- 1 COMMAND CHARACTER ': 51- 9 COMMAND CHARACTER 'J 51- 14 COMMAND CHARACTER 'R 51- 19 COMMAND CHARACTER 'C 52- 23 COMMAND CHARACTER 'D 52- 29 COMMAND CHARACTER 'K 53- 1 ADJUST TEXT AREA ROUTINE 55- 1 COMMAND CHARACTER 'O TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Table of contents 56- 1 SKIP OVER COMMAND 57- 45 COMMAND CHARACTER '@ 58- 1 ERROR MESSAGE PROCESSOR 61- 1 Q-REGISTER REFERENCE 61- 25 GET SUM OF Q-REGISTER IN "QNMBR" (QSUMY) 61- 29 GET SUM OF Q-REGISTER IN R0 (QSUMX) 62- 1 COMMAND CHARACTER '[ 63- 10 COMMAND CHARACTER '] 64- 1 Q-REGISTER SIZE ADJUST ROUTINE 65- 1 COMMAND CHARACTER 'M 66- 1 LOCAL Q-REGISTER HANDLING SUBROUTINES 68- 1 GENERAL SUBROUTINES 70- 25 SORT 84- 1 SIZING (SHUFFLING) ROUTINES 86- 1 CHARACTER LIST FOR " COMMANDS 87- 1 CHARACTER LIST FOR E COMMANDS 88- 1 CHARACTER LIST FOR F COMMANDS 89- 1 COMMAND CHARACTER LIST 90- 1 CHARACTER LIST FOR "SKPSET" 91- 1 GENERIC SEARCH MATCHING TABLE 92- 1 8-BIT CHARACTER CONVERSION TABLE 93- 1 FINAL FIXUPS... TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 1 1 .TITLE TECO TECO-11 2 .NLIST TTM 3 .LIST TOC,MEB,BEX 4 .DSABL REG,GBL,LC 5 .SBTTL TECO-11 6 7 ; PDP-11 TECO 8 ; 9 ; PDP-11 TECO STARTED OUT AS A BRUTE FORCE TRANSLATION OF OS/8 10 ; TECO BY HANK MAURER AND BOB HARTMAN AT FORD OF COLOGNE, 11 ; WEST GERMANY. OS/8 TECO CAME FROM A PROGRAM ORIGINALLY 12 ; WRITTEN BY RUSSELL HAMM, WAY BACK WHEN... IT WAS MODIFIED 13 ; FOR OS/8 BY THE O.M.S.I. CREW, SPEEDED UP, SHORTENED, AND 14 ; MAKE PDP-10 COMPATIBLE BY RICHARD LARY OF DEC WITH ASSISTANCE 15 ; FROM MARIO DENOBLI OF THE P?S. THE BRUTE FORCE TRANSLATION 16 ; WAS FURTHER MUNGED AND ALTERED BY MARK BRAMHALL OF DEC TO 17 ; BRING IT INTO MORE STANDARD PDP-11 CODE AND MAKE A HIGH/LOW 18 ; SEGMENT SPLIT. MEMORY SIZE EXPANSION WAS ADDED. FURTHER PDP-10 19 ; COMPATIBILITY WAS DONE BY ANTON CHERNOFF. VARIOUS NEW COMMANDS 20 ; AND FEATURES WERE ADDED AGAIN. FINALLY HERE WE ARE... TECO-11! 21 22 ; LAST EDIT ON 31-DEC-84 BY BILL SCONCE 23 24 .IDENT /V40.00/ 25 26 000050 VERSON = 40. ;VERSION NUMBER TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 2 INTERNAL GLOBALS 1 .SBTTL INTERNAL GLOBALS 2 3 ; MAIN ENTRY POINT AND GLOBAL EQUATES 4 5 .GLOBL VERSON ;TECO'S VERSION NUMBER (SEE FIRST LISTING PAGE) 6 7 .GLOBL TECO ;"DEAD START" ENTRY POINT 8 ; NOTE: ENTER TECO HERE WITH THE READ/WRITE AREA ALL SET UP AND 9 ; POINTED TO BY R5. TECO WILL SET (RESET) THE SP STACK ITSELF. 10 11 .GLOBL TECOCR ;"START" ENTRY POINT WITH CR/LF OUTPUT 12 ; NOTE: ENTER TECO HERE WITH THE READ/WRITE AREA ALL SET UP AND 13 ; POINTED TO BY R5. THE SP STACK MUST BE VALID, BUT TECO WILL 14 ; SET (RESET) THE SP STACK SOON. A CARRIAGE RETURN/LINE FEED 15 ; PAIR IS OUTPUT BEFORE (RE-)STARTING TECO. 16 17 .GLOBL CMDQRG ;Q-REG NUMBER OF THE COMMAND Q-REGISTER 18 19 .GLOBL RWSIZE ;SIZE OF TECO'S READ/WRITE AREA IN BYTES 20 21 .GLOBL TECOCH ;LOCATION OF THE DEFAULT COMMAND JUMP DISPATCH TABLE 22 ; NOTE: THIS IS THE DEFAULT COMMAND JUMP DISPATCH TABLE FOR TECO 23 ; COMMANDS. IT IS 314(8) BYTES IN LENGTH CORRESPONDING TO A 24 ; WORD ENTRY FOR EVERY ASCII CODE BETWEEN 000(8) AND 140(8) 25 ; INCLUSIVE AND A WORD ENTRY FOR EVERY ASCII CODE BETWEEN 26 ; 173(8) AND 177(8) INCLUSIVE. THE ADDRESS "TECOCH" IS THE NORMAL 27 ; ADDRESS STORED IN "TECOJP(R5)" FOR USE AS THE COMMAND JUMP 28 ; DISPATCH TABLE. 29 30 .GLOBL ERROR ;LOCATION OF THE GENERAL "ILLEGAL COMMAND" ERROR 31 ; NOTE: PATCHING THE JUMP DISPATCH TABLE (WHICH STARTS AT @TECOJP(R5), 32 ; INDEXED BY ASCII CHARACTER CODE IN RANGE 0 TO 140 TIMES 2 33 ; OR BY ASCII CHARACTER CODE IN RANGE 173 TO 177 MINUS 32 TIMES 2 34 ; FOR WORD ADDRESSING) TO POINT TO THIS LOCATION WILL DISABLE 35 ; THE CORRESPONDING COMMAND IN TECO. FOR EXAMPLE, PATCHING 36 ; OFFSET 262(8), WHICH IS 131(8) TIMES 2, WHICH IS THE ASCII CODE 37 ; FOR 'Y', TO POINT TO THE LOCATION "ERROR" WILL DISABLE THE 38 ; YANK COMMAND. 39 40 .GLOBL CNV8BT ;LOCATION OF THE 8-BIT CHARACTER CONVERSION TABLE 41 ; NOTE: THIS TABLE HAS A WORD ENTRY FOR EVERY CHARACTER CODE BETWEEN 200(8) 42 ; AND 377(8) INCLUSIVE. FOR LEGAL DEC MULTI-NATIONAL CHARACTER CODES, 43 ; THE ENTRY IS THE TWO CHARACTER COMPOSE SEQUENCE IN ASCII (AND BIT 44 ; <15> IS CLEAR). FOR UNUSED AND/OR ILLEGAL CHARACTER CODES, THE 45 ; ENTRY IS THE TWO CHARACTER HEXIDECIMAL REPRESENTATION OF THE CODE 46 ; AND HAS BIT <15> SET. 47 48 ; SPECIAL ACCESS TO TECO'S COMMAND INTERPRETER LOOP 49 50 .GLOBL CMDDNE ;COMMAND DONE LOCATION IN INTERPRETER LOOP 51 ; OUT: R0, R1, R2, R3, R4 CAN BE CLOBBERED 52 ; 53 ; NOTE: WHEN A COMMAND COMPLETES IT RETURNS TO THIS LOCATION. THE 54 ; NORMAL CONTENTS OF THIS LOCATION IS "TST NFLG(R5)". YOU CAN 55 ; OVERLAY THESE TWO (2) WORDS WITH A "JSR PC,@#XXX" TO CALL 56 ; SOME SPECIAL COMMAND COMPLETION SUBROUTINE; JUST BE SURE TO 57 ; END YOUR ROUTINE WITH "TST NFLG(R5)" IMMEDIATELY BEFORE THE TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 2-1 INTERNAL GLOBALS 58 ; "RTS PC". 59 60 ; SPECIAL ACCESS TO SOME OF TECO'S ROUTINES 61 62 ; NOTE THAT, ALL ROUTINES REQUIRE R5 TO BE POINTING TO TECO'S READ/WRITE 63 ; AREA AND RETURN R5 UNMODIFIED. 64 65 .GLOBL CRLF ;JSR PC,CRLF 66 ; OUT: R0 IS CLOBBERED 67 ; 68 ; NOTE: THIS ROUTINE WILL PRINT / ON THE TERMINAL. 69 70 .GLOBL CRLFNO ;JSR PC,CRLFNO 71 ; OUT: R0 IS CLOBBERED 72 ; 73 ; NOTE: THIS ROUTINE WILL CANCEL ANY CONTROL/O AND 74 ; THEN PRINT / ON THE TERMINAL. 75 76 .GLOBL DIVD ;JSR PC,DIVD 77 ; IN: R0 = DIVIDEND (UNSIGNED) 78 ; R2 = DIVISOR (UNSIGNED) 79 ; 80 ; OUT: R0 = ANSWER (UNSIGNED) 81 ; R1 = REMAINDER (UNSIGNED) 82 ; R3 IS CLOBBERED 83 84 .GLOBL IOERR ;JMP IOERR 85 ; IN: R0 = RAD50 OF AN ERROR CODE (3 ALPHANUMERICS) 86 ; R2 -> AN ASCIZ STRING EXPLAINING THE ERROR 87 ; = 0 IF NO EXPLANATION STRING 88 ; 89 ; NOTE: THIS IS AN ERROR CALL AND NO RETURN TO THE CALLER IS MADE. 90 91 .GLOBL IOERRS ;JMP IOERRS 92 ; IN: R0 = RAD50 OF AN ERROR CODE (3 ALPHANUMERICS) 93 ; R2 -> AN ASCIZ STRING EXPLAINING THE ERROR 94 ; = 0 IF NO EXPLANATION STRING 95 ; R4 = 0 AS A SIGNAL TO ALSO PRINT THE FILENAME BUFFER 96 ; 97 ; NOTE: THIS IS AN ERROR CALL AND NO RETURN TO THE CALLER IS MADE. 98 99 .GLOBL PRTLIN ;JSR PC,PRTLIN 100 ; OUT: R0, R1, R3, R4 ARE CLOBBERED 101 ; 102 ; NOTE: THIS ROUTINE WILL (RE-)PRINT THE MOST RECENT TECO COMMAND 103 ; LINE USING THE 'TECOIO' ROUTINES "TYPE" AND "PRINT". 104 105 .GLOBL SIZEQR ;JSR PC,SIZEQR 106 ; IN: R1 = DESIRED SIZE IN BYTES OF THE Q-REGISTER AREA (0<=R1<=077777) 107 ; 108 ; OUT: IF CALL SUCCEEDED THEN THE CARRY IS SET. 109 110 .GLOBL UPPERC ;JSR PC,UPPERC 111 ; IN: R0 = CHARACTER TO CONVERT TO UPPER CASE IF IT'S LOWER CASE 112 ; 113 ; OUT: R0 = CHARACTER CONVERTED TO UPPER CASE IF IT WAS LOWER CASE 114 ; TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 2-2 INTERNAL GLOBALS 115 ; NOTE: THIS ROUTINE IS SIMPLY AN "UPCASE" ROUTINE. 116 117 .GLOBL ZEROD ;JSR R3,ZEROD 118 ; IN: N(R5) = NUMBER TO CONVERT TO ASCII 119 ; NMRBAS(R5) = 0 FOR DECIMAL CONVERSION (WITH OPTIONAL MINUS SIGN) 120 ; > 0 FOR OCTAL CONVERSION (NO MINUS SIGN EVER) 121 ; < 0 FOR HEXIDECIMAL CONVERSION (NO MINUS SIGN EVER) 122 ; 123 ; OUT: R0, R1, R2, R3, R4 ARE CLOBBERED 124 ; 125 ; NOTE: THE FORMAT OF THIS CALL IS: 126 ; 127 ; JSR R3,ZEROD 128 ; .WORD SUBR 129 ; 130 ; WHERE THE "SUBR" IS THE CHARACTER OUTPUT ROUTINE. "SUBR" WILL 131 ; BE CALLED FOR EVERY CHARACTER OF THE CONVERSION VIA A 132 ; 'JSR PC,' WITH THE CHARACTER IN R0. "SUBR" CAN CLOBBER 133 ; ALL REGISTERS EXCEPT R4 AND R5. 134 135 ;.GLOBL $E$??? ;JMP $E$??? 136 ; NOTE: THE VARIOUS ERRORS THAT TECO ISSUES ARE ALL GLOBALIZED 137 ; WITH A SYMBOL OF THE FORM $E$??? WHERE THE ??? IS THE 138 ; THREE CHARACTER ERROR ABBREVIATION. $E$MEM IS THE 139 ; MEMORY OVERFLOW ERROR FOR EXAMPLE. 140 ; 141 ; THESE ARE ERROR CALLS AND NO RETURN TO THE CALLER IS MADE. 142 143 .GLOBL .III.I ;JSR PC,.III.I 144 ; IN: R0 = CHARACTER TO INSERT @ "DOT" 145 ; 146 ; OUT: R0, R1, R2, R3 ARE CLOBBERED 147 148 .GLOBL .VVV.V ;JSR PC,.VVV.V 149 ; IN: R0 = THE NUMBER OF LINES (PLUS OR MINUS) TO MOVE "DOT" (WHICH 150 ; IS P(R5)) FROM WHERE "DOT" CURRENTLY STANDS. (NOTE: THE 151 ; ARGUMENT BEHAVES JUST LIKE THE L COMMAND TO TECO.) 152 ; 153 ; OUT: R1 = THE NEW "DOT" AS A RELATIVE VALUE (I.E., 0<=R1<=ZZ(R5)) 154 ; P(R5) HAS ALSO BEEN UPDATED TO THE SAME VALUE 155 ; R0, R2, R3 ARE CLOBBERED 156 ; 157 ; NOTE: THIS ROUTINE IS USED BY TECO FOR THE L COMMAND. IF IT IS NOT 158 ; DESIRED THAT "DOT" SHOULD BE ALTERED, THEN THE CALLER MUST 159 ; SAVE P(R5) BEFORE THE CALL AND RESTORE IT UPON RETURN. 160 161 .GLOBL .YYY.Y ;JSR PC,.YYY.Y 162 ; OUT: R0, R1, R2, R3, R4 ARE CLOBBERED 163 ; 164 ; NOTE: THIS IS SPECIAL ACCESS TO TECO'S ROUTINE FOR THE Y (YANK) 165 ; COMMAND. IF SOME ERROR OCCURS DURING THE YANK NO RETURN WILL 166 ; BE MADE TO THE CALLER. TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 3 ASSEMBLY PARAMETERS 1 .SBTTL ASSEMBLY PARAMETERS 2 3 ; IF THE SYMBOL "E$$TXT" IS DEFINED AS NON-ZERO, THEN ALL ERROR 4 ; CALLS (INCLUDING THOSE FROM 'TECOIO') PASS AN ASCIZ 5 ; STRING TO EXPLAIN THE ERROR. IF THE SYMBOL "E$$TXT" IS 6 ; DEFINED AS ZERO, THEN NO ASCIZ STRINGS NEED BE PASSED 7 ; AND NO EXPLANATIONS ARE EVER GIVEN. 8 ; 9 ; FURTHERMORE, IF THE SYMBOL "E$$TXT" IS DEFINED AS 1, THEN ALL 10 ; ERROR MESSAGES IN TECO WILL BE UPPER AND LOWER CASE. IF 11 ; THE SYMBOL "E$$TXT" IS DEFINED AS -1, THEN ALL MESSAGES 12 ; WILL BE UPPER CASE ONLY. 13 ; 14 ; THE DEFAULT IS FOR "E$$TXT" TO BE DEFINED AS 1. 15 16 .IIF NDF E$$TXT, E$$TXT=1 ;DO THE DEFAULT 17 000001 E$$TXT = E$$TXT ;LIST THE SYMBOL 18 .GLOBL E$$TXT ; AND GLOBALIZE IT 19 20 .IF GT E$$TXT 21 .ENABL LC ;ONLY IF REQUESTED... 22 .ENDC TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 4 READ/WRITE AREAS USED BY TECO 1 .SBTTL READ/WRITE AREAS USED BY TECO 2 3 ; THERE ARE FOUR DIFFERENT READ/WRITE AREAS: 4 ; 5 ; 1) THE MAIN READ/WRITE AREA (TECO'S CRITICAL DATA [AND "WATCH" STATIC DATA]) 6 ; 7 ; THIS AREA IS DIVIDED INTO TWO ADJACENT SECTIONS: 8 ; 9 ; SECTION #1 - TECO'S CRITICAL DATA 10 ; 11 ; LENGTH: DEFINED (FOR 'TECOIO') BY THE TECO DEFINED 12 ; GLOBAL "RWSIZE". THIS IS THIS SECTION'S SIZE 13 ; IN BYTES. 14 ; WHERE: 'TECOIO' DETERMINES WHERE THIS SECTION IS AND 15 ; POINTS TO IT BY SETTING R5 TO POINT TO ITS START. 16 ; SETUP: THIS WHOLE SECTION MUST BE CLEARED TO ALL ZERO 17 ; EXCEPT FOR THE FOLLOWING ITEMS: 18 ; TECOSP (SEE AREA #2) 19 ; TECOPD, PDL, SCHBUF, FILBUF, TAGBUF 20 ; (SEE AREA #3) 21 ; TXSTOR, QRSTOR, ZMAX, QMAX, CURFRE 22 ; (SEE AREA #4) 23 ; INPNTR, OUPNTR (SEE 'TECOIO' SUBROUTINES) 24 ; TECOJP (SEE INTERNAL GLOBALS) 25 ; ETYPE (SET TO, AT LEAST, ET$XIT) 26 ; OUTDNE (SET TO -1) 27 ; SYMSPC (SPECIAL SYMBOL CHARACTER IF 28 ; A-Z, ., AND $ DOESN'T SUFFICE) 29 ; [NOTE: THE ABOVE ITEMS ARE DEFINED BY TECO AS 30 ; GLOBAL OFFSET VALUES FROM R5.] 31 ; 32 ; SECTION #2 - "WATCH" STATIC DATA [OPTIONAL] 33 ; 34 ; LENGTH: THE OPTIONAL MODULE 'CRTRUB' INITIALLY DEFINES THE 35 ; LENGTH OF THIS SECTION. IF "WATCH" IS NOT CONFIGURED 36 ; OR 'CRTRUB' DECIDES THAT THE TERMINAL IS NOT SUPPORTED 37 ; BY "WATCH", THE LENGTH WILL BE ZERO AND REMAIN ZERO. 38 ; WHERE: ASSUMED IMMEDIATELY AFTER SECTION #1 ABOVE. 39 ; SETUP: THIS WHOLE SECTION MUST BE CLEARED TO ALL ZERO 40 ; BEFORE THE INITIAL CALL, IF ANY, TO 'CRTRUB' IS MADE. 41 ; 42 ; 2) THE SP STACK AREA (FOR TECO AND 'TECOIO' USAGE) 43 ; 44 ; LENGTH: WHATEVER SEEMS REASONABLE (200(8) BYTES SEEMS 45 ; A GOOD GUESS). 46 ; WHERE: 'TECOIO' INITIALLY SETS THE STACK POINTER (SP) 47 ; TO POINT TO THE END OF THIS AREA +2. IN ADDITION, 48 ; 'TECOIO' SETS "TECOSP" TO ALSO POINT TO THE END 49 ; OF THIS AREA +2 (I.E., SP STACK RESET VALUE). 50 ; SETUP: NONE NEEDED. 51 ; 52 ; 3) THE PUSH-DOWN LIST, SEARCH BUFFER, FILENAME BUFFER, AND TAG BUFFER 53 ; 54 ; LENGTH: WHATEVER SEEMS REASONABLE (100(8) BYTES FOR 55 ; THE PUSH-DOWN LIST AND 200(8) BYTES EACH FOR THE 56 ; SEARCH, FILENAME, AND TAG BUFFERS SEEM GOODLY NUMBERS). 57 ; NOTE THAT THESE FOUR AREAS ARE COMBINED INTO ONE TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 4-1 READ/WRITE AREAS USED BY TECO 58 ; AREA. TECO DEPENDS ON THE FACT THAT THIS IS 59 ; TRUE! FURTHERMORE, THE PUSH-DOWN LIST MUST BE 60 ; THE LOWEST IN ADDRESS SPACE, THE SEARCH BUFFER 61 ; IS NEXT, THE FILENAME BUFFER IS NEXT, AND THE TAG 62 ; BUFFER MUST BE THE HIGHEST IN ADDRESS SPACE. 63 ; WHERE: 'TECOIO' POINTS TO THIS AREA BY SETTING: 64 ; "TECOPD" AND "PDL" TO POINT TO THE AREA'S 65 ; START (PUSH-DOWN LIST). 66 ; "SCHBUF" TO POINT INTO THE MIDDLE OF THE 67 ; AREA (SEARCH BUFFER START). 68 ; "FILBUF" TO POINT INTO THE MIDDLE OF THE 69 ; AREA (FILENAME BUFFER START). 70 ; "TAGBUF" TO POINT INTO THE MIDDLE OF THE 71 ; AREA (TAG BUFFER START). 72 ; SETUP: THIS WHOLE AREA IS CLEARED TO ALL ZERO EXCEPT 73 ; FOR THE LAST BYTE OF THE SEARCH BUFFER, THE LAST 74 ; BYTE OF THE FILENAME BUFFER, AND THE LAST BYTE OF 75 ; THE TAG BUFFER WHICH ARE SET TO -1. 76 ; 77 ; 4) ["WATCH" DYNAMIC DATA,] TEXT BUFFER, Q-REGISTERS, AND FREE SPACE 78 ; 79 ; LENGTH: 'TECOIO' INITIALLY DEFINES THE LENGTH OF THIS AREA, BUT 80 ; ITS SIZE IS CAPABLE OF BEING EXPANDED (IF YOUR ENVIRONMENT 81 ; ALLOWS IT). THE AREA IS ORGANIZED SUCH THAT THE "WATCH" 82 ; DYNAMIC DATA (IF ANY) COMES FIRST (LOWEST IN ADDRESS SPACE), 83 ; TEXT STORAGE COMES NEXT, Q-REGISTER STORAGE COMES NEXT, 84 ; AND FREE SPACE (IF ANY) COMES LAST. WITHOUT "WATCH", THE 85 ; AREA'S LENGTH IS REFLECTED BY THE SUM OF "ZMAX" PLUS 86 ; "QMAX" PLUS "CURFRE" CORRESPONDING TO TEXT SIZE, Q-REGISTER 87 ; SIZE, AND FREE SPACE RESPECTIVELY. IF "WATCH" ALLOCATES 88 ; ITS DYNAMIC DATA, IT WILL START WHERE THIS AREA ORIGINALLY 89 ; STARTED. "WATCH" WILL SHUFFLE UP THE TEXT AND Q-REGISTERS 90 ; AND PUNISH FREE SPACE. IF 'TECOIO' WISHES TO MOVE THIS AREA 91 ; TO ANOTHER LOCATION, IT MUST REMEMBER THE INITIAL STARTING 92 ; ADDRESS OF THE AREA AND, WHEN IT COMES TIME TO SHUFFLE, IT 93 ; 1) FINDS THE SIZE OF THE DATA TO COPY BY COMPUTING 94 ; ((TXSTOR)-(REMEMBERED ADDRESS))+(ZMAX)+(QMAX) 95 ; 2) COPIES THE DATA FROM THE REMEMBERED ADDRESS TO 96 ; THE NEW ADDRESS 97 ; 3) UPDATES TXSTOR AND QRSTOR BY 98 ; (NEW ADDRESS)-(REMEMBERED ADDRESS) 99 ; 4) SETS A NEW REMEMBERED ADDRESS 100 ; THE AREA CAN BE MOVED AT ALL 'TECOIO' CALLS EXCEPT THE 101 ; "SIZER" CALL! 102 ; WHERE: 'TECOIO' SETS UP TWO POINTERS TO THIS AREA 103 ; "TXSTOR" POINTS TO AREA'S START (TEXT START) 104 ; "QRSTOR" POINTS TO AREA'S MIDDLE (Q-REGISTER START) 105 ; AND THREE SIZES FOR THIS AREA 106 ; "ZMAX" INITIAL SIZE OF TEXT 107 ; "QMAX" INITIAL SIZE OF Q-REGISTERS 108 ; "CURFRE" INITIAL SIZE OF FREE SPACE (CAN BE ZERO) 109 ; ONE OF THE 'TECOIO' SUBROUTINE CALLS IS FOR EXPANDING THIS 110 ; AREA. WHEN 'TECOIO' EXPANDS THE AREA (BY ADDING MEMORY TO 111 ; ITS END), 'TECOIO' MUST UPDATE (BY ADDING TO) "CURFRE" TO 112 ; REFLECT THE ADDITION. 113 ; SETUP: NONE NEEDED (BUT ZERO WOULDN'T HURT). TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 5 EXTERNAL GLOBALS 1 .SBTTL EXTERNAL GLOBALS 2 3 ; "ET" (EDIT TYPEOUT) BITS 4 5 .GLOBL ET$BIN ; +1., OUTPUT IN BINARY (IMAGE) MODE 6 .GLOBL ET$CRT ; +2., DO SCOPE TYPE RUBOUT AND CONTROL/U 7 .GLOBL ET$LC ; +4., ACCEPT LOWER CASE INPUT 8 .GLOBL ET$NCH ; +8., NO ECHO DURING INPUT FOR CTRL/T 9 .GLOBL ET$CCO ; +16., CANCEL CONTROL/O ON OUTPUT 10 .GLOBL ET$CKE ; +32., RETURN -1 IF ERROR/NO INPUT ON CTRL/T 11 .GLOBL ET$DET ; +64., DETACH AND DETACHED FLAG 12 .GLOBL ET$XIT ; +128., "NO PROMPT YET" FLAG 13 .GLOBL ET$TRU ; +256., TRUNCATE LONG OUTPUT LINES 14 .GLOBL ET$IAS ; +512., INTERACTIVE SCOPE AVAILABLE FOR "WATCH" 15 .GLOBL ET$RFS ; +1024., REFRESH SCOPE AVAILABLE FOR "WATCH" 16 ; +2048., RESERVED BY TECO-8 17 .GLOBL ET$8BT ; +4096., TERMINAL IS AN 8-BIT TERMINAL 18 .GLOBL ET$GRV ; +8192., ACCEPT "`" AS ESCAPE DURING COMMAND INPUT 19 ;+16384., UNUSED 20 .GLOBL ET$CC ;-32768., ALLOW PROGRAM TO TRAP CONTROL/C 21 22 ; "ED" (EDIT MODE) BITS 23 24 .GLOBL ED$CTL ; +1., DON'T ALLOW "^" AS MEANING CONTROL CHARACTER 25 .GLOBL ED$YNK ; +2., ALLOW YANKS, ETC. TO CLOBBER TEXT BUFFER 26 .GLOBL ED$EXP ; +4., DON'T ALLOW ARBITRARY EXPANSION(S) 27 ; +8., RESERVED BY TECO-8 28 .GLOBL ED$SRH ; +16., DON'T RESET "DOT" ON SEARCH FAILURE 29 .GLOBL ED$IMD ; +32., ALLOW IMMEDIATE MODE COMMANDS 30 .GLOBL ED$INC ; +64., ONLY MOVE "DOT" BY ONE ON ITERATIVE SEARCH FAILURES 31 .GLOBL ED$WCH ; +128., DON'T DO AUTOMATIC "W" COMMAND BEFORE PROMPT 32 ; +256., UNUSED 33 ; +512., UNUSED 34 ; +1024., UNUSED 35 ; +2048., UNUSED 36 ; +4096., UNUSED 37 ; +8192., UNUSED 38 ;+16384., UNUSED 39 ;-32768., UNUSED TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 6 DOCUMENTATION OF 'TECOIO' SUBROUTINES 1 .SBTTL DOCUMENTATION OF 'TECOIO' SUBROUTINES 2 3 ; TECO WATCHES THE SIGN BIT (BIT 15) OF THE GLOBAL R5 OFFSET "TFLG" 4 ; AS A 'STOP SOON' INDICATOR. THIS FLAG IS CLEARED EACH 5 ; TIME TECO COMES BACK TO THE MAIN COMMAND LEVEL. IF, DURING THE 6 ; EXECUTION OF TECO, 'TECOIO' WANTS TO STOP TECO (THE RESULT OF A 7 ; CONTROL/C BEING TYPED FOR INSTANCE), ALL 'TECOIO' HAS TO DO IS SET 8 ; BIT 15 INTO THE FLAG. FOR EXAMPLE: 9 ; 10 ; MOVB #-1,TFLG+1(R5) 11 ; -OR- 12 ; BIS #100000,TFLG(R5) 13 ; 14 ; WHEN TECO DETECTS THE SIGN BIT IN THE FLAG IT CALLS THE 'TECOIO' 15 ; SUBROUTINE "STOPON" (SEE BELOW) FOR ANY FURTHER ACTION. 16 17 ; NOTE THAT, UNLESS A REGISTER IS SPECIFICALLY MENTIONED AS 18 ; OUTPUT FROM A SUBROUTINE, IT MUST BE PRESERVED! 19 20 .GLOBL ALLERR ;JSR PC,ALLERR 21 ; IN: R0 = RAD50 OF THE ERROR CODE 22 ; 23 ; NOTE: THIS CALL IS MADE EVERY TIME TECO DETECTS AN ERROR. IT 24 ; ALLOWS FOR 'TECOIO' TO TAKE ANY NEEDED CLEANUP ACTION 25 ; REQUIRED SUCH AS RE-ENABLING ECHO AND/OR DISABLING ANY 26 ; INDIRECT COMMAND FILE CURRENTLY ACTIVE. 27 ; 28 ; IN ADDITION, IF 'TECOIO' EXITS FROM THIS ROUTINE WITH 29 ; A JSR PC,@(SP)+ (I.E., A CO-ROUTINE RETURN), THEN IT WILL 30 ; GET CONTROL BACK AFTER THE ERROR MESSAGE HAS BEEN PRINTED 31 ; BY TECO (LESS THE TRAILING CR/LF). 32 33 .GLOBL BACKUP ;JSR PC,BACKUP 34 ; IN: R0 = POINTER TO BUFFER START 35 ; R1 = NUMBER OF CHARACTERS TO OUTPUT 36 ; R2 = -1 MEANS END BUFFER WITH FORM FEED 37 ; = 0 MEANS DON'T ADD FORM FEED TO BUFFER 38 ; R4 = -(NUMBER OF PAGES TO BACK UP) 39 ; 40 ; OUT: IF NO ERROR THEN CARRY BIT IS CLEAR AND: 41 ; R4 = 0 => THE SPECIFIED NUMBER OF PAGES WERE BACKED UP 42 ; <> 0 => BEGINNING OF FILE WAS HIT DURING THE BACKING UP 43 ; SEE ERROR NOTES IF ERROR. 44 ; 45 ; NOTE: THIS CALL IS MADE FOR -P (BACKWARD PAGE) COMMANDS. 46 ; THE CURRENT TEXT BUFFER AS DESCRIBED BY R0, R1, AND R2 IS 47 ; FIRST SAVED ON THE CURRENT OUTPUT STREAM. THEN THE CURRENT 48 ; INPUT STREAM IS BACKED UP SO THAT THE NEXT 'GETBUF' CALL 49 ; WILL READ THE -(R4)TH PAGE GOING BACKWARDS. NOTE THAT THERE 50 ; NEED NOT BE A CURRENT OUTPUT STREAM IF R1 = R2 = 0. 51 52 .GLOBL CLSFIL ;JSR PC,CLSFIL 53 ; NOTE: CLOSES THE CURRENTLY SELECTED INPUT FILE AND OUTPUT 54 ; FILE AND DOES ANY EB RENAMING NEEDED. 55 ; 56 ; IF NO ERROR THEN CARRY BIT IS CLEAR. 57 ; SEE ERROR NOTES IF ERROR. TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 6-1 DOCUMENTATION OF 'TECOIO' SUBROUTINES 58 59 .GLOBL CLSOUT ;JSR PC,CLSOUT 60 ; NOTE: CLOSES THE CURRENTLY SELECTED OUTPUT FILE AND DOES ANY 61 ; EB RENAMING NEEDED. 62 ; 63 ; IF NO ERROR THEN CARRY BIT IS CLEAR. 64 ; SEE ERROR NOTES IF ERROR. 65 66 .GLOBL DELCHR ;JSR PC,DELCHR 67 ; IN: R0 = DELETED CHARACTER 68 ; 69 ; OUT: R0, R1, R2, R3, R4 CAN BE CLOBBERED 70 ; 71 ; NOTE: THIS ROUTINE IS CALLED FOR EVERY CHARACTER "RUBBED OUT". THE 72 ; MOST SIMPLE (AND TTY COMPATIBLE) IMPLEMENTATION IS TO MAKE 73 ; THIS ROUTINE IDENTICAL TO THE 'TECOIO' "TYPE" ROUTINE. 74 75 .GLOBL DELLIN ;JSR PC,DELLIN 76 ; OUT: R0, R1, R2, R3, R4 CAN BE CLOBBERED 77 ; 78 ; NOTE: THIS ROUTINE IS CALLED EVERY TIME A LINE IS "CONTROL/U'D". THE 79 ; MOST SIMPLE (AND TTY COMPATIBLE) IMPLEMENTATION IS TO MAKE 80 ; THIS ROUTINE IDENTICAL TO THE TECO "CRLF" ROUTINE. 81 82 .GLOBL FLAGRW ;JSR PC,FLAGRW 83 ; IF: R2 <> 0 THEN FLAG READ/WRITE 84 ; 85 ; IN: R0 = VALUE ABOUT TO BE SET INTO THE FLAG (IF R3=-1) 86 ; R2 = R5 OFFSET TO THE FLAG 87 ; R3 = -1 => SETTING THE FLAG (FROM VALUE IN R0) 88 ; <> -1 => READING THE FLAG (FROM C(R2+R5)) 89 ; 90 ; NOTE: THIS ROUTINE ALLOWS 'TECOIO' DO DETECT WHEN THE USER SETS AND/OR 91 ; READS TECO FLAG VALUES. 92 ; 93 ; IF: R2 = 0 THEN READING EJ FLAG 94 ; 95 ; IN: R0 = -1 => RETURN AN OPERATING SYSTEM DEPENDENT UNIQUE VALUE 96 ; 0 => RETURN A JOB/TASK/PROCESS UNIQUE VALUE (0 TO 99) 97 ; 1 => RETURN JOB'S/TASK'S/PROCESS'S KEYBOARD NUMBER 98 ; 2 => RETURN JOB'S/TASK'S/PROCESS'S PPN/UIC 99 ; 100 ; OUT: R0 = RETURNED EJ FLAG VALUE 101 102 .GLOBL DATE ;JSR PC,DATE 103 ; OUT: R0 = TODAY'S DATE IN SYSTEM INTERNAL FORM 104 105 .GLOBL GETBUF ;JSR PC,GETBUF 106 ; IN: R0 = POINTER TO BUFFER START 107 ; R1 = MAXIMUM SIZE OF TRANSFER 108 ; R2 = AMOUNT OF FREE SPACE TO LEAVE 109 ; 110 ; OUT: IF NO ERROR THEN CARRY BIT IS CLEAR AND: 111 ; ZZ(R5) HAS BEEN UPDATED (ADDED TO) TO INDICATE THE AMOUNT 112 ; TRANSFERED INTO THE BUFFER 113 ; FFFLAG(R5) HAS BEEN SET TO: 114 ; -1 IF BUFFER ENDED WITH A FORM FEED TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 6-2 DOCUMENTATION OF 'TECOIO' SUBROUTINES 115 ; 0 IF BUFFER ENDED WITHOUT A FORM FEED 116 ; NOTE: THE FORM FEED IS NOT STORED IN THE BUFFER OR 117 ; COUNTED IN ZZ(R5). 118 ; EOFLAG(R5) HAS BEEN SET TO: 119 ; -1 IF FURTHER CALLS WOULD BE FUTILE (I.E., EOF) 120 ; 0 IF FURTHER CALLS MIGHT OBTAIN MORE DATA 121 ; SEE ERROR NOTES IF ERROR. 122 ; 123 ; NOTE: THIS CALL IS MADE FOR 'YANKS' AND 'APPENDS'. 124 ; 125 ; IF THE CALL IS FOR 'YANK' THEN: 126 ; R0 -> START OF TEXT BUFFER 127 ; R1 = CURRENT SIZE OF TEXT BUFFER 128 ; NOTE: THE TEXT BUFFER HAS BEEN ENLARGED AS MUCH 129 ; AS POSSIBLE WITHOUT CALLING FOR THE 130 ; ADDITION OF MORE MEMORY. 131 ; R2 = (1/4) OF THE SIZE OF THE ENLARGED TEXT BUFFER 132 ; NOTE: R2 IS ALWAYS AT LEAST 256. 133 ; 134 ; IF THE CALL IS FOR 'APPEND' THEN: 135 ; R0 -> FREE TEXT BUFFER AREA 136 ; R1 = REMAINING SPACE IN THE ENLARGED TEXT BUFFER 137 ; NOTE: R1 IS ALWAYS AT LEAST 256. FOR THIS CALL. 138 ; R2 = (1/4) OF THE SIZE OF THE ENLARGED TEXT BUFFER 139 ; NOTE: R2 IS ALWAYS AT LEAST 256. 140 ; = R1 FOR 'N:A' (I.E., APPEND ONLY 1 LINE) 141 ; 142 ; THE BUFFER IS FILLED UNTIL: 143 ; 144 ; 1) FORM FEED FOUND. 145 ; 2) LINE FEED FOUND AND (R1 - (# CHARS STORED)) < R2. 146 ; 3) (R1 - (# CHARS STORED)) <= 128. 147 148 .GLOBL GETFLS ;JSR PC,GETFLS 149 ; IN: R2 = 'B-'R FOR EB CALL 150 ; = 'I-'R FOR EI CALL 151 ; = 'N-'R FOR EN CALL 152 ; = 'R-'R FOR ER CALL 153 ; = 'W-'R FOR EW CALL 154 ; THE FILE SPECIFICATION STRING IS IN THE FILENAME 155 ; BUFFER (STARTING AT FILBUF(R5)) AND IS TERMINATED 156 ; WITH A BYTE OF 0. 157 ; 158 ; OUT: IF NO ERROR THEN CARRY BIT IS CLEAR. 159 ; IF ERROR IS "THAT FILE DOESN'T EXIST" THEN 160 ; 1) CARRY BIT IS SET 161 ; 2) CODE IN R0 IS RAD50 FOR "FNF" 162 ; 3) OPTIONAL ASCIZ STRING POINTER IN R2 163 ; SEE ERROR NOTES FOR OTHER ERRORS. 164 ; 165 ; NOTE: BY CONVENTION AN ER OR EW CALL WITH A NULL LENGTH FILE 166 ; SPECIFICATION STRING MEANS THAT A SWITCH BACK TO THE 167 ; PRIMARY INPUT OR OUTPUT FILE IS DESIRED. NO ACTUAL I/O 168 ; CALLS NEED BE MADE; ONLY A POINTER SWITCH. 169 ; 170 ; THE R5 OFFSET LOCATIONS "INPNTR" AND "OUPNTR" ARE USED 171 ; BY TECO TO DETERMINE WHETHER THE CURRENTLY SELECTED INPUT TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 6-3 DOCUMENTATION OF 'TECOIO' SUBROUTINES 172 ; OR OUTPUT FILE IS OPEN. IF THE DATA POINTED TO BY THE 173 ; ADDRESS IN "INPNTR" OR "OUPNTR" IS 0, THAT INPUT OR OUTPUT 174 ; FILE IS ASSUMED NOT OPEN. ANY NON-ZERO VALUED DATA WORD 175 ; MEANS THE INPUT OR OUTPUT FILE IS OPEN. IT IS THE JOB OF 176 ; 'GETFLS' (AND 'CLSFLS', 'INPSAV', ETC.) TO KEEP THESE 177 ; POINTERS MEANINGFUL. 178 179 .GLOBL GEXIT ;JSR PC,GEXIT 180 ; IF: NFLG(R5) >=0 THEN "EXIT AND GO" CALL 181 ; 182 ; IN: THE STRING ARGUMENT TO EG IS PASSED IN THE FILENAME 183 ; BUFFER TERMINATED WITH A BYTE OF 0. 184 ; 185 ; NOTE: THIS IS THE WAY TECO EXITS TO THE OPERATING SYSTEM TO 186 ; "GO". 187 ; 188 ; IF: NFLG(R5) <0 THEN "SPECIAL FUNCTION" CALL 189 ; 190 ; IN: N(R5) = -1 (PRESET FOR SUCCESS) 191 ; THE STRING ARGUMENT TO EG IS PASSED IN THE FILENAME 192 ; BUFFER TERMINATED WITH A BYTE OF 0. 193 ; 194 ; OUT: N(R5) = RETURNED VALUE 195 ; 196 ; NOTE: THIS IS THE WAY TECO GETS TO THE OPERATING SYSTEM FOR 197 ; SPECIAL NON-STANDARD FUNCTIONS. 198 199 .GLOBL INPSAV ;JSR PC,INPSAV 200 ; IN: R3 = -1 => NUMERIC ARGUMENT SPECIFIED (IT IS IN N(R5)) 201 ; <> -1 => NO NUMERIC ARGUMENT SPECIFIED 202 ; 203 ; NOTE: SWITCH TO THE SECONDARY INPUT FILE. THIS SWITCH SHOULD ONLY 204 ; INVOLVE SWITCHING THE "INPNTR" POINTER. 205 206 .GLOBL KILFIL ;JSR PC,KILFIL 207 ; NOTE: CLOSES AND KILLS THE CURRENTLY SELECTED OUTPUT FILE. 208 ; 'KILFIL' ALSO UNDOES ANY EB RENAMING THAT MIGHT BE PENDING 209 ; ON THE CURRENTLY SELECTED OUTPUT FILE. 210 ; 211 ; IF NO ERROR THEN CARRY BIT IS CLEAR. 212 ; SEE ERROR NOTES IF ERROR. 213 214 .GLOBL LISTEN ;JSR PC,LISTEN 215 ; IN: R0 = 0 MEANS DELIMITERS ARE: ESCAPE, DELETE, CTRL/U, CTRL/G, 216 ; AND ACCENT GRAVE (BUT ONLY IF "ET$GRV" IN "ETYPE") 217 ; R0 <> 0 MEANS ANYTHING IS A DELIMITER (SINGLE CHARACTER MODE) 218 ; 219 ; OUT: R0 = RETURNED CHARACTER 220 ; 221 ; NOTE: IT IS THE RESPONSIBILITY OF 'LISTEN' TO APPEND A LINE FEED 222 ; TO A CARRIAGE RETURN (IF THE SYSTEM DOESN'T). IT IS ALSO THE 223 ; RESPONSIBILITY OF 'LISTEN' TO ECHO THE TYPED CHARACTERS (IF 224 ; THE SYSTEM DOESN'T) USING THE SAME LOGIC AS THE 'TECOIO' 225 ; ROUTINE "TYPE". 'LISTEN' ALSO IMPLEMENTS "ET$LC" IN "ETYPE" 226 ; (ALLOW LOWER CASE INPUT) AND "ET$8BT" IN "ETYPE" (8-BIT TERMINAL). 227 228 .GLOBL NOCTLO ;JSR PC,NOCTLO TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 6-4 DOCUMENTATION OF 'TECOIO' SUBROUTINES 229 ; NOTE: 'NOCTLO' CANCELS ANY CTRL/O EFFECT CURRENTLY IN PROGRESS. 230 231 .GLOBL OUTSAV ;JSR PC,OUTSAV 232 ; IN: R3 = -1 => NUMERIC ARGUMENT SPECIFIED (IT IS IN N(R5)) 233 ; <> -1 => NO NUMERIC ARGUMENT SPECIFIED 234 ; 235 ; NOTE: SWITCH TO THE SECONDARY OUTPUT FILE. THIS SWITCH SHOULD ONLY 236 ; INVOLVE SWITCHING THE "OUPNTR" POINTER. 237 238 .GLOBL PRINT ;JSR PC,PRINT 239 ; IN: R3 = POINTER TO STRING OF CHARACTERS TO PRINT 240 ; R4 = NUMBER OF CHARACTERS TO PRINT (0 <= R4 <= 32767.) 241 ; 242 ; NOTE: 'PRINT' DOES TECO STANDARD CHARACTER CONVERSIONS (IF SYSTEM 243 ; DOESN'T DO IT FOR YOU), BUT IGNORES BOTH "ET$BIN" IN "ETYPE" 244 ; (BINARY OUTPUT MODE) AND "EUFLAG" (CASE FLAGGING). "ET$TRU" 245 ; IN "ETYPE" (TRUNCATE LONG LINES) AND "ET$CCO" IN "ETYPE" 246 ; (CANCEL CONTROL/O) BOTH ALWAYS APPLY. 247 248 .GLOBL PRINTB ;JSR PC,PRINTB 249 ; IN: R3 = POINTER TO STRING OF CHARACTERS TO PRINT 250 ; R4 = NUMBER OF CHARACTERS TO PRINT (0 <= R4 <= 32767.) 251 ; 252 ; NOTE: 'PRINTB' DOES TECO MOST STANDARD CHARACTER CONVERSIONS (IF SYSTEM 253 ; DOESN'T DO IT FOR YOU), BUT ALWAYS OUTPUTS NULL (ASCII OCTAL 000) 254 ; AND BELL (ASCII OCTAL 007) AS THEMSELVES. IT CHECKS FOR "ET$BIN" 255 ; IN "ETYPE" (BINARY MODE OUTPUT), BUT IGNORES "EUFLAG" (CASE 256 ; FLAGGING). "ET$TRU" IN "ETYPE" (TRUNCATE LONG LINES) APPLIES 257 ; IF "ET$BIN" IN "ETYPE" IS OFF. "ET$CCO" IN "ETYPE" (CANCEL 258 ; CONTROL/O) ALWAYS APPLIES. 259 260 .GLOBL PRINTF ;JSR PC,PRINTF 261 ; IN: R3 = POINTER TO STRING OF CHARACTERS TO PRINT 262 ; R4 = NUMBER OF CHARACTERS TO PRINT (0 <= R4 <= 32767.) 263 ; 264 ; NOTE: 'PRINTF' DOES TECO STANDARD CHARACTER CONVERSIONS (IF SYSTEM 265 ; DOESN'T DO IT FOR YOU) AND CHECKS, IN THIS PRECEDENCE ORDER, 266 ; "ET$BIN" IN "ETYPE" (BINARY OUTPUT MODE) AND "EUFLAG" (CASE 267 ; FLAGGING). "ET$TRU" IN "ETYPE" (TRUNCATE LONG LINES) APPLIES 268 ; IF "ET$BIN" IN "ETYPE" IS OFF. "ET$CCO" IN "ETYPE" (CANCEL 269 ; CONTROL/O) ALWAYS APPLIES. 270 271 .GLOBL PUTBUF ;JSR PC,PUTBUF 272 ; IN: R0 = POINTER TO BUFFER START 273 ; R1 = NUMBER OF CHARACTERS TO OUTPUT 274 ; R2 = -1 MEANS END BUFFER WITH FORM FEED 275 ; = 0 MEANS DON'T ADD FORM FEED TO BUFFER 276 ; 277 ; OUT: IF NO ERROR THEN CARRY BIT IS CLEAR. 278 ; SEE ERROR NOTES IF ERROR. 279 280 .GLOBL SIZER ;JSR PC,SIZER 281 ; IN: R1 = AMOUNT IN BYTES TO EXPAND THE TEXT & Q-REG AREA 282 ; 283 ; OUT: IF AREA CAN BE (AND HAS BEEN) EXPANDED THE AMOUNT DESIRED, 284 ; THEN EXIT WITH THE CARRY CLEAR AND "CURFRE" UPDATED. IF 285 ; THE AREA CANNOT BE EXPANDED THAT AMOUNT, THEN EXIT WITH TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 6-5 DOCUMENTATION OF 'TECOIO' SUBROUTINES 286 ; THE CARRY SET AND "CURFRE" UNTOUCHED. 287 ; 288 .GLOBL SIZERB 289 ; NOTE: THIS IS THE AMOUNT TO CALL 'SIZER' WITH WHEN A 'GETBUF' CALL 290 ; DOES NOT RETURN WITH THE FORM FEED FLAG SET (I.E., THE DEFAULT 291 ; AMOUNT TO EXPAND MEMORY IN BYTES). 292 293 .GLOBL STOPON ;JSR PC,STOPON 294 ; NOTE: WHENEVER TECO DETECTS THE SIGN BIT (BIT 15) IN "TFLG(R5)" IT CALLS 295 ; THIS SUBROUTINE. IF NO FURTHER ACTION IS NEEDED, AS IS THE CASE 296 ; FOR CTRL/C AST SYSTEMS, THE SUBROUTINE CAN SIMPLY EXIT. IF MORE 297 ; PROCESSING IS NEEDED, AS IS THE CASE FOR NON-AST CTRL/C INDICATION 298 ; SYSTEMS, THE SUBROUTINE CAN EITHER: 299 ; 300 ; 1) SIMPLY RETURN - THIS CAUSES THE ?XAB ERROR TO OCCUR. 301 ; 302 ; 2) RETURN TO THE CALLER'S CALLER (E.G., TST (SP)+; RTS PC) - 303 ; THIS CAUSES THE CONTINUED EXECUTION OF TECO. 304 305 .GLOBL SWITCH ;JSR PC,SWITCH 306 ; OUT: R0 = VALUE OF SWITCH REGISTER 307 308 .GLOBL TEXIT ;JMP TEXIT 309 ; NOTE: THIS IS THE WAY TECO EXITS TO THE OPERATING SYSTEM. 310 311 .GLOBL TIME ;JSR PC,TIME 312 ; OUT: R0 = TIME OF DAY IN SYSTEM INTERNAL FORM 313 314 .GLOBL TLISTN ;JSR PC,TLISTN 315 ; OUT: R0 = RETURNED CHARACTER 316 ; 317 ; NOTE: IT IS THE RESPONSIBILITY OF 'TLISTN' TO APPEND A LINE FEED 318 ; TO A CARRIAGE RETURN (IF THE SYSTEM DOESN'T). IT IS ALSO THE 319 ; RESPONSIBILITY OF 'TLISTN' TO ECHO THE TYPED CHARACTERS (IF 320 ; THE SYSTEM DOESN'T) USING THE SAME LOGIC AS THE 'TECOIO' 321 ; ROUTINE "TYPE" PROVIDED "ET$NCH" IN "ETYPE" IS NOT ON. 322 ; 'TLISTN' ALSO IMPLEMENTS "ET$LC" IN "ETYPE" (ALLOW LOWER CASE 323 ; INPUT), "ET$CKE" IN "ETYPE" (RETURN -1 IF NO INPUT AVAILABLE), 324 ; AND "ET$8BT" IN "ETYPE" (8-BIT TERMINAL). 325 326 .GLOBL TYPE ;JSR PC,TYPE 327 ; IN: R0 = CHARACTER TO OUTPUT TO TERMINAL 328 ; 329 ; NOTE: 'TYPE' DOES TECO STANDARD CHARACTER CONVERSIONS (IF SYSTEM 330 ; DOESN'T DO IT FOR YOU), BUT IGNORES BOTH "ET$BIN" IN "ETYPE" 331 ; (BINARY OUTPUT MODE) AND "EUFLAG" (CASE FLAGGING). "ET$TRU" 332 ; IN "ETYPE" (TRUNCATE LONG LINES) AND "ET$CCO" IN "ETYPE" 333 ; (CANCEL CONTROL/O) BOTH ALWAYS APPLY. 334 335 .GLOBL TYPEB ;JSR PC,TYPEB 336 ; IN: R0 = CHARACTER TO OUTPUT TO TERMINAL 337 ; 338 ; NOTE: 'TYPEB' DOES TECO MOST STANDARD CHARACTER CONVERSIONS (IF SYSTEM 339 ; DOESN'T DO IT FOR YOU), BUT ALWAYS OUTPUTS NULL (ASCII OCTAL 000) 340 ; AND BELL (ASCII OCTAL 007) AS THEMSELVES. IT CHECKS FOR "ET$BIN" 341 ; IN "ETYPE" (BINARY MODE OUTPUT), BUT IGNORES "EUFLAG" (CASE 342 ; FLAGGING). "ET$TRU" IN "ETYPE" (TRUNCATE LONG LINES) APPLIES TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 6-6 DOCUMENTATION OF 'TECOIO' SUBROUTINES 343 ; IF "ET$BIN" IN "ETYPE" IS OFF. "ET$CCO" IN "ETYPE" (CANCEL 344 ; CONTROL/O) ALWAYS APPLIES. 345 346 .GLOBL TYPEF ;JSR PC,TYPEF 347 ; IN: R0 = CHARACTER TO OUTPUT TO TERMINAL 348 ; 349 ; NOTE: 'TYPEF' DOES TECO STANDARD CHARACTER CONVERSIONS (IF SYSTEM 350 ; DOESN'T DO IT FOR YOU) AND CHECKS, IN THIS PRECEDENCE ORDER, 351 ; "ET$BIN" IN "ETYPE" (BINARY OUTPUT MODE) AND "EUFLAG" (CASE 352 ; FLAGGING). "ET$TRU" IN "ETYPE" (TRUNCATE LONG LINES) APPLIES 353 ; IF "ET$BIN" IN "ETYPE" IS OFF. "ET$CCO" IN "ETYPE" (CANCEL 354 ; CONTROL/O) ALWAYS APPLIES. 355 356 .GLOBL WATCH ;JSR PC,WATCH 357 ; IF: NFLG(R5) >=0 THEN SCOPE UPDATE CALL 358 ; 359 ; IN: R0 = NWATCH(R5) FOR THE DEFAULT CALL 360 ; = ARGUMENT VALUE FOR THE EXPLICIT CALL 361 ; 362 ; OUT: R0 = WHAT TO PUT IN NWATCH(R5) FOR LATER DEFAULT CALLS 363 ; (IF R0 IS <0 THEN NWATCH(R5) IS NOT CHANGED) 364 ; 365 ; NOTE: YOU CAN ALSO KEEP SCOPE BUSY AT ANY STALL TIME OF COURSE. 366 ; THE NUMBER OF LINES TO WATCH IS ALWAYS AVAILABLE IN NWATCH(R5). 367 ; 368 ; IF: NFLG(R5) <0 THEN SCOPE PARAMETER READ/ALTER CALL 369 ; IF CLFG(R5) =-1 THEN SCOPE PARAMETER ALTER CALL, M(R5) IS NEW VALUE 370 ; 371 ; IN: R0 = ARGUMENT VALUE (DEFAULT TO ZERO FOR NO EXPLICIT ARGUMENT) 372 ; 373 ; OUT: R0 = PARAMETER VALUE TO RETURN 374 375 .GLOBL XITNOW ;JSR PC,XITNOW 376 ; NOTE: IF 'TECOIO' CONDITIONED THE TERMINAL NON-NORMALLY FOR 377 ; TECO, THEN THIS IS THE TIME TO UNCONDITION IT. SHOULD 378 ; INPUT AND/OR OUTPUT BE REQUESTED AGAIN BY TECO (ONLY 379 ; HAPPENS IN CASE OF AN I/O ERROR), YOU MUST DETECT THE 380 ; FACT THAT YOU UNCONDITIONED THE TERMINAL AND RE-CONDITION 381 ; IT. 382 383 ; ERROR NOTES: 384 ; ON ERROR EXITS SET: 385 ; CARRY BIT ON (I.E., "BCS" BRANCHES) 386 ; R0 = RAD50 OF ERROR CODE 387 ; R2 = POINTER TO ASCIZ TEXT OF ERROR (OR 0 FOR NO TEXT) TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 7 GENERAL PDP-11 DEFINITIONS 1 .SBTTL GENERAL PDP-11 DEFINITIONS 2 3 ; GENERAL REGISTERS 4 5 000000 R0 = %0 6 000001 R1 = %1 7 000002 R2 = %2 8 000003 R3 = %3 9 000004 R4 = %4 10 000005 R5 = %5 11 000006 SP = %6 12 000007 PC = %7 13 14 .SBTTL CHARACTER DEFINITIONS 15 16 000000 NUL = 000 ;ASCII NULL 17 000007 BEL = 007 ;ASCII BELL (CONTROL/G) 18 000010 BS = 010 ;ASCII BACKSPACE 19 000011 TAB = 011 ;ASCII HORIZONTAL TAB 20 000012 LF = 012 ;ASCII LINE FEED 21 000013 VT = 013 ;ASCII VERTICAL TAB 22 000014 FF = 014 ;ASCII FORM FEED 23 000015 CR = 015 ;ASCII CARRIAGE RETURN 24 000033 ESC = 033 ;ASCII ESCAPE (ALSO CALLED ALTMODE) 25 000040 SPACE = 040 ;ASCII SPACE 26 000047 APS = '' ;ASCII APOSTROPHE 27 000074 LAB = '< ;ASCII LEFT ANGLE BRACKET 28 000075 EQU = '= ;ASCII EQUAL SIZE 29 000076 RAB = '> ;ASCII RIGHT ANGLE BRACKET 30 000137 UND = '_ ;ASCII UNDERSCORE (ALSO CALLED BACKARROW) 31 000140 GRV = 140 ;ASCII ACCENT GRAVE 32 000173 LCB = 173 ;ASCII LEFT CURLY BRACE 33 000174 VBR = 174 ;ASCII VERTICAL BAR 34 000175 RCB = 175 ;ASCII RIGHT CURLY BRACE 35 000176 TDE = 176 ;ASCII TILDE 36 000177 DEL = 177 ;ASCII DELETE (ALSO CALLED RUBOUT) TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 8 MACROS 1 .SBTTL MACROS 2 3 .MACRO .DSECT START=0 4 .PSECT ..ABS.,RW,D,LCL,ABS,OVR 5 .IF NDF ..ABS. 6 ..ABS.: 7 .ENDC 8 . = START!..ABS. 9 .ENDM .DSECT 10 11 .MACRO SORT TABLE,ENTRY 12 JSR R4,SORT'ENTRY 13 .WORD TABLE 14 .ENDM SORT 15 16 .MACRO PUSH A,B,C,D,E 17 JSR R4,PUSH 18 .NARG $$$$$$ 19 .BYTE $$$$$$,A 20 $$$$$$ = A-2 21 .IRP OFFSET, 22 .IF NB 23 $$$$$$ = $$$$$$+2 24 .IF NE $$$$$$-OFFSET 25 .ERROR ; OFFSET IS OUT OF ORDER 26 .ENDC 27 .ENDC 28 .ENDM 29 .ENDM PUSH 30 31 .MACRO PUSHP A,B,C,D,E 32 JSR R4,PUSHP 33 .NARG $$$$$$ 34 .BYTE $$$$$$,A 35 $$$$$$ = A-2 36 .IRP OFFSET, 37 .IF NB 38 $$$$$$ = $$$$$$+2 39 .IF NE $$$$$$-OFFSET 40 .ERROR ; OFFSET IS OUT OF ORDER 41 .ENDC 42 .ENDC 43 .ENDM 44 .ENDM PUSHP 45 46 .MACRO POP A,B,C,D,E 47 JSR R4,POP 48 .NARG $$$$$$ 49 .BYTE $$$$$$,A+2 50 $$$$$$ = A+2 51 .IRP OFFSET, 52 .IF NB 53 $$$$$$ = $$$$$$-2 54 .IF NE $$$$$$-OFFSET 55 .ERROR ; OFFSET IS OUT OF ORDER 56 .ENDC 57 .ENDC TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 8-1 MACROS 58 .ENDM 59 .ENDM POP 60 61 .MACRO SKPSET CHR 62 JSR R4,SKPSET 63 .WORD CHR 64 .ENDM SKPSET 65 66 .MACRO TSTNXT CHR 67 JSR R4,TSTNXT 68 .WORD CHR 69 .ENDM TSTNXT 70 71 .MACRO SIZE AREA 72 .IF IDN , 73 JSR R4,SIZE 74 .WORD ZMAX 75 .IFF 76 .IF DIF , 77 .ERROR ; AREA IS ILLEGAL IN SIZE CALL 78 .ENDC 79 JSR PC,SIZEQR 80 .ENDC 81 .ENDM SIZE 82 83 .MACRO OFFSET LABEL,AMT 84 LABEL: .BLKW AMT 85 .GLOBL LABEL 86 .ENDM OFFSET 87 88 .MACRO .TABLE KIND,A,B,C,D,E,F,G,H,I,J,K,L,M,N,O,P,Q,R,S,T,U,V,W,X,Y,Z 89 .IF NB 90 .NARG $$$$$$ 91 .IF NE $$$$$$&1 92 .LIST 93 .ODD 94 .NLIST 95 .ENDC 96 .BYTE -1 97 .ENDC 98 .IRP CHR, 99 .IF NB 100 .NCHR $$$$$$, 101 .IF EQ $$$$$$-1 102 .BYTE ''CHR 103 .IFF 104 .BYTE CHR 105 .ENDC 106 .ENDC 107 .ENDM 108 .LIST 109 .'KIND: 110 .NLIST 111 .IRP CHR, 112 .IF NB 113 .WORD KIND''CHR 114 .ENDC TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 8-2 MACROS 115 .ENDM 116 .ENDM .TABLE 117 118 .MACRO CMDCHR VAL 119 .SBTTL COMMAND CHARACTER VAL 120 .IRP NUM,<\> 121 $$'NUM: 122 .PSECT TECOCH 123 .IF LE VAL-140 124 . = VAL*2+TECOCH 125 .IFF 126 . = VAL-32*2+TECOCH 127 .ENDC 128 .NLIST 129 .WORD $$'NUM 130 .LIST 131 .ENDM 132 .PSECT TECORO 133 .ENDM CMDCHR 134 135 .MACRO MESSAG TEXT 136 .PSECT TECOER 137 $$$$$$ = . 138 .PSECT TECORO 139 .WORD $$$$$$ 140 .PSECT TECOER 141 .NLIST BEX 142 .ASCIZ TEXT 143 .LIST BEX 144 .PSECT TECORO 145 .ENDM MESSAG 146 147 .MACRO ERROR NUM,TEXT,STRING 148 .IF NDF $E$'NUM 149 $E$'NUM: 150 .ENDC 151 .GLOBL $E$'NUM 152 $$$$$$ = .-$E$'NUM 153 .IF GE $$$$$$-400 154 JMP $E$'NUM 155 .MEXIT 156 .ENDC 157 .IF NE $$$$$$ 158 BR $E$'NUM 159 .MEXIT 160 .ENDC 161 .IF NE E$$TXT 162 .IF NB 163 JSR R4,ERRORS 164 .RAD50 /NUM/ 165 MESSAG 166 $$$$$$ = 0 167 .MEXIT 168 .ENDC 169 $$$$$$ = 0 170 .IRPC CHR, 171 $$$$$$ = $$$$$$*40+<''CHR-<'A-1>> TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 8-3 MACROS 172 .ENDM 173 .IF EQ $$$$$$&177740-<'N-<'A-1>*40+'A-<'A-1>*40+0> 174 JSR R4,ERRORA 175 $$$$$$ = 1. 176 .IRPC CHR, 177 .IF EQ $$$$$$-3. 178 .BYTE ''CHR-<'A-1> 179 .ENDC 180 $$$$$$ = $$$$$$+1. 181 .ENDM 182 .NCHR $$$$$$, 183 .IF EQ $$$$$$-17. 184 .IRPC CHR, 185 .IF EQ $$$$$$-2. 186 .BYTE ''CHR 187 .ENDC 188 $$$$$$ = $$$$$$-1. 189 .ENDM 190 .MEXIT 191 .ENDC 192 .IF EQ $$$$$$-24. 193 .IRPC CHR, 194 .IF EQ $$$$$$-6. 195 .BYTE ''CHR-100 196 .ENDC 197 $$$$$$ = $$$$$$-1. 198 .ENDM 199 .MEXIT 200 .ENDC 201 .ERROR ; NUM ERROR IN ILLEGAL FORMAT!! 202 .BYTE '? 203 .MEXIT 204 .ENDC 205 .IF EQ $$$$$$&176037-<'I-<'A-1>*40+0*40+'C-<'A-1>> 206 JSR R4,ERRORC 207 $$$$$$ = 1. 208 .IRPC CHR, 209 .IF EQ $$$$$$-2. 210 .BYTE ''CHR-<'A-1>*5 211 .ENDC 212 $$$$$$ = $$$$$$+1. 213 .ENDM 214 .NCHR $$$$$$, 215 .IF EQ $$$$$$-21. 216 .IRPC CHR, 217 .IF EQ $$$$$$-12. 218 .BYTE ''CHR 219 .ENDC 220 $$$$$$ = $$$$$$-1. 221 .ENDM 222 .MEXIT 223 .ENDC 224 .IF EQ $$$$$$-30. 225 .IRPC CHR, 226 .IF EQ $$$$$$-18. 227 .BYTE ''CHR-100 228 .ENDC TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 8-4 MACROS 229 $$$$$$ = $$$$$$-1. 230 .ENDM 231 .MEXIT 232 .ENDC 233 .ERROR ; NUM ERROR IN ILLEGAL FORMAT!! 234 .BYTE '? 235 .MEXIT 236 .ENDC 237 .IFTF 238 JSR R4,ERRMSG 239 .RAD50 /NUM/ 240 .IFT 241 MESSAG 242 .ENDC 243 .ENDM ERROR TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 9 Q-REGISTER NUMBER DEFINITIONS 1 .SBTTL Q-REGISTER NUMBER DEFINITIONS 2 3 000044 NUMQRG = <'Z-'A+1>+<'9-'0+1> ;NUMBER OF Q-REGS PER GROUP (A-Z, 0-9) 4 5 000000 .DSECT 1 6 7 000001 .BLKB NUMQRG ;GLOBAL Q-REGISTERS A-Z & 0-9 8 9 000045 AULQRG: .BLKB ;AUXILIARY REGISTER FOR LOCAL SAVE/RESTORE 10 000046 LCLQRG: .BLKB NUMQRG ;LOCAL LEVEL Q-REGISTERS .A-.Z & .0-.9 11 12 000112 AUXQRG: .BLKB ;AUXILIARY REGISTER FOR Q-REG PUSH/POP 13 14 000113 CMDQRG: .BLKB ;COMMAND REGISTER TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 10 DEFINE THE OFFSETS FROM R5 1 .SBTTL DEFINE THE OFFSETS FROM R5 2 3 000114 .DSECT 4 5 000000 OFFSET SCANP ;COMMAND LINE EXECUTION POINTER 6 .IIF NE SCANP, .ERROR ;"SCANP" MUST BE AT OFFSET 0!! 7 000002 OFFSET MPDL ;MACRO FLAG (SAVED "PDL") 8 000004 OFFSET QCMND ;COMMAND LINE OR MACRO Q-REG NUMBER 9 000006 OFFSET LCLSIZ ;LOCAL LEVEL Q-REG SAVE/RESTORE SIZE 10 000010 OFFSET ITRST ;ITERATION START 11 000012 OFFSET ITRCNT ;ITERATION COUNT 12 000014 OFFSET NOPR ;ARITHMETIC OPERATOR 13 000016 OFFSET NACC ;EXPRESSION ACCULMULATOR 14 000020 OFFSET NFLG ;NUMBER FLAG 15 000022 OFFSET N ;NUMBER 16 000024 OFFSET M ; ARGUMENTS 17 000026 OFFSET OFLG ;OPERATOR FLAG 18 000030 OFFSET CFLG ;COMMA FLAG 19 000032 OFFSET CLNF ;COLON FLAG 20 000034 OFFSET QFLG ;QUOTED STRING FLAG 21 000036 OFFSET OSCANP ;BACKUP FOR "SCANP" 22 000040 OFFSET QUOTE ;QUOTE CHARACTER (NORMALLY ESCAPE) 23 000042 OFFSET QNMBR ;CURRENT Q-REG NUMBER 24 000044 OFFSET QLENGT ;COMMAND LINE LENGTH 25 000046 OFFSET CNDN ;COUNTER FOR " NESTING 26 000050 OFFSET NP ;VALUE OF CURRENT NUMBER 27 000052 OFFSET PST ;CHARACTER POSITION AT SEARCH START 28 000054 OFFSET TEMP ;GENERAL TEMPORARY READ/WRITE WORD 29 000056 OFFSET TFLG ;TRACE FLAG AND STOP INDICATOR 30 000060 OFFSET PCNT ;PAREN PUSH COUNTER 31 000062 OFFSET REPFLG ;REPLACE FLAG 32 33 000064 CLREND: ;END OF EACH COMMAND CLEAR AREA 34 35 000064 OFFSET P ;CURRENT TEXT POINTER (.) 36 000066 OFFSET QBASE ;COMMAND LINE Q-REG BASE OFFSET 37 000070 OFFSET NMRBAS ;RADIX (0=>DECIMAL, >0=>OCTAL, <0=>HEXIDECIMAL) 38 000072 OFFSET ERRPOS ;ERROR POSITION 39 000074 OFFSET PDL ;PUSH-DOWN LIST POINTER 40 000076 OFFSET LSCHSZ ;-(LENGTH) OF LAST SKIPPED QUOTED STRING 41 000100 OFFSET EVFLAG ;EDIT VERIFY FLAG 42 000102 OFFSET EUFLAG ;CASE FLAGGING FLAG 43 000104 OFFSET ETYPE ;EDIT TYPEOUT FLAG 44 000106 OFFSET ESFLAG ;EDIT SEARCH FLAG 45 000110 OFFSET EHELP ;EDIT HELP LEVEL 46 000112 OFFSET EEFLAG ;ESCAPE SYNONYM 47 000114 OFFSET EDIT ;EDIT LEVEL FLAG 48 000116 OFFSET SFLG ;SEARCH MODE FLAG 49 000120 OFFSET FFFLAG ;FORM FEED FLAG 50 000122 OFFSET EOFLAG ;END-OF-FILE FLAG 51 000124 OFFSET NWATCH ;NUMBER OF LINES TO DISPLAY ON SCOPE 52 000126 OFFSET CRTYPE ;SCOPE TYPE 53 000130 OFFSET OUTDNE ;MEMORY MESSAGE OUTPUT(+1) AND/OR TERMINAL OUTPUT(+2) 54 000132 OFFSET SEQCTL ;BYTE 0: ESC SEQ MODE ACTIVE; BYTE 1: SEQ IN PROGRESS 55 000134 OFFSET SYMSPC ;EXTRA SYMBOL SPECIAL CHARACTER 56 000136 OFFSET INDIR ;NON-ZERO IF PROCESSING INDIRECT COMMAND FILE 57 000140 OFFSET INPNTR ;@INPNTR(R5) IS NON-ZERO IF INPUT FILE ACTIVE TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 10-1 DEFINE THE OFFSETS FROM R5 58 000142 OFFSET OUPNTR ;@OUPNTR(R5) IS NON-ZERO IF OUTPUT FILE ACTIVE 59 60 000144 OFFSET TXSTOR ;TEXT BUFFER BIAS 61 000146 OFFSET ZMAX ;TEXT BUFFER SIZE 62 000150 OFFSET ZZ ;TEXT BUFFER SIZE IN USE 63 64 000152 OFFSET QRSTOR ;Q-REG BUFFER BIAS 65 000154 OFFSET QMAX ;Q-REG BUFFER SIZE 66 000156 OFFSET QZ ;Q-REG BUFFER SIZE IN USE 67 68 000160 OFFSET CURFRE ;CURRENT FREE SPACE IN BYTES 69 70 000162 OFFSET QARRAY,<*2> ;Q-REGISTER ARRAY 71 000632 OFFSET QPNTR ;COMMAND Q-REGISTER OFFSET 72 000634 OFFSET QLCMD ;SIZE OF LAST COMMAND 73 74 000636 OFFSET TECOSP ;SP STACK RESET VALUE 75 000640 OFFSET TECOPD ;PDL RESET VALUE 76 000642 OFFSET SCHBUF ;SEARCH BUFFER POINTER 77 000644 OFFSET FILBUF ;FILENAME BUFFER POINTER 78 000646 OFFSET TAGBUF ;TAG BUFFER POINTER 79 000650 OFFSET TECOJP ;COMMAND JUMP DISPATCH TABLE VALUE 80 81 000652 RWSIZE: ;SIZE OF TOTAL READ/WRITE AREA IN BYTES TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 11 INITIALIZE TECO'S CODE, LISTENING, DISPATCH, MESSAGE SECTIONS 1 .SBTTL INITIALIZE TECO'S CODE, LISTENING, DISPATCH, MESSAGE SECTIONS 2 3 ; INITIALLY DEFINE THE SECTIONS 4 5 000000 .PSECT TECORO,RO,I,LCL,REL,CON 6 000000 .PSECT TECOLS,RO,I,GBL,REL,OVR 7 000000 .PSECT TECOLT,RO,I,GBL,REL,OVR 8 000000 .PSECT TECOCH,RO,D,GBL,REL,OVR 9 000000 .PSECT TECOER,RO,D,LCL,REL,CON 10 11 ; INITIALLY DO ONLY NORMAL 'LISTEN' CALLS 12 13 000000 .PSECT TECOLS 14 15 000000 000167 000000G TECOLS: JMP LISTEN ;OFF TO THE 'LISTEN' ROUTINE... 16 17 ; INITIALLY DO ONLY A SIMPLE :^T CALL 18 19 000000 .PSECT TECOLT 20 21 000000 004767 000000G TECOLT: JSR PC,TLISTN ;READ A ^T STYLE CHARACTER 22 000004 005001 CLR R1 ;SET CODE 0 FOR NORMAL CHARACTER 23 000006 030027 177540 BIT R0,#^C<237> ;A CONTROL CHARACTER? 24 000012 001010 BNE 10$ ;NO, GO EXIT WITH CODE 0 25 000014 005201 INC R1 ;SET CODE 1 FOR CONTROL CHARACTER 26 000016 020027 000015 CMP R0,#015 ;IS IT ? 27 000022 001004 BNE 10$ ;NO, GO EXIT WITH CODE 1 28 000024 004767 000000G JSR PC,TLISTN ;YES, READ THE AFTER THE 29 000030 012700 000015 MOV #015,R0 ;RESTORE CODE AS 30 000034 000207 10$: RTS PC ;EXIT 31 32 ; THIS INITIALLY LOADS THE COMMAND DISPATCH TABLE 33 34 000000 .PSECT TECOCH 35 36 000000 TECOCH: ;WE NEED A LABEL AT OFFSET=0 37 38 000146 .REPT 200-32 ;WHOLE 7-BIT ASCII SET LESS LOWER CASE ALPHA 39 .NLIST 40 .WORD ERROR ;DISPATCH TO "ILLEGAL COMMAND" 41 .LIST 42 .ENDR 43 44 ; NOW BACK TO THE CODE SECTION 45 46 000000 .PSECT TECORO 47 48 000000 ERROR: ERROR ILL,<"Illegal command"> 000000 004467 010516 JSR R4,ERRMSG 000004 035054 .RAD50 /ILL/ 000006 000000' .WORD $$$$$$ 000000 111 154 154 .ASCIZ "Illegal command" TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 12 INITIALIZE TECO'S CODE, LISTENING, DISPATCH, MESSAGE SECTIONS 1 .ENABL LSB 2 3 000010 005765 000632 10$: TST QPNTR(R5) ;ANYTHING LEFT TO REMOVE? 4 000014 001414 BEQ 30$ ;NOPE, SO EXIT Z=1 AND C=0 5 000016 005365 000156 DEC QZ(R5) ;YEP, REMOVE LAST CHARACTER 6 000022 005365 000632 DEC QPNTR(R5) ; ENTERED INTO COMMAND 7 000026 016503 000156 20$: MOV QZ(R5),R3 ;GET POINTER TO END+1 8 000032 066503 000152 ADD QRSTOR(R5),R3 ; AND MAKE IT ABSOLUTE 9 000036 111300 MOVB (R3),R0 ; THEN SET THE REMOVED CHARACTER 10 000040 000261 SEC ;SET C=1 TO SAY SOMETHING DONE 11 000042 016504 000632 MOV QPNTR(R5),R4 ;NOW GET SIZE OF THE COMMAND 12 000046 000207 30$: RTS PC ; AND EXIT WITH Z=1 IF NO COMMAND 13 14 000050 005765 000056 CHKSTP: TST TFLG(R5) ;SOMEONE TRYING TO STOP US? 15 000054 100012 BPL 50$ ;NO, CONTINUE 16 000056 105065 000057 40$: CLRB TFLG+1(R5) ;CLEAR THE STOP SOON INDICATOR 17 000062 004767 000000G JSR PC,STOPON ; AND ALERT 'TECOIO' ABOUT IT 18 000066 ERROR XAB,<"Execution aborted"> 000066 004467 010430 JSR R4,ERRMSG 000072 113052 .RAD50 /XAB/ 000074 000020' .WORD $$$$$$ 000020 105 170 145 .ASCIZ "Execution aborted" 19 20 000076 CMDCHR <'?> ;"?" IS THE TRACE FLIP/FLOP 21 000076 105165 000056 COMB TFLG(R5) ;SO FLIP THE FLOP 22 000102 000207 50$: RTS PC ; AND EXIT TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 13 SCAN 1 .SBTTL SCAN 2 3 000104 005265 000046 .CSMDQ: INC CNDN(R5) ;INTO ONE MORE CONDITIONAL LEVEL 4 000110 000420 BR .CSMX ; AND THEN SKIP ONE CHARACTER 5 6 000112 021627 001266' 60$: CMP (SP),#340$ ;END OF COMMAND; MAIN CALL? 7 000116 001035 BNE 70$ ;NOPE, SO MUST BE AN ERROR 8 000120 026565 000002 000074 CMP MPDL(R5),PDL(R5) ;YES, IN MACRO? 9 000126 001031 BNE 70$ ;NO (OR UNTERMINATED MACRO) 10 000130 POP ITRST,LCLSIZ,QCMND,MPDL,SCANP ;YES, RESTORE ALL ITEMS 000130 004467 012142 JSR R4,POP 000134 005 012 .BYTE $$$$$$,ITRST+2 11 000136 004767 011742 JSR PC,POPLCL ;GO POP LOCAL Q-REGS IF NEEDED 12 000142 016500 000004 MOV QCMND(R5),R0 ;GET COMMAND Q-REG NUMBER 13 000146 004767 011322 JSR PC,SETCMD ; AND (RE)SET COMMAND 14 000152 .CSMX: ;JUST SKIP NEXT CHARACTER 15 000152 011500 SCAN: MOV (R5),R0 ;GET CURRENT COMMAND POINTER 16 000154 020065 000044 CMP R0,QLENGT(R5) ;END OF THIS COMMAND? 17 000160 103354 BHIS 60$ ;YES, CHECK FOR A MACRO 18 000162 066500 000066 ADD QBASE(R5),R0 ;NO, ADD BASE OF COMMAND Q-REG 19 000166 066500 000152 ADD QRSTOR(R5),R0 ; AND MAKE ABSOLUTE POINTER 20 000172 111000 MOVB (R0),R0 ;GET NEXT CHARACTER 21 000174 005215 INC (R5) ; THEN BUMP POINTER ONE AHEAD 22 000176 005765 000056 TRACE: TST TFLG(R5) ;TRACING? 23 000202 001737 BEQ 50$ ;NOPE 24 000204 100724 BMI 40$ ;NO, BUT TRY TO STOP US NOW 25 000206 000167 000000G JMP TYPE ;YES, SO ANNOUNCE CHARACTER 26 27 000212 005726 70$: TST (SP)+ ;PURGE THE RETURN ADDRESS 28 000214 005765 000002 TST MPDL(R5) ;WITHIN MACRO? 29 000220 001542 BEQ 120$ ;NO, BACK TO MAIN EDIT LEVEL 30 000222 ERROR UTM,<"Unterminated macro"> 000222 004467 010274 JSR R4,ERRMSG 000226 103155 .RAD50 /UTM/ 000230 000042' .WORD $$$$$$ 000042 125 156 164 .ASCIZ "Unterminated macro" 31 32 000232 CMDCHR <'C-100> ;"CTRL/C" IS EXIT FROM MACRO/TECO 33 000232 TSTNXT 'C-100 ;TWO CTRL/C'S IN A ROW? 000232 004467 012506 JSR R4,TSTNXT 000236 000003 .WORD 'C-100 34 000240 103404 BCS 80$ ;YES, ALWAYS EXIT FROM TECO 35 000242 026527 000004 000113 CMP QCMND(R5),#CMDQRG ;ARE WE WITHIN A MACRO NOW? 36 000250 001121 BNE TECO ;YES, JUST ABORT TECO EXECUTION 37 000252 000167 000000G 80$: JMP TEXIT ;NO, TOP LEVEL, SO EXIT RIGHT NOW TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 14 COMMAND INPUT - STAR 1 .SBTTL COMMAND INPUT - STAR 2 3 000256 005001 .CMDST: CLR R1 ;GUARANTEE NO COMPARES 4 000260 005765 000632 TST QPNTR(R5) ;WAS THIS THE 1ST THING TYPED? 5 000264 001043 BNE 110$ ;NOPE, CHECK FOR PRECEEDING BELL 6 000266 004767 000000G JSR PC,LISTEN ;YEP, SO GET NEXT AS Q-REG NAME 7 000272 020027 000056 CMP R0,#'. ;LOCAL Q-REGISTER NAME PREFIX? 8 000276 001004 BNE 90$ ;NOPE, GLOBAL Q-REG SPECIFIED (R1=0) 9 000300 004767 000000G JSR PC,LISTEN ;YEP, SO GET NEXT AS LOCAL Q-REG NAME 10 000304 012701 000045 MOV #LCLQRG-1,R1 ;FLAG AS LOCAL Q-REG WITH THE OFFSET 11 000310 004767 010502 90$: JSR PC,QREFR1 ;VALIDATE NAME AND SUM IT 12 000314 016500 000634 MOV QLCMD(R5),R0 ;GET LAST COMMAND'S SIZE 13 000320 060065 000156 ADD R0,QZ(R5) ;INCREASE Q-REG AREA SIZE BY THAT 14 000324 010065 000632 MOV R0,QPNTR(R5) ; AND PLACE IT IN COMMAND Q-REG 15 000330 004767 011054 JSR PC,QADJ ;NOW ADJUST SELECTED REG TO THAT SIZE 16 000334 010203 MOV R2,R3 ;SAVE OFFSET TO SELECTED Q-REG 17 000336 012700 000113 MOV #CMDQRG,R0 ;NOW SET TO SUM THE 18 000342 004767 010506 JSR PC,QSUMX ; COMMAND Q-REG 19 000346 066503 000152 ADD QRSTOR(R5),R3 ;ABS POINTER TO SELECTED Q-REG 20 000352 066502 000152 ADD QRSTOR(R5),R2 ;ABS POINTER TO COMMAND Q-REG 21 000356 011101 MOV (R1),R1 ;GET SIZE OF DATA TO MOVE 22 000360 005301 100$: DEC R1 ;MORE TO MOVE? 23 000362 100452 BMI TECOCR ;NO, RESTART US 24 000364 112223 MOVB (R2)+,(R3)+ ;YES, MOVE A BYTE 25 000366 000774 BR 100$ ; AND LOOP FOR MORE 26 27 .SBTTL COMMAND INPUT - SPACE 28 29 000370 012701 000012 .CMDSP: MOV #LF,R1 ;COMPARE CHARACTER IS LINE FEED 30 000374 026527 000054 000007 110$: CMP TEMP(R5),#BEL ;PRECEEDED BY A BELL? 31 000402 001156 BNE 200$ ;NO, SO NORMAL 32 000404 004767 012404 JSR PC,CRLFNO ;YES, RETURN THE CARRIAGE 33 000410 004767 177374 JSR PC,10$ ;REMOVE 1ST BELL AND GET POINTER, COUNT 34 000414 001506 BEQ 140$ ;NOTHING, SO RE-PROMPT 35 000416 004767 000512 JSR PC,270$ ;RE-PRINT THE COMMAND LINE(S) 36 000422 000523 BR 170$ ; AND CONTINUE 37 38 .SBTTL COMMAND INPUT - BELL 39 40 000424 012765 100000 000072 .CMDBL: MOV #100000,ERRPOS(R5) ;FLAG THIS AS A BELL 41 000432 020065 000054 CMP R0,TEMP(R5) ;2ND BELL? 42 000436 001142 BNE 210$ ;NOPE, SO NORMAL 43 000440 004767 177344 JSR PC,10$ ;REMOVE 1ST BELL AND GET COUNT 44 000444 010465 000634 MOV R4,QLCMD(R5) ;NOW SAVE COUNT AS LAST COMMAND COUNT 45 000450 000417 BR TECOCR ; AND RESTART US 46 47 .SBTTL COMMAND INPUT - QUESTION MARK 48 49 000452 004767 012336 ERR4EH: JSR PC,CRLFNO ;NO CTRL/O AND RESTORE CARRIAGE 50 000456 016504 000072 .CMDQU: MOV ERRPOS(R5),R4 ;GET ERROR POSITION 51 000462 003526 BLE 200$ ;IF NONE, THEN NORMAL CHARACTER 52 000464 016503 000066 MOV QBASE(R5),R3 ;GET BASE OF LAST COMMAND 53 000470 066503 000152 ADD QRSTOR(R5),R3 ;NOW MAKE POINTER ABSOLUTE 54 000474 004767 000000G JSR PC,PRINT ; AND PRINT THE ERRING LINE 55 000500 012700 000077 MOV #'?,R0 ;END LINE WITH 56 000504 004767 000000G JSR PC,TYPE ; A "?" 57 .IIF NE .-TECOCR, .ERROR ; AND RESTART US TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 15 MAIN ENTRY/RE-ENTRY POINT 1 .SBTTL MAIN ENTRY/RE-ENTRY POINT 2 3 000510 004767 012300 TECOCR: JSR PC,CRLFNO ;NO CTRL/O AND RESTORE CARRIAGE 4 000514 016506 000636 TECO: MOV TECOSP(R5),SP ;SET UP OUR SP STACK 5 000520 016565 000640 000074 MOV TECOPD(R5),PDL(R5) ;NOW SET UP THE PUSH-DOWN LIST 6 000526 020665 000636 120$: CMP SP,TECOSP(R5) ;IS SP STACK OK? 7 000532 001142 BNE 240$ ;NOPE 8 000534 026565 000074 000640 CMP PDL(R5),TECOPD(R5) ;WAS LAST COMMAND UNTERMINATED? 9 000542 001136 BNE 240$ ;YEP, GO GIVE ERROR 10 000544 004767 011222 JSR PC,CLNLCL ;CLEAN UP ALL LOCAL SAVES 11 000550 012700 000113 MOV #CMDQRG,R0 ;INDICATE THE COMMAND Q-REG 12 000554 004767 010264 JSR PC,QREFR0 ;REFERENCE IT 13 000560 004767 010624 JSR PC,QADJ ; AND ADJUST TO 0 SIZE 14 000564 004767 000000G JSR PC,NOCTLO ;NO CONTROL/O PLEASE 15 000570 005765 000136 TST INDIR(R5) ;PROCESSING INDIRECT COMMANDS? 16 000574 001022 BNE 150$ ;YES, SO NO ANNOUNCEMENTS 17 000576 042765 000000G 000104 BIC #ET$XIT,ETYPE(R5) ;NO, SAY PROMPT LEVEL REACHED 18 000604 032765 000000G 000114 BIT #ED$WCH,EDIT(R5) ;DO AUTOMATIC "W" COMMAND? 19 000612 001002 BNE 130$ ;NOPE 20 000614 004767 000764 JSR PC,410$ ;YEP, SO GO DO IT 21 000620 016500 000100 130$: MOV EVFLAG(R5),R0 ;GET THE EDIT VERIFY FLAG 22 000624 003402 BLE 140$ ;<=0, NONE OR DISABLED, NO VERIFY 23 000626 004767 004500 JSR PC,.SCH.V ;ELSE VERIFY AROUND CURRENT . 24 000632 012700 000052 140$: MOV #'*,R0 ;SET UP TO ANNOUNCE US 25 000636 004767 000000G JSR PC,TYPE ; AND DO IT 26 000642 016500 000004 150$: MOV QCMND(R5),R0 ;SAVE (POSSIBLE ERRING) COMMAND Q-REG 27 000646 010501 MOV R5,R1 ;GET OFFSET POINTER 28 000650 062701 000064 ADD #CLREND,R1 ; AND INDEX TO CLEAR AREA END (+2) 29 000654 005041 160$: CLR -(R1) ;NOW CLEAR OUR VARIABLES 30 000656 020105 CMP R1,R5 ;MORE TO CLEAR? 31 000660 101375 BHI 160$ ;YES, CONTINUE 32 000662 010065 000004 MOV R0,QCMND(R5) ;NO, RESTORE COMMAND Q-REG NUMBER 33 000666 004767 007466 JSR PC,IREST ;RESTORE QUOTE TO DEFAULT (ESCAPE) 34 000672 005065 000054 170$: CLR TEMP(R5) ;AVOID DOUBLE CHARACTER INDICATIONS 35 000676 016500 000072 180$: MOV ERRPOS(R5),R0 ;SELECT INPUT MODE 36 000702 005765 000632 TST QPNTR(R5) ;IS THIS THE FIRST INPUT REQUEST? 37 000706 001001 BNE 190$ ;NO 38 000710 005200 INC R0 ;YES, FIRST IS ALWAYS SINGLE 39 000712 004767 000000' 190$: JSR PC,TECOLS ;NOW GET A CHARACTER 40 000716 020027 000033 CMP R0,#ESC ;ESCAPE? 41 000722 001531 BEQ 300$ ;YEP, CHECK FOR COMMAND TERMINATION 42 000724 005765 000136 TST INDIR(R5) ;NOPE, FROM AN INDIRECT COMMAND FILE? 43 000730 001003 BNE 200$ ;INDIRECT ACTIVE, NO SPECIALS 44 000732 SORT ..CMD ;ELSE SORT OUT SPECIAL CHARACTERS 000732 004467 011646 JSR R4,SORT 000736 016046' .WORD ..CMD TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 16 MAIN ENTRY/RE-ENTRY POINT 1 000740 005065 000072 200$: CLR ERRPOS(R5) ;NO ERROR POSITION IF STORING 2 000744 005065 000634 210$: CLR QLCMD(R5) ;NO LAST COMMAND IF STORING ANYTHING 3 000750 012746 000676' MOV #180$,-(SP) ;SET THE RETURN ADDRESS 4 000754 010065 000054 MOV R0,TEMP(R5) ;SAVE CHARACTER ABOUT TO BE STORED 5 000760 016501 000156 220$: MOV QZ(R5),R1 ;GET OUR CURRENT SIZE 6 000764 020165 000154 CMP R1,QMAX(R5) ;CAN WE DO THIS? 7 000770 103027 BHIS 250$ ;NO, GO GIVE ERROR 8 000772 005265 000156 INC QZ(R5) ;INDICATE 1 MORE IN COMMAND 9 000776 005265 000632 INC QPNTR(R5) ; Q-REGISTER 10 001002 066501 000152 ADD QRSTOR(R5),R1 ;GET POSITION TO STORE IN 11 001006 110011 MOVB R0,(R1) ; AND STORE CHARACTER 12 001010 166501 000152 SUB QRSTOR(R5),R1 ;BACK TO RELATIVE AGAIN 13 001014 062701 000144 ADD #100.,R1 ;FUDGE BY 100. MORE CHARACTERS 14 001020 SIZE QREGS ;GET ROOM FOR THOSE CHARACTERS 001020 004767 014544 JSR PC,SIZEQR 15 001024 103404 BCS 230$ ;ALL IS STILL O.K. 16 001026 012700 000007 MOV #BEL,R0 ;IF NOT, THEN RING THE BELL 17 001032 004767 000000G JSR PC,TYPEB ; FOR A WARNING 18 001036 000207 230$: RTS PC ;NOW CONTINUE 19 20 001040 240$: ERROR UTC,<"Unterminated command"> 001040 004467 007456 JSR R4,ERRMSG 001044 103143 .RAD50 /UTC/ 001046 000065' .WORD $$$$$$ 000065 125 156 164 .ASCIZ "Unterminated command" 21 22 001050 250$: ERROR MEM,<"Memory overflow"> 001050 004467 007446 JSR R4,ERRMSG 001054 051025 .RAD50 /MEM/ 001056 000112' .WORD $$$$$$ 000112 115 145 155 .ASCIZ "Memory overflow" TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 17 COMMAND INPUT - DELETE 1 .SBTTL COMMAND INPUT - DELETE 2 3 001060 004767 176724 .CMDEL: JSR PC,10$ ;REMOVE A CHARACTER 4 001064 103211 BCC TECOCR ;NONE TO REMOVE, RESTART US 5 001066 004767 000000G JSR PC,DELCHR ;ONE REMOVED, SO SAY SO 6 001072 000677 BR 170$ ; AND CONTINUE 7 8 .SBTTL COMMAND INPUT - CONTROL/U 9 10 001074 004767 176710 .CMDCU: JSR PC,10$ ;REMOVE A CHARACTER 11 001100 103005 BCC 260$ ;NONE TO REMOVE, QUIT 12 001102 020027 000012 CMP R0,#LF ;ONE, WAS IS LINE FEED? 13 001106 001372 BNE .CMDCU ;NOT LINE FEED, KEEP REMOVING 14 001110 004767 177644 JSR PC,220$ ;LINE FEED, SO RESTORE IT 15 001114 004767 000000G 260$: JSR PC,DELLIN ;SAY 1 LINE WAS DELETED 16 001120 012746 000672' MOV #170$,-(SP) ;SET CONTINUATION RETURN ADDRESS 17 001124 004767 176676 PRTLIN: JSR PC,20$ ;FIND LINE'S START/LENGTH 18 001130 012701 000012 MOV #LF,R1 ;COMPARE CHARACTER IS LINE FEED 19 001134 005304 270$: DEC R4 ;ONE LESS IN COUNT NOW 20 001136 100410 BMI 290$ ;ONLY ONE LINE WAS IN COMMAND 21 001140 120143 CMPB R1,-(R3) ;BACKED UP ENOUGH? 22 001142 001374 BNE 270$ ;NO, KEEP GOING 23 001144 005203 INC R3 ;YES, SO CORRECT POINTER 24 001146 005104 280$: COM R4 ;NEGATE AND DECREMENT COUNT 25 001150 066504 000632 ADD QPNTR(R5),R4 ;FORM THE POSITIVE PRINT COUNT 26 001154 000167 000000G JMP PRINT ;PRINT THE LINE AND EXIT 27 28 001160 012700 000052 290$: MOV #'*,R0 ;(RE-)TYPE 29 001164 004767 000000G JSR PC,TYPE ; THE ASTERISK 30 001170 000766 BR 280$ ;NOW GO PRINT THE LINE TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 18 COMMAND INPUT - ACCENT GRAVE 1 .SBTTL COMMAND INPUT - ACCENT GRAVE 2 3 001172 032765 000000G 000104 .CMDGV: BIT #ET$GRV,ETYPE(R5) ;CONVERT ACCENT GRAVE INTO ESCAPE? 4 001200 001657 BEQ 200$ ;NOPE 5 001202 012700 000033 MOV #ESC,R0 ;MAKE SURROGATE INTO 6 7 .SBTTL COMMAND INPUT - ESCAPE 8 9 001206 012701 000001 300$: MOV #1,R1 ;PRESUME THIS WAS FIRST THING TYPED 10 001212 005765 000632 TST QPNTR(R5) ;WAS THIS THE FIRST THING TYPED? 11 001216 001472 BEQ ESC.LF ;YES, TREAT IT AS 12 001220 020065 000054 CMP R0,TEMP(R5) ;2ND ESCAPE? 13 001224 001245 310$: BNE 200$ ;NOPE, SO NORMAL CHARACTER 14 001226 004767 177526 JSR PC,220$ ;YES, SO STORE THE FINAL ESCAPE 15 001232 016565 000632 000634 MOV QPNTR(R5),QLCMD(R5) ; AND SAVE COMMAND AS LAST 16 001240 005765 000136 TST INDIR(R5) ;PROCESSING INDIRECT OCMMANDS? 17 001244 001002 BNE 320$ ;YES, SO NO CARRIAGE RESTORE 18 001246 004767 011542 JSR PC,CRLFNO ;NO, SO RESTORE THE CARRIAGE 19 001252 012700 000113 320$: MOV #CMDQRG,R0 ;SET UP TO REFERENCE 20 001256 004767 010212 JSR PC,SETCMD ; THE COMMAND REGISTER 21 22 .SBTTL INTERPRETER 23 24 001262 004767 176664 330$: JSR PC,SCAN ;SCAN THE COMMAND 25 001266 004767 011202 340$: JSR PC,UPPERC ; AND FORCE UPPER CASE 26 001272 110001 350$: MOVB R0,R1 ;COPY THE CHARACTER W/ SIGN EXTENSION 27 001274 100423 BMI 370$ ;IT'S AN 8-BIT CHARACTER... 28 001276 005000 CLR R0 ;LEAVE R0 (THE AC...) CLEAR 29 001300 010102 MOV R1,R2 ;COPY THE CHARACTER AGAIN 30 001302 020227 000141 CMP R2,#'A+40 ;SPECIAL LOWER CASE CHARACTER? 31 001306 103402 BLO 360$ ;NOPE 32 001310 162702 000032 SUB #32,R2 ;YEP, SO CORRECT CHARACTER 33 001314 006302 360$: ASL R2 ;DOUBLE CHARACTER FOR A WORD INDEX 34 001316 066502 000650 ADD TECOJP(R5),R2 ;NOW FORM THE JUMP DISPATCH ADDRESS 35 001322 004732 JSR PC,@(R2)+ ; AND GO OFF TO THAT COMMAND... 36 001324 005765 000020 CMDDNE: TST NFLG(R5) ;NUMBER? 37 001330 100754 BMI 330$ ;YES, SO JUST CONTINUE 38 001332 005065 000022 CLR N(R5) ;NO, SO CLEAR THE ARGUMENT 39 001336 005065 000020 CLR NFLG(R5) ; AND RESET NUMBER FLAG 40 001342 000747 BR 330$ ;THEN CONTINUE 41 42 001344 370$: ERROR ILL,<"Illegal command"> 001344 000167 176430 JMP $E$ILL 43 44 001350 CMDCHR <'^> ;"^" MEANS NEXT IS CONTROL CHARACTER 45 001350 004767 011142 JSR PC,SCNCTL ;GET NEXT AS CONTROL CHARACTER 46 001354 000746 BR 350$ ; AND CONTINUE WITH IT TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 19 COMMAND INPUT - LINE FEED 1 .SBTTL COMMAND INPUT - LINE FEED 2 3 001356 .CMDLF: ;MOV #12,R0 ;CODE IS 012 (LINE FEED) 4 5 .SBTTL COMMAND INPUT - BACKSPACE 6 7 001356 .CMDBS: ;MOV #10,R0 ;CODE IS 010 (BACKSPACE) 8 9 001356 010001 MOV R0,R1 ;SAVE THE CODE 10 001360 005765 000632 TST QPNTR(R5) ;WAS THIS THE 1ST THING TYPED? 11 001364 001317 BNE 310$ ;NOPE, SO NORMAL 12 001366 012700 000015 MOV #CR,R0 ;YEP, ENSURE THAT THE CARRIAGE 13 001372 004767 000000G JSR PC,TYPE ; IS AT THE LEFT MARGIN 14 001376 162701 000011 SUB #11,R1 ;FORM THE MOVEMENT AMOUNT (+1 -OR- -1) 15 001402 100004 BPL 380$ ;IT WAS , WE NEED NO TYPING 16 001404 012700 000012 ESC.LF: MOV #LF,R0 ;IT WASN'T A WHICH WAS TYPED, SO 17 001410 004767 000000G JSR PC,TYPE ; OUTPUT THAT NEEDED LINE FEED 18 001414 012746 000514' 380$: MOV #TECO,-(SP) ;SET UP SO FINAL EXIT WILL RETART US 19 001420 016504 000064 MOV P(R5),R4 ;SAVE THE ORIGINAL TEXT BUFFER POINTER 20 001424 010100 MOV R1,R0 ;PUT THE DESIRED MOVEMENT AMOUNT HERE 21 001426 004767 000176 JSR PC,.VVV.V ; AND GO MOVE THE TEXT BUFFER POINTER 22 001432 005765 000100 TST EVFLAG(R5) ;DOES AN EDIT VERIFY FLAG EXIST? 23 001436 001010 BNE 400$ ;ONE EXISTS, WE WON'T TRY TO PRINT 24 001440 020104 CMP R1,R4 ;DID WE MOVE THE POINTER AT ALL? 25 001442 001004 BNE 390$ ;YES, ALWAYS GO TYPE SOMETHING 26 001444 005701 TST R1 ;NO, ARE WE THE BUFFER'S BEGINNING? 27 001446 001004 BNE 400$ ;WE'RE AT THE END, DO NOTHING 28 001450 004767 000004 JSR PC,400$ ;WE'RE AT THE START, UP TWICE & TYPE 29 001454 012746 005330' 390$: MOV #.SCH.T,-(SP) ;DO EQUIVALENT OF "T" BEFORE EXIT 30 001460 032765 000000G 000104 400$: BIT #ET$CRT,ETYPE(R5) ;SCOPE TYPE TERMINAL? 31 001466 001511 BEQ RTS.PC ;NOPE 32 001470 012700 000012 MOV #LF,R0 ;YEP, SET "DELETED" CHAR TO LINE FEED 33 001474 004767 000000G JSR PC,DELCHR ; AND GO DO A CURSOR UP 34 001500 000167 000000G JMP DELLIN ; THEN ERASE THE LINE TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 20 COMMAND INPUT - CONTROL/W 1 .SBTTL COMMAND INPUT - CONTROL/W 2 3 001504 005765 000632 .CMDCW: TST QPNTR(R5) ;WAS THIS THE 1ST THING TYPED? 4 001510 001043 BNE 430$ ;NOPE, SO NORMAL 5 001512 012746 000000C MOV #ET$IAS!ET$CRT,-(SP) ;ARE BOTH "W" COMMAND SUPPORT 6 001516 046526 000104 BIC ETYPE(R5),(SP)+ ; AND SCOPE TERMINAL TRUE? 7 001522 001036 BNE 430$ ;NOPE, SO NORMAL 8 001524 012765 177777 000020 MOV #-1,NFLG(R5) ;SAY THIS IS A ":W" COMMAND 9 001532 005065 000030 CLR CFLG(R5) ; THAT IS READING A PARAMETER 10 001536 012700 000007 MOV #7,R0 ;WE WANT THE SCROLLING SIZE (+7) 11 001542 004767 000000G JSR PC,WATCH ;GO GET THE CURRENT SCOLLING SIZE 12 001546 010046 MOV R0,-(SP) ; AND SAVE IT 13 001550 012700 000027 MOV #'W-100,R0 ;RESTORE CHARACTER AS "^W" 14 001554 005065 000020 CLR NFLG(R5) ; AND CLEAR THE NUMBER FLAG 15 001560 005726 TST (SP)+ ;WAS THERE A SCROLLING SIZE? 16 001562 001416 BEQ 430$ ;NOPE 17 001564 004767 000000G JSR PC,DELCHR ;GO DELETE THE "^W" 18 001570 012700 176031 MOV #-<1000.-1>,R0 ;SAY FORGET ALL POSSIBLE SCREEN LINES 19 001574 004767 000010 JSR PC,420$ ; AND GO DO THAT 20 001600 012746 000672' MOV #170$,-(SP) ;SET CONTINUATION RETURN ADDRESS 21 001604 016500 000124 410$: MOV NWATCH(R5),R0 ;GET AMOUNT TO SCOPE WATCH 22 001610 005065 000020 420$: CLR NFLG(R5) ;SAY NOT THE PARAMETER READ/ALTER CALL 23 001614 000167 000000G JMP WATCH ; AND REFRESH THE SCREEN, EXIT 24 25 001620 000167 177114 430$: JMP 200$ ;LONG BRANCH FOR NORMAL CHARACTER... 26 27 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 21 COMMAND INPUT - CONTROL/W 1 .ENABL LSB 2 3 001624 CMDCHR <'L> ;"L" IS THE LINE MOVER 4 001624 004767 010550 .VVV.N: JSR PC,GETN ;GET THE NUMBER OF LINES 5 001630 016502 000144 .VVV.V: MOV TXSTOR(R5),R2 ;GET TEXT POINTER BIAS 6 001634 016501 000064 MOV P(R5),R1 ;GET THE CURRENT . 7 001640 060201 ADD R2,R1 ; AND MAKE THAT ABSOLUTE 8 001642 012703 000014 MOV #FF,R3 ;SPEED UP THE COMPARES 9 001646 005700 TST R0 ;WHICH DIRECTION 10 001650 003421 BLE 30$ ;<=0 IS BACKWARDS 11 001652 066502 000150 ADD ZZ(R5),R2 ;>0 IS FORWARDS; SO GET END OF TEXT 12 001656 020102 10$: CMP R1,R2 ;PAST END OF TEXT YET? 13 001660 103010 BHIS 20$ ;YES, SO STOP THE MOVE 14 001662 120321 CMPB R3,(R1)+ ;NOPE, IS THIS A FORM FEED? 15 001664 103774 BLO 10$ ;NO, HIGHER, KEEP MOVING 16 001666 126127 177777 000012 CMPB -1(R1),#LF ;YES, OR LOWER, SO CHECK IT 17 001674 103770 BLO 10$ ;CONTINUE ON LOWER THAN LINE FEED 18 001676 005300 DEC R0 ;GOT ONE, MORE TO GO? 19 001700 003366 BGT 10$ ;KEEP GOING 20 001702 166501 000144 20$: SUB TXSTOR(R5),R1 ;GET THE NEW . 21 001706 010165 000064 MOV R1,P(R5) ; AND STORE IT 22 001712 000207 RTS.PC: RTS PC ;EXIT 23 24 001714 020102 30$: CMP R1,R2 ;TOO LOW? 25 001716 101771 BLOS 20$ ;YES, SO QUIT 26 001720 120341 CMPB R3,-(R1) ;NO, IS THIS A FORM FEED? 27 001722 103774 BLO 30$ ;NOPE, HIGHER, KEEP GOING 28 001724 121127 000012 CMPB (R1),#LF ;YEP, OR LOWER, SO CHECK IT 29 001730 103771 BLO 30$ ;CONTINUE ON LOWER THAN LINE FEED 30 001732 005200 INC R0 ;GET ONE, MORE? 31 001734 003767 BLE 30$ ;STILL ARE MORE TO GO 32 001736 005201 INC R1 ;DONE, CORRECT . 33 001740 000760 BR 20$ ; AND GO SET NEW . 34 35 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 22 COMMAND CHARACTER 'L 1 .ENABL LSB 2 3 001742 CMDCHR ;"<" STARTS AN ITERATION 4 001742 .CSMI: PUSH ITRST,ITRCNT ;SAVE ITERATION START AND COUNT 001742 004467 010300 JSR R4,PUSH 001746 002 010 .BYTE $$$$$$,ITRST 5 001750 011565 000010 MOV (R5),ITRST(R5) ;SET ITERATION START POINT 6 001754 005065 000012 CLR ITRCNT(R5) ;GUESS AT "INFINITE" ITERATION 7 001760 005265 000020 INC NFLG(R5) ;WAS THERE A NUMBER? 8 001764 001020 BNE 10$ ;NO, SO IT IS "INFINITE" 9 001766 016565 000022 000012 MOV N(R5),ITRCNT(R5) ;YES, USE THAT VALUE THEN 10 001774 003464 BLE .SCH.I ;UNLESS <=0, WHICH IS A NOP 11 001776 000413 BR 10$ ;EXIT RESTORING QUOTE 12 13 002000 .FFFRAB:;MOV #'>,R0 ;"F>" FLOWS TO ITERATION'S END 14 002000 CMDCHR ;">" ENDS AN ITERATION 15 002000 005765 000010 TST ITRST(R5) ;ARE WE IN AN ITERATION? 16 002004 001434 BEQ 40$ ;NOPE, NO PLACE TO RESTART... 17 002006 005765 000012 TST ITRCNT(R5) ;"INFINITE" ITERATION? 18 002012 001403 BEQ .FFFLAB ;YES, MAKE IT REALLY INFINITE 19 002014 005365 000012 DEC ITRCNT(R5) ;GO AROUND AGAIN? 20 002020 001414 BEQ 20$ ;NO, SO GO END US 21 002022 016515 000010 .FFFLAB:MOV ITRST(R5),(R5) ;"F<" FLOWS TO ITERATION'S START 22 002026 005065 000030 10$: CLR CFLG(R5) ;USE UP ANY PENDING COMMA 23 002032 005065 000026 CLR OFLG(R5) ; AND ANY PENDING OPERATOR 24 002036 005065 000032 CLR CLNF(R5) ; AND ANY PENDING COLON 25 002042 005065 000020 CLR NFLG(R5) ; AND USE UP ANY NUMBER 26 002046 000167 006306 JMP IREST ; THEN EXIT RESTORING NORMAL QUOTE 27 28 002052 005700 20$: TST R0 ;"F>" OR REAL ">"? 29 002054 001452 BEQ .CSMO ;REAL ">", SO END US 30 002056 000433 BR .SCH.I ;"F>", GO FIND END, THEN END US 31 32 002060 CMDCHR ;"ESC" SIMPLY EATS EVERYTHING 33 002060 TSTNXT ESC ;TWO ESC'S IN A ROW? 002060 004467 010660 JSR R4,TSTNXT 002064 000033 .WORD ESC 34 002066 103357 BCC 10$ ;NOPE, JUST EAT UP AND CONTINUE 35 002070 016515 000044 30$: MOV QLENGT(R5),(R5) ;SET TO END THIS MACRO/COMMAND 36 002074 000207 RTS PC ; AND SIMPLY EXIT... 37 38 002076 005700 40$: TST R0 ;"F>" OR REAL ">"? 39 002100 001373 BNE 30$ ;"F>", JUST GO END THIS MACRO/COMMAND 40 002102 ERROR BNI,<" not in iteration"> 002102 004467 006414 JSR R4,ERRMSG 002106 007271 .RAD50 /BNI/ 002110 000132' .WORD $$$$$$ 000132 076 040 156 .ASCIZ " not in iteration" TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 23 COMMAND CHARACTER ESC 1 002112 CMDCHR <';> ;";" IS SPECIAL ITERATION END 2 002112 005765 000010 TST ITRST(R5) ;ARE WE IN ITERATION? 3 002116 001435 BEQ 70$ ;NO, ERROR 4 002120 005265 000020 INC NFLG(R5) ;ARGUMENT? 5 002124 001036 BNE 80$ ;GIVE ERROR IF NONE 6 002126 005265 000032 INC CLNF(R5) ;COLON MODIFIED? 7 002132 001002 BNE 50$ ;NOPE 8 002134 005165 000022 COM N(R5) ;YEP, REVERSE SENSE OF TEST 9 002140 005765 000022 50$: TST N(R5) ;SUCCESSFUL? 10 002144 100730 BMI 10$ ;YES, SO JUST CONTINUE 11 002146 016546 000010 .SCH.I: MOV ITRST(R5),-(SP) ;SAVE ITERATION START POINT 12 002152 60$: SKPSET '> ;GO TO MATCHING > 002152 004467 006024 JSR R4,SKPSET 002156 000076 .WORD '> 13 002160 012746 002152' MOV #60$,-(SP) ;GUESS AT RE-CALLING SKPSET 14 002164 026665 000002 000010 CMP 2(SP),ITRST(R5) ;MATCH THIS START POINT? 15 002172 001003 BNE .CSMO ;NO, POP AND CONTINUE 16 002174 022626 CMP (SP)+,(SP)+ ;YES, POP START AND ADDRESS 17 002176 004767 175774 JSR PC,TRACE ; BUT TRACE THE > IF TRACING 18 002202 .CSMO: POP ITRCNT,ITRST ;POP THE COUNT AND START 002202 004467 010070 JSR R4,POP 002206 002 014 .BYTE $$$$$$,ITRCNT+2 19 002210 000706 BR 10$ ;GO RESET QUOTE CHARACTER 20 21 002212 70$: ERROR SNI,<"; not in iteration"> 002212 004467 006304 JSR R4,ERRMSG 002216 074371 .RAD50 /SNI/ 002220 000155' .WORD $$$$$$ 000155 073 040 156 .ASCIZ "; not in iteration" 22 23 002222 80$: ERROR NAS,<"No arg before ;"> 002222 004467 006224 JSR R4,ERRORA 002226 023 .BYTE 'S-<'A-1> 002227 073 .BYTE '; 24 25 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 24 COMMAND CHARACTER '; 1 .ENABL LSB 2 3 002230 CMDCHR <'=> ;"=" IS THE NUMBER PRINTER 4 002230 005265 000020 INC NFLG(R5) ;ANY NUMBER? 5 002234 001043 BNE 20$ ;AN ERROR IF NOT 6 002236 016546 000070 MOV NMRBAS(R5),-(SP) ;SAVE CURRENT RADIX 7 002242 005065 000070 CLR NMRBAS(R5) ;SET RADIX=DECIMAL INITIALLY(0 = 0) 8 002246 TSTNXT '= ;IS IT REALLY "=="? 002246 004467 010472 JSR R4,TSTNXT 002252 000075 .WORD '= 9 002254 005565 000070 ADC NMRBAS(R5) ;C=1 IF SO, SET RADIX=OCTAL(1 > 0) 10 002260 TSTNXT '= ;IS IT REALLY "==="?? 002260 004467 010460 JSR R4,TSTNXT 002264 000075 .WORD '= 11 002266 103002 BCC 10$ ;NOPE 12 002270 005465 000070 NEG NMRBAS(R5) ;YEP, SET RADIX=HEXIDECIMAL(-1 < 0) 13 002274 004367 010770 10$: JSR R3,ZEROD ;THIS DOES THE REAL WORK 14 002300 000000G .WORD TYPEB ;OUTPUT TO TERMINAL 15 002302 012665 000070 MOV (SP)+,NMRBAS(R5) ;RESTORE THE PREVIOUS RADIX 16 002306 005265 000032 INC CLNF(R5) ;IS THE = COLON MODIFIED? 17 002312 001450 BEQ 30$ ;YES, SO NO CR/LF 18 002314 005065 000032 CLR CLNF(R5) ;NO, CLEAR THE COLON FLAG 19 002320 012700 000015 MOV #CR,R0 ;SET A RETURN 20 002324 004767 000000G JSR PC,TYPEB ; AND TYPE IT 21 002330 012700 177776 MOV #LF-FF,R0 ;NOW SET LINE FEED 22 002334 CMDCHR ;"FF" TYPES OUT A FORM FEED 23 002334 062700 000014 ADD #FF,R0 ;SET A FORM FEED (OR LINE FEED) 24 002340 000167 000000G JMP TYPEB ; AND TYPE IT THEN EXIT 25 26 002344 20$: ERROR NAE,<"No arg before ="> 002344 004467 006102 JSR R4,ERRORA 002350 005 .BYTE 'E-<'A-1> 002351 075 .BYTE '= 27 28 002352 CMDCHR <'!> ;"!" IS THE COMMENT DELIMITER 29 002352 022020 CMP (R0)+,(R0)+ ;MAKE R0 = 4 (SKIP 2 WORDS) 30 002354 CMDCHR <'A-100> ;"CTRL/A" IS THE TEXT PRINTER 31 002354 010002 MOV R0,R2 ;SAVE DETERMINATION 32 002356 005065 000020 CLR NFLG(R5) ;USE UP ANY NUMBER 33 002362 010165 000040 MOV R1,QUOTE(R5) ;END CHARACTER IS SAME AS STARTING 34 002366 004767 010022 JSR PC,QSKPR0 ;SKIP STRING AND RESTORE QUOTE 35 002372 010004 MOV R0,R4 ;MOVE STRING SIZE TO CORRECT PLACE 36 002374 066503 000066 ADD QBASE(R5),R3 ;MAKE THE START POINTER 37 002400 066503 000152 ADD QRSTOR(R5),R3 ; FULLY ABSOLUTE 38 002404 060207 ADD R2,PC ;SKIP PRINT IF REALLY A COMMENT 39 002406 004767 000000G JSR PC,PRINTB ; ELSE PRINT THE STRING 40 002412 000410 BR 30$ ;NOW EXIT TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 25 COMMAND CHARACTER 'A-100 1 002414 CMDCHR <'\> ;"\" IS NUMBER INSERTER/GETTER 2 002414 005065 000076 CLR LSCHSZ(R5) ;PRE-CLEAR INSERT/GET SIZE 3 002420 005265 000020 INC NFLG(R5) ;WAS THERE AN ARGUMENT? 4 002424 001004 BNE 40$ ;NO, SO GET A NUMBER FROM TEXT 5 002426 004367 010636 JSR R3,ZEROD ;YES, INSERT NUMBER INTO TEXT 6 002432 004122' .WORD .BSL.I 7 002434 000207 30$: RTS PC ;NOW EXIT 8 9 002436 004767 004266 40$: JSR PC,NCOM ;SET UP NUMBER PROCESSOR 10 002442 004767 007526 JSR PC,GETXTP ;GET CHAR FROM TEXT 11 002446 103372 BCC 30$ ;NOTHING THERE 12 002450 162700 000053 SUB #'+,R0 ;PLUS SIGN? 13 002454 001405 BEQ 50$ ;YES, IGNORE IT 14 002456 020027 000002 CMP R0,#'--'+ ;MINUS SIGN? 15 002462 001004 BNE 60$ ;NOPE 16 002464 010065 000014 MOV R0,NOPR(R5) ;YES, SET MINUS OPERATOR 17 002470 004767 001456 50$: JSR PC,.BSL.P ;BUMP . AND COUNT IT 18 002474 004767 007474 60$: JSR PC,GETXTP ;GET CHARACTER FROM TEXT 19 002500 103355 BCC 30$ ;EXIT IF NO MORE 20 002502 005765 000070 TST NMRBAS(R5) ;RADIX? 21 002506 002010 BGE 70$ ;DECIMAL OR OCTAL 22 002510 004767 007760 JSR PC,UPPERC ;HEXIDECIMAL, MAKE UPPER CASE 23 002514 020027 000101 CMP R0,#'A ;WITHIN HEXIDECIMAL RANGE? 24 002520 103403 BLO 70$ ;NEVER 25 002522 020027 000106 CMP R0,#'F ;MIGHT BE... 26 002526 101411 BLOS 80$ ;IT IS, USE IT 27 002530 004767 010116 70$: JSR PC,NUMER ;CHECK FOR NUMERIC 28 002534 103337 BCC 30$ ;NOT A NUMBER 29 002536 005765 000070 TST NMRBAS(R5) ;WHAT IS THE RADIX? 30 002542 003403 BLE 80$ ;IT IS DECIMAL OR HEXIDECIMAL 31 002544 020027 000070 CMP R0,#'8 ;IT IS OCTAL, VALID DIGIT? 32 002550 103331 BHIS 30$ ;NOT AN OCTAL DIGIT 33 002552 010001 80$: MOV R0,R1 ;MOVE DIGIT OVER TO HERE 34 002554 004767 004020 JSR PC,.BSL.N ;NUMBER, SO USE IT 35 002560 000743 BR 50$ ; AND CONTINUE 36 37 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 26 COMMAND CHARACTER '\ 1 .ENABL LSB 2 3 002562 CMDCHR <'"> ;'"' IS THE CONDITIONAL 4 002562 005265 000020 INC NFLG(R5) ;ANY ARGUMENT? 5 002566 001006 BNE 10$ ;THERE HAD BETTER BE 6 002570 SORT ..CND,C ; AND SPECIAL SORT 002570 004467 007776 JSR R4,SORTC 002574 015622' .WORD ..CND 7 002576 ERROR IQC,<'Illegal " character'> 002576 004467 005664 JSR R4,ERRORC 002602 125 .BYTE 'Q-<'A-1>*5 002603 042 .BYTE '" 8 9 002604 10$: ERROR NAQ,<'No arg before "'> 002604 004467 005642 JSR R4,ERRORA 002610 021 .BYTE 'Q-<'A-1> 002611 042 .BYTE '" 10 11 002612 062702 000014 .CNDV: ADD #ALPHAL-ALPHAU,R2 ;"V" IS LOWER CASE A-Z 12 002616 062702 000034 .CNDW: ADD #ALPHAU-SYMCHR,R2 ;"W" IS UPPER CASE A-Z 13 002622 062702 000014 .CNDC: ADD #SYMCHR-NUMER,R2 ;"C" IS SYMBOL CHARACTERS 14 002626 062702 177734 .CNDD: ADD #NUMER-ALPHA,R2 ;"D" IS 0-9 15 002632 062702 000006 .CNDA: ADD #ALPHA-ALPHAN,R2 ;"A" IS A-Z 16 002636 062702 012710' .CNDR: ADD #ALPHAN,R2 ;"R" IS A-Z,0-9 17 002642 010300 MOV R3,R0 ;SET UP TEST CHARACTER 18 002644 004712 JSR PC,(R2) ; AND GO CHECK IT 19 002646 103430 BCS 50$ ;CARRY SET IS SUCCESS 20 002650 000412 BR 20$ ;ELSE FAILURE 21 22 002652 005703 .CNDN: TST R3 ;SET CC'S 23 002654 001025 BNE 50$ ;"N" IS OK IF <> 24 002656 000407 BR 20$ ;ELSE NOT OK 25 26 002660 .CNDRAB: ;">" IS OK IF > 27 002660 005403 .CNDG: NEG R3 ;"G" IS OK IF > 28 002662 102405 BVS 20$ ;TRAP -32768. CASE 29 002664 .CNDS: ;"S" IS SUCCESSFUL (-1) 30 002664 .CNDT: ;"T" IS TRUE (-1) 31 002664 .CNDLAB: ;"<" IS OK IF < 32 002664 005703 .CNDL: TST R3 ;SET CC'S 33 002666 100420 BMI 50$ ;"L" IS OK IF < 34 002670 000402 BR 20$ ;ELSE NOT OK 35 36 002672 .CNDF: ;"F" IS FALSE (0) 37 002672 .CNDU: ;"U" IS UNSUCCESSFUL (0) 38 002672 .CNDEQU: ;"=" IS OK IF = 39 002672 005703 .CNDE: TST R3 ;SET CC'S 40 002674 001415 BEQ 50$ ;"E" IS OK IF = TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 27 COMMAND CHARACTER '" 1 002676 005004 20$: CLR R4 ;MATCH ' OR VBAR (IGNORE NOTHING) 2 002700 005065 000046 30$: CLR CNDN(R5) ;INTO 1 LEVEL OF CONDITIONAL SKIP 3 002704 40$: SKPSET ;SKIP TO A ' OR VERTICAL BAR 002704 004467 005272 JSR R4,SKPSET 002710 076047 .WORD VBR*400+'' 4 002712 020004 CMP R0,R4 ;SHOULD WE IGNORE THIS HIT? 5 002714 001411 BEQ 60$ ;YES 6 002716 005765 000046 TST CNDN(R5) ;ARE WE BACK TO THE ORIGINAL LEVEL? 7 002722 001006 BNE 60$ ;NOT YET... 8 002724 004767 175246 JSR PC,TRACE ;TRACE FINAL ' OR VBAR IF TRACING 9 002730 CMDCHR <''> ;"'" IS END OF A CONDITIONAL 10 002730 005065 000020 50$: CLR NFLG(R5) ;USE UP ANY NUMBER 11 002734 000167 005420 JMP IREST ;RESTORE QUOTE AND EXIT 12 13 002740 020027 000174 60$: CMP R0,#VBR ;WAS IT A VBAR WE SAW? 14 002744 001757 BEQ 40$ ;SAW VBAR, DON'T CHANGE THE LEVEL 15 002746 005365 000046 DEC CNDN(R5) ;SAW "'", CHANGE LEVEL BY ONE 16 002752 100354 BPL 40$ ;CONTINUE SKIPPING IF LEVEL O.K. 17 002754 000751 BR 30$ ;WHOOPS, UNDERFLOW, GO RESET LEVEL 18 19 002756 .FFFAPS: ;"F'" IS FLOW TO CONDITIONAL'S END 20 002756 CMDCHR ;"VERTICAL BAR" IS SKIP TO NEXT ' 21 002756 012704 000174 MOV #VBR,R4 ;MATCH ONLY ' (IGNORE VBAR) 22 002762 000746 BR 30$ ; AND GO SKIP SOME... 23 24 002764 012704 000047 .FFFVBR:MOV #'',R4 ;"F" IS FLOW TO ELSE 25 002770 000743 BR 30$ ;GO MATCH ONLY VBAR (IGNORE ') 26 27 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 28 COMMAND CHARACTER VBR 1 .ENABL LSB 2 3 002772 CMDCHR <'U-100> ;"CTRL/U" IS Q-REG TEXT INSERT 4 002772 004467 000142 JSR R4,70$ ;REFERENCE THE Q-REG AND GET BIAS 5 002776 004767 007412 JSR PC,QSKPR0 ;NOW SKIP THE QUOTED STRING 6 003002 001010 BNE 10$ ;INSERT STRING EXISTS 7 003004 005265 000020 INC NFLG(R5) ;NO STRING, IS THERE AN ARGUMENT? 8 003010 001010 BNE 20$ ;NO ARGUMENT EITHER, DO A NULL INSERT 9 003012 005200 INC R0 ;ARGUMENT EXISTS, SET SIZE=1 10 003014 011646 MOV (SP),-(SP) ;RE-STACK THE APPEND SIZE 11 003016 012766 003132' 000002 MOV #50$,2(SP) ; SO WE CAN SET A RETURN ADDRESS 12 003024 005265 000020 10$: INC NFLG(R5) ;ARGUMENT WITH NON-NULL STRING? 13 003030 001455 BEQ 90$ ;YES, THAT'S AN ERROR 14 003032 061600 20$: ADD (SP),R0 ;UPDATE SIZE AS NEEDED 15 003034 004767 006350 JSR PC,QADJ ;ADJUST Q-REG TO ITS NEW SIZE 16 003040 005065 000020 CLR NFLG(R5) ;USE UP ANY NUMBER 17 003044 016500 000036 MOV OSCANP(R5),R0 ;GET INSERT STRING START 18 003050 066500 000066 ADD QBASE(R5),R0 ; AND ADD IN OFFSET 19 003054 066500 000152 ADD QRSTOR(R5),R0 ;NOW MAKE IT ABSOLUTE 20 003060 000413 BR 30$ ; AND GO INSERT IT IN Q-REG 21 22 003062 CMDCHR <'X> ;"X" IS Q-REG TEXT INSERT 23 003062 004467 000052 JSR R4,70$ ;REFERENCE THE Q-REG 24 003066 004767 007746 JSR PC,NLINES ;GET NUMBER OF CHARACTERS 25 003072 061600 ADD (SP),R0 ;UPDATE SIZE AS NEEDED 26 003074 004767 006310 JSR PC,QADJ ;ADJUST Q-REG TO ITS NEW SIZE 27 003100 016500 000024 MOV M(R5),R0 ;GET START OF TEXT 28 003104 066500 000144 ADD TXSTOR(R5),R0 ; AND MAKE IT ABSOLUTE 29 003110 061602 30$: ADD (SP),R2 ;BIAS THE POINTER AS NEEDED 30 003112 066502 000152 ADD QRSTOR(R5),R2 ;MAKE POINTER TO Q-REG ABSOLUTE 31 003116 011101 MOV (R1),R1 ;NOW GET SIZE OF Q-REG 32 003120 162601 SUB (SP)+,R1 ; LESS THE BIAS SIZE 33 003122 005301 40$: DEC R1 ;MORE TO MOVE? 34 003124 100404 BMI 60$ ;NO, DONE 35 003126 112022 MOVB (R0)+,(R2)+ ;YES, MOVE A BYTE 36 003130 000774 BR 40$ ; AND LOOP FOR MORE 37 38 003132 116542 000022 50$: MOVB N(R5),-(R2) ;PUT ARGUMENT VALUE THERE INSTEAD 39 003136 000207 60$: RTS PC ;EXIT 40 41 003140 004767 005626 70$: JSR PC,QREF ;REALLY REFERENCE THE Q-REG 42 003144 011116 MOV (R1),(SP) ;SAVE ITS CURRENT SIZE 43 003146 005765 000032 TST CLNF(R5) ;APPEND TO Q-REG? 44 003152 100401 BMI 80$ ;YES, LEAVE THE OLD SIZE AS BIAS 45 003154 005016 CLR (SP) ;NO, SO NO BIAS 46 003156 005065 000032 80$: CLR CLNF(R5) ;TURN OFF THE COLON FLAG 47 003162 000114 JMP (R4) ; AND EXIT 48 49 003164 90$: ERROR IIA,<"Illegal insert arg"> 003164 004467 005332 JSR R4,ERRMSG 003170 034651 .RAD50 /IIA/ 003172 000200' .WORD $$$$$$ 000200 111 154 154 .ASCIZ "Illegal insert arg" 50 51 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 29 COMMAND CHARACTER 'X 1 .ENABL LSB 2 3 003174 CMDCHR <'F> ;"F" IS PREFIX FOR SPECIAL SEARCHES 4 003174 SORT ..FFF,S ; AND SORT ON IT 003174 004467 007400 JSR R4,SORTS 003200 016006' .WORD ..FFF 5 003202 ERROR IFC,<"Illegal F character"> 003202 004467 005260 JSR R4,ERRORC 003206 036 .BYTE 'F-<'A-1>*5 003207 106 .BYTE 'F 6 7 003210 012765 177777 000062 .FFFC: MOV #-1,REPFLG(R5) ;"FC" IS BOUNDED SEARCH & REPLACE 8 003216 004767 010614 .FFFB: JSR PC,SEARCB ;"FB" IS BOUNDED SEARCH, GO SEARCH 9 003222 000405 BR 10$ ; THEN GO FINISH UP 10 11 003224 012765 177777 000062 .FFFS: MOV #-1,REPFLG(R5) ;"FS" IS SEARCH & REPLACE, SET FLAG 12 003232 CMDCHR <'S> ;"S" IS SEARCH 13 003232 004767 010716 JSR PC,SEARCH ;SEARCH FOR THE STRING 14 003236 005765 000062 10$: TST REPFLG(R5) ;REPLACEMENT? 15 003242 001422 BEQ 30$ ;NOPE 16 003244 110146 MOVB R1,-(SP) ;YES, SO SAVE SUCCESS/FAILURE FLAG 17 003246 004767 007060 JSR PC,QSKP ; AND SKIP THE 2ND STRING 18 003252 112601 MOVB (SP)+,R1 ;RESTORE SUCCESS/FAILURE FLAG 19 003254 001413 BEQ 20$ ;NO REPLACEMENT IF FAILURE 20 003256 016500 000052 MOV PST(R5),R0 ;GET START OF FOUND STRING 21 003262 166500 000064 SUB P(R5),R0 ; AND NOW ITS -(LENGTH) 22 003266 016565 000052 000064 MOV PST(R5),P(R5) ;THEN UPDATE . 23 003274 004767 000674 JSR PC,.SCH.R ;DO REPLACEMENT 24 003300 012701 177777 MOV #-1,R1 ;RESTORE SUCCESS FLAG 25 003304 005065 000062 20$: CLR REPFLG(R5) ;CLEAR REPLACE FLAG 26 003310 004767 005044 30$: JSR PC,IREST ;RESTORE ESCAPE AS QUOTE 27 003314 110100 MOVB R1,R0 ;GET REAL NUMBER IN R0 28 003316 004767 003406 JSR PC,NCOM ;INIT THE NUMBER PROCESSOR 29 003322 005765 000032 TST CLNF(R5) ;WAS THERE A ":" THERE? 30 003326 100471 BMI 90$ ;YES, SO JUST RETURN FLAG 31 003330 005065 000032 CLR CLNF(R5) ;ELSE SET FLAG TO FALSE 32 003334 016504 000010 MOV ITRST(R5),R4 ;IN AN ITERATION? 33 003340 001442 BEQ 50$ ;NOPE 34 003342 116546 000056 MOVB TFLG(R5),-(SP) ;YEP, SAVE TRACE FLAG 35 003346 105065 000056 CLRB TFLG(R5) ; THEN TURN OFF TRACING 36 003352 TSTNXT <';> ;IS SEARCH CHECKED FOR? 003352 004467 007366 JSR R4,TSTNXT 003356 000073 .WORD '; 37 003360 103451 BCS 80$ ;CHECKED FOR, SO RETURN VALUE 38 003362 TSTNXT ': ;CHECKED FOR BY ":;"? 003362 004467 007356 JSR R4,TSTNXT 003366 000072 .WORD ': 39 003370 103005 BCC 40$ ;CAN'T BE... 40 003372 TSTNXT <';> ;MIGHT BE, IS IT? 003372 004467 007346 JSR R4,TSTNXT 003376 000073 .WORD '; 41 003400 103440 BCS 70$ ;IT IS, SO RETURN VALUE 42 003402 005315 DEC (R5) ;MAKE SURE WE SEE THE ":" AGAIN 43 003404 112665 000056 40$: MOVB (SP)+,TFLG(R5) ;NOT CHECKED, RESTORE TRACE FLAG 44 003410 005065 000020 CLR NFLG(R5) ; AND EAT UP THE NUMBER 45 003414 005765 000022 TST N(R5) ;WAS SEARCH SUCCESSFUL 46 003420 100436 BMI 100$ ;ALL O.K., SO JUST CONTINUE TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 30 COMMAND CHARACTER 'S 1 .IF NE E$$TXT 2 3 003422 004767 007366 JSR PC,CRLFNO ;NO CTRL/O AND RESTORE CARRIAGE 4 003426 012703 MOV (PC)+,R3 ;GET MESSAGE POINTER 5 003430 MESSAG <"%Search fail in iter"> 003430 000223' .WORD $$$$$$ 000223 045 123 145 .ASCIZ "%Search fail in iter" 6 7 000252 .PSECT TECOER 8 000251' . = .-1 ;BACK OVER ZERO BYTE 9 000026 $$$$$$ = .-$$$$$$ ;NOW FIND THE MESSAGE LENGTH 10 003432 .PSECT TECORO 11 12 003432 012704 000026 MOV #$$$$$$,R4 ;GET MESSAGE SIZE 13 003436 004767 000000G JSR PC,PRINT ;SO WE CAN PRINT A WARNING 14 15 .ENDC 16 17 003442 000167 176500 JMP .SCH.I ;ELSE GET OUT OF ITERATION 18 19 003446 005065 000020 50$: CLR NFLG(R5) ;USE UP THE NUMBER 20 003452 005765 000022 TST N(R5) ;SUCCESSFUL? 21 003456 100005 BPL 60$ ;NOPE 22 003460 016500 000106 MOV ESFLAG(R5),R0 ;YES, GET EDIT SEARCH FLAG 23 003464 001412 BEQ 90$ ;=0, SO EXIT 24 003466 000167 001640 JMP .SCH.V ;ELSE GO PRINT SOMETHING 25 26 003472 60$: ERROR SRH,<"Search failure"<-1>>,STRING 003472 004467 005014 JSR R4,ERRORS 003476 074630 .RAD50 /SRH/ 003500 000251' .WORD $$$$$$ 000251 123 145 141 .ASCIZ "Search failure"<-1> 27 28 003502 005315 70$: DEC (R5) ;MAKE SURE WE SEE THE ":;" 29 003504 005315 80$: DEC (R5) ;MAKE SURE WE SEE THE ";" 30 003506 112665 000056 MOVB (SP)+,TFLG(R5) ;RESTORE TRACE FLAG 31 003512 005065 000032 90$: CLR CLNF(R5) ;CLEAR COLON FLAG 32 003516 000207 100$: RTS PC ;THEN EXIT TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 31 COMMAND CHARACTER 'S 1 003520 005727 .FFFN: TST (PC)+ ;"FN" IS PAGING SEARCH & REPLACE, C=0 2 003522 000261 .FFFUND:SEC ;"F_" IS DESTRUCT SEARCH & REPLACE, C=1 3 003524 012765 177777 000062 MOV #-1,REPFLG(R5) ;INDICATE A REPLACE 4 003532 040000 BIC R0,R0 ;SET TO DO BUFFER DUMPING 5 .IIF NE <150$-140$>, .ERROR ;BUFFER DUMPING HAS BEEN MISPLACED! 6 .IIF NE <150$-140$>&^C<377>, .ERROR ;DISPATCH OFFSET MUST BE 0-377! 7 003534 103002 BCC 110$ ;NOW JOIN UP IF "FN" 8 003536 CMDCHR <'_> ;"_" IS DESTRUCTIVE SEARCH 9 003536 012700 000034 MOV #180$-140$,R0 ;SET TO SKIP BUFFER DUMPING 10 .IIF NE <180$-140$>&^C<377>, .ERROR ;DISPATCH OFFSET MUST BE 0-377! 11 .IIF NE .-110$, .ERROR ;DISPATCH STORING HAS BEEN MISPLACED! 12 003542 CMDCHR <'N> ;"N" IS THE PAGING SEARCH 13 ;CLR R0 ;SET TO DO BUFFER DUMPING 14 .IIF NE <150$-140$>, .ERROR ;BUFFER DUMPING HAS BEEN MISPLACED! 15 .IIF NE <150$-140$>&^C<377>, .ERROR ;DISPATCH OFFSET MUST BE 0-377! 16 003542 010065 000054 110$: MOV R0,TEMP(R5) ;SAVE DISPATCH OFFSET 17 003546 004767 010402 JSR PC,SEARCH ; AND SEARCH 18 003552 100004 120$: BPL 130$ ;CONTINUE IF FORWARD DIRECTION FAILURE 19 003554 030127 000777 BIT R1,#377!400 ;SUCCESS(-1) OR BOUNDED FAIL(177400)? 20 003560 001226 BNE 10$ ;ONE OF THE ABOVE, WE'RE DONE... 21 003562 005402 NEG R2 ;BACKWARDS FAIL(1X0000), NEGATE COUNT 22 003564 010246 130$: MOV R2,-(SP) ;SAVE THE SEARCH COUNTER 23 003566 066507 000054 ADD TEMP(R5),PC ; AND DISPATCH TO CORRECT ROUTINE... 24 003572 140$: ;REFERENCE ONLY 25 26 003572 005716 150$: TST (SP) ;WHAT DIRECTION ARE WE GOING? 27 003574 100422 BMI 200$ ;BACKWARDS, MUST GO BACK UP A PAGE 28 003576 004767 000566 JSR PC,.PPP.P ;FORWARDS, GO DUMP THIS TEXT BUFFER 29 003602 004767 001066 160$: JSR PC,.YYY.Y ;UNCONDITIONALLY YANK IN A TEXT PAGE 30 003606 012602 170$: MOV (SP)+,R2 ;RESTORE SEARCH COUNTER 31 003610 040101 BIC R1,R1 ;PRE-INDICATE A FAILURE 32 003612 103611 BCS 10$ ;NO DATA READ, SAY FAILURE 33 003614 004767 174230 JSR PC,CHKSTP ;CHECK FOR STOP FLAG NOW ON 34 003620 004767 010416 JSR PC,.SURCH ;CONTINUE THE SEARCH 35 003624 000752 BR 120$ ;NOW CHECK FOR FAILURE AGAIN... 36 37 003626 004767 000772 180$: JSR PC,.YYY.P ;DO WE PASS YANK PROTECTION? 38 003632 005716 190$: TST (SP) ;WHAT DIRECTION ARE WE GOING? 39 003634 100362 BPL 160$ ;FORWARDS, JUST GO YANK THE NEXT PAGE 40 003636 004767 011676 JSR PC,.YYY.C ;BACKWARDS, ZAP THE TEXT BUFFER 41 003642 012704 177777 200$: MOV #-1,R4 ;SET TO GO BACKWARDS ONE PAGE 42 003646 004767 000444 JSR PC,.PPP.B ; AND THEN GO OFF AND DO IT 43 003652 016565 000150 000064 MOV ZZ(R5),P(R5) ;SET .=Z (KEEPING C-BIT) 44 003660 000752 BR 170$ ;CONTINUE W/ C-BIT INDICATION... 45 46 003662 012700 000040 .EEEUND:MOV #190$-140$,R0 ;"E_" IS "_" WITHOUT YANK PROTECTION 47 .IIF NE <190$-140$>&^C<377>, .ERROR ;DISPATCH OFFSET MUST BE 0-377! 48 003666 010365 000020 MOV R3,NFLG(R5) ;RESTORE THE ARGUMENT FLAG 49 003672 000723 BR 110$ ;GO JOIN THE COMMON FLOW 50 51 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 32 COMMAND CHARACTER 'N 1 .ENABL LSB 2 3 003674 004767 007246 10$: JSR PC,CVTSRH ;GO CONVERT THE SPECIAL(S) 4 003700 004767 000000G 20$: JSR PC,TYPEF ;TYPE A CHARACTER WITH CASE FLAGGING 5 003704 112200 TYPSPC: MOVB (R2)+,R0 ;FETCH A STRING CHARACTER 6 003706 100772 BMI 10$ ;IT'S A SPECIAL CHARACTER... 7 003710 001373 BNE 20$ ;GO PRINT IF THERE'S SOMETHING THERE 8 003712 000207 RTS PC ;EXIT 9 10 .DSABL LSB 11 12 .ENABL LSB 13 14 003714 CMDCHR <'G> ;"G" IS GET Q-REG INTO TEXT 15 003714 005065 000020 CLR NFLG(R5) ;USE UP ANY NUMBER 16 003720 004767 007266 JSR PC,GETQRG ;GET Q-REG OR "_" OR "*" 17 003724 103011 BCC 20$ ;IT WAS "_" OR "*" 18 003726 005265 000032 INC CLNF(R5) ;COLON MODIFIED? 19 003732 001440 BEQ 80$ ;YES, SO REALLY PRINT IT 20 003734 005065 000032 10$: CLR CLNF(R5) ;CLEAR THE COLON FLAG 21 003740 010246 MOV R2,-(SP) ;SAVE OFFSET TO Q-REG 22 003742 010046 MOV R0,-(SP) ;SAVE INSERT LENGTH 23 003744 005116 COM (SP) ;MAKE IT -(LENGTH)-1 24 003746 000523 BR 110$ ;NOW REALLY INSERT IT 25 26 003750 005265 000032 20$: INC CLNF(R5) ;COLON MODIFIED? 27 003754 001753 BEQ TYPSPC ;YES, SO REALLY PRINT IT 28 003756 010204 MOV R2,R4 ;SAVE POINTER TO DATA 29 003760 121227 000200 30$: CMPB (R2),#200 ;IS THIS THE SPECIAL DUMMY CODE? 30 003764 001001 BNE 40$ ;NOPE 31 003766 005300 DEC R0 ;YEP, PUNISH LENGTH BY ONE 32 003770 105722 40$: TSTB (R2)+ ;IS THIS THE END? 33 003772 001372 BNE 30$ ;NOPE, KEEP CHECKING... 34 003774 005002 CLR R2 ;DUMMY AN INSERT OFFSET 35 003776 004767 177732 JSR PC,10$ ;NOW DO THAT DUMMY INSERT 36 004002 016503 000076 MOV LSCHSZ(R5),R3 ;GET BACK THE -(LENGTH) 37 004006 001411 BEQ 70$ ;LENGTH=0, EXIT 38 004010 060301 ADD R3,R1 ;ELSE BACK UP THE INSERT POINTER 39 004012 010402 MOV R4,R2 ; AND RESTORE THE DATA POINTER 40 004014 112200 50$: MOVB (R2)+,R0 ;REALLY GET THE INSERT DATA 41 004016 100002 BPL 60$ ;IT'S NOT A SPECIAL 42 004020 004767 007122 JSR PC,CVTSRH ;GO CONVERT THE SPECIAL(S) 43 004024 110021 60$: MOVB R0,(R1)+ ;STORE IN THE INSERT AREA 44 004026 005203 INC R3 ;MORE? 45 004030 001371 BNE 50$ ;YES, LOOP 46 004032 000207 70$: RTS PC ;NO, DONE 47 48 004034 066502 000152 80$: ADD QRSTOR(R5),R2 ;MAKE THE POINTER ABSOLUTE 49 004040 010004 MOV R0,R4 ;SET THE PRINT COUNT 50 004042 010203 MOV R2,R3 ; AND POINTER 51 004044 000167 000000G JMP PRINTF ; THEN PRINT IT AND EXIT TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 33 COMMAND CHARACTER 'G 1 004050 CMDCHR <'I-100> ;"TAB" IS SPECIAL FORM OF "I" 2 004050 004767 006340 JSR PC,QSKPR0 ;SKIP THE QUOTED STRING 3 004054 005365 000036 DEC OSCANP(R5) ;THEN ENCLUDE THE TAB WITHIN IT 4 004060 004767 000100 JSR PC,90$ ;DO THE STRING INSERTION NOW 5 004064 066501 000076 ADD LSCHSZ(R5),R1 ;GET ABS POINTER TO START OF INSERTION 6 004070 112711 000011 MOVB #TAB,(R1) ; AND ENSURE TAB AS STARTING CHARACTER 7 004074 000207 RTS PC ;EXIT ALL DONE 8 9 004076 CMDCHR <'I> ;"I" IS INSERT TEXT 10 004076 004767 006312 JSR PC,QSKPR0 ;SKIP THE QUOTED STRING 11 004102 001030 BNE 90$ ;<>0 LENGTH, A REAL INSERT 12 004104 005265 000020 INC NFLG(R5) ;NUMBER TO INSERT? 13 004110 001030 BNE 100$ ;NOPE, THE NULL INSERT... 14 004112 016500 000022 MOV N(R5),R0 ;YEP, SO GET THE NUMBER 15 004116 005065 000076 .III.I: CLR LSCHSZ(R5) ;PRE-CLEAR THE INSERT SIZE 16 004122 042700 177400 .BSL.I: BIC #^C<377>,R0 ;MAKE INTO A VALID CHARACTER 17 004126 010046 MOV R0,-(SP) ; AND SAVE IT 18 004130 012700 000001 MOV #1,R0 ;ADJUST TEXT UP BY 19 004134 004767 003506 JSR PC,ADJ ; 1 CHARACTER 20 004140 016501 000064 MOV P(R5),R1 ;GET . 21 004144 066501 000144 ADD TXSTOR(R5),R1 ;MAKE ABSOLUTE 22 004150 112611 MOVB (SP)+,(R1) ; AND STORE NEW CHARACTER 23 004152 005265 000064 .BSL.P: INC P(R5) ;BUMP . 24 004156 005365 000076 DEC LSCHSZ(R5) ; AND CORRECT INSERT SIZE 25 004162 000207 RTS PC ; THEN EXIT 26 27 004164 005265 000020 90$: INC NFLG(R5) ;WAS THERE AN ARGUMENT? 28 004170 001436 BEQ 140$ ;YES, ERROR 29 004172 005000 100$: CLR R0 ;INDICATE NO BIAS 30 004174 016503 000036 .SCH.R: MOV OSCANP(R5),R3 ;GET STRING START 31 004200 010346 MOV R3,-(SP) ; AND SAVE START 32 004202 066516 000066 ADD QBASE(R5),(SP) ;START NOW REAL 33 004206 161503 SUB (R5),R3 ;NOW HAVE -(LENGTH)-1 34 004210 160300 SUB R3,R0 ;NOW HAVE (LENGTH)+1+(BIAS) 35 004212 005300 DEC R0 ;NOW HAVE (LENGTH)+(BIAS) 36 004214 010346 MOV R3,-(SP) ;SAVE INSERT -(LENGTH)-1 37 004216 004767 003424 110$: JSR PC,ADJ ;ADJUST TEXT BUFFER SIZE 38 004222 012603 MOV (SP)+,R3 ;RESTORE INSERT -(LENGTH)-1 39 004224 005203 INC R3 ;NOW MAKE INTO -(LENGTH) 40 004226 012602 MOV (SP)+,R2 ;RESTORE STARTING POINT 41 004230 066502 000152 ADD QRSTOR(R5),R2 ;MAKE THE START ABSOLUTE 42 004234 010365 000076 MOV R3,LSCHSZ(R5) ;SAVE TEXTUAL -(LENGTH) 43 004240 001411 BEQ 130$ ;EXIT RIGHT NOW IF NO LENGTH 44 004242 016501 000064 MOV P(R5),R1 ;NOW GET . 45 004246 160365 000064 SUB R3,P(R5) ;THEN UPDATE . TO INSERT'S END 46 004252 066501 000144 ADD TXSTOR(R5),R1 ; AND MAKE . ABOLUTE 47 004256 112221 120$: MOVB (R2)+,(R1)+ ;DO THE REAL INSERTION 48 004260 005203 INC R3 ; FOR THE 49 004262 001375 BNE 120$ ; WHOLE LENGTH 50 004264 000207 130$: RTS PC ;THEN EXIT 51 52 004266 140$: ERROR IIA,<"Illegal insert arg"> 004266 000167 176672 JMP $E$IIA 53 54 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 34 COMMAND CHARACTER 'I 1 .ENABL LSB 2 3 004272 10$: ERROR IPA,<"Illegal P arg"> 004272 004467 004224 JSR R4,ERRMSG 004276 035301 .RAD50 /IPA/ 004300 000271' .WORD $$$$$$ 000271 111 154 154 .ASCIZ "Illegal P arg" 4 5 004302 001773 20$: BEQ 10$ ;ERROR IF =0 PAGE WRITE COUNT 6 004304 105765 000054 TSTB TEMP(R5) ;"PW"? 7 004310 100770 BMI 10$ ;YES, ALSO AN ERROR 8 004312 012746 005730' MOV #CLNXIT,-(SP) ;SET RETURN FOR COLON CHECKING 9 004316 016500 000144 .PPP.B: MOV TXSTOR(R5),R0 ;FROM THE BEGINNING TO 10 004322 016501 000150 MOV ZZ(R5),R1 ; THE END (ALL OF TEXT) 11 004326 016502 000120 MOV FFFLAG(R5),R2 ; WITH OPTIONAL FORM FEED 12 004332 004767 000000G JSR PC,BACKUP ;GO BACK UP ABS(R4) PAGES 13 004336 103474 BCS IOERR ;I/O TYPE ERROR, DIE 14 004340 004767 011174 JSR PC,.YYY.C ;CLEAR AND SIZE UP THE TEXT BUFFER 15 004344 005065 000122 CLR EOFLAG(R5) ; AND SAY NOT AT END-OF-FILE 16 004350 005404 NEG R4 ;SET C=1 IF ALL WAS NOT DONE 17 004352 103452 BCS 80$ ;GO EXIT NOW IF ALL WASN'T DONE 18 004354 000547 BR .YYY.Y ;SIMULATE THE YANK & EXIT W/ C-BIT 19 20 004356 012702 177777 30$: MOV #-1,R2 ;GUESS AT ALWAYS A FINAL FORM FEED 21 004362 105765 000054 TSTB TEMP(R5) ;GOOD GUESS ("PW")? 22 004366 100402 BMI 40$ ;YES 23 004370 016502 000120 .PPP.P: MOV FFFLAG(R5),R2 ;NO, OPTIONAL FORM FEED ("P") 24 004374 016500 000144 40$: MOV TXSTOR(R5),R0 ;FROM THE BEGINNING TO 25 004400 016501 000150 MOV ZZ(R5),R1 ; THE END (ALL OF TEXT) 26 004404 000446 BR 100$ ;NOW GO DO IT... TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 35 COMMAND CHARACTER 'I 1 004406 CMDCHR <'P> ;"P" IS PAGE WRITER 2 .SBTTL COMMAND CHARACTER "PW 3 004406 TSTNXT 'W ;REALLY "PW"? 004406 004467 006332 JSR R4,TSTNXT 004412 000127 .WORD 'W 4 004414 106065 000054 RORB TEMP(R5) ;SAVE THE DETERMINATION 5 004420 005765 000030 TST CFLG(R5) ;M,N?? 6 004424 100426 BMI 90$ ;YES 7 004426 004767 005746 JSR PC,GETN ;NOPE, GET A NUMBER 8 004432 010004 MOV R0,R4 ; AND SAVE IT 9 004434 003722 BLE 20$ ;SPECIAL IF <=0 PAGE WRITE COUNT 10 004436 012746 004500' MOV #80$,-(SP) ;SET RETURN ADDRESS TO DO NOTHING 11 004442 004767 177710 50$: JSR PC,30$ ;DUMP THE TEXT BUFFER 12 004446 105765 000054 TSTB TEMP(R5) ;"PW"? 13 004452 100405 BMI 60$ ;YES, SO NO YANK 14 004454 004767 000214 JSR PC,.YYY.Y ;SIMULATE THE YANK 15 004460 012716 005730' MOV #CLNXIT,(SP) ; AND SET RETURN FOR COLON CHECKING 16 004464 103405 BCS 80$ ;THE YANK DID NOTHING, EXIT RIGHT NOW 17 004466 004767 173356 60$: JSR PC,CHKSTP ;CHECK FOR STOP FLAG NOW ON 18 004472 005304 DEC R4 ;AGAIN? 19 004474 001362 BNE 50$ ;YES 20 004476 000241 70$: CLC ;ENSURE CARRY=0 ON EXIT 21 004500 000207 80$: RTS PC ;NO, EXIT 22 23 004502 004767 006332 90$: JSR PC,NLINES ;MAKE M,N INTO CHARACTERS 24 004506 010001 MOV R0,R1 ;COUNT GOES HERE 25 004510 016500 000024 MOV M(R5),R0 ;START FROM HERE 26 004514 066500 000144 ADD TXSTOR(R5),R0 ; MAKE IT ABSOLUTE 27 004520 005002 CLR R2 ;NEVER A FORM FEED 28 004522 004767 000000G 100$: JSR PC,PUTBUF ;NOW PUT IT 29 004526 103364 BCC 80$ ;ALL O.K., EXIT 30 004530 IOERR: ;I/O ERRORS COME HERE 31 32 .IF NE E$$TXT 33 004530 010604 MOV SP,R4 ;INDICATE NO STRING 34 .ENDC 35 36 004532 IOERRS: ;I/O ERROR WITH STRING COMES HERE 37 004532 004267 003770 JSR R2,ERRMIO ;SAVE TEXT POINTER AND SAY ERROR TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 36 COMMAND CHARACTER "PW 1 004536 .EEEY: ;MOV #'Y,R0 ;"EY" IS YANK WITHOUT PROTECTION 2 004536 010365 000020 MOV R3,NFLG(R5) ;RESTORE THE ARGUMENT FLAG 3 004542 CMDCHR <'Y> ;"Y" IS YANK IN A BUFFER 4 004542 012746 005730' MOV #CLNXIT,-(SP) ;DO COLON CHECKING UPON FINAL EXIT 5 004546 012746 004674' MOV #.YYY.Y,-(SP) ;SET CHECKING RETURN TO DO THE YANK 6 004552 005265 000020 INC NFLG(R5) ;ANY ARGUMENT? 7 004556 001442 BEQ 130$ ;YES, SOMEONE MADE AN ERROR... 8 004560 005765 000026 TST OFLG(R5) ;IS THERE AN OPERATOR PENDING? 9 004564 001411 BEQ 110$ ;NOPE 10 004566 026527 000014 000002 CMP NOPR(R5),#OP$SUB-OP$ADD ;IS THE OPERATOR "+" OR "-"? 11 .IIF NE -2, .ERROR ;"+" = 0, "-" = 2, OTHERS > 2 ! 12 004574 101033 BHI 130$ ;NEITHER "+" NOR "-", AN ERROR... 13 004576 103404 BLO 110$ ;IT'S "+", LEAVE EVERYTHING ALONE 14 004600 005065 000026 CLR OFLG(R5) ;IT'S "-", TURN OFF THE OPERATOR 15 004604 012716 004652' MOV #120$,(SP) ;"-Y" IS YANK IN PREVIOUS BUFFER 16 004610 162700 000131 110$: SUB #'Y,R0 ;DOING YANK PROTECTION CHECKING? 17 004614 001731 BEQ 80$ ;NOPE, IT'S "EY", GO EXIT TO DO IT 18 004616 005765 000150 TST ZZ(R5) ;ANYTHING TO BE CLOBBERED IN TEXT? 19 004622 001726 BEQ 80$ ;NO, SO OK TO YANK, GO EXIT 20 004624 005775 000142 .YYY.P: TST @OUPNTR(R5) ;ACTIVE OUTPUT FILE? 21 004630 001723 BEQ 80$ ;NO, SO OK TO YANK, EXIT 22 004632 036527 000114 000000G BIT EDIT(R5),#ED$YNK ;DOES USER REALLY WANT THIS?? 23 004640 001317 BNE 80$ ;YES, SO ALWAYS OK TO YANK, EXIT 24 004642 ERROR YCA,<"Y command aborted"> 004642 004467 003654 JSR R4,ERRMSG 004646 116271 .RAD50 /YCA/ 004650 000307' .WORD $$$$$$ 000307 131 040 143 .ASCIZ "Y command aborted" 25 26 004652 004767 010662 120$: JSR PC,.YYY.C ;ZAP THE CURRENT TEXT BUFFER 27 004656 012704 177777 MOV #-1,R4 ;SET TO GO BACKWARDS ONE PAGE 28 004662 000615 BR .PPP.B ; AND THEN GO OFF AND DO IT & EXIT 29 30 004664 130$: ERROR NYA,<"Numeric arg with Y"> 004664 004467 003632 JSR R4,ERRMSG 004670 055551 .RAD50 /NYA/ 004672 000331' .WORD $$$$$$ 000331 116 165 155 .ASCIZ "Numeric arg with Y" TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 37 COMMAND CHARACTER 'Y 1 004674 004767 010640 .YYY.Y: JSR PC,.YYY.C ;CLEAR AND SIZE UP THE TEXT BUFFER 2 004700 105065 000055 CLRB TEMP+1(R5) ; AND ALWAYS DO A FULL BUFFER LOAD 3 004704 022765 000000 000122 140$: CMP #0,EOFLAG(R5) ;SET CARRY=1 IF "EOFLAG"=-1 4 004712 103672 BCS 80$ ;EXIT C=1 IF END-OF-FILE 5 004714 016500 000150 MOV ZZ(R5),R0 ;GET END OF CURRENT BUFFER 6 004720 016501 000146 MOV ZMAX(R5),R1 ;GET MAX SIZE 7 004724 005301 DEC R1 ; LESS 1 FOR SAFETY 8 004726 010102 MOV R1,R2 ;COPY THE MAX VALUE 9 004730 006202 ASR R2 ; AND FIND THE 10 004732 006202 ASR R2 ; MAX*(1/4) VALUE 11 004734 020227 000400 CMP R2,#256. ;IS MAX*(1/4) < 256.? 12 004740 103002 BHIS 150$ ;NOPE 13 004742 012702 000400 MOV #256.,R2 ;YEP, SAY AT LEAST 256. 14 004746 160001 150$: SUB R0,R1 ;FIND REAL ROOM LEFT 15 004750 105765 000055 TSTB TEMP+1(R5) ;LOADING THE FULL BUFFER? 16 004754 100001 BPL 160$ ;YES 17 004756 010102 MOV R1,R2 ;NO, SET DESIRED FREE AS AMOUNT LEFT 18 004760 066500 000144 160$: ADD TXSTOR(R5),R0 ;MAKE POINTER ABSOLUTE 19 004764 004767 000000G JSR PC,GETBUF ;GET SOME DATA 20 004770 103657 IO.ERR: BCS IOERR ;I/O TYPE ERROR, DIE 21 004772 016501 000120 MOV FFFLAG(R5),R1 ;IS EITHER THE FORM FEED FLAG 22 004776 056501 000122 BIS EOFLAG(R5),R1 ; OR THE END-OF-FILE FLAG NOW ON? 23 005002 001235 BNE 70$ ;ALL DONE IF SO, EXIT CARRY=0 24 005004 105765 000055 TSTB TEMP+1(R5) ;LOADING FULL BUFFER? 25 005010 100632 BMI 70$ ;NOPE, SO EXIT NOW 26 005012 012701 000000G MOV #SIZERB,R1 ;YEP, GET (TRIAL) AMOUNT TO EXPAND 27 005016 020165 000160 CMP R1,CURFRE(R5) ;HAVE WE ALREADY GOT THAT AMOUNT? 28 005022 101625 BLOS 70$ ;IF SO THEN NO POINT IN ASKING FOR MORE 29 005024 036527 000114 000000G BIT EDIT(R5),#ED$EXP ;ALLOWING ARBITRARY EXPANSIONS? 30 005032 001221 BNE 70$ ;NOPE, SO DON'T... 31 005034 004767 000000G JSR PC,SIZER ;ELSE CALL THE MEMORY SIZING ROUTINE 32 005040 103616 BCS 70$ ;IT FAILED, SO JUST EXIT 33 005042 004767 010502 .AAA.A: JSR PC,.YYY.F ;CLEAR FORM FEED AND RE-SHUFFLE AREAS 34 005046 000716 BR 140$ ; THEN RECALL OURSELVES 35 36 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 38 COMMAND CHARACTER 'Y 1 .ENABL LSB 2 3 005050 .EEEB: ;R0 GETS <0 FOR EB ('B-'R) 4 005050 .EEEG: ;SPECIAL HANDLING FOR "EG" 5 005050 .EEEI: ;R0 GETS <0 FOR EI ('I-'R) 6 005050 .EEEN: ;R0 GETS <0 FOR EN ('N-'R) 7 005050 .EEER: ;R0 GETS =0 FOR ER 8 005050 162700 000122 .EEEW: SUB #'R,R0 ;R0 GETS >0 FOR EW 9 005054 016504 000644 MOV FILBUF(R5),R4 ;GET POINTER TO FILENAME BUFFER 10 005060 004767 006332 JSR PC,GETSTG ;GET STRING AS ARGUMENT 11 005064 105014 CLRB (R4) ;FORCE NULL STRINGS TO NULL 12 005066 004767 003266 JSR PC,IREST ; AND GO RESTORE THE QUOTE 13 005072 004767 005342 JSR PC,CHKCLN ;CHECK FOR A COLON MODIFIER 14 005076 020227 177765 CMP R2,#'G-'R ;IS IT REALLY "EG"? 15 005102 001471 BEQ 70$ ;YES 16 005104 004767 000000G JSR PC,GETFLS ;NO, GET THE FILE STUFF DONE 17 005110 103011 BCC 10$ ;NO ERROR, JUST EXIT 18 005112 005004 CLR R4 ;ERROR, CLEAR R4 TO PRINT STRING 19 005114 020027 023666 CMP R0,#^RFNF ;IS THE ERROR "FNF"? 20 005120 001204 BNE IOERRS ;OTHER ERROR, FATAL 21 005122 005765 000020 TST NFLG(R5) ;WERE WE REALLY RETURNING A VALUE? 22 005126 100201 BPL IOERRS ;NO, SO DIE IN ANY CASE 23 005130 005065 000022 CLR N(R5) ;ELSE RETURN VALUE OF 0 24 005134 000207 10$: RTS PC ;EXIT 25 26 005136 CMDCHR <'E> ;"E" IS SPECIAL COMMANDS 27 005136 016503 000020 MOV NFLG(R5),R3 ;SAVE THE NUMBER FLAG 28 005142 005065 000020 CLR NFLG(R5) ;THEN NO MORE NUMBER 29 005146 SORT ..EEE,Z ;NOW SORT 005146 004467 005424 JSR R4,SORTZ 005152 015714' .WORD ..EEE 30 005154 ERROR IEC,<"Illegal E character"> 005154 004467 003306 JSR R4,ERRORC 005160 031 .BYTE 'E-<'A-1>*5 005161 105 .BYTE 'E TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 39 COMMAND CHARACTER 'E 1 005162 004767 177506 20$: JSR PC,.YYY.Y ;CLEAR OUT AND READ MORE TEXT 2 005166 103422 BCS 50$ ;END-OF-FILE, CLOSE INPUT & OUTPUT 3 005170 004767 172654 JSR PC,CHKSTP ;CHECK FOR STOP FLAG NOW ON 4 005174 016500 000144 30$: MOV TXSTOR(R5),R0 ;SET START OF TEXT 5 005200 016501 000150 MOV ZZ(R5),R1 ; AND AMOUNT OF TEXT TO WRITE 6 005204 001003 BNE 40$ ;THERE IS TEXT TO WRITE, DO IT 7 005206 005775 000142 TST @OUPNTR(R5) ;NO TEXT, IS THERE AN OUTPUT FILE? 8 005212 001410 BEQ 50$ ;NO TEXT AND NO FILE, CLOSE INPUT 9 005214 016502 000120 40$: MOV FFFLAG(R5),R2 ;SET THE OPTIONAL FORM FEED FLAG 10 005220 004767 000000G JSR PC,PUTBUF ; AND WRITE OUT THE TEXT 11 005224 103661 BCS IO.ERR ;DIE ON ANY I/O TYPE ERROR 12 005226 005775 000140 TST @INPNTR(R5) ;DOES AN INPUT FILE EXIST? 13 005232 001353 BNE 20$ ;YES, GET SOMETHING FROM IT 14 005234 004767 000000G 50$: JSR PC,CLSFIL ;CLOSE THE INPUT AND OUTPUT FILES 15 005240 103653 60$: BCS IO.ERR ;DIE ON ANY ERROR 16 005242 000734 BR 10$ ;ELSE GO EXIT 17 18 005244 004767 000000G .EEEK: JSR PC,KILFIL ;CLOSE AND KILL OUTPUT FILE 19 005250 000773 BR 60$ ; AND ERROR CHECK 20 21 005252 004767 000000G .EEEP: JSR PC,INPSAV ;SAVE INPUT FILE STATUS 22 005256 000770 BR 60$ ; AND ERROR CHECK 23 24 005260 004767 000000G .EEEA: JSR PC,OUTSAV ;SAVE OUTPUT FILE STATUS 25 005264 000765 BR 60$ ; AND ERROR CHECK 26 27 005266 012746 000000G 70$: MOV #GEXIT,-(SP) ;EXIT AND GO -OR- SPECIAL FUNCTION 28 005272 000402 BR 80$ ;GO DE-CONDITION TECO MODE FIRST 29 30 005274 012746 000000G .EEEX: MOV #TEXIT,-(SP) ;EXIT FROM TECO 31 005300 004767 000000G 80$: JSR PC,XITNOW ;DE-CONDITION TECO MODE FOR EXITS 32 005304 005765 000020 TST NFLG(R5) ;REALLY THE SPECIAL FUNCTION CALL? 33 005310 100711 BMI 10$ ;YES, JUST GO DO IT 34 005312 004767 177656 .EEEC: JSR PC,30$ ;PAGE OUT THE REST OF THE FILE 35 005316 000167 010216 JMP .YYY.C ;THEN EXIT CLEARING BUFFER 36 37 005322 004767 000000G .EEEF: JSR PC,CLSOUT ;CLOSE THE OUTPUT FILE 38 005326 000744 BR 60$ ; AND ERROR CHECK 39 40 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 40 COMMAND CHARACTER 'E 1 005330 005000 .SCH.T: CLR R0 ;ENSURE NO SPECIAL TYPEOUT 2 005332 005065 000020 .SCH.V: CLR NFLG(R5) ;ENSURE NO NUMERIC ARGUMENT 3 005336 005065 000030 CLR CFLG(R5) ; AND NO COMMA FLAG 4 005342 CMDCHR <'V> ;"V" IS VERIFY 5 005342 010046 MOV R0,-(SP) ;SAVE TYPEOUT DETERMINATION 6 005344 116600 000001 MOVB 1(SP),R0 ;GET NUMBER OF LINES FROM "ES" AND "EV" 7 005350 003002 BGT 10$ ;NUMBER WAS EXPLICIT 8 005352 012700 000001 MOV #1,R0 ;ELSE DEFAULT TO ONE LINE 9 005356 005265 000020 10$: INC NFLG(R5) ;IS THERE A NUMERIC ARGUMENT? 10 005362 001002 BNE 20$ ;NOPE 11 005364 016500 000022 MOV N(R5),R0 ;YEP, SO USE IT 12 005370 010046 20$: MOV R0,-(SP) ;SAVE ARGUMENT FOR (N)T PART OF V 13 005372 005265 000030 INC CFLG(R5) ;IS IT M,N FORMAT? 14 005376 001002 BNE 30$ ;NOPE, DEFAULT M TO N 15 005400 016500 000024 MOV M(R5),R0 ;YEP, SET EXPLICIT M 16 005404 005400 30$: NEG R0 ;CALCULATE THE (1-M)T 17 005406 005200 INC R0 ; PART OF VERIFY 18 005410 004767 000030 JSR PC,60$ ; AND USE THAT FOR (1-M)T 19 005414 116600 000002 MOVB 2(SP),R0 ;GET TYPEOUT DETERMINATION 20 005420 003407 BLE 50$ ;NOTHING SPECIAL 21 005422 020027 000040 CMP R0,#SPACE ;USE LINE FEED? 22 005426 103002 BHIS 40$ ;NOPE 23 005430 012700 000012 MOV #LF,R0 ;YES 24 005434 004767 000000G 40$: JSR PC,TYPEF ;NOW TYPE THE CHARACTER WITH CASE FLAGGING 25 005440 012600 50$: MOV (SP)+,R0 ;SET ARGUMENT FOR (N)T PART OF V 26 005442 005726 TST (SP)+ ;POP THAT TYPEOUT DETERMINATION 27 005444 004767 001260 60$: JSR PC,NCOM ;COMPUTE A NUMBER; FALL INTO T COMMAND 28 005450 CMDCHR <'T> ;"T" IS THE PRINTER 29 005450 004767 005364 JSR PC,NLINES ;FIND NUMBER OF CHARACTERS 30 005454 016503 000024 MOV M(R5),R3 ;GET STARTING POINT 31 005460 066503 000144 ADD TXSTOR(R5),R3 ; AND MAKE ABSOLUTE 32 005464 010004 MOV R0,R4 ;MOVE COUNT INTO HERE 33 005466 000167 000000G JMP PRINTF ; AND PRINT IT WITH CASE FLAGGING 34 35 005472 CMDCHR <'W> ;"W" IS SCOPE WATCH 36 005472 016546 000022 MOV N(R5),-(SP) ;PRESET THE POSSIBLE EXPLICIT ARGUMENT 37 005476 005265 000020 INC NFLG(R5) ;AN ARGUMENT THIS TIME? 38 005502 001406 BEQ 10$ ;YES, WE'VE GOT IT ON THE STACK 39 005504 016516 000124 MOV NWATCH(R5),(SP) ;NO, GET THE OLD ARGUMENT 40 005510 005765 000032 TST CLNF(R5) ;IS THIS :W? 41 005514 100001 BPL 10$ ;NOT :W, USE OLD ARGUMENT 42 005516 005016 CLR (SP) ;IT IS :W, DEFAULT ARGUMENT TO ZERO 43 005520 004767 004714 10$: JSR PC,CHKCLN ;CHECK FOR A COLON MODIFIER 44 005524 012600 MOV (SP)+,R0 ;SET WATCH'S ARGUMENT HERE 45 005526 004767 000000G JSR PC,WATCH ;WATCH THE SCOPE 46 005532 010065 000022 MOV R0,N(R5) ;SAVE RETURNED ANSWER AS VALUE 47 005536 100405 BMI 20$ ;VALUE IS <0, SO DON'T CHANGE DEFAULT 48 005540 005765 000020 TST NFLG(R5) ;WAS IT REALLY :W? 49 005544 100402 BMI 20$ ;YES, JUST EXIT NOW 50 005546 010065 000124 MOV R0,NWATCH(R5) ;NO, REMEMBER THE LAST ARGUMENT 51 005552 000207 20$: RTS PC ;THEN EXIT 52 53 005554 CMDCHR <'O-100> ;"CTRL/O" MEANS OCTAL RADIX 54 005554 005200 INC R0 ;MAKE A GREATER THAN ZERO 55 005556 CMDCHR <'D-100> ;"CTRL/D" MEANS DECIMAL RADIX 56 005556 010065 000070 MOV R0,NMRBAS(R5) ;SET THE RADIX 57 005562 000207 RTS PC TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 41 COMMAND CHARACTER 'D-100 1 .ENABL LSB 2 3 005564 10$: ERROR IAA,<"Illegal A arg"> 005564 004467 002732 JSR R4,ERRMSG 005570 034151 .RAD50 /IAA/ 005572 000354' .WORD $$$$$$ 000354 111 154 154 .ASCIZ "Illegal A arg" 4 5 005574 20$: ERROR MEM,<"Memory overflow"> 005574 000167 173250 JMP $E$MEM 6 7 005600 016565 000020 000054 30$: MOV NFLG(R5),TEMP(R5) ;SET TEMP+1 <0 IF "N:A" 8 005606 100421 BMI 50$ ;IT IS "N:A" 9 005610 012765 000001 000022 40$: MOV #1,N(R5) ;SET COUNT TO ONE 10 005616 005065 000054 CLR TEMP(R5) ; AND LOAD A WHOLE PAGE 11 005622 005765 000026 TST OFLG(R5) ;IS THERE AN OPERATOR PENDING? 12 005626 001411 BEQ 50$ ;NOPE 13 005630 026527 000014 000002 CMP NOPR(R5),#OP$SUB-OP$ADD ;IS THE OPERATOR "+" OR "-"? 14 .IIF NE -2, .ERROR ;"+" = 0, "-" = 2, OTHERS > 2 ! 15 005636 101352 BHI 10$ ;NEITHER "+" NOR "-", AN ERROR... 16 005640 103404 BLO 50$ ;IT'S "+", LEAVE EVERYTHING ALONE 17 005642 005065 000026 CLR OFLG(R5) ;IT'S "-", TURN OFF THE OPERATOR 18 005646 005465 000022 NEG N(R5) ; AND SET COUNT TO MINUS ONE 19 005652 005765 000022 50$: TST N(R5) ;LEGAL ARGUMENT? 20 005656 003742 BLE 10$ ;NOPE, AN ERROR... 21 005660 016501 000150 60$: MOV ZZ(R5),R1 ;GET CURRENT TEXT SIZE 22 005664 062701 000400 ADD #256.,R1 ;ENSURE ADDITION OF ONE LINE 23 005670 SIZE TEXT ; INTO TEXT BUFFER 005670 004467 007352 JSR R4,SIZE 005674 000146 .WORD ZMAX 24 005676 103336 BCC 20$ ;FAILED, SO ERROR 25 005700 004767 177136 JSR PC,.AAA.A ;O.K., SO READ IT IN 26 005704 103406 BCS 70$ ;NOTHING WAS DONE THIS CALL... 27 005706 005765 000120 TST FFFLAG(R5) ;DID THE FORM FEED FLAG GET SET? 28 005712 001004 BNE 80$ ;YES, ALWAYS SAY SOMETHING ADDED 29 005714 005365 000022 DEC N(R5) ;SHOULD WE LOOP AGAIN? 30 005720 001357 BNE 60$ ;YEP, SO DO SO 31 005722 005216 70$: INC (SP) ;FORM OLD TEXT SIZE +1 32 005724 026526 000150 80$: CMP ZZ(R5),(SP)+ ;IS TEXT NOW > OLD SIZE (>= OLD +1)? 33 ;BHIS ;YES, C=0 ('BHIS'='BCC') 34 005730 006046 CLNXIT: ROR -(SP) ;SAVE C-BIT ON STACK 35 005732 004767 004502 JSR PC,CHKCLN ;CHECK FOR A COLON MODIFIER 36 005736 006326 ASL (SP)+ ;DID WE NET NOTHING (C-BIT=1)? 37 005740 103002 BCC 90$ ;NOPE, DID SOMETHING, RETURN A -1 38 005742 005065 000022 CLR N(R5) ;YEP, RETURN 0 INSTEAD OF -1 39 005746 000207 90$: RTS PC ;EXIT TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 42 COMMAND CHARACTER 'D-100 1 005750 CMDCHR <'A> ;"A" IS APPEND 2 005750 016546 000150 MOV ZZ(R5),-(SP) ;STACK INITIAL TEXT SIZE (Z) 3 005754 005765 000032 TST CLNF(R5) ;COLON MODIFIED? 4 005760 100707 BMI 30$ ;YES, APPEND PAGE OR LINE 5 005762 005265 000020 INC NFLG(R5) ;NUMERIC ARGUMENT? 6 005766 001310 BNE 40$ ;NO, APPEND PAGE W/O RETURNED VALUE 7 005770 005100 COM R0 ;PRESET -1 RETURN VALUE FOR FAILURE 8 005772 016501 000022 MOV N(R5),R1 ;GET THE NUMBER 9 005776 066501 000064 ADD P(R5),R1 ;INDEXED BY . 10 006002 020126 CMP R1,(SP)+ ;WITHIN RANGE? 11 006004 103165 BHIS GONCOM ;NOPE, AT OR ABOVE Z, RETURN -1 12 006006 066501 000144 ADD TXSTOR(R5),R1 ;YEP, MAKE IT ABSOLUTE 13 006012 005000 CLR R0 ; AND GET THE CHARACTER 14 006014 151100 BISB (R1),R0 ; AVOIDING ANY SIGN EXTENSION 15 006016 000560 BR GONCOM ;NOW GO COMPUTE AS IF NUMBER 16 17 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 43 COMMAND CHARACTER 'A 1 006020 CMDCHR <'N-100> ;"CTRL/N" IS EOF FLAG 2 006020 016500 000122 MOV EOFLAG(R5),R0 ;GET END-OF-FILE FLAG 3 006024 000555 BR GONCOM ; AND COMPUTE AS A NUMBER 4 5 006026 CMDCHR <'B-100> ;"CTRL/B" IS TODAY'S DATE 6 006026 004767 000000G JSR PC,DATE ;GET DATE 7 006032 000552 BR GONCOM ; AND COMPUTE AS A NUMBER 8 9 006034 CMDCHR <'S-100> ;"CTRL/S" IS -(LENGTH) OF LAST STRING 10 006034 016500 000076 MOV LSCHSZ(R5),R0 ;GET -(LENGTH) OF LAST 11 006040 000547 BR GONCOM ; AND COMPUTE AS A NUMBER 12 13 006042 CMDCHR <'F-100> ;"CTRL/F" IS SWITCH REGISTER VALUE 14 006042 004767 000000G JSR PC,SWITCH ;GET SWITCH REGISTER 15 006046 000544 BR GONCOM ; AND COMPUTE AS A NUMBER 16 17 006050 CMDCHR <'H-100> ;"CTRL/H" IS TIME OF DAY 18 006050 004767 000000G JSR PC,TIME ;GET TIME OF DAY 19 006054 000541 BR GONCOM ; AND COMPUTE AS A NUMBER 20 21 .ENABL LSB 22 23 006056 CMDCHR <'H> ;"H" MEANS ALL (0,Z) 24 006056 005065 000022 CLR N(R5) ;SIMULATE THE "B" (OR 0) 25 006062 004767 000040 JSR PC,20$ ;NOW SIMULATE THE COMMA 26 006066 CMDCHR <'Z> ;"Z" MEANS END OF TEXT 27 006066 016500 000150 MOV ZZ(R5),R0 ;GET END OF TEXT VALUE 28 006072 000532 BR GONCOM ; AND COMPUTE AS A NUMBER 29 30 006074 CMDCHR <'Y-100> ;"CTRL/Y" MEANS .+^S,. 31 006074 004767 000012 JSR PC,10$ ;SET NUMBER TO . 32 006100 066565 000076 000022 ADD LSCHSZ(R5),N(R5) ; NOW ADD IN ^S 33 006106 004767 000014 JSR PC,20$ ;FAKE THE COMMA 34 006112 CMDCHR <'.> ;"." IS CURRENT POSITION 35 006112 016500 000064 10$: MOV P(R5),R0 ;GET . 36 006116 000520 BR GONCOM ; AND COMPUTE AS A NUMBER 37 38 006120 CMDCHR <',> ;"," IS THE M,N SEPARATOR 39 006120 005265 000020 INC NFLG(R5) ;WAS THERE A "M"? 40 006124 001011 BNE 30$ ;THERE SHOULD HAVE BEEN 41 006126 016565 000022 000024 20$: MOV N(R5),M(R5) ;SAVE "M" 42 006134 005065 000022 CLR N(R5) ;NOW CLEAR "N" AGAIN 43 006140 012765 177777 000030 MOV #-1,CFLG(R5) ; AND INDICATE A COMMA 44 006146 CMDCHR ;"NUL" IS IGNORED 45 006146 CMDCHR ;"LF" IS IGNORED 46 006146 CMDCHR ;"CR" IS IGNORED 47 006146 CMDCHR ;"SPACE" IS IGNORED 48 006146 CMDCHR ;"DEL" IS IGNORED 49 006146 000207 RTS PC ;NOW RETURN 50 51 006150 30$: ERROR NAC,<"No arg before ,"> 006150 004467 002276 JSR R4,ERRORA 006154 003 .BYTE 'C-<'A-1> 006155 054 .BYTE ', 52 53 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 44 COMMAND CHARACTER DEL 1 006156 CMDCHR <'T-100> ;"CTRL/T" MEANS VALUE OF NEXT INPUT CHARACTER 2 006156 005265 000020 INC NFLG(R5) ;IS THERE AN ARGUMENT? 3 006162 001024 BNE 30$ ;NO, SO GET INPUT AS NUMERIC VALUE 4 006164 012701 000000G MOV #ET$BIN,R1 ;GUESS AT SETTING BINARY OUTPUT MODE 5 006170 005265 000032 INC CLNF(R5) ;COLON MODIFIED? 6 006174 001003 BNE 10$ ;NOPE 7 006176 030165 000104 BIT R1,ETYPE(R5) ;IS BINARY OUTPUT MODE ALREADY ON? 8 006202 001401 BEQ 20$ ;NOT ON, WE MUST SET IT ON 9 006204 005001 10$: CLR R1 ;CHANGE TO NO "ET" MODIFICATION 10 006206 050165 000104 20$: BIS R1,ETYPE(R5) ;OPTIONAL SETTING OF BINARY MODE 11 006212 016500 000022 MOV N(R5),R0 ;GET THE ARGUMENT 12 006216 004767 000000G JSR PC,TYPEB ; AND TYPE ITS VALUE ON TERMINAL 13 006222 040165 000104 BIC R1,ETYPE(R5) ;OPTIONAL CLEARING OF BINARY MODE 14 006226 005065 000032 CLR CLNF(R5) ;CLEAR THE COLON FLAG 15 006232 000207 RTS PC ;EXIT 16 17 006234 005265 000032 30$: INC CLNF(R5) ;COLON MODIFIED? 18 006240 001010 BNE 40$ ;NOPE 19 006242 004767 000000' JSR PC,TECOLT ;YEP, CALL THE :^T INPUT ROUTINE 20 006246 010165 000024 MOV R1,M(R5) ;SET TYPE CODE INTO "M" 21 006252 012765 177777 000030 MOV #-1,CFLG(R5) ; AND INDICATE "M" IS ACTIVE 22 006260 000437 BR GONCOM ;COMPUTE FINAL CODE/VALUE AS A NUMBER 23 24 006262 005065 000032 40$: CLR CLNF(R5) ;CLEAR THE COLON FLAG 25 006266 004767 000000G JSR PC,TLISTN ;GET A CTRL/T CHARACTER 26 006272 000432 BR GONCOM ; AND COMPUTE AS A NUMBER TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 45 COMMAND CHARACTER 'T-100 1 006274 CMDCHR <'^-100> ;"CTRL/^" MEANS VALUE OF NEXT CHARACTER 2 006274 004767 171652 JSR PC,SCAN ;GET NEXT CHARACTER 3 006300 042700 177400 BIC #^C<377>,R0 ;AVOID ANY SIGN EXTENSION 4 006304 000425 BR GONCOM ; AND COMPUTE AS A NUMBER 5 6 006306 012700 000050 .EEEO: MOV #VERSON,R0 ;"EO" IS VERSION NUMBER 7 006312 000422 BR GONCOM ;GO COMPUTE AS A NUMBER 8 9 006314 CMDCHR <'Z-100> ;"CTRL/Z" MEANS SIZE OF Q-REGS 10 006314 016500 000156 MOV QZ(R5),R0 ;GET SIZE OF Q-REGS 11 006320 000417 BR GONCOM ; AND COMPUTE AS A NUMBER 12 13 .ENABL LSB 14 15 006322 CMDCHR <'Q> ;"Q" IS VALUE/SIZE IN Q-REGISTER 16 006322 005265 000020 INC NFLG(R5) ;IS THERE AN ARGUMENT? 17 006326 001021 BNE 10$ ;NOPE 18 006330 004767 002436 JSR PC,QREF ;YEP, REFERENCE Q-REG 19 006334 016503 000022 MOV N(R5),R3 ;GET THE ARGUMENT 20 006340 005100 COM R0 ; AND PRESET -1 FOR OUT-OF-RANGE 21 006342 020311 CMP R3,(R1) ;IS ARGUMENT WITHIN RANGE? 22 006344 103171 BHIS NCOM ;NO, COMPUTE WITH -1 AS THE NUMBER 23 006346 060203 ADD R2,R3 ;YES, ADD OFFSET TO THIS Q-REG 24 006350 066503 000152 ADD QRSTOR(R5),R3 ; AND ADD IN THE Q-REG BASE 25 006354 005000 CLR R0 ;GET THE CHARACTER THERE 26 006356 151300 BISB (R3),R0 ; WITHOUT SIGN EXTENSION 27 006360 000563 GONCOM: BR NCOM ;GO COMPUTE AS A NUMBER 28 29 006362 CMDCHR <'%> ;"%" IS ADD TO Q-REG VALUE 30 006362 004767 004012 JSR PC,GETN ;GET THE NUMBER 31 006366 005065 000032 CLR CLNF(R5) ; AND ENSURE ADDITION TO VALUE 32 006372 010003 10$: MOV R0,R3 ;SAVE THE ADDITION VALUE (OR ZERO) 33 006374 004767 002366 JSR PC,QREFVL ;REFERENCE Q-REG FOR VALUE 34 006400 005265 000032 INC CLNF(R5) ;COLON MODIFIED? 35 006404 001001 BNE 20$ ;NO, RETURN OR ADD TO VALUE 36 006406 005741 TST -(R1) ;YES, SET TO Q-REG'S RETURN SIZE 37 006410 005065 000032 20$: CLR CLNF(R5) ;ENSURE COLON FLAG IS NOW OFF 38 006414 060341 ADD R3,-(R1) ;ADD TO Q-REG'S VALUE 39 006416 011100 MOV (R1),R0 ;THEN GET THE NEW VALUE 40 006420 000543 BR NCOM ; AND COMPUTE AS A NUMBER 41 42 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 46 COMMAND CHARACTER '% 1 .ENABL LSB 2 3 006422 CMDCHR <'&> ;"&" IS LOGICAL 'AND' 4 006422 012700 177766 MOV #OP$AND-OP$OR,R0 ;SET FOR 'AND' 5 006426 CMDCHR <'#> ;"#" IS LOGICAL OR 6 006426 062700 177742 ADD #OP$OR-OP$DIV,R0 ;SET FOR 'OR' 7 006432 CMDCHR <'/> ;"/" IS DIVISION 8 006432 062700 000030 ADD #OP$DIV-OP$MUL,R0 ;SET FOR DIVIDE 9 006436 CMDCHR <'*> ;"*" IS MULTIPLICATION 10 006436 062700 000102 ADD #OP$MUL-OP$SUB,R0 ;SET FOR MULTIPLY 11 006442 CMDCHR <'-> ;"-" IS SUBTRACTION 12 006442 005720 TST (R0)+ ;SET FOR SUBTRACT 13 .IIF NE -2, .ERROR ;SUBTRACTION HAS BEEN MISPLACED! 14 006444 CMDCHR <'+> ;"+" IS ADDITION 15 006444 010065 000014 10$: MOV R0,NOPR(R5) ;SAVE THE OPERATOR DISPATCH 16 006450 016565 000022 000016 MOV N(R5),NACC(R5) ;SAVE CURRENT NUMBER IN ACCULMULATOR 17 006456 005065 000050 CLR NP(R5) ;NO DIGITS FOUND NOW 18 006462 012765 177777 000026 MOV #-1,OFLG(R5) ;INDICATE OPERATOR PENDING 19 006470 005065 000020 CLR NFLG(R5) ;BUT NO NUMBER PENDING 20 006474 000207 RTS PC ; AND RETURN 21 22 006476 CMDCHR <'(> ;"(" IS START OF NEW EXPRESSION 23 006476 005765 000026 TST OFLG(R5) ;OPERATOR PENDING? 24 006502 001002 BNE 20$ ;YES 25 006504 004767 000220 JSR PC,NCOM ;NO, INITIALIZE US 26 006510 005265 000060 20$: INC PCNT(R5) ;COUNT AS ANOTHER PAREN PUSH 27 006514 PUSHP NOPR,NACC ;SAVE ACCULMULATOR 006514 004467 003534 JSR R4,PUSHP 006520 002 014 .BYTE $$$$$$,NOPR 28 006522 000750 BR 10$ ;THEN SET UP AS IF "+" 29 30 .DSABL LSB 31 32 .ENABL LSB 33 34 006524 CMDCHR <')> ;")" IS END OF EXPRESSION 35 006524 005765 000020 TST NFLG(R5) ;ANYTHING BEFORE THIS? 36 006530 100011 BPL 10$ ;BADNESS IF NOT 37 006532 005365 000060 DEC PCNT(R5) ;CAN WE POP A PAREN? 38 006536 100406 BMI 10$ ;NO, ERROR 39 006540 POP NACC,NOPR ;RESTORE OPERATOR 006540 004467 003532 JSR R4,POP 006544 002 020 .BYTE $$$$$$,NACC+2 40 006546 016500 000022 MOV N(R5),R0 ;GET VALUE INSIDE PARENS 41 006552 000444 BR 60$ ; AND TREAT AS A NUMBER 42 43 006554 10$: ERROR NAP,<"No arg before )"> 006554 004467 001672 JSR R4,ERRORA 006560 020 .BYTE 'P-<'A-1> 006561 051 .BYTE ') 44 45 006562 20$: ERROR ILN,<"Illegal number"> 006562 004467 001734 JSR R4,ERRMSG 006566 035056 .RAD50 /ILN/ 006570 000372' .WORD $$$$$$ 000372 111 154 154 .ASCIZ "Illegal number" TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 47 COMMAND CHARACTER ') 1 006572 CMDCHR <'9> ;"9" IS A NUMERIC DIGIT 2 006572 CMDCHR <'8> ;"8" IS A NUMERIC DIGIT 3 006572 005765 000070 TST NMRBAS(R5) ;IS RADIX DECIMAL OR HEXIDECIMAL? 4 006576 003371 BGT 20$ ;NO, OCTAL, SO ERROR 5 006600 CMDCHR <'7> ;"7" IS A NUMERIC DIGIT 6 006600 CMDCHR <'6> ;"6" IS A NUMERIC DIGIT 7 006600 CMDCHR <'5> ;"5" IS A NUMERIC DIGIT 8 006600 CMDCHR <'4> ;"4" IS A NUMERIC DIGIT 9 006600 CMDCHR <'3> ;"3" IS A NUMERIC DIGIT 10 006600 CMDCHR <'2> ;"2" IS A NUMERIC DIGIT 11 006600 CMDCHR <'1> ;"1" IS A NUMERIC DIGIT 12 006600 CMDCHR <'0> ;"0" IS A NUMERIC DIGIT 13 006600 162701 000060 .BSL.N: SUB #'0,R1 ;MAKE INTO BINARY DIGIT 14 006604 020127 000011 CMP R1,#9. ;HEXIDECIMAL DIGIT? 15 006610 101402 BLOS 30$ ;NOPE 16 006612 162701 000007 SUB #<'A-10.>-'0,R1 ;YEP, SO CORRECT IT 17 006616 005265 000020 30$: INC NFLG(R5) ;ANY DIGIT BEFORE THIS? 18 006622 001036 BNE 90$ ;NO, SO INITIALIZE US 19 006624 016500 000050 MOV NP(R5),R0 ;YES, SO GET OLD NUMBER 20 006630 010046 MOV R0,-(SP) ; AND SAVE IT 21 006632 006300 ASL R0 ;TIMES 2 22 006634 006300 ASL R0 ;TIMES 4 NOW 23 006636 005765 000070 TST NMRBAS(R5) ;RADIX? 24 006642 001403 BEQ 50$ ;DECIMAL 25 006644 003001 BGT 40$ ;OCTAL 26 006646 006300 ASL R0 ;HEXIDECIMAL 27 006650 005016 40$: CLR (SP) ;NO CORRECTION NEEDED 28 006652 062600 50$: ADD (SP)+,R0 ;ADD IN ANY CORRECTION FACTOR 29 006654 006300 ASL R0 ;TIMES 8., 10., OR 16. BY NOW 30 006656 060100 ADD R1,R0 ; AND ADD IN NEW DIGIT 31 006660 010065 000050 MOV R0,NP(R5) ;SAVE THE NUMBER 32 006664 066507 000014 60$: ADD NOPR(R5),PC ;DISPATCH ON OPERATOR 33 006670 000401 OP$ADD: BR 70$ ;+ 34 006672 005400 OP$SUB: NEG R0 ;- 35 006674 066500 000016 70$: ADD NACC(R5),R0 ;FORM RESULT 36 006700 010065 000022 80$: MOV R0,N(R5) ;SAVE THE RESULT 37 006704 012765 177777 000020 MOV #-1,NFLG(R5) ; AND INDICATE A NUMBER 38 006712 005065 000026 CLR OFLG(R5) ; BUT NO OPERATOR 39 006716 000207 RTS PC ;THEN EXIT 40 41 006720 010100 90$: MOV R1,R0 ;COPY FIRST DIGIT 42 006722 010165 000050 MOV R1,NP(R5) ;SAVE IT IN NUMBER ACCUMULATOR 43 006726 000402 BR 100$ ;ENTER PROCESSING 44 45 006730 CMDCHR <'B> ;"B" IS ZERO 46 006730 005065 000050 NCOM: CLR NP(R5) ;USUALLY WE SET NP TO 0 47 006734 005765 000026 100$: TST OFLG(R5) ;OPERATOR? 48 006740 001351 BNE 60$ ;YES 49 006742 005065 000016 CLR NACC(R5) ;NO, SO INITIALIZE US 50 006746 005065 000014 CLR NOPR(R5) 51 006752 000744 BR 60$ ; AND CONTINUE TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 48 COMMAND CHARACTER 'B 1 006754 016501 000016 OP$AND: MOV NACC(R5),R1 ;GET MASK 2 006760 005101 COM R1 ;MAKE INTO AN 'AND' MASK 3 006762 040100 BIC R1,R0 ; AND DO THE 'AND' 4 006764 000745 BR 80$ ;THEN FINISH UP 5 6 006766 056500 000016 OP$OR: BIS NACC(R5),R0 ;DO THE 'OR' 7 006772 000742 BR 80$ ;THEN FINISH UP 8 9 006774 005001 OP$MUL: CLR R1 ;CLEAR THE HIGH ORDER 10 006776 012702 000021 MOV #16.+1,R2 ;NUMBER OF BITS(+1) IN A WORD 11 007002 000241 110$: CLC ;CLEAR THE DUMB CARRY 12 007004 006001 ROR R1 ;SHIFT HIGH ORDER INTO 13 007006 006000 ROR R0 ; LOW ORDER 14 007010 103002 BCC 120$ ;NO NEED TO ADD HERE... 15 007012 066501 000016 ADD NACC(R5),R1 ;ADD INTO HIGH ORDER 16 007016 005302 120$: DEC R2 ;MORE? 17 007020 003370 BGT 110$ ;YES 18 007022 000726 BR 80$ ;NO 19 20 007024 010002 OP$DIV: MOV R0,R2 ;SET THE DIVISOR 21 007026 016500 000016 MOV NACC(R5),R0 ; AND THE DIVIDEND 22 007032 012746 006700' MOV #80$,-(SP) ;STACK RETURN ADDRESS 23 007036 005001 DIVD: CLR R1 ;CLEAR THE REMAINDER 24 007040 012703 000020 MOV #16.,R3 ;NUMBER OF BITS IN A WORD 25 007044 006300 130$: ASL R0 ;SHIFT THE DIVIDEND 26 007046 006101 ROL R1 ; INTO THE REMAINDER 27 007050 020201 CMP R2,R1 ;CAN WE SUBTRACT? 28 007052 101002 BHI 140$ ;NOPE 29 007054 160201 SUB R2,R1 ;YEP 30 007056 005200 INC R0 ; AND COUNT IN ANSWER 31 007060 005303 140$: DEC R3 ;MORE? 32 007062 003370 BGT 130$ ;YES 33 007064 000207 RTS PC ;NO, EXIT 34 35 .DSABL LSB 36 37 007066 CMDCHR <'_-100> ;"CTRL/_" IS THE UNARY COMPLEMENT OPERATOR 38 007066 005765 000020 TST NFLG(R5) ;IS THERE A NUMBER? 39 007072 100003 BPL 10$ ;THERE SHOULD HAVE BEEN 40 007074 005165 000022 COM N(R5) ;DO A COMPLEMENT 41 007100 000207 RTS PC ; AND LEAVE 42 43 007102 10$: ERROR NAB,<"No arg before "<'_-100>> 007102 004467 001344 JSR R4,ERRORA 007106 002 .BYTE 'B-<'A-1> 007107 037 .BYTE '_-100 TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 49 COMMAND CHARACTER '_-100 1 .ENABL LSB 2 3 007110 CMDCHR <'E-100> ;"CTRL/E" IS FORM FEED FLAG 4 007110 012702 000004 MOV #FFFLAG-EDIT,R2 ;SET OFFSET POINTER TO FLAG 5 007114 000402 BR 10$ ; AND GO JOIN THE COMMON CODE 6 7 007116 CMDCHR <'X-100> ;"CTRL/X" IS SEARCH MODE FLAG 8 007116 012702 000002 MOV #SFLG-EDIT,R2 ;SET OFFSET POINTER TO FLAG 9 007122 016503 000020 10$: MOV NFLG(R5),R3 ;SET ARGUMENT DETERMINATION 10 007126 005065 000020 CLR NFLG(R5) ; AND USE UP ANY NUMBER 11 007132 005722 .EEED: TST (R2)+ ;"ED" IS EDITOR LEVEL 12 .IIF NE EDIT-EEFLAG-2, .ERROR ;ORDER IS IMPORTANT! 13 007134 005722 .EEEE: TST (R2)+ ;"EE" IS ESCAPE SYNONYM 14 .IIF NE EEFLAG-EHELP-2, .ERROR ;ORDER IS IMPORTANT! 15 007136 005722 .EEEH: TST (R2)+ ;"EH" IS EDIT HELP LEVEL 16 .IIF NE EHELP-ESFLAG-2, .ERROR ;ORDER IS IMPORTANT! 17 007140 005722 .EEES: TST (R2)+ ;"ES" IS EDIT SEARCH FLAG 18 .IIF NE ESFLAG-ETYPE-2, .ERROR ;ORDER IS IMPORTANT! 19 007142 005722 .EEET: TST (R2)+ ;"ET" IS EDIT TYPEOUT FLAG 20 .IIF NE ETYPE-EUFLAG-2, .ERROR ;ORDER IS IMPORTANT! 21 007144 005722 .EEEU: TST (R2)+ ;"EU" IS CASE FLAGGING FLAG 22 .IIF NE EUFLAG-EVFLAG-2, .ERROR ;ORDER IS IMPORTANT! 23 007146 062702 000100 .EEEV: ADD #EVFLAG,R2 ;"EV" IS EDIT VERIFY FLAG 24 007152 020327 177777 CMP R3,#-1 ;SETTING A NEW VALUE? 25 007156 001014 BNE 30$ ;NOPE 26 007160 016500 000022 MOV N(R5),R0 ;YEP, GET THE NEW VALUE 27 007164 005265 000030 INC CFLG(R5) ;M,N FORM? 28 007170 001005 BNE 20$ ;NO 29 007172 060502 ADD R5,R2 ;YES, MAKE POINTER ABSOLUTE 30 007174 051200 BIS (R2),R0 ;.OR. OLD FLAG VALUE INTO N 31 007176 046500 000024 BIC M(R5),R0 ;.BIC. M FROM THAT RESULT 32 007202 160502 SUB R5,R2 ;POINTER TO RELATIVE AGAIN 33 007204 005065 000030 20$: CLR CFLG(R5) ;TURN OFF THE COMMA FLAG 34 007210 004767 000000G 30$: JSR PC,FLAGRW ;NOW ALERT 'TECOIO' 35 007214 060502 ADD R5,R2 ;MAKE POINTER ABSOLUTE 36 007216 005203 INC R3 ;ARGUMENT? 37 007220 001402 BEQ 40$ ;YES 38 007222 011200 MOV (R2),R0 ;NO, RETURN VALUE 39 007224 000641 BR NCOM ; AND COMPUTE AS A NUMBER 40 41 007226 010012 40$: MOV R0,(R2) ;SET THE NEW VALUE 42 007230 000207 RTS PC ; AND EXIT 43 44 .DSABL LSB 45 46 007232 016500 000022 .EEEJ: MOV N(R5),R0 ;GET THE ARGUMENT VALUE 47 007236 004767 000000G JSR PC,FLAGRW ;ALERT 'TECOIO' WITH R2=0 48 007242 000632 BR NCOM ;COMPUTE WHAT'S RETURNED AS A NUMBER 49 50 007244 CMDCHR <'Q-100> ;"^Q" CONVERTS 'L' COMMANDS TO 'C' COMMANDS 51 007244 016546 000064 .QQQ.Q: MOV P(R5),-(SP) ;SAVE . 52 007250 004767 172350 JSR PC,.VVV.N ;NOW MOVE . ACCORDING TO 'L' COMMAND 53 007254 011665 000064 MOV (SP),P(R5) ;RESTORE ORIGINAL . 54 007260 010100 MOV R1,R0 ;COPY THE NEW . 55 007262 162600 SUB (SP)+,R0 ; AND FIND DELTA-DOT 56 007264 000621 BRNCOM: BR NCOM ;USE THAT AS A NUMBER TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 50 COMMAND CHARACTER 'Q-100 1 007266 CMDCHR <'U> ;"U" IS Q-REG NUMBER SETTER 2 007266 005265 000020 INC NFLG(R5) ;ANY NUMBER? 3 007272 001014 BNE 10$ ;THERE MUST BE 4 007274 004767 001466 JSR PC,QREFVL ;REFERENCE THE Q-REG FOR VALUE 5 007300 016541 000022 MOV N(R5),-(R1) ;NOW SET THE NUMBER 6 007304 016500 000024 MOV M(R5),R0 ;GET M IN CASE M,N FORM 7 007310 005265 000030 INC CFLG(R5) ;M,N FORM? 8 007314 001763 BEQ BRNCOM ;YEP, GO EXIT COMPUTING AS A NUMBER 9 007316 005065 000030 CLR CFLG(R5) ;NOPE, CLEAR COMMA FLAG 10 007322 000207 RTS PC ; THEN EXIT 11 12 007324 10$: ERROR NAU,<"No arg before U"> 007324 004467 001122 JSR R4,ERRORA 007330 025 .BYTE 'U-<'A-1> 007331 125 .BYTE 'U 13 14 007332 CMDCHR <'R-100> ;"^R" READ/SET RADIX FLAG 15 007332 005265 000020 INC NFLG(R5) ;ANY ARGUMENT? 16 007336 001412 BEQ 20$ ;YES, SETTING RADIX 17 007340 012700 000010 MOV #8.,R0 ;NO, READING RADIX, GUESS AT OCTAL 18 007344 005765 000070 TST NMRBAS(R5) ;RADIX? 19 007350 003345 BGT BRNCOM ;OCTAL 20 007352 001402 BEQ 10$ ;DECIMAL 21 007354 062700 000006 ADD #6,R0 ;HEXIDECIMAL 22 007360 005720 10$: TST (R0)+ ;FORM THE RADIX 23 007362 000740 BR BRNCOM ; AND RETURN IT 24 25 007364 016501 000022 20$: MOV N(R5),R1 ;GET THE RADIX TO SET 26 007370 020127 000012 CMP R1,#10. ;DECIMAL? 27 007374 001410 BEQ 30$ ;YES, R0=0 28 007376 005200 INC R0 ;NO, SET R0=1 29 007400 020127 000010 CMP R1,#8. ;OCTAL? 30 007404 001404 BEQ 30$ ;YES, R0=1 31 007406 005400 NEG R0 ;NO, SET R0=-1 32 007410 020127 000020 CMP R1,#16. ;HEXIDECIMAL? 33 007414 001003 BNE 40$ ;NOPE, ERROR 34 007416 010065 000070 30$: MOV R0,NMRBAS(R5) ;SET THE CORRECT RADIX 35 007422 000207 RTS PC ; AND EXIT 36 37 007424 40$: ERROR IRA,<"Illegal radix arg"> 007424 004467 001072 JSR R4,ERRMSG 007430 035421 .RAD50 /IRA/ 007432 000411' .WORD $$$$$$ 000411 111 154 154 .ASCIZ "Illegal radix arg" TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 51 COMMAND CHARACTER 'R-100 1 007434 CMDCHR <':> ;":" IS THE SEARCH MODIFIER 2 007434 012765 177777 000032 MOV #-1,CLNF(R5) ;SET COLON FLAG 3 007442 TSTNXT ': ;DOUBLE COLON? 007442 004467 003276 JSR R4,TSTNXT 007446 000072 .WORD ': 4 007450 005665 000032 SBC CLNF(R5) ;YES MEANS FLAG=-2 5 007454 000207 RTS PC ; AND EXIT 6 7 .ENABL LSB 8 9 007456 CMDCHR <'J> ;"J" IS MOVE POINTER 10 007456 005065 000020 CLR NFLG(R5) ;USE UP THE NUMBER 11 007462 016500 000022 MOV N(R5),R0 ;NOW GET THE NUMBER 12 007466 000410 BR 10$ ; AND GO SET . 13 14 007470 CMDCHR <'R> ;"R" IS MOVE POINTER CHARACTERS 15 007470 004767 002704 JSR PC,GETN ;GET THE NUMBER OF CHARACTERS 16 007474 005400 NEG R0 ;THIS IS THE REVERSE MOVE 17 007476 000402 BR .FFF.R ;GO JOIN COMMON CODE 18 19 007500 CMDCHR <'C> ;"C" IS MOVE POINTER CHARACTERS 20 007500 004767 002674 JSR PC,GETN ;GET THE NUMBER OF CHARACTERS 21 007504 066500 000064 .FFF.R: ADD P(R5),R0 ;CALCULATE NEW . 22 007510 004767 002636 10$: JSR PC,BZCHK ;CHECK FOR VALIDITY 23 007514 010065 000064 MOV R0,P(R5) ;SET NEW . 24 007520 000207 RTS PC ; AND EXIT 25 26 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 52 COMMAND CHARACTER 'C 1 .ENABL LSB 2 3 007522 004767 002666 .FFFR: JSR PC,QSKPR0 ;"FR" IS REPLACE, SKIP INSERT STRING 4 007526 016500 000076 MOV LSCHSZ(R5),R0 ;GET -(LENGTH) OF LAST FOUND STRING 5 007532 005765 000030 TST CFLG(R5) ;IS IT M,N FORM? 6 007536 100005 BPL 10$ ;NOPE 7 007540 004767 003274 JSR PC,NLINES ;YEP, CONVERT M,N INTO +(LENGTH) 8 007544 016565 000024 000064 MOV M(R5),P(R5) ; AND POSITION TO THE START 9 007552 005265 000020 10$: INC NFLG(R5) ;A NUMERIC ARGUMENT? 10 007556 001002 BNE 20$ ;NOPE 11 007560 016500 000022 MOV N(R5),R0 ;YEP, GET IT FOR +/-(LENGTH) 12 007564 005065 000020 20$: CLR NFLG(R5) ;USE UP ANY NUMBER 13 007570 012746 004174' MOV #.SCH.R,-(SP) ;SET RETURN TO DO ACTUAL REPLACEMENT 14 007574 010001 30$: MOV R0,R1 ;COPY DELETION AMOUNT/DIRECTION 15 007576 100004 BPL 40$ ;>0 IS FORWARD DELETE 16 007600 004767 177700 JSR PC,.FFF.R ;<0 IS BACKWARD (-ND = -NC ND) 17 007604 010100 MOV R1,R0 ;RESTORE THE DELETE COUNT 18 007606 000207 RTS PC ; AND EXIT 19 20 007610 005400 40$: NEG R0 ;DELETE THIS MANY (<0 IS DELETE) 21 007612 000207 RTS PC ; AND EXIT 22 23 007614 CMDCHR <'D> ;"D" IS DELETE CHARACTERS 24 007614 005765 000030 TST CFLG(R5) ;IS FORM M,ND ? 25 007620 100403 BMI 50$ ;YES, SO PRETEND IT IS M,NK 26 007622 004767 002552 JSR PC,GETN ;GET THE NUMBER OF CHARACTERS 27 007626 000405 BR 60$ ; AND JOIN COMMON DELETION CODE 28 29 007630 CMDCHR <'K> ;"K" IS THE LINE DELETER 30 007630 004767 003204 50$: JSR PC,NLINES ;GET THE NUMBER OF LINES 31 007634 016565 000024 000064 MOV M(R5),P(R5) ;STARTING FROM HERE 32 007642 004767 177726 60$: JSR PC,30$ ;GO DO ANY POSITIONING NEEDED, ETC. 33 .IIF NE .-ADJ, .ERROR ;NOW DO IT 34 35 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 53 ADJUST TEXT AREA ROUTINE 1 .SBTTL ADJUST TEXT AREA ROUTINE 2 ; R0 = 0 MEANS NO ADJUSTMENT 3 ; R0 < 0 MEANS SHRINK AREA BY ABS(R0) 4 ; R0 > 0 MEANS ENLARGE AREA BY R0 5 ; (R0,R1,R2,R3 ARE CLOBBERED) 6 7 .ENABL LSB 8 9 007646 016502 000064 ADJ: MOV P(R5),R2 ;GET . 10 007652 016503 000150 MOV ZZ(R5),R3 ; AND GET END OF TEXT 11 007656 010001 MOV R0,R1 ;COPY THE CHANGE AMOUNT 12 007660 100432 BMI 40$ ;<0 MEANS SHRINK AREA 13 007662 001426 BEQ 20$ ;=0 MEANS NO CHANGE 14 007664 060301 ADD R3,R1 ;NOW HAVE NEW SIZE 15 007666 SIZE TEXT ;CHECK OUT THE SIZE 007666 004467 005354 JSR R4,SIZE 007672 000146 .WORD ZMAX 16 007674 103022 BCC 30$ ;WE CAN'T DO IT 17 007676 010165 000150 MOV R1,ZZ(R5) ;UPDATE THE BUFFER SIZE 18 007702 016500 000144 MOV TXSTOR(R5),R0 ;GET ABSOLUTE POINTER BIAS 19 007706 020203 EXPAND: CMP R2,R3 ;ANYTHING TO DO? 20 007710 001413 BEQ 20$ ;NO, FAST EXIT 21 007712 060001 ADD R0,R1 ;MAKE NEW ZZ ABSOLUTE 22 007714 060002 ADD R0,R2 ;MAKE . ABSOLUTE 23 007716 060003 ADD R0,R3 ;MAKE OLD ZZ ABSOLUTE 24 007720 111200 MOVB (R2),R0 ;SAVE CHARACTER AT . 25 007722 105012 CLRB (R2) ;THEN FLAG THAT SPOT 26 007724 114341 10$: MOVB -(R3),-(R1) ;MOVE A BYTE UP FROM END 27 007726 001376 BNE 10$ ;CANNOT BE END OF NON-ZERO 28 007730 020302 CMP R3,R2 ;REACHED . YET? 29 007732 101374 BHI 10$ ;NOPE, SO CONTINUE 30 007734 110012 MOVB R0,(R2) ;YES, RESTORE CHARACTER AT . 31 007736 110011 MOVB R0,(R1) ; AND RESTORE MOVED NULL BYTE 32 007740 000207 20$: RTS PC ;NOW EXIT 33 34 007742 30$: ERROR MEM,<"Memory overflow"> 007742 000167 171102 JMP $E$MEM TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 54 ADJUST TEXT AREA ROUTINE 1 007746 010201 40$: MOV R2,R1 ;COPY . TO HERE 2 007750 160002 SUB R0,R2 ;NOW FIND END OF THE DELETE 3 007752 020203 CMP R2,R3 ;IS DELETE TOO BIG? 4 007754 101022 BHI 70$ ;YEP 5 007756 060065 000150 ADD R0,ZZ(R5) ;SET NEW DATA SIZE 6 007762 016500 000144 MOV TXSTOR(R5),R0 ;GET BUFFER BIAS 7 007766 020203 SHRINK: CMP R2,R3 ;ANYTHING TO DO? 8 007770 001413 BEQ 60$ ;NO, FAST EXIT 9 007772 060001 ADD R0,R1 ;MAKE . ABSOLUTE 10 007774 060002 ADD R0,R2 ;MAKE END OF DELETE ABSOLUTE 11 007776 060003 ADD R0,R3 ;MAKE END OF BUFFER ABSOLUTE 12 010000 114300 MOVB -(R3),R0 ;SAVE END OF BUFFER BYTE 13 010002 105013 CLRB (R3) ;THEN FLAG END OF BUFFER 14 010004 112221 50$: MOVB (R2)+,(R1)+ ;MOVE A BYTE DOWN 15 010006 001376 BNE 50$ ;CANNOT BE END IF NON-ZERO 16 010010 020203 CMP R2,R3 ;END OF BUFFER REACHED? 17 010012 101774 BLOS 50$ ;NOT YET 18 010014 110041 MOVB R0,-(R1) ;RESTORE END OF BUFFER BYTE 19 010016 110013 MOVB R0,(R3) ; AND RESTORE THIS ALSO 20 010020 000207 60$: RTS PC ;NOW EXIT 21 22 010022 70$: ERROR DTB,<"Delete too big"> 010022 004467 000474 JSR R4,ERRMSG 010026 016042 .RAD50 /DTB/ 010030 000433' .WORD $$$$$$ 000433 104 145 154 .ASCIZ "Delete too big" 23 24 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 55 ADJUST TEXT AREA ROUTINE 1 010032 CMDCHR <'O> ;"O" IS GOTO TAG 2 010032 016504 000646 MOV TAGBUF(R5),R4 ;GET THE TAG BUFFER POINTER 3 010036 004767 003354 JSR PC,GETSTG ;GET STRING AS ARGUMENT 4 010042 105014 CLRB (R4) ; AND FORCE NULL TAGS TO NULL 5 010044 016504 000646 MOV TAGBUF(R5),R4 ;GET THE TAG BUFFER POINTER AGAIN 6 010050 005265 000020 INC NFLG(R5) ;INDEXED GOTO? 7 010054 001431 BEQ 50$ ;YEP, FIND CORRECT TAG FROM LIST 8 010056 005065 000020 10$: CLR NFLG(R5) ;USE UP ANY NUMBER 9 010062 016515 000010 MOV ITRST(R5),(R5) ;START SEARCH AT ITERATION START 10 010066 20$: SKPSET '! ;SKIP UNTIL A ! 010066 004467 000110 JSR R4,SKPSET 010072 000041 .WORD '! 11 010074 004767 170076 JSR PC,TRACE ;TRACE THE ! IF TRACING 12 010100 010065 000040 MOV R0,QUOTE(R5) ;SET ! AS TERMINATING QUOTE 13 010104 004767 000256 JSR PC,QCHK ;UNLESS SOMETHING ELSE ENDS IT 14 010110 010403 MOV R4,R3 ;GET BACK THE TAG'S START 15 010112 004767 002442 30$: JSR PC,SCNQST ;SCAN FOR END OF FOUND TAG 16 010116 001426 BEQ 80$ ;BR OUT IF END OF FOUND TAG FOUND 17 010120 120023 CMPB R0,(R3)+ ;NOT END, A MATCH? 18 010122 001773 BEQ 30$ ;CONTINUE UNTIL END IF MATCH 19 010124 004767 002212 JSR PC,QSKPE ;SCAN TO FOUND TAG'S END IF NO MATCH 20 010130 000756 BR 20$ ; THEN FIND THE NEXT TAG 21 22 010132 105723 40$: TSTB (R3)+ ;TAG BUFFER EXHAUSTED? 23 010134 001511 BEQ IREST ;YEP, NO MORE, JUST GO QUIT 24 010136 010304 MOV R3,R4 ;RESET THE TAG STARTING POSITION 25 010140 010403 50$: MOV R4,R3 ;GET A POINTER TO THE TRIAL TAG 26 010142 121327 000054 60$: CMPB (R3),#', ;COMMA SEPARATOR? 27 010146 001403 BEQ 70$ ;YES, END THIS TAG 28 010150 105723 TSTB (R3)+ ;NO, END OF TAG BUFFER? 29 010152 001373 BNE 60$ ;NOT END, CONTINUE LOOPING... 30 010154 005303 DEC R3 ;BUFFER END, CORRECT POINTER 31 010156 005365 000022 70$: DEC N(R5) ;IS THIS THE OCCURANCE WE WANT? 32 010162 100363 BPL 40$ ;NO, WE MUST KEEP LOOKING 33 010164 105013 CLRB (R3) ;YES, FLAG TAG'S END WITH A NULL 34 010166 020304 CMP R3,R4 ;IS IT A NULL TAG? 35 010170 001332 BNE 10$ ;IT'S NON-NULL, GO JOIN COMMON FLOW 36 010172 000472 BR IREST ;IT'S A NULL TAG, JUST QUIT 37 38 010174 105713 80$: TSTB (R3) ;ALSO AT DESIRED TAG'S END? 39 010176 001333 BNE 20$ ;NOPE, SO FIND NEXT TAG 40 010200 000467 BR IREST ;YEP, EXIT RESTORING QUOTE TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 56 SKIP OVER COMMAND 1 .SBTTL SKIP OVER COMMAND 2 ; (R0,R1,R2,R3,"TEMP" ARE CLOBBERED) 3 4 .ENABL LSB 5 6 010202 004767 000152 SKPSET: JSR PC,IREST ;RESTORE ESCAPE AS QUOTE 7 010206 116565 000056 000054 MOVB TFLG(R5),TEMP(R5) ;SAVE TRACE FLAG 8 010214 105065 000056 CLRB TFLG(R5) ;THEN DISABLE TRACE DURING SKIP 9 010220 004767 002244 10$: JSR PC,SCNUPP ;GET NEXT CHARACTER 10 010224 120014 20$: CMPB R0,(R4) ;IS IT THE SPECIAL CHARACTER? 11 010226 001413 BEQ 40$ ;YES, SO EXIT 12 010230 005700 TST R0 ;IS THIS A NULL? 13 010232 001403 BEQ 30$ ;SIMPLY IGNORE ANY NULL... 14 010234 120064 000001 CMPB R0,1(R4) ;IS IT THE ALTERNATE CHARACTER? 15 010240 001406 BEQ 40$ ;YES, SO EXIT 16 010242 012746 010220' 30$: MOV #10$,-(SP) ;STACK A RETURN ADDRESS 17 010246 SORT ..CSM ;SORT ON SPECIAL SKIPPERS 010246 004467 002332 JSR R4,SORT 010252 016124' .WORD ..CSM 18 010254 000207 RTS PC ;NON-SPECIALS ARE IGNORED 19 20 010256 116565 000054 000056 40$: MOVB TEMP(R5),TFLG(R5) ;RESTORE THE TRACE FLAG 21 010264 005724 TST (R4)+ ;SKIP THE ARGUMENT(S) 22 010266 000204 RTS R4 ; AND EXIT 23 24 010270 004767 002222 .CSMUA: JSR PC,SCNCTL ;GET NEXT AS CONTROL CHARACTER 25 010274 000753 BR 20$ ; AND GO CHECK IT 26 27 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 57 SKIP OVER COMMAND 1 .ENABL LSB 2 3 010276 004767 002166 10$: JSR PC,SCNUPP ;GET NEXT CHARACTER AS UPPER CASE 4 010302 012201 MOV (R2)+,R1 ;GET TABLE POINTER 5 010304 120041 20$: CMPB R0,-(R1) ;IS IT IN THE TABLE? 6 010306 101376 BHI 20$ ;NO, BUT KEEP CHECKING... 7 ;BLO ;NO, AND IT CAN'T BE 8 010310 000202 RTS R2 ;YES, EXIT Z=1 9 10 010312 004267 177760 .CSME: JSR R2,10$ ;CHECK "E" CHARACTER 11 010316 016216' .WORD ..CSME ; AGAINST EB, EG, EI, EN, ER, EW, E_ 12 010320 001415 BEQ .CSMQ ;IT'S ONE OF THOSE, SKIP A STRING 13 010322 000207 RTS PC ;ELSE DO NOTHING 14 15 010324 004267 177746 .CSMF: JSR R2,10$ ;CHECK "F" CHARACTER 16 010330 016226' .WORD ..CSMF ; AGAINST FB, FC, FN, FR, FS, F_ 17 010332 103426 BLO 50$ ;NONE OF THE ABOVE, DO NOTHING 18 010334 020027 000102 CMP R0,#'B ;"FB"? 19 010340 001405 BEQ .CSMQ ;YES, ONLY SKIP 1 STRING 20 010342 020027 000122 CMP R0,#'R ;"FR"? 21 010346 001402 BEQ .CSMQ ;YES, ONLY SKIP 1 STRING 22 010350 004767 001756 JSR PC,QSKP ;IGNORE 1 QUOTED STRING 23 010354 004767 001752 .CSMQ: JSR PC,QSKP ;IGNORE 1 QUOTED STRING 24 010360 012700 000033 IREST: MOV #ESC,R0 ;SET TO RESTORE QUOTE AS ESCAPE 25 010364 000405 BR 30$ ;GO DO IT 26 27 010366 005765 000034 QCHK: TST QFLG(R5) ;QUOTE FLAG? 28 010372 001406 BEQ 50$ ;NOPE 29 010374 004767 167552 JSR PC,SCAN ;YES, SO GET THE QUOTE CHARACTER 30 010400 005065 000034 30$: CLR QFLG(R5) ;NOW CLEAR THE QUOTE FLAG 31 010404 010065 000040 40$: MOV R0,QUOTE(R5) ; AND SET QUOTE CHARACTER 32 010410 000207 50$: RTS PC ;NOW EXIT 33 34 010412 012746 010354' .CSMY: MOV #.CSMQ,-(SP) ;IGNORE A STRING QUOTED ON 35 010416 000772 BR 40$ ; THIS CHARACTER 36 37 010420 012746 010354' .CSMRQ: MOV #.CSMQ,-(SP) ;SKIP A QUOTED STRING AFTER THE Q-REG 38 010424 004767 167522 .CSMR: JSR PC,SCAN ;SKIP THE Q-REG NAME 39 010430 020027 000056 CMP R0,#'. ;WAS IT A LOCAL Q-REG NAME? 40 010434 001365 BNE 50$ ;NOPE 41 010436 000167 167510 JMP SCAN ;YEP, SCAN OFF ONE MORE CHARACTER... 42 43 .DSABL LSB 44 45 010442 CMDCHR <'@> ;"@" IS QUOTE FLAG SETTER 46 010442 012765 177777 000034 .CSMA: MOV #-1,QFLG(R5) ;@ FOUND; SET QUOTE FLAG 47 010450 000207 RTS PC ;EXIT TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 58 ERROR MESSAGE PROCESSOR 1 .SBTTL ERROR MESSAGE PROCESSOR 2 3 .IF NE E$$TXT 4 5 .ENABL LSB 6 7 010452 112400 ERRORA: MOVB (R4)+,R0 ;GET 3RD RAD50 CHARACTER 8 010454 062700 ADD (PC)+,R0 ;NOW FORM "NA?" 9 010456 053650 .RAD50 /NA / 10 010460 012746 MOV (PC)+,-(SP) ;STACK MESSAGE POINTER 11 010462 MESSAG <"No arg before "<-1>> 010462 000452' .WORD $$$$$$ 000452 116 157 040 .ASCIZ "No arg before "<-1> 12 010464 000410 BR 10$ ; AND GO TO COMMON PROCESSING 13 14 010466 112400 ERRORC: MOVB (R4)+,R0 ;GET 2ND RAD50 CHARACTER 15 010470 006300 ASL R0 ;MAKE INTO 16 010472 006300 ASL R0 ; REAL 17 010474 006300 ASL R0 ; 2ND CHARACTER 18 010476 062700 ADD (PC)+,R0 ;NOW FORM "I?C" 19 010500 034103 .RAD50 /I C/ 20 010502 012746 MOV (PC)+,-(SP) ;STACK MESSAGE POINTER 21 010504 MESSAG <"Illegal "<-1>" character"> 010504 000472' .WORD $$$$$$ 000472 111 154 154 .ASCIZ "Illegal "<-1>" character" 22 010506 112404 10$: MOVB (R4)+,R4 ;GET LAST/MIDDLE CHARACTER 23 010510 000406 BR ERRMIO ; AND GO TO COMMON PROCESSING 24 25 .DSABL LSB 26 27 010512 012400 ERRORS: MOV (R4)+,R0 ;GET RAD50 OF ERROR CODE 28 010514 012446 MOV (R4)+,-(SP) ;SAVE THE TEXT POINTER 29 010516 005004 CLR R4 ;THEN FLAG FOR FOLLOWING STRING 30 010520 000402 BR ERRMIO ;NOW DO IT 31 32 .ENDC TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 59 ERROR MESSAGE PROCESSOR 1 010522 012400 ERRMSG: MOV (R4)+,R0 ;GET RAD50 OF ERROR CODE 2 3 .IF NE E$$TXT 4 5 010524 012446 MOV (R4)+,-(SP) ;SAVE THE TEXT POINTER 6 7 .IFTF 8 9 010526 011565 000072 ERRMIO: MOV (R5),ERRPOS(R5) ;SAVE ERRING "SCANP" 10 11 .IFT 12 13 010532 016502 000110 MOV EHELP(R5),R2 ;GET EDIT HELP LEVEL 14 010536 042702 177774 BIC #^C<3>,R2 ; MASKED TO BITS <1-0> 15 010542 005302 DEC R2 ; AND LESS 1 16 010544 001001 BNE 10$ ;NOT "EH"=1, SO KEEP STRING POINTER 17 010546 005016 CLR (SP) ;"EH"=1, SO NO MORE STRING POINTER 18 010550 012665 000054 10$: MOV (SP)+,TEMP(R5) ;NOW SAVE THE STRING POINTER 19 20 .ENDC 21 22 010554 012746 000510' MOV #TECOCR,-(SP) ;SET THE RESTART RETURN ADDRESS 23 010560 036527 000110 000004 BIT EHELP(R5),#4 ;DESIRE FAILING COMMAND AUTO-PRINT? 24 010566 001405 BEQ 20$ ;NOPE 25 010570 005765 000072 TST ERRPOS(R5) ;YEP, IS THERE AN ERROR POSITION? 26 010574 003402 BLE 20$ ;IF NONE, THEN FORGET IT... 27 010576 012716 000452' MOV #ERR4EH,(SP) ;ELSE PRINT FAILING COMMAND ON EXIT 28 010602 004767 000000G 20$: JSR PC,ALLERR ;TELL 'TECOIO' ABOUT THE ERROR 29 010606 012702 000050 MOV #50,R2 ;SET TO DIVIDE BY 50 30 010612 005046 CLR -(SP) ;FLAG END OF CHARACTERS 31 010614 004767 176216 30$: JSR PC,DIVD ;DIVIDE BY 50 32 010620 010146 MOV R1,-(SP) ; AND SAVE REMAINDER 33 010622 005700 TST R0 ; ANY ANSWER LEFT? 34 010624 001373 BNE 30$ ; LOOP IF SO... 35 010626 004767 002162 JSR PC,CRLFNO ;NO CTRL/O AND RESTORE CARRIAGE 36 010632 012700 177777 MOV #'?-<'A-1>,R0 ;NOW SET FOR PRINTING A "?" 37 010636 062700 000100 40$: ADD #'A-1,R0 ;MAKE A CHARACTER 38 010642 020027 000132 CMP R0,#'Z ;REALLY ALPHABETIC? 39 010646 101402 BLOS 50$ ;YES, SO TYPE IT 40 010650 062700 177722 ADD #'0-36-<'A-1>,R0 ;NO, SO CONVERT TO NUMERIC 41 010654 004767 000000G 50$: JSR PC,TYPE ; AND TYPE IT 42 010660 012600 MOV (SP)+,R0 ;GET NEXT 43 010662 001365 BNE 40$ ; IF ANY... TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 60 ERROR MESSAGE PROCESSOR 1 .IF NE E$$TXT 2 3 010664 016501 000054 MOV TEMP(R5),R1 ;GET THE STRING POINTER 4 010670 001435 BEQ 90$ ;IF ANY... 5 010672 016502 000644 MOV FILBUF(R5),R2 ;PRESET FOR PRINTING A FILENAME 6 010676 012700 000011 MOV #TAB,R0 ;START WITH A TAB 7 010702 004767 000000G 60$: JSR PC,TYPE ;TYPE A CHARACTER 8 010706 112100 70$: MOVB (R1)+,R0 ;GET STRING CHARACTER 9 010710 003374 BGT 60$ ; IF MORE... 10 010712 001404 BEQ 80$ ; OR THE STRING'S END 11 010714 010400 MOV R4,R0 ;ELSE GET LAST/MIDDLE CHARACTER 12 010716 001371 BNE 60$ ; IF ANY... 13 010720 016502 000642 MOV SCHBUF(R5),R2 ;ELSE DO THE SEARCH BUFFER 14 010724 005704 80$: TST R4 ;IS A QUOTED STRING TO COME? 15 010726 001016 BNE 90$ ;NO, FINAL END 16 010730 012700 000040 MOV #SPACE,R0 ;YES, START WITH 17 010734 004767 000000G JSR PC,TYPE ; A SPACE 18 010740 012700 000042 MOV #'",R0 ;THEN THE 19 010744 004767 000000G JSR PC,TYPE ; LEADING " 20 010750 004767 172730 JSR PC,TYPSPC ;NOW GO DO THE BUFFERED STRING 21 010754 012700 000042 MOV #'",R0 ;SET THE CLOSING " 22 010760 004767 000000G JSR PC,TYPE ; AND THEN TYPE THAT 23 010764 90$: 24 25 .ENDC 26 27 010764 000207 RTS PC ;NOW EXIT TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 61 Q-REGISTER REFERENCE 1 .SBTTL Q-REGISTER REFERENCE 2 ; RETURNS: R0 = 0 Q-REG # TIMES 4 3 ; R1 = POINTER TO Q-REG SIZE POINTER TO Q-REG VALUE +2 4 ; R2 = OFFSET TO BASE OF Q-REG 0 5 ; "QNMBR" SET AS SPECIFIED "QNMBR" SET AS SPECIFIED 6 7 .ENABL LSB 8 9 010766 012746 011100' QREFVL: MOV #20$,-(SP) ;SET FLAG FOR VALUE REFERENCE ONLY 10 010772 004767 001472 QREF: JSR PC,SCNUPP ;GET NEXT CHARACTER 11 010776 005001 CLR R1 ;GUESS AT A NORMAL Q-REGISTER NAME 12 011000 020027 000056 CMP R0,#'. ;LOCAL TO MACRO LEVEL Q-REGISTER? 13 011004 001004 BNE QREFR1 ;NOPE 14 011006 004767 001456 JSR PC,SCNUPP ;YEP, FETCH THE SUB-NAME CHARACTER 15 011012 012701 000045 MOV #LCLQRG-1,R1 ;FLAG AS SUCH WITH THE OFFSET 16 011016 004767 001666 QREFR1: JSR PC,ALPHAN ;MUST BE ALPHANUMERIC 17 011022 103034 BCC 60$ ; BUT IT IS NOT 18 011024 020027 000101 CMP R0,#'A ;IS IT ALPHA? 19 011030 103402 BLO 10$ ;NOPE, IT IS NUMERIC 20 011032 062700 177725 ADD #1-'A-<33-'0>,R0 ;YEP, RANGE IS 1-32 21 011036 062700 177753 10$: ADD #33-'0,R0 ;RANGE IS 33-44 22 011042 060100 ADD R1,R0 ;ADD IN ANY NEEDED LOCAL LEVEL BIAS 23 011044 010065 000042 QREFR0: MOV R0,QNMBR(R5) ;SAVE THE Q-REG NUMBER 24 25 .SBTTL GET SUM OF Q-REGISTER IN "QNMBR" (QSUMY) 26 27 011050 016500 000042 QSUMY: MOV QNMBR(R5),R0 ;GET THE Q-REG NUMBER 28 29 .SBTTL GET SUM OF Q-REGISTER IN R0 (QSUMX) 30 31 011054 012701 000162 QSUMX: MOV #QARRAY,R1 ;GET OFFSET TO Q-REG ARRAY 32 011060 060501 ADD R5,R1 ;NOW FIND IT FOR REAL 33 011062 005002 CLR R2 ;START OFFSET OF REG AT 0 34 011064 021627 011100' CMP (SP),#20$ ;SPECIAL REFERENCE FOR VALUE ONLY? 35 011070 001006 BNE 40$ ;NO, ENTER COUNTING LOOP 36 011072 006300 ASL R0 ;Q-REG NUMBER TIMES 2 37 011074 006300 ASL R0 ; THEN TIMES 4 38 011076 060001 ADD R0,R1 ;POINT TO Q-REG VALUE +2 39 011100 000207 20$: RTS PC ; AND EXIT 40 41 011102 062102 30$: ADD (R1)+,R2 ;SUM THE TOTAL OFFSET 42 011104 005721 TST (R1)+ ; AND SKIP THE VALUE SPOT 43 011106 005300 40$: DEC R0 ;MORE? 44 011110 003374 BGT 30$ ;YES, LOOP 45 011112 000207 50$: RTS PC ;NO, EXIT 46 47 011114 60$: ERROR IQN,<"Illegal Q-reg name"> 011114 004467 177402 JSR R4,ERRMSG 011120 035366 .RAD50 /IQN/ 011122 000516' .WORD $$$$$$ 000516 111 154 154 .ASCIZ "Illegal Q-reg name" TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 62 GET SUM OF Q-REGISTER IN R0 (QSUMX) 1 011124 CMDCHR <'[> ;"[" IS Q-REG PUSH 2 011124 004767 177642 JSR PC,QREF ;REFERENCE THE Q-REGISTER 3 011130 016546 000042 MOV QNMBR(R5),-(SP) ;SAVE NUMBER OF THAT REGISTER 4 011134 011104 MOV (R1),R4 ;SAVE SIZE OF THAT REGISTER 5 011136 012765 000112 000042 MOV #AUXQRG,QNMBR(R5) ;NOW SET THE AUX Q-REG'S NUMBER 6 011144 004767 177700 JSR PC,QSUMY ;SUM UP THE AUX Q-REG 7 011150 011100 MOV (R1),R0 ;GET ITS CURRENT SIZE 8 011152 060400 ADD R4,R0 ;ADD IN THE REF'D Q-REG'S SIZE 9 011154 062700 000004 ADD #4,R0 ; AND ADD IN 4 FOR GOODNESS 10 011160 004767 000224 JSR PC,QADJ ;NOW ADJUST(UP) ITS SIZE 11 011164 061102 ADD (R1),R2 ;GET POINTER TO ITS END+1 12 011166 010204 MOV R2,R4 ; AND SAVE THAT POINTER 13 011170 012600 MOV (SP)+,R0 ;GET BACK REF'D Q-REG NUMBER 14 011172 004767 177656 JSR PC,QSUMX ; AND SUM UP THAT Q-REG 15 011176 066502 000152 ADD QRSTOR(R5),R2 ;ABS PTR TO REF'D Q-REG 16 011202 066504 000152 ADD QRSTOR(R5),R4 ;ABS PTR TO AUX Q-REG END+1 17 011206 022121 CMP (R1)+,(R1)+ ;SKIP OVER THE SIZE/VALUE 18 011210 114144 MOVB -(R1),-(R4) ;SAVE MSB OF VALUE AND 19 011212 114144 MOVB -(R1),-(R4) ; LSB OF VALUE 20 011214 114144 MOVB -(R1),-(R4) ;SAVE MSB OF SIZE AND 21 011216 114144 MOVB -(R1),-(R4) ; LSB OF SIZE 22 011220 011101 MOV (R1),R1 ;NOW GET SIZE INTO HERE 23 011222 005301 70$: DEC R1 ;MORE TO MOVE? 24 011224 100732 BMI 50$ ;NO, DONE 25 011226 112244 MOVB (R2)+,-(R4) ;YES, MOVE A BYTE 26 011230 000774 BR 70$ ; AND LOOP FOR MORE 27 28 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 63 COMMAND CHARACTER '[ 1 .ENABL LSB 2 3 011232 005765 000020 10$: TST NFLG(R5) ;RETURNING A VALUE? 4 011236 100003 BPL 20$ ;NOPE, SO ERROR 5 011240 012665 000022 MOV (SP)+,N(R5) ;YEP, RETURN 0 AS THE VALUE 6 011244 000207 RTS PC ; AND EXIT 7 8 011246 20$: ERROR CPQ,<"Can't pop Q-reg"> 011246 004467 177250 JSR R4,ERRMSG 011252 012521 .RAD50 /CPQ/ 011254 000541' .WORD $$$$$$ 000541 103 141 156 .ASCIZ "Can't pop Q-reg" 9 10 011256 CMDCHR <']> ;"]" IS Q-REG POP 11 011256 004767 001162 JSR PC,CHKCLO ;CHECK FOR OPTIONAL COLON MODIFIER 12 011262 004767 177504 JSR PC,QREF ;REFERENCE THE Q-REGISTER 13 011266 012700 000112 MOV #AUXQRG,R0 ;GET NUMBER OF AUX Q-REG 14 011272 004767 177556 JSR PC,QSUMX ; AND SUM IT UP 15 011276 011146 MOV (R1),-(SP) ;SAVE ITS CURRENT SIZE 16 011300 001754 BEQ 10$ ;NO SIZE, TOO MANY POP'S 17 011302 061102 ADD (R1),R2 ;ELSE INDEX TO ITS END+1 18 011304 066502 000152 ADD QRSTOR(R5),R2 ;MAKE THE POINTER ABSOLUTE 19 011310 114246 MOVB -(R2),-(SP) ;SET MSB OF REG'S VALUE 20 011312 000316 SWAB (SP) ;NOW PUT IT UP TO MSB 21 011314 114216 MOVB -(R2),(SP) ; AND SET LSB OF REG'S VALUE 22 011316 114200 MOVB -(R2),R0 ;SET MSB OF REG'S NEW SIZE 23 011320 000300 SWAB R0 ; SWITCH IT TO HIGH BYTE 24 011322 154200 BISB -(R2),R0 ; AND GET LSB OF SIZE 25 011324 004767 000060 JSR PC,QADJ ;ADJUST REF'D Q-REG TO THAT SIZE 26 011330 162166 000002 SUB (R1)+,2(SP) ;FIND NEW SIZE FOR AUX Q-REG 27 011334 012611 MOV (SP)+,(R1) ;SET REF'D Q-REG'S NEW VALUE 28 011336 014103 MOV -(R1),R3 ;GET NEW SIZE INTO HERE 29 011340 010204 MOV R2,R4 ;SAVE POINTER TO ITS START 30 011342 012765 000112 000042 MOV #AUXQRG,QNMBR(R5) ;GET AUX Q-REG # AGAIN 31 011350 004767 177474 JSR PC,QSUMY ; AND SUM IT UP NOW 32 011354 061102 ADD (R1),R2 ;INDEX TO ITS END+1 33 011356 066502 000152 ADD QRSTOR(R5),R2 ;MAKE POINTER ABSOLUTE 34 011362 066504 000152 ADD QRSTOR(R5),R4 ;MAKE REF'D Q-REG PTR ABS ALSO 35 011366 162702 000004 SUB #4,R2 ;BACK OVER SAVED VALUE/SIZE 36 011372 005303 30$: DEC R3 ;MORE DATA? 37 011374 100402 BMI 40$ ;NO, ALMOST DONE 38 011376 114224 MOVB -(R2),(R4)+ ;YES, MOVE 1 DATA BYTE 39 011400 000774 BR 30$ ; AND LOOP... 40 41 011402 012600 40$: MOV (SP)+,R0 ;GET NEW AUX Q-REG SIZE 42 011404 162700 000004 SUB #4,R0 ; CORRECTING FOR THE FUDGE 43 .IIF NE .-QADJ, .ERROR ;ADJUST IT (DOWN) AND EXIT 44 45 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 64 Q-REGISTER SIZE ADJUST ROUTINE 1 .SBTTL Q-REGISTER SIZE ADJUST ROUTINE 2 ; R0 = NEW SIZE OF Q-REGISTER IN "QNMBR" 3 ; RETURNS: R0 = 0 4 ; R1 = POINTER TO NEW Q-REG SIZE 5 ; R2 = OFFSET TO THIS Q-REG 6 ; (R3,R4 ARE CLOBBERED) 7 8 .ENABL LSB 9 10 011410 010004 QADJ: MOV R0,R4 ;COPY THE NEW Q-REG SIZE 11 011412 004767 177432 JSR PC,QSUMY ; AND SUM CURRENT Q-REG OFFSET 12 011416 016503 000156 MOV QZ(R5),R3 ;GET END OF ALL Q-REGS 13 011422 010100 MOV R1,R0 ;COPY Q-REG SIZE POINTER 14 011424 010401 MOV R4,R1 ; AND GET WORKING COPY OF NEW SIZE 15 011426 061002 ADD (R0),R2 ;POINTER TO CURRENT END OF Q-REG 16 011430 161001 SUB (R0),R1 ;SIZE CHANGE (NEW-OLD) 17 011432 103431 BLO 20$ ;NEW < OLD 18 011434 001413 BEQ 10$ ;NEW = OLD 19 011436 060301 ADD R3,R1 ;NEW > OLD; GET NEW QZ 20 011440 SIZE QREGS ;CHECK OUT THE SIZE 011440 004767 004124 JSR PC,SIZEQR 21 011444 103035 BCC 30$ ;WE CAN'T DO IT 22 011446 010410 MOV R4,(R0) ;SET NEW Q-REG SIZE 23 011450 010165 000156 MOV R1,QZ(R5) ;SET NEW TOTAL Q-REG SIZE 24 011454 016500 000152 MOV QRSTOR(R5),R0 ;GET Q-REG AREA POINTER 25 011460 004767 176222 JSR PC,EXPAND ;NOW EXPAND THE Q-REGS 26 011464 016500 000004 10$: MOV QCMND(R5),R0 ;GET COMMAND Q-REG NUMBER 27 011470 012746 011050' MOV #QSUMY,-(SP) ;SET FOR COMMAND SETUP JUST IN CASE 28 011474 010065 000004 SETCMD: MOV R0,QCMND(R5) ;SET COMMAND Q-REG NUMBER 29 011500 004767 177350 JSR PC,QSUMX ; AND SUM UP FOR THAT REGISTER 30 011504 010265 000066 MOV R2,QBASE(R5) ;STORE THE BASE OFFSET 31 011510 011165 000044 MOV (R1),QLENGT(R5) ; AND THE LENGTH 32 011514 000207 RTS PC ;THEN EXIT 33 34 011516 010410 20$: MOV R4,(R0) ;SET NEW Q-REG SIZE 35 011520 060165 000156 ADD R1,QZ(R5) ;LOWER THE TOTAL Q-REG SIZE 36 011524 060201 ADD R2,R1 ;POINT TO THE END OF DELETE 37 011526 016500 000152 MOV QRSTOR(R5),R0 ;GET Q-REG AREA POINTER 38 011532 004767 176230 JSR PC,SHRINK ;NOW SHRINK THE Q-REGS 39 011536 000752 BR 10$ ;ALL DONE 40 41 011540 30$: ERROR MEM,<"Memory overflow"> 011540 000167 167304 JMP $E$MEM 42 43 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 65 Q-REGISTER SIZE ADJUST ROUTINE 1 011544 CMDCHR <'M> ;"M" IS THE MACRO COMMAND 2 011544 004767 177222 JSR PC,QREF ;REFERENCE THE MACRO Q-REGISTER 3 011550 016546 000042 MOV QNMBR(R5),-(SP) ; AND SAVE ITS Q-REG NUMBER 4 011554 021627 000046 CMP (SP),#LCLQRG ;IS REF'D Q-REGISTER A LOCAL Q-REG? 5 011560 103403 BLO 10$ ;NOPE 6 011562 012765 177777 000032 MOV #-1,CLNF(R5) ;YEP, FAKE A COLON TO KEEP LOCALS 7 011570 016565 000032 000006 10$: MOV CLNF(R5),LCLSIZ(R5) ;COLON MODIFIED MACRO COMMAND? 8 011576 100454 BMI 50$ ;YES, LEAVE LOCAL Q-REGS ALONE... 9 011600 005000 CLR R0 ;CLEAR FLAG SAYING LOCAL VALUES EXIST 10 011602 005065 000006 CLR LCLSIZ(R5) ; AND CLEAR OUT THE TOTAL LOCAL SIZE 11 011606 012701 000406 MOV #QARRAY+<*4>,R1 ;GET REL POINTER TO LOCAL Q-REGS 12 011612 060501 ADD R5,R1 ; AND MAKE IT ABSOLUTE 13 011614 012702 000044 MOV #NUMQRG,R2 ;SET NUMBER OF LOCALS TO LOOK AT 14 011620 062165 000006 20$: ADD (R1)+,LCLSIZ(R5) ;ACCUMULATE THE TOTAL LOCAL SIZE 15 011624 052100 BIS (R1)+,R0 ;SAVE NEEDED IF ANY LOCAL VALUE 16 011626 005302 DEC R2 ;MORE TO GO? 17 011630 001373 BNE 20$ ;YEP, LOOP... 18 011632 056500 000006 BIS LCLSIZ(R5),R0 ;DO WE REALLY NEED A LOCAL SAVE? 19 011636 001426 BEQ 40$ ;NOPE 20 011640 012700 000220 MOV #NUMQRG*4,R0 ;SET 2 WD/SAVED Q-REG FOR SIZE INC 21 011644 060065 000006 ADD R0,LCLSIZ(R5) ; AND ALSO UPDATE THE TOTAL SAVED SIZE 22 011650 066100 177774 ADD -4(R1),R0 ;SET NEW SIZE FOR LAST LOCAL 23 011654 012765 000111 000042 MOV #LCLQRG+,QNMBR(R5) ;SET THE LAST LOCAL Q-REG NUMBER 24 011662 004767 177522 JSR PC,QADJ ;GO ADJUST LAST LOCAL TO SAVE AREA 25 011666 062102 ADD (R1)+,R2 ;POINT JUST BEYOND THE SAVE AREA 26 011670 066502 000152 ADD QRSTOR(R5),R2 ; AND MAKE THE POINTER ABSOLUTE 27 011674 005721 TST (R1)+ ;SKIP LAST LOCAL'S VALUE FOR LOOPING 28 011676 012703 000110 MOV #NUMQRG*2,R3 ;SET NUMBER OF LOCAL WORDS TO SAVE 29 011702 114142 30$: MOVB -(R1),-(R2) ;SAVE THE MSB OF LOCAL'S SIZE/VALUE 30 011704 114142 MOVB -(R1),-(R2) ; AND THE LSB 31 011706 005011 CLR (R1) ; THEN ZAP ITS SIZE/VALUE TO NOTHING 32 011710 005303 DEC R3 ;MORE TO GO? 33 011712 001373 BNE 30$ ;YEP, LOOP... 34 011714 066565 000006 000402 40$: ADD LCLSIZ(R5),QARRAY+<*4>(R5) ;ADD SAVE SIZE TO THE AUX 35 011722 001002 BNE 50$ ;EITHER PRIOR REALS OR THIS IS REAL 36 011724 005265 000404 INC QARRAY+<*4>+2(R5) ;ELSE COUNT INITIAL UNREAL SAVES 37 011730 005065 000032 50$: CLR CLNF(R5) ;ENSURE THAT THE COLON FLAG IS OFF 38 011734 PUSH SCANP,MPDL,QCMND,LCLSIZ,ITRST ;NOW PUSH ALL OLD DATA 011734 004467 000306 JSR R4,PUSH 011740 005 000 .BYTE $$$$$$,SCANP 39 011742 010265 000002 MOV R2,MPDL(R5) ;SAVE PDL AT MACRO'S START 40 011746 005015 CLR (R5) ;START MACRO OFF AT RELATIVE 0 41 011750 005065 000010 CLR ITRST(R5) ;NOT INTO ANY ITERATION YET 42 011754 012600 MOV (SP)+,R0 ;THIS IS Q-REG WITH THE MACRO IN IT 43 011756 000646 BR SETCMD ;GO OFF AND START THE MACRO TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 66 LOCAL Q-REGISTER HANDLING SUBROUTINES 1 .SBTTL LOCAL Q-REGISTER HANDLING SUBROUTINES 2 3 .ENABL LSB 4 5 011760 005765 000404 10$: TST QARRAY+<*4>+2(R5) ;ANY UNREAL LOCAL SAVE TO RESTORE? 6 011764 001514 BEQ 70$ ;NOPE, EXIT 7 011766 004767 000122 JSR PC,40$ ;YEP, ZAP THE CURRENT LOCALS 8 011772 005765 000402 CLNLCL: TST QARRAY+<*4>(R5) ;ANY LOCAL SAVE TO RESTORE? 9 011776 001770 BEQ 10$ ;NOPE, GO CHECK FOR UNREAL SAVES 10 012000 012746 011772' MOV #CLNLCL,-(SP) ;YEP, COME BACK TO CHECK AGAIN... 11 012004 004767 000104 20$: JSR PC,40$ ;CLEAR CURRENT LOCALS BEFORE THE POP 12 012010 012700 000045 MOV #AULQRG,R0 ;SET THE LOCAL AUX Q-REG NUMBER 13 012014 004767 177024 JSR PC,QREFR0 ; AND REFERENCE IT 14 012020 010104 MOV R1,R4 ;SAVE POINTER TO AUX'S SIZE 15 012022 062102 ADD (R1)+,R2 ;POINT JUST BEYOND THE SAVE AREA 16 012024 066502 000152 ADD QRSTOR(R5),R2 ; AND MAKE THE POINTER ABSOLUTE 17 012030 162702 000220 SUB #NUMQRG*4,R2 ; THEN ABSOLUTE TO SAVE AREA START 18 012034 005721 TST (R1)+ ;SKIP UNREAL COUNT FOR THE LOOP BELOW 19 012036 012703 000044 MOV #NUMQRG,R3 ;SET NUMBER OF LOCAL Q-REGS TO RESTORE 20 012042 112221 30$: MOVB (R2)+,(R1)+ ;RESTORE THE LSB OF LOCAL'S SIZE 21 012044 112221 MOVB (R2)+,(R1)+ ; AND THE MSB 22 012046 166114 177776 SUB -2(R1),(R4) ;REMOVE THAT SIZE FROM THE LOCAL AUX 23 012052 112221 MOVB (R2)+,(R1)+ ;RESTORE THE LSB OF LOCAL'S VALUE 24 012054 112221 MOVB (R2)+,(R1)+ ; AND THE MSB 25 012056 005303 DEC R3 ;MORE TO GO? 26 012060 001370 BNE 30$ ;YEP, LOOP... 27 012062 016100 177774 MOV -4(R1),R0 ;GET SIZE OF LAST LOCAL 28 012066 162700 000220 SUB #NUMQRG*4,R0 ;REMOVE THE 2 WDS/SAVED Q-REG 29 012072 012765 000111 000042 MOV #LCLQRG+,QNMBR(R5) ;SET THE LAST LOCAL Q-REG NUMBER 30 012100 000167 177304 JMP QADJ ;ADJUST LAST LOCAL TO PURGE SAVE AREA TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 67 LOCAL Q-REGISTER HANDLING SUBROUTINES 1 012104 005765 000006 POPLCL: TST LCLSIZ(R5) ;SHOULD WE POP A LOCAL Q-REG SAVE? 2 012110 003335 BGT 20$ ;YEP, GO DO A LOCAL CLEAR THEN POP 3 012112 002441 BLT 70$ ;NOPE, AND LEAVE CURRENT LOCALS ALONE 4 012114 005765 000402 40$: TST QARRAY+<*4>(R5) ;NOPE, SET NULL, BUT IS THIS UNREAL? 5 012120 001002 BNE 50$ ;CAN'T BE UNREAL IF MORE REAL IS LEFT 6 012122 005365 000404 DEC QARRAY+<*4>+2(R5) ;ELSE UNCOUNT INITIAL UNREAL SAVES 7 012126 005000 50$: CLR R0 ;CLEAR OUT CURRENT TOTAL LOCAL SIZE 8 012130 012701 000626 MOV #QARRAY+<*4>,R1 ;GET POINTER BEYOND LOCALS 9 012134 060501 ADD R5,R1 ; AND MAKE IT ABSOLUTE 10 012136 012702 000044 MOV #NUMQRG,R2 ;SET NUMBER OF LOCALS TO LOOK AT 11 012142 005041 60$: CLR -(R1) ;CLEAR OUT ANY LOCAL VALUE 12 012144 064100 ADD -(R1),R0 ;ACCUMULATE THE TOTAL LOCAL SIZE 13 012146 005011 CLR (R1) ; THEN ZAP ALL SIZES TO NOTHING 14 012150 005302 DEC R2 ;MORE TO GO? 15 012152 001373 BNE 60$ ;YEP, LOOP... 16 012154 010011 MOV R0,(R1) ;SET THE TOTAL SIZE INTO FIRST LOCAL 17 012156 001417 BEQ 70$ ;ZERO, SO NOTHING TO PURGE 18 012160 012765 000046 000042 MOV #LCLQRG,QNMBR(R5) ;SET THE FIRST LOCAL LEVEL Q-REG 19 012166 005000 CLR R0 ;WE WANT TO PURGE AWAY ALL OLD DATA 20 012170 000167 177214 JMP QADJ ;GO ADJUST THE FIRST LOCAL TO ZERO... 21 22 012174 016500 000064 GETXTP: MOV P(R5),R0 ;GET . 23 012200 020065 000150 CMP R0,ZZ(R5) ;TOO FAR? 24 012204 103004 BHIS 70$ ;YES [BHIS=BCC] 25 012206 066500 000144 ADD TXSTOR(R5),R0 ;NO, MAKE ABSOLUTE 26 012212 111000 MOVB (R0),R0 ; AND GET CHARACTER 27 012214 000261 SEC ;OK [CARRY SET] 28 012216 000207 70$: RTS PC ;EXIT 29 30 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 68 GENERAL SUBROUTINES 1 .SBTTL GENERAL SUBROUTINES 2 3 .ENABL LSB 4 5 012220 010046 10$: MOV R0,-(SP) ;MOVE CO-ROUTINE RETURN TO STACK 6 012222 112400 MOVB (R4)+,R0 ;GET ITEM COUNT 7 012224 112401 MOVB (R4)+,R1 ;GET STARTING OFFSET 8 012226 060501 ADD R5,R1 ;MAKE THAT ABSOLUTE 9 012230 016502 000074 MOV PDL(R5),R2 ;GET THE CURRENT PUSH-DOWN POINTER 10 012234 004736 JSR PC,@(SP)+ ; AND CO-ROUTINE IT 11 012236 010265 000074 MOV R2,PDL(R5) ;UPDATE THE PUSH-DOWN POINTER 12 012242 012600 MOV (SP)+,R0 ;RESTORE R0 FROM THE 'JSR R0' 13 012244 000204 RTS R4 ; AND FINAL EXIT 14 15 012246 005765 000060 PUSH: TST PCNT(R5) ;HAVE PAREN'S BEEN PUSHED? 16 012252 001023 BNE 50$ ;YES, ERROR 17 012254 004067 177740 PUSHP: JSR R0,10$ ;DO THE COMMON THING 18 012260 020265 000642 20$: CMP R2,SCHBUF(R5) ;OVERFLOW? 19 012264 103012 BHIS 40$ ;YES, ERROR 20 012266 012122 MOV (R1)+,(R2)+ ;NO, SO PUSH AN ITEM 21 012270 005300 DEC R0 ; AND 22 012272 001372 BNE 20$ ; LOOP 23 012274 000207 RTS PC ;THEN CO-ROUTINE RETURN 24 25 012276 004067 177716 POP: JSR R0,10$ ;DO THE COMMON THING 26 012302 014241 30$: MOV -(R2),-(R1) ;POP AN ITEM 27 012304 005300 DEC R0 ; AND 28 012306 001375 BNE 30$ ; LOOP 29 012310 000207 RTS PC ;THEN CO-ROUTINE RETURN 30 31 012312 40$: ERROR PDO,<"Push-down list overflow"> 012312 004467 176204 JSR R4,ERRMSG 012316 062257 .RAD50 /PDO/ 012320 000561' .WORD $$$$$$ 000561 120 165 163 .ASCIZ "Push-down list overflow" 32 33 012322 50$: ERROR MRP,<"Missing )"> 012322 004467 176174 JSR R4,ERRMSG 012326 052040 .RAD50 /MRP/ 012330 000611' .WORD $$$$$$ 000611 115 151 163 .ASCIZ "Missing )" 34 35 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 69 GENERAL SUBROUTINES 1 .ENABL LSB 2 3 012332 004767 176030 QSKP: JSR PC,QCHK ;CHECK FOR A QUOTE CHARACTER 4 012336 011565 000036 MOV (R5),OSCANP(R5) ; AND SAVE "SCANP" 5 012342 004767 000212 QSKPE: JSR PC,SCNQST ;SCAN CHECKING THE QUOTE CHARACTER 6 012346 001375 BNE QSKPE ;NOT A MATCH, CONTINUE SCANNING 7 012350 000207 10$: RTS PC ;EXIT 8 9 012352 020065 000150 BZCHK: CMP R0,ZZ(R5) ;TOO BIG? 10 012356 101774 BLOS 10$ ;NOPE 11 012360 ERROR POP,<"Pointer off page"> 012360 004467 176136 JSR R4,ERRMSG 012364 063150 .RAD50 /POP/ 012366 000623' .WORD $$$$$$ 000623 120 157 151 .ASCIZ "Pointer off page" 12 13 .DSABL LSB 14 15 .ENABL LSB 16 17 012370 012700 000001 10$: MOV #1,R0 ;PRETEND WE SAW A ONE 18 012374 004767 174330 JSR PC,NCOM ; AND COMPUTE ON IT 19 012400 016500 000022 GETN: MOV N(R5),R0 ;GET THE NUMBER 20 012404 005265 000020 INC NFLG(R5) ;REALLY THERE? 21 012410 001367 BNE 10$ ;NOPE 22 012412 000207 RTS PC ;YES 23 24 .DSABL LSB 25 26 012414 004767 177712 QSKPR0: JSR PC,QSKP ;SKIP THE QUOTED STRING 27 012420 004767 175734 JSR PC,IREST ;THEN RESTORE ESCAPE AS THE QUOTE 28 012424 016503 000036 MOV OSCANP(R5),R3 ;GET ORIGINAL SCAN POINTER 29 012430 011500 MOV (R5),R0 ;GET ENDING (THE QUOTE) POINTER 30 012432 005300 DEC R0 ;BACK UP OVER THE QUOTE 31 012434 160300 SUB R3,R0 ; AND FIND THE STRING'S LENGTH 32 012436 000207 RTS PC ;EXIT WITH CC'S AS INDICATION 33 34 012440 005065 000020 CHKCLN: CLR NFLG(R5) ;CLEAR THE NUMBER FLAG 35 012444 005765 000032 CHKCLO: TST CLNF(R5) ;IS COLON MODIFIER PENDING? 36 012450 100004 BPL 10$ ;NO 37 012452 012700 177777 MOV #-1,R0 ;YES, SET UP RESULT 38 012456 004767 174246 JSR PC,NCOM ; AS A -1 39 012462 005065 000032 10$: CLR CLNF(R5) ;NOW TURN OFF PENDING COLON 40 012466 000207 RTS PC ; AND EXIT TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 70 GENERAL SUBROUTINES 1 012470 004767 165456 SCNUPP: JSR PC,SCAN ;SCAN FIRST 2 012474 020027 000141 UPPERC: CMP R0,#'A+40 ;ALREADY OK? 3 012500 103405 BLO 10$ ;YES 4 012502 020027 000172 CMP R0,#'Z+40 ;MIGHT BE... 5 012506 101002 BHI 10$ ;IT IS, JUST EXIT 6 012510 042700 000040 BIC #40,R0 ;ELSE MAKE LOWER CASE INTO UPPER CASE 7 012514 000207 10$: RTS PC ;NOW EXIT 8 9 012516 012616 SCNCTL: MOV (SP)+,(SP) ;POP ONE STACK ITEM 10 012520 004767 165426 JSR PC,SCAN ;SCAN A CHARACTER 11 012524 004767 177744 MAKCTL: JSR PC,UPPERC ;FORCE CHARACTER TO UPPER CASE 12 012530 020027 000100 CMP R0,#'@ ;IS CHARACTER "@" OR GREATER? 13 012534 103406 BLO 10$ ;NOPE, AN ERROR 14 012536 020027 000137 CMP R0,#'_ ;IS CHARACTER "_" OR LESS? 15 012542 101003 BHI 10$ ;NOPE, AN ERROR ALSO 16 012544 042700 000100 BIC #100,R0 ;IT'S "@" THROUGH "_", MAKE A CONTROL 17 012550 000207 RTS PC ; AND EXIT 18 19 012552 10$: ERROR IUC,<"Illegal ^ character"> 012552 004467 175710 JSR R4,ERRORC 012556 151 .BYTE 'U-<'A-1>*5 012557 136 .BYTE '^ 20 21 012560 004767 165366 SCNQST: JSR PC,SCAN ;SCAN A CHARACTER 22 012564 020065 000040 CMP R0,QUOTE(R5) ;SET CC'S AGAINST MATCHING THE QUOTE 23 012570 000207 RTS PC ; AND EXIT WITH CC'S SET 24 25 .SBTTL SORT 26 ; INVOKED VIA "SORT" MACRO 27 ; R0 = CHARACTER TO SORT 28 ; (R1 IS CLOBBERED) 29 30 012572 016503 000022 SORTC: MOV N(R5),R3 ;GET ARGUMENT 31 012576 005002 SORTZ: CLR R2 ;SET UP FOR THE "ADD" CHAIN 32 012600 004767 177664 SORTS: JSR PC,SCNUPP ;GET CHARACTER TO SORT ON 33 012604 012401 SORT: MOV (R4)+,R1 ;GET TABLE ADDRESS 34 012606 120041 10$: CMPB R0,-(R1) ;GET A MATCH? 35 012610 101376 BHI 10$ ;NO, KEEP GOING 36 012612 103410 BLO 20$ ;NO, TOO FAR 37 012614 121127 177777 CMPB (R1),#-1 ;A BOGUS MATCH ON THE TERMINATOR? 38 012620 001405 BEQ 20$ ;YEP, DON'T CALL IT A MATCH... 39 012622 164401 SUB -(R4),R1 ;NOPE, FIND NET CHANGE (<0) 40 012624 005101 COM R1 ;MAKE THAT 0,1,2, ETC. 41 012626 006301 ASL R1 ;NOW TIMES 2 FOR WORD ADDRESSING 42 012630 061401 ADD (R4),R1 ;FIND POINTER INTO THE TABLE 43 012632 011104 MOV (R1),R4 ;SET A NEW RETURN ADDRESS 44 012634 000204 20$: RTS R4 ;NOW EXIT TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 71 SORT 1 .ENABL LSB 2 3 012636 020027 000015 TERMS: CMP R0,#FF+1 ;TERMINATOR TEST 4 012642 103002 BHIS 20$ ;TOO BIG, RETURN C=0 5 012644 022700 000011 10$: CMP #LF-1,R0 ;SET CARRY ON LOW RANGE 6 012650 000207 20$: RTS PC ;NOW EXIT 7 8 012652 020027 000072 NUMER: CMP R0,#'9+1 ;NUMERIC TEST 9 012656 103002 BHIS 30$ ;RETURN CARRY CLEAR IF HIGH 10 012660 022700 000057 CMP #'0-1,R0 ;SET CARRY ON LOW RANGE 11 012664 000207 30$: RTS PC ;NOW EXIT 12 13 012666 020027 000056 SYMCHR: CMP R0,#'. ;.? 14 012672 001764 BEQ 10$ ;YES, GO EXIT C=1 (LF .LO. ".") 15 012674 020027 000044 CMP R0,#'$ ;$? 16 012700 001761 BEQ 10$ ;YES, GO EXIT C=1 (LF .LO. "$") 17 012702 020065 000134 CMP R0,SYMSPC(R5) ;OTHER SPECIAL? 18 012706 001756 BEQ 10$ ;YES (LF .HIS. 0) OR (LF .LO. SPECIAL) 19 012710 004767 177736 ALPHAN: JSR PC,NUMER ;CHECK FOR NUMERIC FIRST 20 012714 103407 BCS 40$ ;EXIT IF SO 21 012716 004767 177552 ALPHA: JSR PC,UPPERC ;FORCE LOWER CASE INTO UPPER CASE 22 012722 020027 000133 ALPHAU: CMP R0,#'Z+1 ;ALPHABETIC TEST 23 012726 103002 BHIS 40$ ;RETURN C=0 IF TOO HIGH 24 012730 022700 000100 CMP #'A-1,R0 ;SET CARRY ON LOW RANGE 25 012734 000207 40$: RTS PC ;NOW EXIT 26 27 012736 162700 000040 ALPHAL: SUB #40,R0 ;MAKE LOWER CASE INTO UPPER CASE 28 012742 000767 BR ALPHAU ; THEN GO CHECK FOR UPPER CASE 29 30 .DSABL LSB 31 32 012744 012446 TSTNXT: MOV (R4)+,-(SP) ;SAVE THE ARGUMENT CHARACTER 33 012746 011500 MOV (R5),R0 ;GET COMMAND POINTER 34 012750 020065 000044 CMP R0,QLENGT(R5) ;END OF COMMAND? 35 012754 103015 BHIS 10$ ;YES, SO EXIT (C=0) 36 012756 066500 000066 ADD QBASE(R5),R0 ;NO, ADD COMMAND OFFSET 37 012762 066500 000152 ADD QRSTOR(R5),R0 ; AND MAKE ABSOLUTE 38 012766 111000 MOVB (R0),R0 ;FETCH CHARACTER 39 012770 004767 177500 JSR PC,UPPERC ; AND MAKE UPPER CASE 40 012774 020016 CMP R0,(SP) ;MATCH? 41 012776 001004 BNE 10$ ;NO, EXIT (C=0) 42 013000 005215 INC (R5) ;YES, BUMP POINTER 43 013002 004767 165170 JSR PC,TRACE ;TRACE THE CHARACTER 44 013006 005116 COM (SP) ;INDICATE FOUND (C=1) 45 013010 006326 10$: ASL (SP)+ ;SET C-BIT IF FOUND 46 013012 000204 RTS R4 ; AND EXIT TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 72 SORT 1 013014 004767 000000G CRLFNO: JSR PC,NOCTLO ;CANCEL ANY CONTROL/O 2 013020 012700 000015 CRLF: MOV #CR,R0 ;NOW SET RETURN 3 013024 004767 000000G JSR PC,TYPE ; AND TYPE IT 4 013030 012700 000012 MOV #LF,R0 ;NOW SET LINE FEED 5 013034 000167 000000G JMP TYPE ; AND TYPE IT 6 7 013040 005265 000030 NLINES: INC CFLG(R5) ;WAS THERE A COMMA? 8 013044 001415 BEQ 10$ ;YES 9 013046 005065 000030 CLR CFLG(R5) ;NO, CLEAR THE FLAG 10 013052 016565 000064 000024 MOV P(R5),M(R5) ;SAVE . IN "M" 11 013060 004767 166540 JSR PC,.VVV.N ; AND MOVE . FORWARD "N" LINES 12 013064 016565 000064 000022 MOV P(R5),N(R5) ;"N" IS THE NEW . 13 013072 016565 000024 000064 MOV M(R5),P(R5) ;RESTORE THE ORIGINAL . 14 013100 005065 000020 10$: CLR NFLG(R5) ;USE UP THE NUMBER 15 013104 016500 000022 MOV N(R5),R0 ;GET NTH CHARACTER POSITION 16 013110 020065 000024 CMP R0,M(R5) ;IS IT AFTER MTH CHARACTER? 17 013114 103007 BHIS 20$ ;YES 18 013116 016565 000024 000022 MOV M(R5),N(R5) ;NO, SO SWITCH 19 013124 010065 000024 MOV R0,M(R5) ; N AND M 20 013130 016500 000022 MOV N(R5),R0 ;NOW GET NTH POSITION AGAIN 21 013134 004767 177212 20$: JSR PC,BZCHK ;IN RANGE? 22 013140 166500 000024 SUB M(R5),R0 ;FIND DISTANCE BETWEEN N AND M 23 013144 000207 RTS PC ;THEN EXIT TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 73 SORT 1 .ENABL LSB 2 3 013146 120027 000240 CVTSRH: CMPB R0,#240 ;DO WE NEED TO TRIM THIS CHARACTER 4 013152 103016 BHIS 20$ ;NOPE 5 013154 042700 177600 BIC #^C<177>,R0 ;YEP, SO TRIM IT ALREADY 6 013160 001013 BNE 20$ ;IT'S NOT THE "SPECIAL NEXT" CODE 7 013162 112200 MOVB (R2)+,R0 ;ELSE GET THE REAL CHARACTER 8 013164 030027 000040 CVTSPC: BIT R0,#40 ;IS IT SPECIAL FOR 000 OR 200? 9 013170 001405 BEQ 10$ ;NOPE, IT'S FOR 201-237 10 013172 120027 000177 CMPB R0,#177 ;MIGHT BE... 11 013176 001402 BEQ 10$ ;NOPE, IT'S FOR 377 12 013200 042700 177440 BIC #^C<377>!40,R0 ;YEP, FIX UP FOR THE 000 OR 200 13 013204 062700 177600 10$: ADD #^C<177>,R0 ;RESTORE ORIGINAL SPECIAL CHARACTER 14 013210 000207 20$: RTS PC ;EXIT 15 16 .DSABL LSB 17 18 013212 016502 000642 GETQRG: MOV SCHBUF(R5),R2 ;GUESS AT "_" (SEARCH BUFFER) 19 013216 TSTNXT '_ ;SPECIAL CASE OF "_"? 013216 004467 177522 JSR R4,TSTNXT 013222 000137 .WORD '_ 20 013224 103406 BCS 10$ ;YES 21 013226 TSTNXT '* ;SPECIAL CASE OF "*"? 013226 004467 177512 JSR R4,TSTNXT 013232 000052 .WORD '* 22 013234 103010 BCC 30$ ;NO, NORMAL Q-REG REFERENCE 23 013236 016502 000644 MOV FILBUF(R5),R2 ;YES, GET FILENAME BUFFER POINTER 24 013242 010200 10$: MOV R2,R0 ;COPY THE START OF DATA POINTER 25 013244 105720 20$: TSTB (R0)+ ;END OF DATA YET? 26 013246 001376 BNE 20$ ;NOPE, LOOP 27 013250 160200 SUB R2,R0 ;YEP, FIND SIZE+1 (THE NULL...) 28 013252 005300 DEC R0 ; AND, THEN, THE REAL SIZE 29 ;CLC ;C=0 FROM THE 'SUB' ABOVE 30 013254 000207 RTS PC ;EXIT C=0 FOR "_" OR "*" 31 32 013256 004767 175510 30$: JSR PC,QREF ;REFERENCE THE Q-REG 33 013262 011100 MOV (R1),R0 ;PICKUP SIZE OF THE Q-REG 34 013264 000261 SEC ;SET C=1 FOR NORMAL REFERENCE 35 013266 000207 RTS PC ; AND EXIT TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 74 SORT 1 013270 012304 ZEROD: MOV (R3)+,R4 ;PICKUP OUTPUT ROUTINE ADDRESS 2 013272 010316 MOV R3,(SP) ;THEN SET THE RETURN ADDRESS 3 013274 016546 000022 MOV N(R5),-(SP) ;GET NUMBER 4 013300 100007 BPL 10$ ;IT IS + 5 013302 005765 000070 TST NMRBAS(R5) ;IT IS -, BUT IS RADIX DECIMAL? 6 013306 001004 BNE 10$ ;IF NOT DECIMAL, THEN NO SIGN 7 013310 012700 000055 MOV #'-,R0 ;IF DECIMAL, THEN SIGNED 8 013314 004714 JSR PC,(R4) ;OUTPUT MINUS SIGN 9 013316 005416 NEG (SP) ; AND MAKE + 10 013320 012600 10$: MOV (SP)+,R0 ;RESTORE THE NUMBER 11 013322 012702 000010 MOV #8.,R2 ;RADIX = 8? 12 013326 005765 000070 TST NMRBAS(R5) ;THIS TELLS US... 13 013332 003004 BGT 30$ ;YES, OCTAL 14 013334 001402 BEQ 20$ ;NO, DECIMAL 15 013336 062702 000006 ADD #6,R2 ;NO, HEXIDECIMAL 16 013342 005722 20$: TST (R2)+ ;FORM CORRECT RADIX 17 013344 004767 173466 30$: JSR PC,DIVD ;NOW DIVIDE 18 013350 010146 MOV R1,-(SP) ;SAVE REMAINDER 19 013352 005700 TST R0 ;MORE TO GO? 20 013354 001373 BNE 30$ ;YES 21 013356 012600 40$: MOV (SP)+,R0 ;GET BACK A DIGIT 22 013360 020027 000017 CMP R0,#15. ;DIGIT OR RETURN ADDRESS? 23 013364 101011 BHI 60$ ;RETURN ADDRESS 24 013366 062700 000060 ADD #'0,R0 ;DIGIT 25 013372 020027 000071 CMP R0,#'9 ;HEXIDECIMAL DIGIT? 26 013376 101402 BLOS 50$ ;NO 27 013400 062700 000007 ADD #<'A-10.>-'0,R0 ;YES, CORRECT IT 28 013404 004714 50$: JSR PC,(R4) ;OUTPUT IT 29 013406 000763 BR 40$ ; AND LOOP 30 31 013410 000110 60$: JMP (R0) ;EXIT TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 75 SORT 1 .ENABL LSB 2 3 013412 016504 000642 GETSCH: MOV SCHBUF(R5),R4 ;GET SEARCH BUFFER START 4 013416 010046 GETSTG: MOV R0,-(SP) ;NOW SAVE THE ARGUMENT 5 013420 010446 MOV R4,-(SP) ; AND THE STARTING POINT 6 013422 004767 174740 JSR PC,QCHK ;SET UP FOR ANY QUOTED STRING 7 013426 005002 10$: CLR R2 ;GET INPUT FROM SCAN 8 013430 005702 20$: TST R2 ;WHERE DO THEY COME FROM? 9 013432 001125 BNE 100$ ;A Q-REG IF NON-ZERO 10 013434 004767 177120 JSR PC,SCNQST ;GET A CHARACTER CHECKING FOR QUOTE 11 013440 001571 BEQ 170$ ;END OF SEARCH STRING IF QUOTE MATCH 12 013442 020027 000136 CMP R0,#'^ ;THE CONTROL CHARACTER PREFIX? 13 013446 001011 BNE 30$ ;NOPE 14 013450 036527 000114 000000G BIT EDIT(R5),#ED$CTL ;YEP, BUT ARE WE ALLOWING IT?? 15 013456 001005 BNE 30$ ;SKIP CONVERSION IF NOT ALLOWED 16 013460 004767 177074 JSR PC,SCNQST ;GET CHARACTER TO MAKE A CONTROL CHAR 17 013464 001437 BEQ 50$ ;WHOOPS, IT IS OUR QUOTE CHARACTER 18 013466 004767 177032 JSR PC,MAKCTL ;ELSE MAKE CHARACTER INTO CONTROL CHAR 19 013472 005001 30$: CLR R1 ;SIGNAL NO SPECIAL MODIFICATIONS 20 013474 020027 000021 CMP R0,#'Q-100 ;CTRL/Q? 21 013500 001413 BEQ 40$ ;YES, GET NEXT LITERALLY 22 013502 020027 000022 CMP R0,#'R-100 ;CTRL/R? 23 013506 001410 BEQ 40$ ;YES, GET NEXT LITERALLY 24 013510 005101 COM R1 ;NO, SIGNAL FORCE LOWER CASE 25 013512 020027 000026 CMP R0,#'V-100 ;CTRL/V? 26 013516 001404 BEQ 40$ ;YES, NEXT BECOMES LOWER CASE 27 013520 020027 000027 CMP R0,#'W-100 ;CTRL/W? 28 013524 001074 BNE 110$ ;NOPE 29 013526 005401 NEG R1 ;YES, SIGNAL FORCE UPPER CASE 30 013530 004767 177024 40$: JSR PC,SCNQST ;GET THE CHARACTER TO MODIFY 31 013534 001413 BEQ 50$ ;WHOOPS, IT IS OUR QUOTE CHARACTER 32 013536 006301 ASL R1 ;WHAT SHOULD WE DO WITH IT?? 33 013540 001504 BEQ 130$ ;NOTHING (CTRL/Q OR CTRL/R) 34 013542 030027 000100 BIT R0,#100 ;IS IT REALLY A CONTROL CHARACTER? 35 013546 001501 BEQ 130$ ;YES, DON'T ALTER IT 36 013550 052700 000040 BIS #40,R0 ;FORCE INTO LOWER CASE 37 013554 103476 BCS 130$ ;LOWER CASE IT IS (CTRL/V) 38 013556 042700 000040 BIC #40,R0 ;ELSE FORCE UPPER CASE (CTRL/W) 39 013562 000473 BR 130$ ; THEN STORE IT IN SEARCH BUFFER 40 41 013564 105014 50$: CLRB (R4) ;ENSURE A MARKED END... 42 013566 ERROR ISS,<"Illegal search string"> 013566 004467 174730 JSR R4,ERRMSG 013572 035513 .RAD50 /ISS/ 013574 000644' .WORD $$$$$$ 000644 111 154 154 .ASCIZ "Illegal search string" TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 76 SORT 1 013576 005702 60$: TST R2 ;^E - ARE WE IN Q-REG FETCH? 2 013600 001062 BNE 120$ ;YES, USE AS NORMAL ^E 3 013602 TSTNXT 'U ;NO, IS IT Q-REG VALUE? 013602 004467 177136 JSR R4,TSTNXT 013606 000125 .WORD 'U 4 013610 103021 BCC 90$ ;NOPE 5 013612 004767 175150 JSR PC,QREFVL ;YEP, REFERENCE THE Q-REG FOR VALUE 6 013616 116100 177776 MOVB -2(R1),R0 ;GET Q-REG'S VALUE AS A BYTE 7 013622 100053 BPL 130$ ;JUST GO STORE IT UNLESS NEGATIVE 8 013624 120027 000240 70$: CMPB R0,#240 ;IS IT ONE OF THE C1 CONTROLS? 9 013630 103403 BLO 80$ ;YES, WE MUST STORE IT SPECIALLY 10 013632 120027 177777 CMPB R0,#-1 ;WOULD IT LOOK LIKE THE TERMIATOR? 11 013636 001045 BNE 130$ ;NOPE, JUST GO STORE IT AS IS 12 013640 042700 177600 80$: BIC #^C<177>,R0 ;TRIM THE "NEGATIVE" BIT FROM VALUE 13 013644 001060 BNE 160$ ;JUST GO STORE SPECIALLY IF WASN'T 200 14 013646 012700 000040 MOV #40,R0 ;INDICATE A 200 WITH THIS CODE 15 013652 000455 BR 160$ ; AND GO STORE IT SPECIALLY 16 17 013654 90$: TSTNXT 'Q ;IS IT Q-REG FETCH? 013654 004467 177064 JSR R4,TSTNXT 013660 000121 .WORD 'Q 18 013662 012700 000205 MOV #'E-100+200,R0 ;RESTORE CHARACTER AS CTRL/E 19 013666 103031 BCC 130$ ;NOT Q, ENTER CTRL/E AS SPECIAL 20 013670 004767 177316 JSR PC,GETQRG ;Q, SO FIND Q-REG OR "_" OR "*" 21 013674 005316 DEC (SP) ;ALWAYS SOMETHING STORED IF Q-REG 22 013676 010001 MOV R0,R1 ;MOVE THE SIZE OVER TO HERE 23 013700 103002 BCC 100$ ;"_" OR "*", ALL SET 24 013702 066502 000152 ADD QRSTOR(R5),R2 ;Q-REG, FIND THE ABSOLUTE START 25 013706 005301 100$: DEC R1 ;ANYTHING LEFT IN Q-REG? 26 013710 100646 BMI 10$ ;NO, GO CLEAR FLAG 27 013712 112200 MOVB (R2)+,R0 ;YES, GET A BYTE 28 013714 100743 BMI 70$ ;HANDLE IT SPECIALLY IF NEGATIVE 29 013716 020027 000005 110$: CMP R0,#'E-100 ;CTRL/E? 30 013722 001725 BEQ 60$ ;YES 31 013724 020027 000016 CMP R0,#'N-100 ;CTRL/N? 32 013730 001406 BEQ 120$ ;YES, THAT IS SPECIAL 33 013732 020027 000023 CMP R0,#'S-100 ;CTRL/S? 34 013736 001403 BEQ 120$ ;YES, THAT IS SPECIAL 35 013740 020027 000030 CMP R0,#'X-100 ;CTRL/X? 36 013744 001002 BNE 130$ ;NOPE, SO NORMAL SEARCH CHARACTER 37 013746 052700 000200 120$: BIS #200,R0 ;FLAG THE SPECIAL CHARACTERS 38 013752 110024 130$: MOVB R0,(R4)+ ;STORE IN SEARCH BUFFER 39 013754 001411 BEQ 150$ ;GO PROCESS NULL SPECIALLY 40 013756 126427 000001 177777 CMPB 1(R4),#-1 ;MORE ROOM? 41 013764 001221 BNE 20$ ;YES, SO CONTINUE 42 013766 105014 140$: CLRB (R4) ;NO, ENSURE A MARKED END... 43 013770 ERROR STL,<"String too long"> 013770 004467 174526 JSR R4,ERRMSG 013774 074754 .RAD50 /STL/ 013776 000672' .WORD $$$$$$ 000672 123 164 162 .ASCIZ "String too long" TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 77 SORT 1 014000 012700 000240 150$: MOV #240,R0 ;INDICATE A NULL WITH THIS CODE 2 014004 005304 DEC R4 ; AND BACK UP THE BUFFER POINTER 3 014006 112724 000200 160$: MOVB #200,(R4)+ ;STORE THE SPECIAL "SPECIAL NEXT" CODE 4 014012 126427 000001 177777 CMPB 1(R4),#-1 ;MORE ROOM LEFT? 5 014020 001354 BNE 130$ ;YEP, GO STORE THE SPECIAL 6 014022 000761 BR 140$ ;NOPE, STRING IS TOO LONG 7 8 014024 020426 170$: CMP R4,(SP)+ ;DID WE STORE ANYTHING? 9 014026 001401 BEQ 180$ ;NOPE, USE PREVIOUS STRING 10 014030 105014 CLRB (R4) ;YEP, ENSURE A MARKED END 11 014032 012602 180$: MOV (SP)+,R2 ;RESTORE THE ARGUMENT 12 014034 000207 RTS PC ;EXIT WITH CC'S SET 13 14 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 78 SORT 1 .ENABL LSB 2 3 014036 016500 000024 SEARCB: MOV M(R5),R0 ;GET START OF SEARCH BOUNDARY (M) 4 014042 005265 000030 INC CFLG(R5) ;IS IT REAL? 5 014046 001410 BEQ 10$ ;YES 6 014050 005065 000030 CLR CFLG(R5) ;NO, CLEAR COMMA FLAG 7 014054 004767 173164 JSR PC,.QQQ.Q ;CALCULATE "N^Q" FOR END BOUNDARY 8 014060 016500 000064 MOV P(R5),R0 ;GET START BOUNDARY (.) 9 014064 060065 000022 ADD R0,N(R5) ; AND FORM END BOUNDARY (.+(N^Q)) 10 014070 004767 176256 10$: JSR PC,BZCHK ;CHECK START FOR WITHIN RANGE 11 014074 010046 MOV R0,-(SP) ; THEN SAVE START 12 014076 004767 176276 JSR PC,GETN ;GET END OF SEARCH BOUNDARY (N) 13 014102 004767 176244 JSR PC,BZCHK ;CHECK END OF WITHIN RANGE 14 014106 004767 177300 JSR PC,GETSCH ;NOW BUILD THE SEARCH ARGUMENT 15 014112 011601 MOV (SP),R1 ;GET BACK START 16 014114 012716 177400 MOV #177400,(SP) ;SET FAILURE RETURN VALUE (177400) 17 014120 010246 MOV R2,-(SP) ;SAVE END FOR DELTA-DOT CALCULATION 18 014122 010246 MOV R2,-(SP) ; AND SAVE END AS END-OF-TEXT 19 014124 012702 000001 MOV #1,R2 ;GUESS AT FORWARDS, HIT COUNTER IS +1 20 014130 160166 000002 SUB R1,2(SP) ;FIND ALLOWED DELTA-DOT (END-START) 21 014134 100050 BPL 60$ ;IT'S FORWARDS, ALL SET 22 014136 010116 MOV R1,(SP) ;IT'S BACKWARDS, SET REAL END-OF-TEXT 23 014140 005402 NEG R2 ; AND HIT COUNTER IS -1 24 014142 005466 000002 NEG 2(SP) ; AND MAKE DELTA-DOT POSITIVE 25 014146 005266 000002 INC 2(SP) ; AND WITH CORRECT CORRECTION 26 014152 000441 BR 60$ ;NOW ALL SET 27 28 014154 005046 SEARCH: CLR -(SP) ;SET FAILURE RETURN VALUE (0) 29 014156 016546 000024 MOV M(R5),-(SP) ;SET (TRIAL) DOT MOVEMENT BOUND 30 014162 100001 BPL 20$ ;ENSURE THE BOUND LIMIT 31 014164 005416 NEG (SP) ; IS POSITIVE 32 014166 005265 000030 20$: INC CFLG(R5) ;REALLY A BOUNDED SEARCH? 33 014172 001410 BEQ 30$ ;YES, BOUND ALL SET UP 34 014174 005065 000030 CLR CFLG(R5) ;NO, CLEAR THE COMMA FLAG 35 014200 005016 CLR (SP) ;SET INFINITE (65536) BOUND LIMIT 36 014202 026527 000032 177776 CMP CLNF(R5),#-2 ;OLD STYLE 'NO MOVE' SEARCH?? 37 014210 001003 BNE 40$ ;NOPE 38 014212 005216 INC (SP) ;YEP, SET BOUND FOR NO MOVEMENT 39 014214 105166 000003 30$: COMB 3(SP) ;SET FAILURE RETURN VALUE (177400) 40 014220 004767 176154 40$: JSR PC,GETN ;GET THE HIT NUMBER 41 014224 004767 177162 JSR PC,GETSCH ;NOW BUILD THE SEARCH ARGUMENT 42 014230 001006 BNE 50$ ;NON-ZERO ARGUMENT, SO PROCEED 43 014232 ERROR ISA,<"Illegal search arg"> 014232 004467 174264 JSR R4,ERRMSG 014236 035471 .RAD50 /ISA/ 014240 000712' .WORD $$$$$$ 000712 111 154 154 .ASCIZ "Illegal search arg" TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 79 SORT 1 014242 005046 .SURCH: CLR -(SP) ;SET FAILURE RETURN VALUE (0) 2 014244 005046 CLR -(SP) ;ALLOW INFINITE (65536) DOT MOVEMENTS 3 014246 016501 000064 50$: MOV P(R5),R1 ;GET STARTING POINT 4 014252 016546 000150 MOV ZZ(R5),-(SP) ; AND ENDING POINT 5 014256 066501 000144 60$: ADD TXSTOR(R5),R1 ;MAKE START ABSOLUTE 6 014262 066516 000144 ADD TXSTOR(R5),(SP) ; AND END ABSOLUTE 7 014266 012746 000001 MOV #1,-(SP) ;GUESS AT FORWARDS MOVEMENT (+1) 8 014272 010246 MOV R2,-(SP) ;SAVE HIT COUNTER, CHECK ITS SIGN 9 014274 100005 BPL 70$ ;POSITIVE, MOVE . BY +1 EACH FAILURE 10 014276 005466 000002 NEG 2(SP) ;NEGATIVE, MOVE . BY -1 EACH FAILURE 11 ;SEC ; (C=1 FROM THE 'NEG' ABOVE) 12 014302 106066 000011 RORB 11(SP) ;INDICATE NO PAGING DESIRED 13 014306 005416 NEG (SP) ;NOW GET A POSITIVE HIT COUNTER 14 014310 005065 000076 70$: CLR LSCHSZ(R5) ;SET LAST STRING SIZE TO 0 15 014314 010103 80$: MOV R1,R3 ;GET STARTING POINT 16 014316 016504 000642 MOV SCHBUF(R5),R4 ; AND SEARCH STRING START 17 014322 012702 177777 MOV #-1,R2 ;SET CTRL/N INDICATOR INITIALLY 18 014326 005202 .SUR.N: INC R2 ;FAILURE, BUT REVERSE SENSE? 19 014330 001030 BNE 110$ ;O.K., A REAL FAILURE 20 014332 020366 000004 .SUR.C: CMP R3,4(SP) ;END OF TEXT? 21 014336 103416 BLO 100$ ;NOPE 22 014340 105714 TSTB (R4) ;YEP, BUT DOES IT MATCH END OF STRING? 23 014342 001445 BEQ 140$ ;YES, SO ALL DONE (FOUND) 24 014344 005766 000002 TST 2(SP) ;NO, SEARCHING BACKWARDS?? 25 014350 100420 BMI 110$ ;IF BACKWARDS THEN MOVE . IF POSSIBLE 26 014352 106266 000011 90$: ASRB 11(SP) ;IS THIS A BOUNDED SEARCH? 27 014356 103461 BCS 160$ ;YES, SO KEEP . 28 014360 032765 000000G 000114 BIT #ED$SRH,EDIT(R5) ;RESET . ON SEARCH FAILURE? 29 014366 001055 BNE 160$ ;NOPE, SO DON'T 30 014370 005003 CLR R3 ;YEP, SO .=0 31 014372 000451 BR 150$ ; AND EXIT 32 33 014374 112400 100$: MOVB (R4)+,R0 ;GET A STRING CHARACTER 34 014376 100504 BMI .SUR.S ;PARITY BIT MEANS SPECIAL 35 014400 001426 BEQ 140$ ;NULL MEANS END OF STRING 36 014402 120023 .SUR.M: CMPB R0,(R3)+ ;MATCH? 37 014404 001053 BNE 170$ ;NO, MIGHT BE A FAILURE 38 014406 005202 .SUR.Y: INC R2 ;SUCCESS, BUT REVERSE SENSE? 39 014410 001350 BNE .SUR.C ;O.K., SO CONTINUE 40 014412 012704 177777 110$: MOV #-1,R4 ;SET MOVEMENT AMOUNT TO ONE 41 014416 005204 120$: INC R4 ;ARE WE DONE MOVING DOT YET? 42 014420 003335 BGT 80$ ;YEP, KEEP SEARCHING 43 014422 066601 000002 ADD 2(SP),R1 ;NOPE, MOVE . ONE POSITION 44 014426 005366 000006 DEC 6(SP) ;ALLOWED TO MOVE DOT THIS FAR? 45 014432 001747 BEQ 90$ ;NOPE, END THIS SEARCH 46 014434 020165 000144 CMP R1,TXSTOR(R5) ;IS . TOO SMALL NOW?? 47 014440 103366 BHIS 120$ ;. IS O.K., CHECK FOR ANOTHER MOVEMENT 48 014442 000743 BR 90$ ;. IS TOO SMALL, SEARCH FAILS TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 80 SORT 1 014444 032765 000000G 000114 130$: BIT #ED$INC,EDIT(R5) ;ALWAYS MOVE . BY ONLY ONE? 2 014452 001761 BEQ 120$ ;NOPE 3 014454 000756 BR 110$ ;YEP, GO FORCE MOVEMENT AMOUNT TO ONE 4 5 014456 010165 000052 140$: MOV R1,PST(R5) ;SAVE (ABS) STARTING POSITION 6 014462 010104 MOV R1,R4 ;COPY (ABS) START AGAIN TO 7 014464 160304 SUB R3,R4 ; GET "START"-"END" = -("LENGTH") 8 014466 005316 DEC (SP) ;SEARCH ANOTHER TIME?? 9 014470 003365 BGT 130$ ;YES, SO GO MOVE . AND SEARCH AGAIN 10 014472 010465 000076 MOV R4,LSCHSZ(R5) ;NO, DONE, STORE -("LENGTH") 11 014476 166503 000144 SUB TXSTOR(R5),R3 ;MAKE ENDING . RELATIVE 12 014502 166565 000144 000052 SUB TXSTOR(R5),PST(R5) ;MAKE STARTING . RELATIVE 13 014510 012766 177777 000010 MOV #-1,10(SP) ;INDICATE SUCCESS (-1) 14 014516 010365 000064 150$: MOV R3,P(R5) ;SET . CORRECTLY 15 014522 012602 160$: MOV (SP)+,R2 ;RESTORE THE HIT COUNTER 16 014524 062706 000006 ADD #6,SP ;DUMP DIRECTION, DELTA-DOT, AND E-O-T 17 014530 012601 MOV (SP)+,R1 ;SET CC'S AND RETURN INDICATOR 18 014532 000207 RTS PC ; AND EXIT 19 20 014534 005765 000116 170$: TST SFLG(R5) ;EXACT MODE SEARCHES? 21 014540 001272 BNE .SUR.N ;YES, SO A REAL FAILURE 22 014542 004767 000020 JSR PC,180$ ;GO CONVERT THE PATTERN CHARACTER 23 014546 010046 MOV R0,-(SP) ; AND SAVE IT 24 014550 116300 177777 MOVB -1(R3),R0 ;GET THE TEXT BUFFER CHARACTER 25 014554 004767 000006 JSR PC,180$ ;GO CONVERT THE TEXT BUFFER CHARACTER 26 014560 020026 CMP R0,(SP)+ ;DO THEY REALLY MATCH? 27 014562 001711 BEQ .SUR.Y ;YES, SUCCESS 28 014564 000660 BR .SUR.N ;NO, A REAL FAILURE 29 30 014566 030027 000100 180$: BIT R0,#100 ;CASE ALTERABLE (100-177, 300-377)? 31 014572 001405 BEQ 190$ ;NOPE 32 014574 042700 000040 BIC #40,R0 ;YEP, UPPER CASE IT (100-137, 300-337) 33 014600 100002 BPL 190$ ;IT'S NOT IN G1 RANGE (300-337) 34 014602 116000 016326' MOVB GENSRH+100(R0),R0 ;ELSE REMOVE THE DIACRITICAL 35 014606 000207 190$: RTS PC ;EXIT 36 37 .DSABL LSB TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 81 SORT 1 014610 120027 000240 .SUR.S: CMPB R0,#240 ;IS IT POSSIBLY ONE OF OUR SPECIALS? 2 014614 103013 BHIS 10$ ;NOPE, JUST GO MATCH ON IT 3 014616 120027 000223 CMPB R0,#'S-100+200 ;WAS SPECIAL CTRL/S? 4 014622 001423 BEQ 60$ ;YES (IT IS CTRL/S) 5 014624 101010 BHI 20$ ;NO (IT IS CTRL/X) 6 014626 120027 000205 CMPB R0,#'E-100+200 ;NO, IS IT CTRL/E? 7 014632 001424 BEQ 80$ ;YES (IT IS CTRL/E) 8 014634 101006 BHI 30$ ;NO (IT IS CTRL/N) 9 014636 112400 MOVB (R4)+,R0 ;ELSE GET THE REAL MATCH CHARACTER 10 014640 004767 176320 JSR PC,CVTSPC ; AND GET IT CORRECTLY CONVERTED 11 014644 000656 10$: BR .SUR.M ;GO CHECK FOR A MATCH 12 13 014646 005203 20$: INC R3 ;CTRL/X IS ANY MATCH 14 014650 000656 BR .SUR.Y ;INDICATE SUCCESS 15 16 014652 012702 177777 30$: MOV #-1,R2 ;SET REVERSE FLAG 17 014656 000625 BR .SUR.C ; AND CONTINUE 18 19 014660 011016 40$: MOV (R0),(SP) ;SET THE CORRECT DISPATCH ADDRESS 20 014662 112300 MOVB (R3)+,R0 ;GET A TEXT CHATACTER 21 014664 004736 JSR PC,@(SP)+ ;GO TEST CHARACTER 22 014666 103647 50$: BCS .SUR.Y ;MADE IT 23 014670 000616 BR .SUR.N ;NO GO 24 25 014672 112300 60$: MOVB (R3)+,R0 ;GET A TEXT CHARACTER 26 014674 004767 176010 JSR PC,ALPHAN ;ALPHANUMERIC? 27 014700 103242 70$: BCC .SUR.Y ;NO, SO OK 28 014702 000611 BR .SUR.N ;YES, SO NO 29 30 014704 112400 80$: MOVB (R4)+,R0 ;GET THE CTRL/E MODIFIER CHARACTER 31 014706 004767 175562 JSR PC,UPPERC ; AND FORCE IT TO UPPER CASE 32 014712 120027 000123 CMPB R0,#'S ;CTRL/E AND "S"? 33 014716 001425 BEQ 110$ ;YES, MATCH NON-NULL SPACE/TAB 34 014720 120027 000130 CMPB R0,#'X ;X? 35 014724 001750 BEQ 20$ ;YES, MATCH ANYTHING 36 014726 120027 000107 CMPB R0,#'G ;G? 37 014732 001465 BEQ 180$ ;YES, DO Q-REG MATCHING 38 014734 120027 000102 CMPB R0,#'B ;B? 39 014740 001754 BEQ 60$ ;YES, MATCH SEPARATORS 40 014742 010046 MOV R0,-(SP) ;SAVE ^E CHARACTER ON THE STACK 41 014744 012700 015206' MOV #230$,R0 ;GET THE CHARACTER TABLE POINTER 42 014750 021620 90$: CMP (SP),(R0)+ ;CHARACTER MATCH TABLE? 43 014752 001742 BEQ 40$ ;YES, WE HAVE A MATCH, GO DISPATCH 44 014754 005720 TST (R0)+ ;NO, SKIP THE DISPATCH ADDRESS 45 014756 001374 BNE 90$ ;MORE IN TABLE, KEEP CHECKING 46 014760 005726 TST (SP)+ ;NOT IN TABLE, POP STACK 47 014762 005304 100$: DEC R4 ;OTHER, POINT BACK AGAIN 48 014764 112700 000005 MOVB #'E-100,R0 ; AND RESTORE THE CTRL/E 49 014770 000725 BR 10$ ;NOW TRY FOR A CTRL/E MATCH TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 82 SORT 1 014772 010346 110$: MOV R3,-(SP) ;SAVE POINTER TO TEXT 2 014774 020366 000006 120$: CMP R3,4+2(SP) ;END OF TEXT? 3 015000 103010 BHIS 130$ ;YES, QUIT 4 015002 112300 MOVB (R3)+,R0 ;NO, GET CHARACTER 5 015004 020027 000040 CMP R0,#SPACE ;SPACE? 6 015010 001771 BEQ 120$ ;YES 7 015012 020027 000011 CMP R0,#TAB ;TAB? 8 015016 001766 BEQ 120$ ;YES 9 015020 005303 DEC R3 ;NEITHER, CORRECT TEST POINTER 10 015022 005766 000004 130$: TST 2+2(SP) ;IS THIS A BACKWARDS SEARCH? 11 015026 100023 BPL 170$ ;NOPE, BACKING UP WOULD BE WRONG 12 015030 020316 CMP R3,(SP) ;YEP, DID WE FIND A NON-NULL SEQUENCE? 13 015032 001421 BEQ 170$ ;NOTHING FOUND, JUST GO QUIT 14 015034 020116 CMP R1,(SP) ;NON-NULL, WAS THE CTRL/E-S THE FIRST? 15 015036 001017 BNE 170$ ;NOT FIRST, CAN'T BACKUP 16 015040 020165 000144 140$: CMP R1,TXSTOR(R5) ;IS . AT BEGINNING OF TEXT? 17 015044 101414 BLOS 170$ ;YES, CAN'T BACK UP FROM HERE 18 015046 124127 000040 CMPB -(R1),#SPACE ;CHECK FOR A SPACE 19 015052 001403 BEQ 150$ ;IT'S A SPACE 20 015054 121127 000011 CMPB (R1),#TAB ;IS IT A TAB INSTEAD? 21 015060 001005 BNE 160$ ;NOT A TAB, TIME TO QUIT 22 015062 005366 000010 150$: DEC 6+2(SP) ;ALLOWED TO BACK UP? 23 015066 001364 BNE 140$ ;YEP, WE DID SO, LOOP... 24 015070 005266 000010 INC 6+2(SP) ;CORRECT . MOVEMENT AMOUNT 25 015074 005201 160$: INC R1 ;CORRECT . POINTER 26 015076 022603 170$: CMP (SP)+,R3 ;CHECK FOR NON-NULL 27 015100 103672 BLO 50$ ;NON-NULL, CONTINUE ('BLO'=>C=1) 28 015102 005203 INC R3 ;NULL, SKIP SOMETHING 29 015104 000670 BR 50$ ; AND CONTINUE ('BEQ'=>'BHIS'=>C=0) TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 83 SORT 1 015106 111400 180$: MOVB (R4),R0 ;GET Q-REG NAME CHARACTER 2 015110 020027 000056 CMP R0,#'. ;LOCAL TO MACRO LEVEL Q-REGISTER? 3 015114 001002 BNE 190$ ;NOPE 4 015116 116400 000001 MOVB 1(R4),R0 ;YEP, GET THE REAL NAME CHARACTER 5 015122 004767 175562 190$: JSR PC,ALPHAN ;IS IT LEGAL? 6 015126 103315 BCC 100$ ;NOT LEGAL GROUP REFERENCE 7 015130 010146 MOV R1,-(SP) ;SAVE R1 8 015132 010246 MOV R2,-(SP) ; AND R2 9 015134 005001 CLR R1 ;GUESS AT A NORMAL REFERENCE 10 015136 122427 000056 CMPB (R4)+,#'. ;IS IT A LOCAL LEVEL REFERENCE? 11 015142 001003 BNE 200$ ;NOPE 12 015144 005204 INC R4 ;YEP, SKIP ONE MORE CHARACTER 13 015146 012701 000045 MOV #LCLQRG-1,R1 ;FLAG AS SUCH WITH THE OFFSET 14 015152 004767 173640 200$: JSR PC,QREFR1 ;REFERENCE Q-REG BY CHARACTER 15 015156 112300 MOVB (R3)+,R0 ;GET THE CHARACTER TO MATCH 16 015160 011101 MOV (R1),R1 ;GET THE Q-REGISTER'S SIZE 17 015162 066502 000152 ADD QRSTOR(R5),R2 ;POINT ABSOLUTELY TO Q-REG 18 015166 162701 000001 210$: SUB #1,R1 ;MORE CHARACTERS IN Q-REG? 19 015172 103402 BLO 220$ ;NOPE, FAILURE (C=1 ALREADY) 20 015174 120022 CMPB R0,(R2)+ ;CHECK THIS CHARACTER FOR A AMTCH 21 015176 001373 BNE 210$ ;NOT A MATCH, LOOP 22 ;CLC ;A MATCH, SUCCESS (C=0 ALREADY) 23 015200 012602 220$: MOV (SP)+,R2 ;RESTORE R2 24 015202 012601 MOV (SP)+,R1 ; AND R1 25 015204 000635 BR 70$ ;NOW EXIT WITH AN INDICATION 26 27 015206 000101 012716' 230$: .WORD 'A,ALPHA ;^EA MATCHES ALPHABETICS 28 015212 000103 012666' .WORD 'C,SYMCHR ;^EC MATCHES SYMBOL CHARACTERS 29 015216 000104 012652' .WORD 'D,NUMER ;^ED MATCHES NUMERICS 30 015222 000114 012636' .WORD 'L,TERMS ;^EL MATCHES TERMINATORS 31 015226 000122 012710' .WORD 'R,ALPHAN ;^ER MATCHES ALPHANUMERICS 32 015232 000126 012736' .WORD 'V,ALPHAL ;^EV MATCHES LOWER CASE ALPHAS 33 015236 000127 012722' .WORD 'W,ALPHAU ;^EW MATCHES UPPER CASE ALPHAS 34 015242 100377 000000 .WORD 100377,0 ;DUMMY TO TERMINATE THE LIST TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 84 SIZING (SHUFFLING) ROUTINES 1 .SBTTL SIZING (SHUFFLING) ROUTINES 2 3 .ENABL LSB 4 5 015246 010046 SIZE: MOV R0,-(SP) ;SAVE R0 6 015250 012400 MOV (R4)+,R0 ;GET OFFSET TO MAX TO CHANGE 7 015252 005701 TST R1 ;IS REQUEST AT ALL REASONABLE? 8 015254 100527 BMI 80$ ;NOPE ['TST' => C=0 => FAILURE] 9 015256 010146 MOV R1,-(SP) ;SAVE R1 10 015260 010246 MOV R2,-(SP) ; AND SAVE R2 11 015262 010346 MOV R3,-(SP) ; AND SAVE R3 12 015264 010046 MOV R0,-(SP) ;SAVE THE MAX'S OFFSET VALUE 13 015266 060500 ADD R5,R0 ;MAKE R0 ABS PTR TO MAX 14 015270 052701 000037 BIS #37,R1 ;FUDGE UP REQUEST A LITTLE 15 015274 161001 SUB (R0),R1 ;FIND CHANGE AMOUNT 16 015276 103512 BLO 60$ ;ALREADY DONE 17 015300 012702 000146 MOV #ZMAX,R2 ;GET TEXT AREA'S MAX OFFSET 18 015304 016503 000150 MOV ZZ(R5),R3 ; AND TEXT CURRENT INUSE 19 015310 160216 SUB R2,(SP) ;0=>TEXT CHANGE; <>0=>Q-REG CHANGE 20 015312 001004 BNE 10$ ;Q-REG CHANGE, WE HAVE TEXT MAX, INUSE 21 015314 012702 000154 MOV #QMAX,R2 ;TEXT CHANGE, GET Q-REG MAX OFFSET 22 015320 016503 000156 MOV QZ(R5),R3 ; AND Q-REG CURRENT INUSE 23 015324 004467 000126 10$: JSR R4,50$ ;SEE IF CURRENT FREE DOES IT 24 015330 005403 NEG R3 ;GET -(IN USE) 25 015332 060502 ADD R5,R2 ;ABS PTR TO OTHER MAX 26 015334 061203 ADD (R2),R3 ;FREE = MAX -(IN USE) 27 015336 162703 000620 SUB #400.,R3 ;FIND THE PUNISH AMOUNT 28 015342 101426 BLOS 30$ ;NOT ENOUGH FREE TO PUNISH 29 015344 160312 SUB R3,(R2) ;ELSE PUNISH THE OTHER MAX 30 015346 060365 000160 ADD R3,CURFRE(R5) ; AND UPDATE FREE SPACE 31 015352 005716 TST (SP) ;WHICH AREA ARE WE CHANGING 32 015354 001417 BEQ 20$ ;IF TEXT, THEN JUST PUNISHED QREGS 33 015356 010046 MOV R0,-(SP) ;SAVE MAX POINTER 34 015360 010146 MOV R1,-(SP) ;SAVE DELTA AMOUNT 35 015362 016500 000152 MOV QRSTOR(R5),R0 ;GET THE REGION'S BIAS 36 015366 160365 000152 SUB R3,QRSTOR(R5) ;CORRECT THE BASE ADDRESS 37 015372 005002 CLR R2 ;START OF 0 OFFSET 38 015374 005403 NEG R3 ;FIND -(PUNISH) 39 015376 010301 MOV R3,R1 ; AND MOVE DATA TO THERE 40 015400 016503 000154 MOV QMAX(R5),R3 ;SET THE UPPER LIMIT 41 015404 004767 172356 JSR PC,SHRINK ;NOW SHRINK IT 42 015410 012601 MOV (SP)+,R1 ;RESTORE DELTA AMOUNT 43 015412 012600 MOV (SP)+,R0 ;RESTORE MAX POINTER 44 015414 004467 000036 20$: JSR R4,50$ ;WILL FREE SPACE DO IT NOW? 45 015420 020427 015566' 30$: CMP R4,#100$ ;IS THIS THE SPECIAL CALL? 46 015424 001411 BEQ 40$ ;YES, DON'T REALLY SIZE 47 015426 010146 MOV R1,-(SP) ;SAVE FULL DELTA AMOUNT 48 015430 166501 000160 SUB CURFRE(R5),R1 ;NOW FIND AMOUNT WE NEED ADDED 49 015434 004767 000000G JSR PC,SIZER ;ASK WHOEVER FOR MORE PLEASE 50 015440 012601 MOV (SP)+,R1 ;RESTORE FULL DELTA AMOUNT 51 015442 103364 BCC 20$ ;WE GOT IT! 52 015444 005726 TST (SP)+ ;DUMP THE AREA DETERMINATION 53 015446 000427 BR 70$ ; AND EXIT (C=0 => FAILURE) TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 85 SIZING (SHUFFLING) ROUTINES 1 015450 016501 000160 40$: MOV CURFRE(R5),R1 ;CHANGE REQUEST AMOUNT TO THIS 2 015454 000757 BR 20$ ; AND TRY AGAIN (WON'T FAIL!) 3 4 015456 020165 000160 50$: CMP R1,CURFRE(R5) ;DO WE HAVE ENOUGH FREE? 5 015462 101025 BHI 90$ ;NO, SO RETURN 6 015464 160165 000160 SUB R1,CURFRE(R5) ;YES, CORRECT FREE COUNT 7 015470 012604 MOV (SP)+,R4 ;RESTORE THE R4 VALUE 8 015472 060110 ADD R1,(R0) ; AND CORRECT THE MAX 9 015474 005716 TST (SP) ;WHICH AREA IS CHANGING? 10 015476 001012 BNE 60$ ;QREGS, SO VERY EASY 11 015500 016500 000152 MOV QRSTOR(R5),R0 ;TEXT, SO GET OLD BEG PTR 12 015504 060165 000152 ADD R1,QRSTOR(R5) ;UPDATE QREG PTR 13 015510 016503 000154 MOV QMAX(R5),R3 ;GET MAX VALUE 14 015514 060301 ADD R3,R1 ;FIND THE NEW MAX 15 015516 005002 CLR R2 ;START MOVE AT OFFSET 0 16 015520 004767 172162 JSR PC,EXPAND ;NOW GO DO THE EXPANSION 17 015524 005126 60$: COM (SP)+ ;DUMP AREA FLAG AND CARRY=1 18 015526 012603 70$: MOV (SP)+,R3 ;RESTORE R3 19 015530 012602 MOV (SP)+,R2 ; AND R2 20 015532 012601 MOV (SP)+,R1 ; AND R1 21 015534 012600 80$: MOV (SP)+,R0 ; AND R0 22 015536 000204 90$: RTS R4 ;FINALLY EXIT 23 24 015540 005065 000064 .YYY.C: CLR P(R5) ;.=0 25 015544 005065 000150 CLR ZZ(R5) ;NO MORE TEXT 26 015550 005065 000120 .YYY.F: CLR FFFLAG(R5) ;NO MORE FORM FEED 27 015554 012701 077777 MOV #077777,R1 ;SET A VERY HIGH REQUEST VALUE 28 015560 SIZE TEXT ; AND SIZE UP TEXT 015560 004467 177462 JSR R4,SIZE 015564 000146 .WORD ZMAX 29 015566 000207 100$: RTS PC ;THIS ALWAYS WORKS!! 30 31 .DSABL LSB 32 33 015570 004467 177452 SIZEQR: JSR R4,SIZE ;SIZE THE 34 015574 000154 .WORD QMAX ; Q-REGISTER AREA 35 015576 000207 RTS PC ;EXIT WITH C-BIT=1 FOR SUCCESS TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 86 CHARACTER LIST FOR " COMMANDS 1 .SBTTL CHARACTER LIST FOR " COMMANDS 2 3 015600 .TABLE .CND,LAB,EQU,RAB,A,C,D,E,F,G,L,N,R,S,T,U,V,W 015600 377 .BYTE -1 015601 127 .BYTE 'W 015602 126 .BYTE 'V 015603 125 .BYTE 'U 015604 124 .BYTE 'T 015605 123 .BYTE 'S 015606 122 .BYTE 'R 015607 116 .BYTE 'N 015610 114 .BYTE 'L 015611 107 .BYTE 'G 015612 106 .BYTE 'F 015613 105 .BYTE 'E 015614 104 .BYTE 'D 015615 103 .BYTE 'C 015616 101 .BYTE 'A 015617 076 .BYTE RAB 015620 075 .BYTE EQU 015621 074 .BYTE LAB 015622 ..CND: 015622 002664' .WORD .CNDLAB 015624 002672' .WORD .CNDEQU 015626 002660' .WORD .CNDRAB 015630 002632' .WORD .CNDA 015632 002622' .WORD .CNDC 015634 002626' .WORD .CNDD 015636 002672' .WORD .CNDE 015640 002672' .WORD .CNDF 015642 002660' .WORD .CNDG 015644 002664' .WORD .CNDL 015646 002652' .WORD .CNDN 015650 002636' .WORD .CNDR 015652 002664' .WORD .CNDS 015654 002664' .WORD .CNDT 015656 002672' .WORD .CNDU 015660 002612' .WORD .CNDV 015662 002616' .WORD .CNDW TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 87 CHARACTER LIST FOR E COMMANDS 1 .SBTTL CHARACTER LIST FOR E COMMANDS 2 3 015664 .TABLE .EEE,A,B,C,D,E,F,G,H,I,J,K,N,O,P,R,S,T,U,V,W,X,Y,UND 015664 377 .BYTE -1 015665 137 .BYTE UND 015666 131 .BYTE 'Y 015667 130 .BYTE 'X 015670 127 .BYTE 'W 015671 126 .BYTE 'V 015672 125 .BYTE 'U 015673 124 .BYTE 'T 015674 123 .BYTE 'S 015675 122 .BYTE 'R 015676 120 .BYTE 'P 015677 117 .BYTE 'O 015700 116 .BYTE 'N 015701 113 .BYTE 'K 015702 112 .BYTE 'J 015703 111 .BYTE 'I 015704 110 .BYTE 'H 015705 107 .BYTE 'G 015706 106 .BYTE 'F 015707 105 .BYTE 'E 015710 104 .BYTE 'D 015711 103 .BYTE 'C 015712 102 .BYTE 'B 015713 101 .BYTE 'A 015714 ..EEE: 015714 005260' .WORD .EEEA 015716 005050' .WORD .EEEB 015720 005312' .WORD .EEEC 015722 007132' .WORD .EEED 015724 007134' .WORD .EEEE 015726 005322' .WORD .EEEF 015730 005050' .WORD .EEEG 015732 007136' .WORD .EEEH 015734 005050' .WORD .EEEI 015736 007232' .WORD .EEEJ 015740 005244' .WORD .EEEK 015742 005050' .WORD .EEEN 015744 006306' .WORD .EEEO 015746 005252' .WORD .EEEP 015750 005050' .WORD .EEER 015752 007140' .WORD .EEES 015754 007142' .WORD .EEET 015756 007144' .WORD .EEEU 015760 007146' .WORD .EEEV 015762 005050' .WORD .EEEW 015764 005274' .WORD .EEEX 015766 004536' .WORD .EEEY 015770 003662' .WORD .EEEUND TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 88 CHARACTER LIST FOR F COMMANDS 1 .SBTTL CHARACTER LIST FOR F COMMANDS 2 3 015772 .TABLE .FFF,APS,LAB,RAB,B,C,N,R,S,UND,VBR .ODD 015773 377 .BYTE -1 015774 174 .BYTE VBR 015775 137 .BYTE UND 015776 123 .BYTE 'S 015777 122 .BYTE 'R 016000 116 .BYTE 'N 016001 103 .BYTE 'C 016002 102 .BYTE 'B 016003 076 .BYTE RAB 016004 074 .BYTE LAB 016005 047 .BYTE APS 016006 ..FFF: 016006 002756' .WORD .FFFAPS 016010 002022' .WORD .FFFLAB 016012 002000' .WORD .FFFRAB 016014 003216' .WORD .FFFB 016016 003210' .WORD .FFFC 016020 003520' .WORD .FFFN 016022 007522' .WORD .FFFR 016024 003224' .WORD .FFFS 016026 003522' .WORD .FFFUND 016030 002764' .WORD .FFFVBR TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 89 COMMAND CHARACTER LIST 1 .SBTTL COMMAND CHARACTER LIST 2 3 .ODD 4 016033 377 .BYTE -1 5 016034 177 .BYTE DEL 6 016035 140 .BYTE GRV 7 016036 077 .BYTE '? 8 016037 052 .BYTE '* 9 016040 040 .BYTE SPACE 10 016041 027 .BYTE 'W-100 11 016042 025 .BYTE 'U-100 12 016043 012 .BYTE LF 13 016044 010 .BYTE BS 14 016045 007 .BYTE BEL 15 016046 .TABLE .CMD 016046 ..CMD: 16 016046 000424' .WORD .CMDBL 17 016050 001356' .WORD .CMDBS 18 016052 001356' .WORD .CMDLF 19 016054 001074' .WORD .CMDCU 20 016056 001504' .WORD .CMDCW 21 016060 000370' .WORD .CMDSP 22 016062 000256' .WORD .CMDST 23 016064 000456' .WORD .CMDQU 24 016066 001172' .WORD .CMDGV 25 016070 001060' .WORD .CMDEL TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 90 CHARACTER LIST FOR "SKPSET" 1 .SBTTL CHARACTER LIST FOR "SKPSET" 2 3 016072 377 .BYTE -1 4 016073 137 .BYTE '_ 5 016074 136 .BYTE '^ 6 016075 135 .BYTE '] 7 016076 133 .BYTE '[ 8 016077 130 .BYTE 'X 9 016100 125 .BYTE 'U 10 016101 123 .BYTE 'S 11 016102 121 .BYTE 'Q 12 016103 117 .BYTE 'O 13 016104 116 .BYTE 'N 14 016105 115 .BYTE 'M 15 016106 111 .BYTE 'I 16 016107 107 .BYTE 'G 17 016110 106 .BYTE 'F 18 016111 105 .BYTE 'E 19 016112 100 .BYTE '@ 20 016113 076 .BYTE '> 21 016114 074 .BYTE '< 22 016115 045 .BYTE '% 23 016116 042 .BYTE '" 24 016117 041 .BYTE '! 25 016120 036 .BYTE '^-100 26 016121 025 .BYTE 'U-100 27 016122 011 .BYTE 'I-100 28 016123 001 .BYTE 'A-100 29 016124 .TABLE .CSM 016124 ..CSM: 30 016124 010412' .WORD .CSMY ;CTRL/A SKIP QUOTED STRING USING CURRENT CHARACTER 31 016126 010354' .WORD .CSMQ ;TAB SKIP QUOTED STRING 32 016130 010420' .WORD .CSMRQ ;CTRL/U SKIP Q-REG NAME, QUOTED STRING 33 016132 000152' .WORD .CSMX ;CTRL/^ SKIP ONE CHARACTER 34 016134 010412' .WORD .CSMY ;! SKIP QUOTED STRING USING CURRENT CHARACTER 35 016136 000104' .WORD .CSMDQ ;" INTO ONE MORE CONDITIONAL, SKIP ONE CHARACTER 36 016140 010424' .WORD .CSMR ;% SKIP Q-REG NAME 37 016142 001742' .WORD .CSMI ;< SIGNAL START OF AN ITERATION 38 016144 002202' .WORD .CSMO ;> SIGNAL END OF AN ITERATION 39 016146 010442' .WORD .CSMA ;@ SET THE SPECIAL QUOTED STRING FLAG 40 016150 010312' .WORD .CSME ;E (EB, EG, EI, EN, ER, EW, E_) PROCESS "E" COMMANDS 41 016152 010324' .WORD .CSMF ;F (FB, FC, FR, FS, FN, F_) PROCESS "F" COMMANDS 42 016154 010424' .WORD .CSMR ;G SKIP Q-REG NAME 43 016156 010354' .WORD .CSMQ ;I SKIP QUOTED STRING 44 016160 010424' .WORD .CSMR ;M SKIP Q-REG NAME 45 016162 010354' .WORD .CSMQ ;N SKIP QUOTED STRING 46 016164 010354' .WORD .CSMQ ;O SKIP QUOTED STRING 47 016166 010424' .WORD .CSMR ;Q SKIP Q-REG NAME 48 016170 010354' .WORD .CSMQ ;S SKIP QUOTED STRING 49 016172 010424' .WORD .CSMR ;U SKIP Q-REG NAME 50 016174 010424' .WORD .CSMR ;X SKIP Q-REG NAME 51 016176 010424' .WORD .CSMR ;[ SKIP Q-REG NAME 52 016200 010424' .WORD .CSMR ;] SKIP Q-REG NAME 53 016202 010270' .WORD .CSMUA ;^ RE-CHECK NEXT AS A CONTROL CHARACTER 54 016204 010354' .WORD .CSMQ ;_ SKIP QUOTED STRING 55 56 016206 377 .BYTE -1 TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 90-1 CHARACTER LIST FOR "SKPSET" 57 016207 137 .BYTE '_ 58 016210 127 .BYTE 'W 59 016211 122 .BYTE 'R 60 016212 116 .BYTE 'N 61 016213 111 .BYTE 'I 62 016214 107 .BYTE 'G 63 016215 102 .BYTE 'B 64 016216 .TABLE .CSME 016216 ..CSME: 65 66 .ODD 67 016217 377 .BYTE -1 68 016220 137 .BYTE '_ 69 016221 123 .BYTE 'S 70 016222 122 .BYTE 'R 71 016223 116 .BYTE 'N 72 016224 103 .BYTE 'C 73 016225 102 .BYTE 'B 74 016226 .TABLE .CSMF 016226 ..CSMF: TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 91 GENERIC SEARCH MATCHING TABLE 1 .SBTTL GENERIC SEARCH MATCHING TABLE 2 3 016226 101 101 101 GENSRH: .BYTE 'A, 'A, 'A, 'A, 'A, 'A, 306, 'C 016231 101 101 101 016234 306 103 4 016236 105 105 105 .BYTE 'E, 'E, 'E, 'E, 'I, 'I, 'I, 'I 016241 105 111 111 016244 111 111 5 016246 320 116 117 .BYTE 320, 'N, 'O, 'O, 'O, 'O, 'O, 327 016251 117 117 117 016254 117 327 6 016256 117 125 125 .BYTE 'O, 'U, 'U, 'U, 'U, 'Y, 336, 337 016261 125 125 131 016264 336 337 TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 92 8-BIT CHARACTER CONVERSION TABLE 1 .SBTTL 8-BIT CHARACTER CONVERSION TABLE 2 3 100000 X = 100000 ;FLAG FOR HEX DIGIT PAIR 4 5 .ENABL LC 6 7 016266 130070 130470 131070 CNV8BT: .WORD "80!X, "81!X, "82!X, "83!X, "84!X, "85!X, "86!X, "87!X 016274 131470 132070 132470 016302 133070 133470 8 016306 134070 134470 140470 .WORD "88!X, "89!X, "8A!X, "8B!X, "8C!X, "8D!X, "8E!X, "8F!X 016314 141070 141470 142070 016322 142470 143070 9 016326 130071 130471 131071 .WORD "90!X, "91!X, "92!X, "93!X, "94!X, "95!X, "96!X, "97!X 016334 131471 132071 132471 016342 133071 133471 10 016346 134071 134471 140471 .WORD "98!X, "99!X, "9A!X, "9B!X, "9C!X, "9D!X, "9E!X, "9F!X 016354 141071 141471 142071 016362 142471 143071 11 016366 130101 020441 027503 .WORD "A0!X, "!!, "C/, "L-, "A4!X, "Y-, "A6!X, "S0 016374 026514 132101 026531 016402 133101 030123 12 016406 030130 030103 057541 .WORD "X0, "C0, "a_, "<<, "AC!X, "AD!X, "AE!X, "AF!X 016414 036074 141501 142101 016422 142501 143101 13 016426 057060 026453 057062 .WORD "0^, "+-, "2^, "3^, "B4!X, "/U, "P!, ".^ 016434 057063 132102 052457 016442 020520 057056 14 016446 134102 057061 057557 .WORD "B8!X, "1^, "o_, ">>, "14, "12, "BE!X, "?? 016454 037076 032061 031061 016462 142502 037477 15 016466 060101 023501 057101 .WORD "A`, "A', "A^, "A~, "A", "A*, "AE, "C, 016474 077101 021101 025101 016502 042501 026103 16 016506 060105 023505 057105 .WORD "E`, "E', "E^, "E", "I`, "I', "I^, "I" 016514 021105 060111 023511 016522 057111 021111 17 016526 130104 077116 060117 .WORD "D0!X, "N~, "O`, "O', "O^, "O~, "O", "OE 016534 023517 057117 077117 016542 021117 042517 18 016546 027517 060125 023525 .WORD "O/, "U`, "U', "U^, "U", "Y", "DE!X, "ss 016554 057125 021125 021131 016562 142504 071563 19 016566 060141 023541 057141 .WORD "a`, "a', "a^, "a~, "a", "a*, "ae, "c, 016574 077141 021141 025141 016602 062541 026143 20 016606 060145 023545 057145 .WORD "e`, "e', "e^, "e", "i`, "i', "i^, "i" 016614 021145 060151 023551 016622 057151 021151 21 016626 130106 077156 060157 .WORD "F0!X, "n~, "o`, "o', "o^, "o~, "o", "oe 016634 023557 057157 077157 016642 021157 062557 22 016646 027557 060165 023565 .WORD "o/, "u`, "u', "u^, "u", "y", "FE!X, "FF!X 016654 057165 021165 021171 016662 142506 143106 TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 93 FINAL FIXUPS... 1 .SBTTL FINAL FIXUPS... 2 3 000735 .PSECT TECOER 4 .EVEN 5 6 000001 .END TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 93-1 Symbol table ADJ 007646R 003 ERRORS 010512R 003 M 000024 G 002 QSKP 012332R 003 TERMS 012636R 003 ALLERR= ****** G ERRPOS 000072 G 002 MAKCTL 012524R 003 QSKPE 012342R 003 TEXIT = ****** G ALPHA 012716R 003 ERR4EH 000452R 003 MPDL 000002 G 002 QSKPR0 012414R 003 TFLG 000056 G 002 ALPHAL 012736R 003 ESC = 000033 N 000022 G 002 QSUMX 011054R 003 TIME = ****** G ALPHAN 012710R 003 ESC.LF 001404R 003 NACC 000016 G 002 QSUMY 011050R 003 TLISTN= ****** G ALPHAU 012722R 003 ESFLAG 000106 G 002 NCOM 006730R 003 QUOTE 000040 G 002 TRACE 000176R 003 APS = 000047 ETYPE 000104 G 002 NFLG 000020 G 002 QZ 000156 G 002 TSTNXT 012744R 003 AULQRG 000045 002 ET$BIN= ****** G NLINES 013040R 003 RAB = 000076 TXSTOR 000144 G 002 AUXQRG 000112 002 ET$CC = ****** G NMRBAS 000070 G 002 RCB = 000175 TYPE = ****** G BACKUP= ****** G ET$CCO= ****** G NOCTLO= ****** G REPFLG 000062 G 002 TYPEB = ****** G BEL = 000007 ET$CKE= ****** G NOPR 000014 G 002 RTS.PC 001712R 003 TYPEF = ****** G BRNCOM 007264R 003 ET$CRT= ****** G NP 000050 G 002 RWSIZE 000652 G 002 TYPSPC 003704R 003 BS = 000010 ET$DET= ****** G NUL = 000000 R0 =%000000 UND = 000137 BZCHK 012352R 003 ET$GRV= ****** G NUMER 012652R 003 R1 =%000001 UPPERC 012474RG 003 CFLG 000030 G 002 ET$IAS= ****** G NUMQRG= 000044 R2 =%000002 VBR = 000174 CHKCLN 012440R 003 ET$LC = ****** G NWATCH 000124 G 002 R3 =%000003 VERSON= 000050 G CHKCLO 012444R 003 ET$NCH= ****** G OFLG 000026 G 002 R4 =%000004 VT = 000013 CHKSTP 000050R 003 ET$RFS= ****** G OP$ADD 006670R 003 R5 =%000005 WATCH = ****** G CLNF 000032 G 002 ET$TRU= ****** G OP$AND 006754R 003 SCAN 000152R 003 X = 100000 CLNLCL 011772R 003 ET$XIT= ****** G OP$DIV 007024R 003 SCANP 000000 G 002 XITNOW= ****** G CLNXIT 005730R 003 ET$8BT= ****** G OP$MUL 006774R 003 SCHBUF 000642 G 002 ZEROD 013270RG 003 CLREND 000064 002 EUFLAG 000102 G 002 OP$OR 006766R 003 SCNCTL 012516R 003 ZMAX 000146 G 002 CLSFIL= ****** G EVFLAG 000100 G 002 OP$SUB 006672R 003 SCNQST 012560R 003 ZZ 000150 G 002 CLSOUT= ****** G EXPAND 007706R 003 OSCANP 000036 G 002 SCNUPP 012470R 003 $E$BNI 002102RG 003 CMDDNE 001324RG 003 E$$TXT= 000001 G OUPNTR 000142 G 002 SEARCB 014036R 003 $E$CPQ 011246RG 003 CMDQRG 000113 G 002 FF = 000014 OUTDNE 000130 G 002 SEARCH 014154R 003 $E$DTB 010022RG 003 CNDN 000046 G 002 FFFLAG 000120 G 002 OUTSAV= ****** G SEQCTL 000132 G 002 $E$IAA 005564RG 003 CNV8BT 016266RG 003 FILBUF 000644 G 002 P 000064 G 002 SETCMD 011474R 003 $E$IEC 005154RG 003 CR = 000015 FLAGRW= ****** G PC =%000007 SFLG 000116 G 002 $E$IFC 003202RG 003 CRLF 013020RG 003 GENSRH 016226R 003 PCNT 000060 G 002 SHRINK 007766R 003 $E$IIA 003164RG 003 CRLFNO 013014RG 003 GETBUF= ****** G PDL 000074 G 002 SIZE 015246R 003 $E$ILL 000000RG 003 CRTYPE 000126 G 002 GETFLS= ****** G POP 012276R 003 SIZEQR 015570RG 003 $E$ILN 006562RG 003 CURFRE 000160 G 002 GETN 012400R 003 POPLCL 012104R 003 SIZER = ****** G $E$IPA 004272RG 003 CVTSPC 013164R 003 GETQRG 013212R 003 PRINT = ****** G SIZERB= ****** G $E$IQC 002576RG 003 CVTSRH 013146R 003 GETSCH 013412R 003 PRINTB= ****** G SKPSET 010202R 003 $E$IQN 011114RG 003 DATE = ****** G GETSTG 013416R 003 PRINTF= ****** G SORT 012604R 003 $E$IRA 007424RG 003 DEL = 000177 GETXTP 012174R 003 PRTLIN 001124RG 003 SORTC 012572R 003 $E$ISA 014232RG 003 DELCHR= ****** G GEXIT = ****** G PST 000052 G 002 SORTS 012600R 003 $E$ISS 013566RG 003 DELLIN= ****** G GONCOM 006360R 003 PUSH 012246R 003 SORTZ 012576R 003 $E$IUC 012552RG 003 DIVD 007036RG 003 GRV = 000140 PUSHP 012254R 003 SP =%000006 $E$MEM 001050RG 003 EDIT 000114 G 002 INDIR 000136 G 002 PUTBUF= ****** G SPACE = 000040 $E$MRP 012322RG 003 ED$CTL= ****** G INPNTR 000140 G 002 QADJ 011410R 003 STOPON= ****** G $E$NAB 007102RG 003 ED$EXP= ****** G INPSAV= ****** G QARRAY 000162 G 002 SWITCH= ****** G $E$NAC 006150RG 003 ED$IMD= ****** G IOERR 004530RG 003 QBASE 000066 G 002 SYMCHR 012666R 003 $E$NAE 002344RG 003 ED$INC= ****** G IOERRS 004532RG 003 QCHK 010366R 003 SYMSPC 000134 G 002 $E$NAP 006554RG 003 ED$SRH= ****** G IO.ERR 004770R 003 QCMND 000004 G 002 TAB = 000011 $E$NAQ 002604RG 003 ED$WCH= ****** G IREST 010360R 003 QFLG 000034 G 002 TAGBUF 000646 G 002 $E$NAS 002222RG 003 ED$YNK= ****** G ITRCNT 000012 G 002 QLCMD 000634 G 002 TDE = 000176 $E$NAU 007324RG 003 EEFLAG 000112 G 002 ITRST 000010 G 002 QLENGT 000044 G 002 TECO 000514RG 003 $E$NYA 004664RG 003 EHELP 000110 G 002 KILFIL= ****** G QMAX 000154 G 002 TECOCH 000000RG 006 $E$PDO 012312RG 003 EOFLAG 000122 G 002 LAB = 000074 QNMBR 000042 G 002 TECOCR 000510RG 003 $E$POP 012360RG 003 EQU = 000075 LCB = 000173 QPNTR 000632 G 002 TECOJP 000650 G 002 $E$SNI 002212RG 003 ERRMIO 010526R 003 LCLQRG 000046 002 QREF 010772R 003 TECOLS 000000R 004 $E$SRH 003472RG 003 ERRMSG 010522R 003 LCLSIZ 000006 G 002 QREFR0 011044R 003 TECOLT 000000R 005 $E$STL 013770RG 003 ERROR 000000RG 003 LF = 000012 QREFR1 011016R 003 TECOPD 000640 G 002 $E$UTC 001040RG 003 ERRORA 010452R 003 LISTEN= ****** G QREFVL 010766R 003 TECOSP 000636 G 002 $E$UTM 000222RG 003 ERRORC 010466R 003 LSCHSZ 000076 G 002 QRSTOR 000152 G 002 TEMP 000054 G 002 $E$XAB 000066RG 003 TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 93-2 Symbol table $E$YCA 004642RG 003 $$1056 006112R 003 $$1126 005342R 003 .CNDT 002664R 003 .FFFAP 002756R 003 $$$$$$= 000003 $$1057 006432R 003 $$1127 005472R 003 .CNDU 002672R 003 .FFFB 003216R 003 $$1000 006146R 003 $$1060 006600R 003 $$1130 003062R 003 .CNDV 002612R 003 .FFFC 003210R 003 $$1001 002354R 003 $$1061 006600R 003 $$1131 004542R 003 .CNDW 002616R 003 .FFFLA 002022R 003 $$1002 006026R 003 $$1062 006600R 003 $$1132 006066R 003 .CSMA 010442R 003 .FFFN 003520R 003 $$1003 000232R 003 $$1063 006600R 003 $$1133 011124R 003 .CSMDQ 000104R 003 .FFFR 007522R 003 $$1004 005556R 003 $$1064 006600R 003 $$1134 002414R 003 .CSME 010312R 003 .FFFRA 002000R 003 $$1005 007110R 003 $$1065 006600R 003 $$1135 011256R 003 .CSMF 010324R 003 .FFFS 003224R 003 $$1006 006042R 003 $$1066 006600R 003 $$1136 001350R 003 .CSMI 001742R 003 .FFFUN 003522R 003 $$1010 006050R 003 $$1067 006600R 003 $$1137 003536R 003 .CSMO 002202R 003 .FFFVB 002764R 003 $$1011 004050R 003 $$1070 006572R 003 $$1174 002756R 003 .CSMQ 010354R 003 .FFF.R 007504R 003 $$1012 006146R 003 $$1071 006572R 003 $$1177 006146R 003 .CSMR 010424R 003 .III.I 004116RG 003 $$1014 002334R 003 $$1072 007434R 003 .AAA.A 005042R 003 .CSMRQ 010420R 003 .PPP.B 004316R 003 $$1015 006146R 003 $$1073 002112R 003 .BSL.I 004122R 003 .CSMUA 010270R 003 .PPP.P 004370R 003 $$1016 006020R 003 $$1074 001742R 003 .BSL.N 006600R 003 .CSMX 000152R 003 .QQQ.Q 007244R 003 $$1017 005554R 003 $$1075 002230R 003 .BSL.P 004152R 003 .CSMY 010412R 003 .SCH.I 002146R 003 $$1021 007244R 003 $$1076 002000R 003 .CMDBL 000424R 003 .EEEA 005260R 003 .SCH.R 004174R 003 $$1022 007332R 003 $$1077 000076R 003 .CMDBS 001356R 003 .EEEB 005050R 003 .SCH.T 005330R 003 $$1023 006034R 003 $$1100 010442R 003 .CMDCU 001074R 003 .EEEC 005312R 003 .SCH.V 005332R 003 $$1024 006156R 003 $$1101 005750R 003 .CMDCW 001504R 003 .EEED 007132R 003 .SURCH 014242R 003 $$1025 002772R 003 $$1102 006730R 003 .CMDEL 001060R 003 .EEEE 007134R 003 .SUR.C 014332R 003 $$1030 007116R 003 $$1103 007500R 003 .CMDGV 001172R 003 .EEEF 005322R 003 .SUR.M 014402R 003 $$1031 006074R 003 $$1104 007614R 003 .CMDLF 001356R 003 .EEEG 005050R 003 .SUR.N 014326R 003 $$1032 006314R 003 $$1105 005136R 003 .CMDQU 000456R 003 .EEEH 007136R 003 .SUR.S 014610R 003 $$1033 002060R 003 $$1106 003174R 003 .CMDSP 000370R 003 .EEEI 005050R 003 .SUR.Y 014406R 003 $$1036 006274R 003 $$1107 003714R 003 .CMDST 000256R 003 .EEEJ 007232R 003 .VVV.N 001624R 003 $$1037 007066R 003 $$1110 006056R 003 .CNDA 002632R 003 .EEEK 005244R 003 .VVV.V 001630RG 003 $$1040 006146R 003 $$1111 004076R 003 .CNDC 002622R 003 .EEEN 005050R 003 .YYY.C 015540R 003 $$1041 002352R 003 $$1112 007456R 003 .CNDD 002626R 003 .EEEO 006306R 003 .YYY.F 015550R 003 $$1042 002562R 003 $$1113 007630R 003 .CNDE 002672R 003 .EEEP 005252R 003 .YYY.P 004624R 003 $$1043 006426R 003 $$1114 001624R 003 .CNDEQ 002672R 003 .EEER 005050R 003 .YYY.Y 004674RG 003 $$1045 006362R 003 $$1115 011544R 003 .CNDF 002672R 003 .EEES 007140R 003 ..ABS. 000000 002 $$1046 006422R 003 $$1116 003542R 003 .CNDG 002660R 003 .EEET 007142R 003 ..CMD 016046R 003 $$1047 002730R 003 $$1117 010032R 003 .CNDL 002664R 003 .EEEU 007144R 003 ..CND 015622R 003 $$1050 006476R 003 $$1120 004406R 003 .CNDLA 002664R 003 .EEEUN 003662R 003 ..CSM 016124R 003 $$1051 006524R 003 $$1121 006322R 003 .CNDN 002652R 003 .EEEV 007146R 003 ..CSME 016216R 003 $$1052 006436R 003 $$1122 007470R 003 .CNDR 002636R 003 .EEEW 005050R 003 ..CSMF 016226R 003 $$1053 006444R 003 $$1123 003232R 003 .CNDRA 002660R 003 .EEEX 005274R 003 ..EEE 015714R 003 $$1054 006120R 003 $$1124 005450R 003 .CNDS 002664R 003 .EEEY 004536R 003 ..FFF 016006R 003 $$1055 006442R 003 $$1125 007266R 003 . ABS. 000000 000 (RW,I,GBL,ABS,OVR) 000000 001 (RW,I,LCL,REL,CON) ..ABS. 000652 002 (RW,D,LCL,ABS,OVR) TECORO 016666 003 (RO,I,LCL,REL,CON) TECOLS 000004 004 (RO,I,GBL,REL,OVR) TECOLT 000036 005 (RO,I,GBL,REL,OVR) TECOCH 000314 006 (RO,D,GBL,REL,OVR) TECOER 000736 007 (RO,D,LCL,REL,CON) Errors detected: 0 *** Assembler statistics Work file reads: 0 Work file writes: 0 Size of work file: 11550 Words ( 46 Pages) TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page 93-3 Symbol table Size of core pool: 16896 Words ( 66 Pages) Operating system: RT-11 (Under RSTS/E) Elapsed time: 00:03:49.02 OBJ:TECO,LST:TECO/C=MAC:TECO TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page S-1 Cross reference table (CREF V05.03a) $$$$$$ 11-48 11-48 11-48 11-48 11-48 11-48 11-48 11-48 11-48# 11-48# 11-48# 11-48# 11-48# 11-48# 12-18 12-18 12-18 12-18 12-18 12-18 12-18 12-18 12-18# 12-18# 12-18# 12-18# 12-18# 12-18# 13-10 13-10 13-10 13-10 13-10 13-10 13-10 13-10 13-10 13-10 13-10 13-10# 13-10# 13-10# 13-10# 13-10# 13-10# 13-10# 13-30 13-30 13-30 13-30 13-30 13-30 13-30 13-30 13-30# 13-30# 13-30# 13-30# 13-30# 13-30# 16-20 16-20 16-20 16-20 16-20 16-20 16-20 16-20 16-20# 16-20# 16-20# 16-20# 16-20# 16-20# 16-22 16-22 16-22 16-22 16-22 16-22 16-22 16-22 16-22# 16-22# 16-22# 16-22# 16-22# 16-22# 18-42 18-42# 22-4 22-4 22-4 22-4 22-4 22-4# 22-4# 22-4# 22-4# 22-40 22-40 22-40 22-40 22-40 22-40 22-40 22-40 22-40# 22-40# 22-40# 22-40# 22-40# 22-40# 23-18 23-18 23-18 23-18 23-18 23-18# 23-18# 23-18# 23-18# 23-21 23-21 23-21 23-21 23-21 23-21 23-21 23-21 23-21# 23-21# 23-21# 23-21# 23-21# 23-21# 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 23-23# 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 24-26# 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-7# 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 26-9# 28-49 28-49 28-49 28-49 28-49 28-49 28-49 28-49 28-49# 28-49# 28-49# 28-49# 28-49# 28-49# 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 29-5# 30-5 30-5# 30-9 30-9# 30-12 30-26 30-26 30-26 30-26# 30-26# 30-26# 33-52 33-52# 34-3 34-3 34-3 34-3 34-3 34-3 34-3 34-3 34-3# 34-3# 34-3# 34-3# 34-3# 34-3# 36-24 36-24 36-24 36-24 36-24 36-24 36-24 36-24 36-24# 36-24# 36-24# 36-24# 36-24# 36-24# 36-30 36-30 36-30 36-30 36-30 36-30 36-30 36-30 36-30# 36-30# 36-30# 36-30# 36-30# 36-30# 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page S-2 Cross reference table (CREF V05.03a) 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 38-30# 41-3 41-3 41-3 41-3 41-3 41-3 41-3 41-3 41-3# 41-3# 41-3# 41-3# 41-3# 41-3# 41-5 41-5# 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 43-51# 46-27 46-27 46-27 46-27 46-27 46-27# 46-27# 46-27# 46-27# 46-39 46-39 46-39 46-39 46-39 46-39# 46-39# 46-39# 46-39# 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-43# 46-45 46-45 46-45 46-45 46-45 46-45 46-45 46-45 46-45# 46-45# 46-45# 46-45# 46-45# 46-45# 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 48-43# 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-12# 50-37 50-37 50-37 50-37 50-37 50-37 50-37 50-37 50-37# 50-37# 50-37# 50-37# 50-37# 50-37# 53-34 53-34# 54-22 54-22 54-22 54-22 54-22 54-22 54-22 54-22 54-22# 54-22# 54-22# 54-22# 54-22# 54-22# 58-11 58-11# 58-21 58-21# 61-47 61-47 61-47 61-47 61-47 61-47 61-47 61-47 61-47# 61-47# 61-47# 61-47# 61-47# 61-47# 63-8 63-8 63-8 63-8 63-8 63-8 63-8 63-8 63-8# 63-8# 63-8# 63-8# 63-8# 63-8# 64-41 64-41# 65-38 65-38 65-38 65-38 65-38 65-38 65-38 65-38 65-38 65-38 65-38 65-38# 65-38# 65-38# 65-38# 65-38# 65-38# 65-38# 68-31 68-31 68-31 68-31 68-31 68-31 68-31 68-31 68-31# 68-31# 68-31# 68-31# 68-31# 68-31# 68-33 68-33 68-33 68-33 68-33 68-33 68-33 68-33 68-33# 68-33# 68-33# 68-33# 68-33# 68-33# 69-11 69-11 69-11 69-11 69-11 69-11 69-11 69-11 69-11# 69-11# 69-11# 69-11# 69-11# 69-11# 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 70-19# 75-42 75-42 75-42 75-42 75-42 75-42 75-42 75-42 75-42# 75-42# 75-42# 75-42# 75-42# 75-42# 76-43 76-43 76-43 76-43 76-43 76-43 76-43 76-43 76-43# 76-43# 76-43# 76-43# 76-43# 76-43# 78-43 78-43 78-43 78-43 78-43 78-43 78-43 78-43 78-43# 78-43# 78-43# 78-43# 78-43# 78-43# 86-3 86-3 86-3 86-3 86-3 86-3 86-3 86-3 86-3 86-3 86-3 86-3 86-3 86-3 86-3 86-3 86-3 86-3 86-3# 86-3# 86-3# 86-3# 86-3# 86-3# 86-3# 86-3# 86-3# 86-3# 86-3# 86-3# 86-3# 86-3# 86-3# 86-3# 86-3# 86-3# 87-3 TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page S-3 Cross reference table (CREF V05.03a) 87-3 87-3 87-3 87-3 87-3 87-3 87-3 87-3 87-3 87-3 87-3 87-3 87-3 87-3 87-3 87-3 87-3 87-3 87-3 87-3 87-3 87-3 87-3 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 87-3# 88-3 88-3 88-3 88-3 88-3 88-3 88-3 88-3 88-3 88-3 88-3 88-3# 88-3# 88-3# 88-3# 88-3# 88-3# 88-3# 88-3# 88-3# 88-3# 88-3# $$1000 43-44 43-44# $$1001 24-30 24-30# $$1002 43-5 43-5# $$1003 13-32 13-32# $$1004 40-55 40-55# $$1005 49-3 49-3# $$1006 43-13 43-13# $$1010 43-17 43-17# $$1011 33-1 33-1# $$1012 43-45 43-45# $$1014 24-22 24-22# $$1015 43-46 43-46# $$1016 43-1 43-1# $$1017 40-53 40-53# $$1021 49-50 49-50# $$1022 50-14 50-14# $$1023 43-9 43-9# $$1024 44-1 44-1# $$1025 28-3 28-3# $$1030 49-7 49-7# $$1031 43-30 43-30# $$1032 45-9 45-9# $$1033 22-32 22-32# $$1036 45-1 45-1# $$1037 48-37 48-37# $$1040 43-47 43-47# $$1041 24-28 24-28# $$1042 26-3 26-3# $$1043 46-5 46-5# $$1045 45-29 45-29# $$1046 46-3 46-3# $$1047 27-9 27-9# $$1050 46-22 46-22# $$1051 46-34 46-34# $$1052 46-9 46-9# $$1053 46-14 46-14# $$1054 43-38 43-38# $$1055 46-11 46-11# $$1056 43-34 43-34# $$1057 46-7 46-7# $$1060 47-12 47-12# $$1061 47-11 47-11# $$1062 47-10 47-10# $$1063 47-9 47-9# $$1064 47-8 47-8# $$1065 47-7 47-7# $$1066 47-6 47-6# $$1067 47-5 47-5# $$1070 47-2 47-2# $$1071 47-1 47-1# TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page S-4 Cross reference table (CREF V05.03a) $$1072 51-1 51-1# $$1073 23-1 23-1# $$1074 22-3 22-3# $$1075 24-3 24-3# $$1076 22-14 22-14# $$1077 12-20 12-20# $$1100 57-45 57-45# $$1101 42-1 42-1# $$1102 47-45 47-45# $$1103 51-19 51-19# $$1104 52-23 52-23# $$1105 38-26 38-26# $$1106 29-3 29-3# $$1107 32-14 32-14# $$1110 43-23 43-23# $$1111 33-9 33-9# $$1112 51-9 51-9# $$1113 52-29 52-29# $$1114 21-3 21-3# $$1115 65-1 65-1# $$1116 31-12 31-12# $$1117 55-1 55-1# $$1120 35-1 35-1# $$1121 45-15 45-15# $$1122 51-14 51-14# $$1123 29-12 29-12# $$1124 40-28 40-28# $$1125 50-1 50-1# $$1126 40-4 40-4# $$1127 40-35 40-35# $$1130 28-22 28-22# $$1131 36-3 36-3# $$1132 43-26 43-26# $$1133 62-1 62-1# $$1134 25-1 25-1# $$1135 63-10 63-10# $$1136 18-44 18-44# $$1137 31-8 31-8# $$1174 27-20 27-20# $$1177 43-48 43-48# $E$BNI 22-40 22-40 22-40 $E$CPQ 63-8 63-8 63-8 $E$DTB 54-22 54-22 54-22 $E$IAA 41-3 41-3 41-3 $E$IEC 38-30 38-30 38-30 $E$IFC 29-5 29-5 29-5 $E$IIA 28-49 28-49 28-49 33-52 33-52 33-52 33-52 $E$ILL 11-48 11-48 11-48 18-42 18-42 18-42 18-42 $E$ILN 46-45 46-45 46-45 $E$IPA 34-3 34-3 34-3 $E$IQC 26-7 26-7 26-7 $E$IQN 61-47 61-47 61-47 $E$IRA 50-37 50-37 50-37 $E$ISA 78-43 78-43 78-43 $E$ISS 75-42 75-42 75-42 $E$IUC 70-19 70-19 70-19 TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page S-5 Cross reference table (CREF V05.03a) $E$MEM 16-22 16-22 16-22 41-5 41-5 41-5 41-5 53-34 53-34 53-34 53-34 64-41 64-41 64-41 64-41 $E$MRP 68-33 68-33 68-33 $E$NAB 48-43 48-43 48-43 $E$NAC 43-51 43-51 43-51 $E$NAE 24-26 24-26 24-26 $E$NAP 46-43 46-43 46-43 $E$NAQ 26-9 26-9 26-9 $E$NAS 23-23 23-23 23-23 $E$NAU 50-12 50-12 50-12 $E$NYA 36-30 36-30 36-30 $E$PDO 68-31 68-31 68-31 $E$POP 69-11 69-11 69-11 $E$SNI 23-21 23-21 23-21 $E$SRH 30-26 30-26 30-26 $E$STL 76-43 76-43 76-43 $E$UTC 16-20 16-20 16-20 $E$UTM 13-30 13-30 13-30 $E$XAB 12-18 12-18 12-18 $E$YCA 36-24 36-24 36-24 ..ABS. 9-5 9-5 10-3 10-3 ..CMD 15-44 89-15# ..CND 26-6 86-3# ..CSM 56-17 90-29# ..CSME 57-11 90-64# ..CSMF 57-16 90-74# ..EEE 38-29 87-3# ..FFF 29-4 88-3# .AAA.A 37-33# 41-25 .BSL.I 25-6 33-16# .BSL.N 25-34 47-13# .BSL.P 25-17 33-23# .CMDBL 14-40# 89-16 .CMDBS 19-7# 89-17 .CMDCU 17-10# 17-13 89-19 .CMDCW 20-3# 89-20 .CMDEL 17-3# 89-25 .CMDGV 18-3# 89-24 .CMDLF 19-3# 89-18 .CMDQU 14-50# 89-23 .CMDSP 14-29# 89-21 .CMDST 14-3# 89-22 .CNDA 26-15# 86-3 .CNDC 26-13# 86-3 .CNDD 26-14# 86-3 .CNDE 26-39# 86-3 .CNDEQ 26-38# 86-3 .CNDF 26-36# 86-3 .CNDG 26-27# 86-3 .CNDL 26-32# 86-3 .CNDLA 26-31# 86-3 .CNDN 26-22# 86-3 .CNDR 26-16# 86-3 .CNDRA 26-26# 86-3 .CNDS 26-29# 86-3 .CNDT 26-30# 86-3 TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page S-6 Cross reference table (CREF V05.03a) .CNDU 26-37# 86-3 .CNDV 26-11# 86-3 .CNDW 26-12# 86-3 .CSMA 57-46# 90-39 .CSMDQ 13-3# 90-35 .CSME 57-10# 90-40 .CSMF 57-15# 90-41 .CSMI 22-4# 90-37 .CSMO 22-29 23-15 23-18# 90-38 .CSMQ 57-12 57-19 57-21 57-23# 57-34 57-37 90-31 90-43 90-45 90-46 90-48 90-54 .CSMR 57-38# 90-36 90-42 90-44 90-47 90-49 90-50 90-51 90-52 .CSMRQ 57-37# 90-32 .CSMUA 56-24# 90-53 .CSMX 13-4 13-14# 90-33 .CSMY 57-34# 90-30 90-34 .EEEA 39-24# 87-3 .EEEB 38-3# 87-3 .EEEC 39-34# 87-3 .EEED 49-11# 87-3 .EEEE 49-13# 87-3 .EEEF 39-37# 87-3 .EEEG 38-4# 87-3 .EEEH 49-15# 87-3 .EEEI 38-5# 87-3 .EEEJ 49-46# 87-3 .EEEK 39-18# 87-3 .EEEN 38-6# 87-3 .EEEO 45-6# 87-3 .EEEP 39-21# 87-3 .EEER 38-7# 87-3 .EEES 49-17# 87-3 .EEET 49-19# 87-3 .EEEU 49-21# 87-3 .EEEUN 31-46# 87-3 .EEEV 49-23# 87-3 .EEEW 38-8# 87-3 .EEEX 39-30# 87-3 .EEEY 36-1# 87-3 .FFF.R 51-17 51-21# 52-16 .FFFAP 27-19# 88-3 .FFFB 29-8# 88-3 .FFFC 29-7# 88-3 .FFFLA 22-18 22-21# 88-3 .FFFN 31-1# 88-3 .FFFR 52-3# 88-3 .FFFRA 22-13# 88-3 .FFFS 29-11# 88-3 .FFFUN 31-2# 88-3 .FFFVB 27-24# 88-3 .III.I 2-143 33-15# .PPP.B 31-42 34-9# 36-28 .PPP.P 31-28 34-23# .QQQ.Q 49-51# 78-7 .SCH.I 22-10 22-30 23-11# 30-17 .SCH.R 29-23 33-30# 52-13 .SCH.T 19-29 40-1# TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page S-7 Cross reference table (CREF V05.03a) .SCH.V 15-23 30-24 40-2# .SUR.C 79-20# 79-39 81-17 .SUR.M 79-36# 81-11 .SUR.N 79-18# 80-21 80-28 81-23 81-28 .SUR.S 79-34 81-1# .SUR.Y 79-38# 80-27 81-14 81-22 81-27 .SURCH 31-34 79-1# .VVV.N 21-4# 49-52 72-11 .VVV.V 2-148 19-21 21-5# .YYY.C 31-40 34-14 36-26 37-1 39-35 85-24# .YYY.F 37-33 85-26# .YYY.P 31-37 36-20# .YYY.Y 2-161 31-29 34-18 35-14 36-5 37-1# 39-1 ADJ 33-19 33-37 52-33 53-9# ALLERR 6-20 59-28 ALPHA 26-14 26-15 71-21# 83-27 ALPHAL 26-11 71-27# 83-32 ALPHAN 26-15 26-16 61-16 71-19# 81-26 83-5 83-31 ALPHAU 26-11 26-12 71-22# 71-28 83-33 APS 7-26# 88-3 AULQRG 9-9# 65-34* 65-36* 66-5 66-8 66-12 67-4 67-6* AUXQRG 9-12# 62-5 63-13 63-30 BACKUP 6-33 34-12 BEL 7-17# 14-30 16-16 89-14 BRNCOM 49-56# 50-8 50-19 50-23 BS 7-18# 89-13 BZCHK 51-22 69-9# 72-21 78-10 78-13 CFLG 10-18 10-18# 20-9* 22-22* 35-5 40-3* 40-13* 43-43* 44-21* 49-27* 49-33* 50-7* 50-9* 52-5 52-24 72-7* 72-9* 78-4* 78-6* 78-32* 78-34* CHKCLN 38-13 40-43 41-35 69-34# CHKCLO 63-11 69-35# CHKSTP 12-14# 31-33 35-17 39-3 CLNF 10-19 10-19# 22-24* 23-6* 24-16* 24-18* 28-43 28-46* 29-29 29-31* 30-31* 32-18* 32-20* 32-26* 40-40 42-3 44-5* 44-14* 44-17* 44-24* 45-31* 45-34* 45-37* 51-2* 51-4* 65-6* 65-7 65-37* 69-35 69-39* 78-36 CLNLCL 15-10 66-8# 66-10 CLNXIT 34-8 35-15 36-4 41-34# CLREND 10-33# 15-28 CLSFIL 6-52 39-14 CLSOUT 6-59 39-37 CMDDNE 2-50 18-36# CMDQRG 2-17 9-14# 10-70 13-35 14-17 15-11 18-19 CNDN 10-25 10-25# 13-3* 27-2* 27-6 27-15* CNV8BT 2-40 92-7# CR 7-23# 19-12 24-19 30-5 43-46 43-46 43-46 72-2 CRLF 2-65 72-2# CRLFNO 2-70 14-32 14-49 15-3 18-18 30-3 59-35 72-1# CRTYPE 10-52 10-52# CURFRE 10-68 10-68# 37-27 84-30* 84-48 85-1 85-4 85-6* CVTSPC 73-8# 81-10 CVTSRH 32-3 32-42 73-3# DATE 6-102 43-6 DEL 7-36# 43-48 43-48 43-48 89-5 DELCHR 6-66 17-5 19-33 20-17 DELLIN 6-75 17-15 19-34 DIVD 2-76 48-23# 59-31 74-17 TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page S-8 Cross reference table (CREF V05.03a) E$$TXT 3-16 3-17 3-17# 3-18 3-20 11-48 12-18 13-30 16-20 16-22 22-40 23-21 23-23 24-26 26-7 26-9 28-49 29-5 30-1 30-26 34-3 35-32 36-24 36-30 38-30 41-3 43-51 46-43 46-45 48-43 50-12 50-37 54-22 58-3 59-3 60-1 61-47 63-8 68-31 68-33 69-11 70-19 75-42 76-43 78-43 ED$CTL 5-24 75-14 ED$EXP 5-26 37-29 ED$IMD 5-29 ED$INC 5-30 80-1 ED$SRH 5-28 79-28 ED$WCH 5-31 15-18 ED$YNK 5-25 36-22 EDIT 10-47 10-47# 15-18 36-22 37-29 49-4 49-8 49-12 75-14 79-28 80-1 EEFLAG 10-46 10-46# 49-12 49-14 EHELP 10-45 10-45# 49-14 49-16 59-13 59-23 EOFLAG 10-50 10-50# 34-15* 37-3 37-22 43-2 EQU 7-28# 86-3 ERR4EH 14-49# 59-27 ERRMIO 35-37 58-23 58-30 59-9# ERRMSG 11-48 12-18 13-30 16-20 16-22 22-40 23-21 28-49 34-3 36-24 36-30 41-3 46-45 50-37 54-22 59-1# 61-47 63-8 68-31 68-33 69-11 75-42 76-43 78-43 ERROR 2-30 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-42 11-48# ERRORA 23-23 24-26 26-9 43-51 46-43 48-43 50-12 58-7# ERRORC 26-7 29-5 38-30 58-14# 70-19 ERRORS 30-26 58-27# ERRPOS 10-38 10-38# 14-40* 14-50 15-35 16-1* 59-9* 59-25 ESC 7-24# 15-40 18-5 22-32 22-32 22-32 22-33 57-24 ESC.LF 18-11 19-16# ESFLAG 10-44 10-44# 30-22 49-16 49-18 ET$8BT 5-17 ET$BIN 5-5 44-4 ET$CC 5-20 ET$CCO 5-9 ET$CKE 5-10 ET$CRT 5-6 19-30 20-5 ET$DET 5-11 ET$GRV 5-18 18-3 ET$IAS 5-14 20-5 ET$LC 5-7 ET$NCH 5-8 ET$RFS 5-15 ET$TRU 5-13 ET$XIT 5-12 15-17 ETYPE 10-43 10-43# 15-17* 18-3 19-30 20-6 44-7 44-10* 44-13* 49-18 49-20 EUFLAG 10-42 10-42# 49-20 49-22 EVFLAG 10-41 10-41# 15-21 19-22 49-22 49-23 EXPAND 53-19# 64-25 85-16 FF 7-22# 21-8 24-21 24-22 24-22 24-22 24-23 71-3 FFFLAG 10-49 10-49# 34-11 34-23 37-21 39-9 41-27 49-4 85-26* TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page S-9 Cross reference table (CREF V05.03a) FILBUF 10-77 10-77# 38-9 60-5 73-23 FLAGRW 6-82 49-34 49-47 GENSRH 80-34 91-3# GETBUF 6-105 37-19 GETFLS 6-148 38-16 GETN 21-4 35-7 45-30 51-15 51-20 52-26 69-19# 78-12 78-40 GETQRG 32-16 73-18# 76-20 GETSCH 75-3# 78-14 78-41 GETSTG 38-10 55-3 75-4# GETXTP 25-10 25-18 67-22# GEXIT 6-179 39-27 GONCOM 42-11 42-15 43-3 43-7 43-11 43-15 43-19 43-28 43-36 44-22 44-26 45-4 45-7 45-11 45-27# GRV 7-31# 89-6 INDIR 10-56 10-56# 15-15 15-42 18-16 INPNTR 10-57 10-57# 39-12 INPSAV 6-199 39-21 IO.ERR 37-20# 39-11 39-15 IOERR 2-84 34-13 35-30# 37-20 IOERRS 2-91 35-36# 38-20 38-22 IREST 15-33 22-26 27-11 29-26 38-12 55-23 55-36 55-40 56-6 57-24# 69-27 ITRCNT 10-11 10-11# 22-4 22-6* 22-9* 22-17 22-19* 23-18 23-18 23-18 ITRST 10-10 10-10# 13-10 13-10 13-10 22-4 22-4 22-4 22-5* 22-15 22-21 23-2 23-11 23-14 23-18 29-32 55-9 65-38 65-41* KILFIL 6-206 39-18 LAB 7-27# 22-3 22-3 22-3 86-3 88-3 LCB 7-32# LCLQRG 9-10# 14-10 61-15 65-4 65-11 65-23 66-29 67-8 67-18 83-13 LCLSIZ 10-9 10-9# 13-10 65-7* 65-10* 65-14* 65-18 65-21* 65-34 65-38 67-1 LF 7-20# 14-29 17-12 17-18 19-16 19-32 21-16 21-28 24-21 30-5 40-23 43-45 43-45 43-45 71-5 72-4 89-12 LISTEN 6-214 11-15 14-6 14-9 LSCHSZ 10-40 10-40# 25-2* 32-36 33-5 33-15* 33-24* 33-42* 43-10 43-32 52-4 79-14* 80-10* M 10-16 10-16# 28-27 35-25 40-15 40-30 43-41* 44-20* 49-31 50-6 52-8 52-31 72-10* 72-13 72-16 72-18 72-19* 72-22 78-3 78-29 MAKCTL 70-11# 75-18 MPDL 10-7 10-7# 13-8 13-10 13-28 65-38 65-39* N 10-15 10-15# 18-38* 22-9 23-8* 23-9 28-38 29-45 30-20 33-14 38-23* 40-11 40-36 40-46* 41-9* 41-18* 41-19 41-29* 41-38* 42-8 43-24* 43-32* 43-41 43-42* 44-11 45-19 46-16 46-40 47-36* 48-40* 49-26 49-46 50-5 50-25 51-11 52-11 55-31* 63-5* 69-19 70-30 72-12* 72-15 72-18* 72-20 74-3 78-9* NACC 10-13 10-13# 46-16* 46-27 46-39 46-39 46-39 47-35 47-49* 48-1 48-6 48-15 48-21 NCOM 25-9 29-28 40-27 45-22 45-27 45-40 46-25 47-46# 49-39 49-48 49-56 69-18 69-38 NFLG 10-14 10-14# 18-36 18-39* 20-8* 20-14* 20-22* 22-7* 22-25* 23-4* 24-4* 24-32* 25-3* 26-4* 27-10* 28-7* 28-12* 28-16* 29-44* 30-19* 31-48* 32-15* 33-12* 33-27* 36-2* 36-6* 38-21 38-27 38-28* 39-32 40-2* 40-9* 40-37* 40-48 41-7 42-5* 43-39* 44-2* 45-16* 46-19* 46-35 47-17* 47-37* 48-38 49-9 49-10* 50-2* 50-15* 51-10* 52-9* 52-12* 55-6* 55-8* 63-3 69-20* 69-34* 72-14* NLINES 28-24 35-23 40-29 52-7 52-30 72-7# NMRBAS 10-37 10-37# 24-6 24-7* 24-9* 24-12* 24-15* 25-20 25-29 40-56* 47-3 47-23 50-18 50-34* 74-5 74-12 NOCTLO 6-228 15-14 72-1 NOPR 10-12 10-12# 25-16* 36-10 41-13 46-15* 46-27 46-27 46-27 46-39 47-32 47-50* TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page S-10 Cross reference table (CREF V05.03a) NP 10-26 10-26# 46-17* 47-19 47-31* 47-42* 47-46* NUL 7-16# 43-44 43-44 43-44 NUMER 25-27 26-13 26-14 71-8# 71-19 83-29 NUMQRG 9-3# 9-7 9-10 65-13 65-20 65-23 65-28 66-17 66-19 66-28 66-29 67-8 67-10 NWATCH 10-51 10-51# 20-21 40-39 40-50* OFLG 10-17 10-17# 22-23* 36-8 36-14* 41-11 41-17* 46-18* 46-23 47-38* 47-47 OP$ADD 36-10 36-11 41-13 41-14 46-13 47-33# OP$AND 46-4 48-1# OP$DIV 46-6 46-8 48-20# OP$MUL 46-8 46-10 48-9# OP$OR 46-4 46-6 48-6# OP$SUB 36-10 36-11 41-13 41-14 46-10 46-13 47-34# OSCANP 10-21 10-21# 28-17 33-3* 33-30 69-4* 69-28 OUPNTR 10-58 10-58# 36-20 39-7 OUTDNE 10-53 10-53# OUTSAV 6-231 39-24 P 10-35 10-35# 19-19 21-6 21-21* 29-21 29-22* 31-43* 33-20 33-23* 33-44 33-45* 42-9 43-35 49-51 49-53* 51-21 51-23* 52-8* 52-31* 53-9 67-22 72-10 72-12 72-13* 78-8 79-3 80-14* 85-24* PC 7-12# 11-21* 11-28* 11-30* 12-12* 12-17* 12-22* 13-11* 13-13* 14-6* 14-9* 14-11* 14-15* 14-18* 14-32* 14-33* 14-35* 14-43* 14-49* 14-54* 14-56* 15-3* 15-10* 15-12* 15-13* 15-14* 15-20* 15-23* 15-25* 15-33* 15-39* 16-14* 16-17* 16-18* 17-3* 17-5* 17-10* 17-14* 17-15* 17-17* 17-29* 18-14* 18-18* 18-20* 18-24* 18-25* 18-35* 18-45* 19-13* 19-17* 19-21* 19-28* 19-33* 20-11* 20-17* 20-19* 21-4* 21-22* 22-36* 23-17* 24-20* 24-34* 24-38* 24-39* 25-7* 25-9* 25-10* 25-17* 25-18* 25-22* 25-27* 25-34* 26-18* 27-8* 28-5* 28-15* 28-24* 28-26* 28-39* 28-41* 29-8* 29-13* 29-17* 29-23* 29-26* 29-28* 30-3* 30-4 30-13* 30-32* 31-1 31-17* 31-23* 31-28* 31-29* 31-33* 31-34* 31-37* 31-40* 31-42* 32-3* 32-4* 32-8* 32-16* 32-35* 32-42* 32-46* 33-2* 33-4* 33-7* 33-10* 33-19* 33-25* 33-37* 33-50* 34-12* 34-14* 35-7* 35-11* 35-14* 35-17* 35-21* 35-23* 35-28* 36-26* 37-1* 37-19* 37-31* 37-33* 38-10* 38-12* 38-13* 38-16* 38-24* 39-1* 39-3* 39-10* 39-14* 39-18* 39-21* 39-24* 39-31* 39-34* 39-37* 40-18* 40-24* 40-27* 40-29* 40-43* 40-45* 40-51* 40-57* 41-25* 41-35* 41-39* 43-6* 43-14* 43-18* 43-25* 43-31* 43-33* 43-49* 44-12* 44-15* 44-19* 44-25* 45-2* 45-18* 45-30* 45-33* 46-20* 46-25* 47-32* 47-39* 48-33* 48-41* 49-34* 49-42* 49-47* 49-52* 50-4* 50-10* 50-35* 51-5* 51-15* 51-20* 51-22* 51-24* 52-3* 52-7* 52-16* 52-18* 52-21* 52-26* 52-30* 52-32* 53-32* 54-20* 55-3* 55-11* 55-13* 55-15* 55-19* 56-6* 56-9* 56-18* 56-24* 57-3* 57-13* 57-22* 57-23* 57-29* 57-32* 57-38* 57-47* 58-8 58-10 58-18 58-20 59-28* 59-31* 59-35* 59-41* 60-7* 60-17* 60-19* 60-20* 60-22* 60-27* 61-10* 61-14* 61-16* 61-39* 61-45* 62-2* 62-6* 62-10* 62-14* 63-6* 63-11* 63-12* 63-14* 63-25* 63-31* 64-11* 64-20* 64-25* 64-29* 64-32* 64-38* 65-2* 65-24* 66-7* 66-11* 66-13* 67-28* 68-10* 68-23* 68-29* 69-3* 69-5* 69-7* 69-18* 69-22* 69-26* 69-27* 69-32* 69-38* 69-40* 70-1* 70-7* 70-10* 70-11* 70-17* 70-21* 70-23* 70-32* 71-6* 71-11* 71-19* 71-21* 71-25* 71-39* 71-43* 72-1* 72-3* 72-11* 72-21* 72-23* 73-14* 73-30* 73-32* 73-35* 74-8* 74-17* 74-28* 75-6* 75-10* 75-16* 75-18* 75-30* 76-5* 76-20* 77-12* 78-7* 78-10* 78-12* 78-13* 78-14* 78-40* 78-41* 80-18* 80-22* 80-25* 80-35* 81-10* 81-21* 81-26* 81-31* 83-5* 83-14* 84-41* 84-49* 85-16* 85-29* 85-35* PCNT 10-30 10-30# 46-26* 46-37* 68-15 PDL 10-39 10-39# 13-8 15-5* 15-8 68-9 68-11* POP 13-10 23-18 46-39 68-25# POPLCL 13-11 67-1# PRINT 6-238 14-54 17-26 30-13 PRINTB 6-248 24-39 PRINTF 6-260 32-51 40-33 PRTLIN 2-99 17-17# TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page S-11 Cross reference table (CREF V05.03a) PST 10-27 10-27# 29-20 29-22 80-5* 80-12* PUSH 22-4 65-38 68-15# PUSHP 46-27 68-17# PUTBUF 6-271 35-28 39-10 QADJ 14-15 15-13 28-15 28-26 62-10 63-25 63-43 64-10# 65-24 66-30 67-20 QARRAY 10-70 10-70# 61-31 65-11 65-34* 65-36* 66-5 66-8 67-4 67-6* 67-8 QBASE 10-36 10-36# 13-18 14-52 24-36 28-18 33-32 64-30* 71-36 QCHK 55-13 57-27# 69-3 75-6 QCMND 10-8 10-8# 13-10 13-12 13-35 15-26 15-32* 64-26 64-28* 65-38 QFLG 10-20 10-20# 57-27 57-30* 57-46* QLCMD 10-72 10-72# 14-12 14-44* 16-2* 18-15* QLENGT 10-24 10-24# 13-16 22-35 64-31* 71-34 QMAX 10-65 10-65# 16-6 84-21 84-40 85-13 85-34 QNMBR 10-23 10-23# 61-23* 61-27 62-3 62-5* 63-30* 65-3 65-23* 66-29* 67-18* QPNTR 10-71 10-71# 12-3 12-6* 12-11 14-4 14-14* 15-36 16-9* 17-25 18-10 18-15 19-10 20-3 QREF 28-41 45-18 61-10# 62-2 63-12 65-2 73-32 QREFR0 15-12 61-23# 66-13 QREFR1 14-11 61-13 61-16# 83-14 QREFVL 45-33 50-4 61-9# 76-5 QRSTOR 10-64 10-64# 12-8 13-19 14-19 14-20 14-53 16-10 16-12 24-37 28-19 28-30 32-48 33-41 45-24 62-15 62-16 63-18 63-33 63-34 64-24 64-37 65-26 66-16 71-37 76-24 83-17 84-35 84-36* 85-11 85-12* QSKP 29-17 57-22 57-23 69-3# 69-26 QSKPE 55-19 69-5# 69-6 QSKPR0 24-34 28-5 33-2 33-10 52-3 69-26# QSUMX 14-18 61-31# 62-14 63-14 64-29 QSUMY 61-27# 62-6 63-31 64-11 64-27 QUOTE 10-22 10-22# 24-33* 55-12* 57-31* 70-22 QZ 10-66 10-66# 12-5* 12-7 14-13* 16-5 16-8* 45-10 64-12 64-23* 64-35* 84-22 R0 7-5# 11-23 11-26 11-29* 12-9* 13-12* 13-15* 13-16 13-18* 13-19* 13-20 13-20* 14-7 14-12* 14-13 14-14 14-17* 14-41 14-55* 15-11* 15-21* 15-24* 15-26* 15-32 15-35* 15-38* 15-40 16-4 16-11 16-16* 17-12 17-28* 18-5* 18-12 18-19* 18-26 18-28* 19-9 19-12* 19-16* 19-20* 19-32* 20-10* 20-12 20-13* 20-18* 20-21* 21-9 21-18* 21-30* 22-28 22-38 24-19* 24-21* 24-23* 24-29 24-29 24-31 24-35 25-12* 25-14 25-16 25-23 25-25 25-31 25-33 26-17* 27-4 27-13 28-9* 28-14* 28-17* 28-18* 28-19* 28-25* 28-27* 28-28* 28-35 29-20* 29-21* 29-27* 30-22* 31-4 31-4* 31-9* 31-16 31-46* 32-5* 32-22 32-31* 32-40* 32-43 32-49 33-14* 33-16* 33-17 33-18* 33-29* 33-34* 33-35* 34-9* 34-24* 35-8 35-24 35-25* 35-26* 36-16* 37-5* 37-14 37-18* 38-8* 38-19 39-4* 40-1* 40-5 40-6* 40-8* 40-11* 40-12 40-15* 40-16* 40-17* 40-19* 40-21 40-23* 40-25* 40-32 40-44* 40-46 40-50 40-54* 40-56 42-7* 42-13* 42-14* 43-2* 43-10* 43-27* 43-35* 44-11* 45-3* 45-6* 45-10* 45-20* 45-25* 45-26* 45-32 45-39* 46-4* 46-6* 46-8* 46-10* 46-12 46-15 46-40* 47-19* 47-20 47-21* 47-22* 47-26* 47-28* 47-29* 47-30* 47-31 47-34* 47-35* 47-36 47-41* 48-3* 48-6* 48-13* 48-20 48-21* 48-25* 48-30* 49-26* 49-30* 49-31* 49-38* 49-41 49-46* 49-54* 49-55* 50-6* 50-17* 50-21* 50-22 50-28* 50-31* 50-34 51-11* 51-16* 51-21* 51-23 52-4* 52-11* 52-14 52-17* 52-20* 53-11 53-18* 53-21 53-22 53-23 53-24* 53-30 53-31 54-2 54-5 54-6* 54-9 54-10 54-11 54-12* 54-18 54-19 55-12 55-17 56-10 56-12 56-14 57-5 57-18 57-20 57-24* 57-31 57-39 58-7* 58-8* 58-14* 58-15* 58-16* 58-17* 58-18* 58-27* 59-1* 59-33 59-36* 59-37* 59-38 59-40* 59-42* 60-6* 60-8* 60-11* 60-16* 60-18* 60-21* 61-12 61-18 61-20* 61-21* 61-22* 61-23 61-27* 61-36* 61-37* 61-38 61-43* 62-7* 62-8* 62-9* 62-13* 63-13* 63-22* 63-23* 63-24* 63-41* 63-42* 64-10 64-13* 64-15 64-16 64-22* 64-24* 64-26* 64-28 64-34* 64-37* 65-9* 65-15* 65-18* 65-20* 65-21 65-22* 65-42* 66-12* 66-27* 66-28* 67-7* 67-12* 67-16 67-19* 67-22* 67-23 67-25* 67-26 67-26* 68-5 68-6* 68-12* 68-17* 68-21* 68-25* 68-27* 69-9 69-17* 69-19* 69-29* 69-30* 69-31* 69-37* TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page S-12 Cross reference table (CREF V05.03a) 70-2 70-4 70-6* 70-12 70-14 70-16* 70-22 70-34 71-3 71-5 71-8 71-10 71-13 71-15 71-17 71-22 71-24 71-27* 71-33* 71-34 71-36* 71-37* 71-38 71-38* 71-40 72-2* 72-4* 72-15* 72-16 72-19 72-20* 72-22* 73-3 73-5* 73-7* 73-8 73-10 73-12* 73-13* 73-24* 73-25 73-27* 73-28* 73-33* 74-7* 74-10* 74-19 74-21* 74-22 74-24* 74-25 74-27* 74-31 75-4 75-12 75-20 75-22 75-25 75-27 75-34 75-36* 75-38* 76-6* 76-8 76-10 76-12* 76-14* 76-18* 76-22 76-27* 76-29 76-31 76-33 76-35 76-37* 76-38 77-1* 78-3* 78-8* 78-9 78-11 79-33* 79-36 80-23 80-24* 80-26 80-30 80-32* 80-34 80-34* 81-1 81-3 81-6 81-9* 81-19 81-20* 81-25* 81-30* 81-32 81-34 81-36 81-38 81-40 81-41* 81-42 81-44 81-48* 82-4* 82-5 82-7 83-1* 83-2 83-4* 83-15* 83-20 84-5 84-6* 84-12 84-13* 84-15 84-33 84-35* 84-43* 85-8* 85-11* 85-21* R1 7-6# 11-22* 11-25* 14-3* 14-10* 14-21 14-21* 14-22* 14-29* 15-27* 15-28* 15-29* 15-30 16-5* 16-6 16-10* 16-11* 16-12* 16-13* 17-18* 17-21 18-9* 18-26* 18-29 19-9* 19-14* 19-20 19-24 19-26 21-6* 21-7* 21-12 21-14 21-16 21-20* 21-21 21-24 21-26 21-28 21-32* 24-33 25-33* 28-31 28-31* 28-32* 28-33* 28-42 29-16 29-18* 29-24* 29-27 31-19 31-31 31-31* 32-38* 32-43* 33-5* 33-6* 33-20* 33-21* 33-22* 33-44* 33-46* 33-47* 34-10* 34-25* 35-24* 37-6* 37-7* 37-8 37-14* 37-17 37-21* 37-22* 37-26* 37-27 39-5* 41-21* 41-22* 42-8* 42-9* 42-10 42-12* 42-14 44-4* 44-7 44-9* 44-10 44-13 44-20 45-21 45-36 45-38* 45-39 47-13* 47-14 47-16* 47-30 47-41 47-42 48-1* 48-2* 48-3 48-9* 48-12* 48-15* 48-23* 48-26* 48-27 48-29* 49-54 50-5* 50-25* 50-26 50-29 50-32 52-14* 52-17 53-11* 53-14* 53-17 53-21* 53-26* 53-31* 54-1* 54-9* 54-14* 54-18* 57-4* 57-5 59-32 60-3* 60-8 61-11* 61-15* 61-22 61-31* 61-32* 61-38* 61-41 61-42 62-4 62-7 62-11 62-17 62-17 62-18 62-19 62-20 62-21 62-22 62-22* 62-23* 63-15 63-17 63-26 63-27* 63-28 63-32 64-13 64-14* 64-16* 64-19* 64-23 64-31 64-35 64-36* 65-11* 65-12* 65-14 65-15 65-22 65-25 65-27 65-29 65-30 65-31* 66-14 66-15 66-18 66-20* 66-21* 66-22 66-23* 66-24* 66-27 67-8* 67-9* 67-11* 67-12 67-13* 67-16* 68-7* 68-8* 68-20 68-26* 70-33* 70-34 70-37 70-39* 70-40* 70-41* 70-42* 70-43 73-33 74-18 75-19* 75-24* 75-29* 75-32* 76-6 76-22* 76-25* 78-15* 78-20 78-22 79-3* 79-5* 79-15 79-43* 79-46 80-5 80-6 80-17* 82-14 82-16 82-18 82-20 82-25* 83-7 83-9* 83-13* 83-16 83-16* 83-18* 83-24* 84-7 84-9 84-14* 84-15* 84-34 84-39* 84-42* 84-47 84-48* 84-50* 85-1* 85-4 85-6 85-8 85-12 85-14* 85-20* 85-27* R2 7-7# 14-16 14-20* 14-24 18-29* 18-30 18-32* 18-33* 18-34* 18-35 21-5* 21-7 21-11* 21-12 21-24 24-31* 24-38 26-11* 26-12* 26-13* 26-14* 26-15* 26-16* 26-18 28-29* 28-30* 28-35* 28-38* 31-21* 31-22 31-30* 32-5 32-21 32-28 32-29 32-32 32-34* 32-39* 32-40 32-48* 32-50 33-40* 33-41* 33-47 34-11* 34-20* 34-23* 35-27* 35-37* 37-8* 37-9* 37-10* 37-11 37-13* 37-17* 38-14 39-9* 45-23 48-10* 48-16* 48-20* 48-27 48-29 49-4* 49-8* 49-11 49-13 49-15 49-17 49-19 49-21 49-23* 49-29* 49-30 49-32* 49-35* 49-38 49-41* 53-9* 53-19 53-22* 53-24 53-25* 53-28 53-30* 54-1 54-2* 54-3 54-7 54-10* 54-14 54-16 57-4 57-8* 57-10* 57-15* 59-13* 59-14* 59-15* 59-29* 60-5* 60-13* 61-33* 61-41* 62-11* 62-12 62-15* 62-25 63-17* 63-18* 63-19 63-21 63-22 63-24 63-29 63-32* 63-33* 63-35* 63-38 64-15* 64-30 64-36 65-13* 65-16* 65-25* 65-26* 65-29* 65-30* 65-39 66-15* 66-16* 66-17* 66-20 66-21 66-23 66-24 67-10* 67-14* 68-9* 68-11 68-18 68-20* 68-26 70-31* 73-7 73-18* 73-23* 73-24 73-27 74-11* 74-15* 74-16 75-7* 75-8 76-1 76-24* 76-27 77-11* 78-17 78-18 78-19* 78-23* 79-8 79-17* 79-18* 79-38* 80-15* 81-16* 83-8 83-17* 83-20 83-23* 84-10 84-17* 84-19 84-21* 84-25* 84-26 84-29* 84-37* 85-15* 85-19* R3 7-8# 12-7* 12-8* 12-9 14-16* 14-19* 14-24* 14-52* 14-53* 17-21 17-23* 21-8* 21-14 21-26 24-13* 24-36* 24-37* 25-5* 26-17 26-22 26-27* 26-32 26-39 30-4* 31-48 32-36* 32-38 32-44* 32-50* 33-30* 33-31 33-33* 33-34 33-36 33-38* 33-39* 33-42 33-45 33-48* 36-2 38-27* 40-30* 40-31* 45-19* 45-21 45-23* 45-24* 45-26 45-32* 45-38 48-24* 48-31* 49-9* 49-24 49-36* 53-10* 53-14 53-19 53-23* 53-26 53-28 54-3 54-7 54-11* 54-12 54-13* 54-16 54-19* 55-14* 55-17 55-22 55-24 55-25* 55-26 55-28 55-30* 55-33* 55-34 55-38 63-28* 63-36* 64-12* 64-19 65-28* TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page S-13 Cross reference table (CREF V05.03a) 65-32* 66-19* 66-25* 69-28* 69-31 70-30* 74-1 74-2 79-15* 79-20 79-30* 79-36 80-7 80-11* 80-14 80-24 81-13* 81-20 81-25 82-1 82-2 82-4 82-9* 82-12 82-26 82-28* 83-15 84-11 84-18* 84-22* 84-24* 84-26* 84-27* 84-29 84-30 84-36 84-38* 84-39 84-40* 85-13* 85-14 85-18* R4 7-9# 11-48* 12-11* 12-18* 13-10* 13-30* 13-33* 14-44 14-50* 15-44* 16-20* 16-22* 17-19* 17-24* 17-25* 19-19* 19-24 22-4* 22-33* 22-40* 23-12* 23-18* 23-21* 23-23* 24-8* 24-10* 24-26* 24-35* 26-6* 26-7* 26-9* 27-1* 27-3* 27-4 27-21* 27-24* 28-4* 28-23* 28-47 28-49* 29-4* 29-5* 29-32* 29-36* 29-38* 29-40* 30-12* 30-26* 31-41* 32-28* 32-39 32-49* 34-3* 34-16* 35-3* 35-8* 35-18* 35-33* 36-24* 36-27* 36-30* 38-9* 38-11* 38-18* 38-29* 38-30* 40-32* 41-3* 41-23* 43-51* 46-27* 46-39* 46-43* 46-45* 48-43* 50-12* 50-37* 51-3* 53-15* 54-22* 55-2* 55-4* 55-5* 55-10* 55-14 55-24* 55-25 55-34 56-10 56-14 56-17* 56-21 56-22* 58-7 58-14 58-22 58-22* 58-27 58-28 58-29* 59-1 59-5 60-11 60-14 61-47* 62-4* 62-8 62-12* 62-16* 62-18* 62-19* 62-20* 62-21* 62-25* 63-8* 63-29* 63-34* 63-38* 64-10* 64-14 64-22 64-34 65-38* 66-14* 66-22* 68-6 68-7 68-13* 68-31* 68-33* 69-11* 70-19* 70-33 70-39 70-42 70-43* 70-44* 71-32 71-46* 73-19* 73-21* 74-1* 74-8 74-28 75-3* 75-5 75-41* 75-42* 76-3* 76-17* 76-38* 76-40 76-42* 76-43* 77-2* 77-3* 77-4 77-8 77-10* 78-43* 79-16* 79-22 79-33 79-40* 79-41* 80-6* 80-7* 80-10 81-9 81-30 81-47* 83-1 83-4 83-10 83-12* 84-6 84-23* 84-44* 84-45 85-7* 85-22* 85-28* 85-33* R5 7-10# 12-3 12-5 12-6 12-7 12-8 12-11 12-14 12-16 12-21 13-3 13-8 13-8 13-12 13-15 13-16 13-18 13-19 13-21* 13-22 13-28 13-35 14-4 14-12 14-13 14-14 14-19 14-20 14-30 14-40 14-41 14-44 14-50 14-52 14-53 15-4 15-5 15-5 15-6 15-8 15-8 15-15 15-17 15-18 15-21 15-26 15-27 15-30 15-32 15-34 15-35 15-36 15-42 16-1 16-2 16-4 16-5 16-6 16-8 16-9 16-10 16-12 17-25 18-3 18-10 18-12 18-15 18-15 18-16 18-34 18-36 18-38 18-39 19-10 19-19 19-22 19-30 20-3 20-6 20-8 20-9 20-14 20-21 20-22 21-5 21-6 21-11 21-20 21-21 22-5 22-5 22-6 22-7 22-9 22-9 22-15 22-17 22-19 22-21 22-21* 22-22 22-23 22-24 22-25 22-35 22-35* 23-2 23-4 23-6 23-8 23-9 23-11 23-14 24-4 24-6 24-7 24-9 24-12 24-15 24-16 24-18 24-32 24-33 24-36 24-37 25-2 25-3 25-16 25-20 25-29 26-4 27-2 27-6 27-10 27-15 28-7 28-12 28-16 28-17 28-18 28-19 28-27 28-28 28-30 28-38 28-43 28-46 29-7 29-11 29-14 29-20 29-21 29-22 29-22 29-25 29-29 29-31 29-32 29-34 29-35 29-42* 29-43 29-44 29-45 30-19 30-20 30-22 30-28* 30-29* 30-30 30-31 31-3 31-16 31-23 31-43 31-43 31-48 32-15 32-18 32-20 32-26 32-36 32-48 33-3 33-5 33-12 33-14 33-15 33-20 33-21 33-23 33-24 33-27 33-30 33-32 33-33 33-41 33-42 33-44 33-45 33-46 34-6 34-9 34-10 34-11 34-15 34-21 34-23 34-24 34-25 35-4 35-5 35-12 35-25 35-26 36-2 36-6 36-8 36-10 36-14 36-18 36-20 36-22 37-2 37-3 37-5 37-6 37-15 37-18 37-21 37-22 37-24 37-27 37-29 38-9 38-21 38-23 38-27 38-28 39-4 39-5 39-7 39-9 39-12 39-32 40-2 40-3 40-9 40-11 40-13 40-15 40-30 40-31 40-36 40-37 40-39 40-40 40-46 40-48 40-50 40-56 41-7 41-7 41-9 41-10 41-11 41-13 41-17 41-18 41-19 41-21 41-27 41-29 41-32 41-38 42-2 42-3 42-5 42-8 42-9 42-12 43-2 43-10 43-24 43-27 43-32 43-32 43-35 43-39 43-41 43-41 43-42 43-43 44-2 44-5 44-7 44-10 44-11 44-13 44-14 44-17 44-20 44-21 44-24 45-10 45-16 45-19 45-24 45-31 45-34 45-37 46-15 46-16 46-16 46-17 46-18 46-19 46-23 46-26 46-35 46-37 46-40 47-3 47-17 47-19 47-23 47-31 47-32 47-35 47-36 47-37 47-38 47-42 47-46 47-47 47-49 47-50 48-1 48-6 48-15 48-21 48-38 48-40 49-9 49-10 49-26 49-27 49-29 49-31 49-32 49-33 49-35 49-46 49-51 49-53 50-2 50-5 50-6 50-7 50-9 50-15 50-18 50-25 50-34 51-2 51-4 51-10 51-11 51-21 51-23 52-4 52-5 52-8 52-8 52-9 52-11 52-12 52-24 52-31 52-31 53-9 53-10 53-17 53-18 54-5 54-6 55-2 55-5 55-6 55-8 55-9 55-9* 55-12 55-31 56-7 56-7 56-8 56-20 56-20 57-27 57-30 57-31 57-46 59-9 59-9 59-13 59-18 59-23 59-25 60-3 60-5 60-13 61-23 61-27 61-32 62-3 62-5 62-15 62-16 63-3 63-5 63-18 63-30 63-33 63-34 64-12 64-23 64-24 64-26 64-28 64-30 64-31 TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page S-14 Cross reference table (CREF V05.03a) 64-35 64-37 65-3 65-6 65-7 65-7 65-10 65-12 65-14 65-18 65-21 65-23 65-26 65-34 65-34 65-36 65-37 65-39 65-40* 65-41 66-5 66-8 66-16 66-29 67-1 67-4 67-6 67-9 67-18 67-22 67-23 67-25 68-8 68-9 68-11 68-15 68-18 69-4 69-4 69-9 69-19 69-20 69-28 69-29 69-34 69-35 69-39 70-22 70-30 71-17 71-33 71-34 71-36 71-37 71-42* 72-7 72-9 72-10 72-10 72-12 72-12 72-13 72-13 72-14 72-15 72-16 72-18 72-18 72-19 72-20 72-22 73-18 73-23 74-3 74-5 74-12 75-3 75-14 76-24 78-3 78-4 78-6 78-8 78-9 78-29 78-32 78-34 78-36 79-3 79-4 79-5 79-6 79-14 79-16 79-28 79-46 80-1 80-5 80-10 80-11 80-12 80-12 80-14 80-20 82-16 83-17 84-13 84-18 84-22 84-25 84-30 84-35 84-36 84-40 84-48 85-1 85-4 85-6 85-11 85-12 85-13 85-24 85-25 85-26 RAB 7-29# 22-14 22-14 22-14 22-40 86-3 88-3 RCB 7-34# REPFLG 10-31 10-31# 29-7* 29-11* 29-14 29-25* 31-3* RTS.PC 19-31 21-22# RWSIZE 2-19 10-81# SCAN 13-15# 18-24 45-2 57-29 57-38 57-41 70-1 70-10 70-21 SCANP 10-5 10-5# 10-6 13-10 65-38 65-38 65-38 SCHBUF 10-76 10-76# 60-13 68-18 73-18 75-3 79-16 SCNCTL 18-45 56-24 70-9# SCNQST 55-15 69-5 70-21# 75-10 75-16 75-30 SCNUPP 56-9 57-3 61-10 61-14 70-1# 70-32 SEARCB 29-8 78-3# SEARCH 29-13 31-17 78-28# SEQCTL 10-54 10-54# SETCMD 13-13 18-20 64-28# 65-43 SFLG 10-48 10-48# 49-8 80-20 SHRINK 54-7# 64-38 84-41 SIZE 41-23 53-15 84-5# 85-28 85-33 SIZEQR 2-105 16-14 64-20 85-33# SIZER 6-280 37-31 84-49 SIZERB 6-288 37-26 SKPSET 23-12 27-3 55-10 56-6# SORT 15-44 56-17 70-33# SORTC 26-6 70-30# SORTS 29-4 70-32# SORTZ 38-29 70-31# SP 7-11# 13-6 13-27 15-4* 15-6 16-3* 17-16* 19-18* 19-29* 20-5* 20-6* 20-12* 20-15 20-20* 23-11* 23-13* 23-14 23-16 23-16 24-6* 24-15 28-10 28-10* 28-11 28-14 28-25 28-29 28-32 28-42* 28-45* 29-16* 29-18 29-34* 29-43 30-30 31-22* 31-26 31-30 31-38 32-21* 32-22* 32-23* 33-17* 33-22 33-31* 33-32* 33-36* 33-38 33-40 34-8* 35-10* 35-15* 35-33 36-4* 36-5* 36-15* 39-27* 39-30* 40-5* 40-6 40-12* 40-19 40-25 40-26 40-36* 40-39* 40-42* 40-44 41-31* 41-32 41-34* 41-36* 42-2* 42-10 47-20* 47-27* 47-28 48-22* 49-51* 49-53 49-55 52-13* 56-16* 57-34* 57-37* 58-10* 58-20* 58-28* 59-5* 59-17* 59-18 59-22* 59-27* 59-30* 59-32* 59-42 61-9* 61-34 62-3* 62-13 63-5 63-15* 63-19* 63-20* 63-21* 63-26 63-27 63-41 64-27* 65-3* 65-4 65-42 66-10* 68-5* 68-10 68-12 70-9 70-9* 71-32* 71-40 71-44* 71-45* 74-2* 74-3* 74-9* 74-10 74-18* 74-21 75-4* 75-5* 76-21* 77-8 77-11 78-11* 78-15 78-16* 78-17* 78-18* 78-20 78-22* 78-24 78-25 78-28* 78-29* 78-31* 78-35* 78-38* 78-39 79-1* 79-2* 79-4* 79-6* 79-7* 79-8* 79-10 79-12 79-13* 79-20 79-24 79-26 79-43 79-44 80-8* 80-13 80-15 80-16* 80-17 80-23* 80-26 81-19* 81-21 81-40* 81-42 81-46 82-1* 82-2 82-10 82-12 82-14 82-22 82-24 82-26 83-7* 83-8* 83-23 83-24 84-5* 84-9* 84-10* 84-11* 84-12* 84-19* 84-31 84-33* 84-34* 84-42 84-43 84-47* 84-50 84-52 85-7 85-9 85-17* 85-18 85-19 85-20 85-21 SPACE 7-25# 40-21 43-47 43-47 43-47 60-16 82-5 82-18 89-9 TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page S-15 Cross reference table (CREF V05.03a) STOPON 6-293 12-17 SWITCH 6-305 43-14 SYMCHR 26-12 26-13 71-13# 83-28 SYMSPC 10-55 10-55# 71-17 TAB 7-19# 33-6 60-6 82-7 82-20 TAGBUF 10-78 10-78# 55-2 55-5 TDE 7-35# TECO 2-7 13-36 15-4# 19-18 TECOCH 2-21 11-36# 12-20 13-32 18-44 21-3 22-3 22-14 22-32 23-1 24-3 24-22 24-28 24-30 25-1 26-3 27-9 27-20 28-3 28-22 29-3 29-12 31-8 31-12 32-14 33-1 33-9 35-1 36-3 38-26 40-4 40-28 40-35 40-53 40-55 42-1 43-1 43-5 43-9 43-13 43-17 43-23 43-26 43-30 43-34 43-38 43-44 43-45 43-46 43-47 43-48 44-1 45-1 45-9 45-15 45-29 46-3 46-5 46-7 46-9 46-11 46-14 46-22 46-34 47-1 47-2 47-5 47-6 47-7 47-8 47-9 47-10 47-11 47-12 47-45 48-37 49-3 49-7 49-50 50-1 50-14 51-1 51-9 51-14 51-19 52-23 52-29 55-1 57-45 62-1 63-10 65-1 TECOCR 2-11 14-23 14-45 14-57 15-3# 17-4 59-22 TECOJP 10-79 10-79# 18-34 TECOLS 11-15# 15-39 TECOLT 11-21# 44-19 TECOPD 10-75 10-75# 15-5 15-8 TECOSP 10-74 10-74# 15-4 15-6 TEMP 10-28 10-28# 14-30 14-41 15-34* 16-4* 18-12 31-16* 31-23 34-6 34-21 35-4* 35-12 37-2* 37-15 37-24 41-7* 41-10* 56-7* 56-20 59-18* 60-3 TERMS 71-3# 83-30 TEXIT 6-308 13-37 39-30 TFLG 10-29 10-29# 12-14 12-16* 12-21* 13-22 29-34 29-35* 29-43* 30-30* 56-7 56-8* 56-20* TIME 6-311 43-18 TLISTN 6-314 11-21 11-28 44-25 TRACE 13-22# 23-17 27-8 55-11 71-43 TSTNXT 13-33 22-33 24-8 24-10 29-36 29-38 29-40 35-3 51-3 71-32# 73-19 73-21 76-3 76-17 TXSTOR 10-60 10-60# 21-5 21-20 28-28 33-21 33-46 34-9 34-24 35-26 37-18 39-4 40-31 42-12 53-18 54-6 67-25 79-5 79-6 79-46 80-11 80-12 82-16 TYPE 6-326 13-25 14-56 15-25 17-29 19-13 19-17 59-41 60-7 60-17 60-19 60-22 72-3 72-5 TYPEB 6-335 16-17 24-14 24-20 24-24 44-12 TYPEF 6-346 32-4 40-24 TYPSPC 32-5# 32-27 60-20 UND 7-30# 87-3 88-3 UPPERC 2-110 18-25 25-22 70-2# 70-11 71-21 71-39 81-31 VBR 7-33# 27-3 27-13 27-20 27-20 27-20 27-21 88-3 VERSON 1-26# 2-5 45-6 VT 7-21# WATCH 6-356 20-11 20-23 40-45 X 92-3# 92-7 92-7 92-7 92-7 92-7 92-7 92-7 92-7 92-8 92-8 92-8 92-8 92-8 92-8 92-8 92-8 92-9 92-9 92-9 92-9 92-9 92-9 92-9 92-9 92-10 92-10 92-10 92-10 92-10 92-10 92-10 92-10 92-11 92-11 92-11 92-12 92-12 92-12 92-12 92-13 92-14 92-14 92-17 92-18 92-21 92-22 92-22 XITNOW 6-375 39-31 ZEROD 2-117 24-13 25-5 74-1# ZMAX 10-61 10-61# 37-6 41-23 53-15 84-17 85-28 ZZ 10-62 10-62# 21-11 31-43 34-10 34-25 36-18 37-5 39-5 41-21 41-32 42-2 43-27 53-10 53-17* 54-5* 67-23 69-9 79-4 84-18 85-25* TECO TECO-11 MACRO V05.03c Monday 16-Sep-85 14:45 Page M-1 Cross reference table (CREF V05.03a) .DSECT 8-3# 9-5 10-3 .TABLE 8-88# 86-3 87-3 88-3 89-15 90-29 90-64 90-74 CMDCHR 8-118# 12-20 13-32 18-44 21-3 22-3 22-14 22-32 23-1 24-3 24-22 24-28 24-30 25-1 26-3 27-9 27-20 28-3 28-22 29-3 29-12 31-8 31-12 32-14 33-1 33-9 35-1 36-3 38-26 40-4 40-28 40-35 40-53 40-55 42-1 43-1 43-5 43-9 43-13 43-17 43-23 43-26 43-30 43-34 43-38 43-44 43-45 43-46 43-47 43-48 44-1 45-1 45-9 45-15 45-29 46-3 46-5 46-7 46-9 46-11 46-14 46-22 46-34 47-1 47-2 47-5 47-6 47-7 47-8 47-9 47-10 47-11 47-12 47-45 48-37 49-3 49-7 49-50 50-1 50-14 51-1 51-9 51-14 51-19 52-23 52-29 55-1 57-45 62-1 63-10 65-1 ERROR 8-147# 11-48 12-18 13-30 16-20 16-22 18-42 22-40 23-21 23-23 24-26 26-7 26-9 28-49 29-5 30-26 33-52 34-3 36-24 36-30 38-30 41-3 41-5 43-51 46-43 46-45 48-43 50-12 50-37 53-34 54-22 61-47 63-8 64-41 68-31 68-33 69-11 70-19 75-42 76-43 78-43 MESSAG 8-135# 11-48 12-18 13-30 16-20 16-22 22-40 23-21 28-49 30-5 30-26 34-3 36-24 36-30 41-3 46-45 50-37 54-22 58-11 58-21 61-47 63-8 68-31 68-33 69-11 75-42 76-43 78-43 OFFSET 8-83# 10-5 10-7 10-8 10-9 10-10 10-11 10-12 10-13 10-14 10-15 10-16 10-17 10-18 10-19 10-20 10-21 10-22 10-23 10-24 10-25 10-26 10-27 10-28 10-29 10-30 10-31 10-35 10-36 10-37 10-38 10-39 10-40 10-41 10-42 10-43 10-44 10-45 10-46 10-47 10-48 10-49 10-50 10-51 10-52 10-53 10-54 10-55 10-56 10-57 10-58 10-60 10-61 10-62 10-64 10-65 10-66 10-68 10-70 10-71 10-72 10-74 10-75 10-76 10-77 10-78 10-79 POP 8-46# 13-10 23-18 46-39 PUSH 8-16# 22-4 65-38 PUSHP 8-31# 46-27 SIZE 8-71# 16-14 41-23 53-15 64-20 85-28 SKPSET 8-61# 23-12 27-3 55-10 SORT 8-11# 15-44 26-6 29-4 38-29 56-17 TSTNXT 8-66# 13-33 22-33 24-8 24-10 29-36 29-38 29-40 35-3 51-3 73-19 73-21 76-3 76-17