/9 TECO ERROR MESSAGE MODULE / 10-APR-79 MADE HLPBUF NOT LOAD INTO 7400 .ENABLE 7BIT .GLOBAL ERRYY,HLPADR,NEWERR,XERBAS .GLOBAL CDF4F,CIF4A,CIF4B,CIF4C,HCDF1 .GLOBAL QMK,XH,CIF4E,VTSUP .EXTERNAL IOVRLC,QOVRLC,XOVRLC,FOVRLC .ZTERNAL N,XR,SCANP .EXTERNAL QPNTR .EXTERNAL ERRXX .EXTERNAL TYPE,PUTT,CRLF .EXTERNAL EHFLAG,ETFLAG .EXTERNAL MEMLOC .EXTERNAL CTL.C .EXTERNAL STABLE .ZTERNAL LASTC,MEMSIZ .EXTERNAL OVREAD .EXTERNAL ERR01,ERR02,ERR03,ERR04,ERR05,ERR06,ERR07,ERR08 .EXTERNAL ERR09,ERR10,ERR11,ERR12,ERR13,ERR14,ERR15,ERR16 .EXTERNAL ERR17,ERR18,ERR19,ERR20,ERR21,ERR22,ERR23,ERR24 .EXTERNAL ERR25,ERR26,ERR27,ERR28,ERR29,ERR30,ERR31,ERR32 .EXTERNAL ERR33,ERR34,ERR35,ERR36,ERR37,ERR38,ERR39,ERR40 .EXTERNAL ERR41 .EXTERNAL ERRRET .EXTERNAL S.NOT,S.SEP,S.ANY .ZTERNAL Z77,Z200,Z177,ZQPNTR,Z40 .EXTERNAL RESORT,NOTRCE,SCAN,T0 .ZTERNAL QLENGTH,ERROR .ZTERNAL SCHAR .SBTTL . Error overlay .ASECT TECERR *6200 /BE SURE TO FIX CDF LABELS IF RELOCATION CHANGED RELOC 3200 IOVRLC QOVRLC EOVRLY, 0 XOVRLC FOVRLC ERRYY, DCA N TAD (ERLIST-1 DCA XR ERLOOP, ISZ N /BUMP ERROR NUMBER TAD I XR SZA /END OF LIST? TAD I (ERRXX /NO - CHECK FOR MATCH SZA CLA /FOUND WHAT WE WANTED? JMP ERLOOP /NO - KEEP LOOKING TAD N CLL RAL /MULTIPLY BY 2 TAD (ERBASE-2 DCA PTR TAD I PTR /GET FIRST WORD OF ERR MSG SPA CLA JMP CTCT /^C TRAP ERL2, TAD Z77 TYPE TAD I PTR JMS TWO ISZ PTR TAD I PTR JMS TWO TAD I (EHFLAG AND (3 /ISOLATE HELP LEVEL BITS TAD (-1 SNA CLA /0, 2, OR 3 MEANS USE LONG MESSAGES JMP ERET VTSUP=.-3200+6200 CLL STA RAL /-2 (-3 IF VT SUPPORT) TAD MEMSIZ SPA CLA JMP ERET /NO LONG ERROR MESSAGE UNLESS 16K OR MORE JMS TWO /PRINT TWO SPACES CIF4B=.-3200+6200 CIF 30 JMS I (EE2 /DO MORE ERROR STUFF TAD I (EHFLAG /CHECK FOR 4EH AND (4 SZA CLA CRLF /DO AN EXTRA CR/LF IF AUTO ? AND LONG ERROR MSGS ERET, TAD I (ETFLAG AND Z200 SZA CLA /CHECK FATAL BIT JMP I (CTL.C /RETURN TO OS/8 TAD SCANP /RETURN TO TECO CIA DCA I (ERRXX /SET ERRXX TO CHAR POSITION OF ERROR CHAR. JMP I (ERRRET CTCT, KRS /CTRL/C ERROR MESSAGE AND Z177 /ISOLATE ^C INTO 7-BIT TYPE /READ CTRL/C FROM BUFFER CRLF /ECHO IT AND CR LF TAD I ZQPNTR SZA CLA JMP ERL2 /PRINT XAB ERROR MESSAGE / MTHREE / TAD CHAR /LOOK AT PREVIOUS CHARACTER / SZA CLA / JMP ERET /ONE ^C DO NOTHING JMP I (CTL.C /TWO ^C'S, ABORT PUTTX, 0 PUTT CIF4C=.-3200+6200 CIF CDF 30 JMP I PUTTX TWO, 0 DCA T$ TAD T$ RTR RTR RTR JMS SIXTYP TAD T$ JMS SIXTYP JMP I TWO T$: 0 PTR, 0 SIXTYP, 0 AND (37 /IGNORE SIGN BIT OF BYTE SNA /TREAT 0 AS MEANING SPACE TAD Z40 TAD (-37 SNA JMS G$ /- MEANS LAST CHARACTER TAD Z77 AND Z77 TAD Z40 PUTT JMP I SIXTYP G$: 0 TAD LASTC TAD (-37 JMP I G$ QMK, TAD I ERROR SNA CLA /ERROR ROUTINE ENTRY POINT NON-ZERO? RESORT /NO TAD Z77 /TYPE "?" TYPE STA /AN ERROR PRINTOUT DCA QLENGT /SET QLENGT BIG SO WE CAN ACCESS ENTIRE LINE NOTRCE /TURN TRACE OFF DCA SCANP /NEEDED IN CASE OF AUTO ? (4EH) 1$: SCAN TYPE /PRINT OUT THE LINE WHICH CAUSED THE ERROR ISZ I ERROR /UP TO THE ERROR CHAR ITSELF JMP 1$ TAD Z77 /NOW TYPE TRAILING "?" TYPE JMP I (T0 /RE-INITIALIZE XH, TAD SCHAR TYPE CIF4E=.-3200+6200 CIF CDF 30 JMP I (XHELP PAGE ERLIST, -ERR01-1 /LIST OF POINTERS TO ALL POSSIBLE -ERR02-1 /CALLS TO THE ERROR ROUTINE. -ERR03-1 -ERR04-1 -ERR05-1 -ERR06-1 -ERR07-1 -ERR08-1 -ERR09-1 -ERR10-1 -ERR11-1 -ERR12-1 -ERR13-1 -ERR14-1 -ERR15-1 -ERR16-1 -ERR17-1 -ERR18-1 -ERR19-1 -ERR20-1 -ERR21-1 -ERR22-1 -ERR23-1 -ERR24-1 -ERR25-1 -ERR26-1 -ERR27-1 -ERR28-1 -ERR29-1 -ERR30-1 -ERR31-1 -ERR32-1 -ERR33-1 -ERR34-1 -ERR35-1 -ERR36-1 -ERR37-1 -ERR38-1 -ERR39-1 -ERR40-1 -ERR41-1 0 /ERROR 42 - UNLABELED ERROR - NAMELY "JMS I OUTR" /** MUST BE LAST ERROR MESSAGE ERBASE, TEXT /ILL/ /1 ILLEGAL COMMAND TEXT /UTC/ /2 UNTERMINATED COMMAND TEXT /IQN/ /3 ILLEGAL Q-REGISTER NAME TEXT /PDO/ /4 INTERNAL PUSH DOWN OVERFLOW (RECURSION) TEXT /MEM/ /5 MEMORY OVERFLOW TEXT /STL/ /6 SEARCH STRING TOO LONG TEXT /ARG/ /7 ARGUMENT ERROR TEXT /IFN/ /8 ILLEGAL FILE NAME TEXT /SNI/ /9 SEMICOLON NOT IN ITERATION TEXT /BNI/ /10 CLOSE BRACKET NOT IN ITERATION TEXT /POP/ /11 POINTER OFF PAGE TEXT /QMO/ /12 Q-REGISTER MEMORY OVERFLOW TEXT /UTM/ /13 UNTERMINATED MACRO TEXT /OUT/ /14 OUTPUT ERROR TEXT /INP/ /15 INPUT ERROR TEXT /FER/ /16 FILE ERROR TEXT /FUL/ /17 OUTPUT COMMAND WOULD HAVE OVERFLOWED TEXT /NYA/ /18 NEGATIVE ARGUMENT TO Y TEXT /IEC/ /19 ILLEGAL E CHARACTER TEXT /IQC/ /20 ILLEGAL " CHARACTER TEXT /NAE/ /21 NO ARGUMENT BEFORE = TEXT /NAU/ /22 NO ARGUMENT BEFORE U TEXT /NAQ/ /23 NO ARGUMENT BEFORE " TEXT /SRH/ /24 FAILING SEARCH TEXT /IPA/ /25. NEGATIVE OR 0 ARGUMENT TO P TEXT /NCA/ /26. NEGATIVE ARGUMENT TO , TEXT /NYI/ /27. ^W NOT IMPLEMENTED TEXT /UIS/ /28. UNDEFINED I/O SWITCH TEXT /ISA/ /29. NEGATIVE OR 0 COUNT TO SEARCH TEXT /WLO/ /30. CAN'T WRITE OUT ERROR MESSAGE OVERLAY TEXT /IFC/ /31. ILLEGAL F CHARACTER TEXT /YCA/ /32. Y COMMAND ABORTED TEXT /CCL/ /33. CCL NOT FOUND OR EG TOO BIG / TEXT /XAB/ /34. EXECUTION ABORTED BY ^C 7001;0200 TEXT /NYI/ /35. ^V NOT IMPLEMENTED TEXT /UE_/ /36. UNIMPLEMENTED E COMMAND TEXT /DTB/ /37. DELETE TOO BIG TEXT /POP/ /38. REFERENCE TO POINTER OFF PAGE TEXT /ICE/ /39. ILLEGAL ^E IN SEARCH STRING TEXT /NAB/ /40. NO ARGUMENT BEFORE ^_ TEXT /NYI/ /41. [ OR ] NOT IMPLEMENTED TEXT /NFO/ /42. NO FILE FOR OUTPUT / MUST BE LAST PAGE RELOC .SBTTL . Error message initialization .ASECT TECO.1 FIELD 1 *4400 XERBAS, XER1 XER2 XER3 XER4 XER5 XER6 XER7 XER8 XER9 XER9 XER11 XER12 XER13 XER14 XER15 XER16 XER17 XER18 XER19 XER20 XER21 XER22 XER22 XER24 XER25 XER26 XER27 XER28 XER25 XER30 XER31 XER32 XER33 XER34 XER35 XER36 XER37 XER38 XER39 XER40 XER41 XER42 .NOLIST BE .ENABLE ASCII XER1, TEXT "Illegal Command @" XER2, TEXT "Unterminated Command" XER3, TEXT "Illegal Q-register Name @" XER4, TEXT "Internal Push Down Overflow" XER5, TEXT "Storage Capacity Exceeded" XER6, TEXT "Search String too Long +" XER7, TEXT "Improper Arguments" XER8, TEXT "Illegal Character @ in Filename" XER9, TEXT "@ not in an Iteration" /; /XER10, TEXT "> not in an Iteration" /> XER11, TEXT "Attempt to Move Pointer Off Page with @" XER12, TEXT "Q-register Memory Overflow" XER13, TEXT "Unterminated Macro" XER14, TEXT "Output Error" XER15, TEXT "Input Error" XER16, TEXT "File Error" XER17, TEXT "Output Command would have Overflowed" XER18, TEXT "Numeric Argument to Y" XER19, TEXT "Illegal Character @ after E" XER20, TEXT \Illegal Character @ after "\ XER21, TEXT "No Argument before =" XER22, TEXT "No Argument before @" /U /XER23, TEXT \No Argument before"\ /" XER24, TEXT "Search failed +" XER25, TEXT "Negative or Zero Argument to @" /P XER26, TEXT "Negative argument to ," XER27, TEXT "Case Support not Implemented"<15><12><11><177><177> *.-1 TEXT "[use W for Watch Command]" XER28, TEXT "Undefined I/O Switch" /XER29, TEXT "Negative or Zero Argument to S" /S XER30, TEXT "Cannot Write Out Error Message Overlay" XER31, TEXT "Illegal Character @ after F" XER32, TEXT "@ Command Aborted" XER33, TEXT "CCL.SV not found or EG argument too big" XER34, TEXT "Execution aborted" XER35, TEXT "Case Support not Implemented"<15><12><11><177><177> *.-1 TEXT "[use EO for Version number]" XER36, TEXT "Unimplemented character @ after E" XER37, TEXT "Delete too big" XER38, TEXT "Reference to Pointer position Off Page" XER39, TEXT "Extended CTRL/E match control not implemented" XER40, TEXT "No Argument Before ^_" XER41, TEXT "Unimplemented Push or Pop Command @" XER42, TEXT "No File for Output" .ENABLE SIXBIT .LIST BE CNVTAB, TEXT "TAB" /11 TEXT "LF" /12 TEXT "VT" /13 TEXT "FF" /14 TEXT "CR" /15 TEXT "NOT" /16 PSEUDO TEXT "SEP" /17 PSEUDO TEXT "ANY" /20 PSEUDO TEXT "ESC" /21 PSEUDO CIF4A, NEWERR, CIF 30 /NEW CODE TO READ OVERLAY OVREAD+2&177+4600/MUST BE 5 LOCS LONG COREAD 0 /BLOCK # NOP IFNZRO .&7600-6600 COREAD, 0 ISZ COREAD TAD I COREAD /GET BLOCK # AND CO7 CLL RTR RTR RAR /MULTIPLY BY 400 TAD KMEM DCA FLO TAD M400 DCA FLCNT TAD K3200 DCA FTO L$: JMS FLERR TAD I FLO CDF 0 DCA I FTO ISZ FLO ISZ FTO ISZ FLCNT JMP L$ ISZ COREAD CIF CDF 0 JMP I COREAD FLCNT, 0 CO7, 7 M400, -400 K3200, 3200 KMEM, MEMLOC FLO, 0 FTO, 0 FLERR, 0 CDF4F, CDF 30 JMP I FLERR /@ means current character /+ means search string /* means scan character (not yet implemented) EE2, 0 TAD I (N TAD (XERBAS-1 DCA PTR$ /GET PTR TO PTR TO ERROR MSG JMS FLERR TAD I PTR$ /GET PTR TO ERROR MESSAGE DCA PTR$ L$: TAD I PTR$ SNA JMP EROV TAD (-"@ SNA JMP NEGCHR TAD ("@-"+ SNA JMP SCHPRT TAD ("+ JMS I (XPUTT EE3: ISZ PTR$ JMS FLERR JMP L$ PTR$: 0 NEGCHR, TAD ("" JMS I (XPUTT CDF 0 TAD I (LASTC JMS FLERR JMS I (XCHAR TAD ("" JMS I (XPUTT JMP EE3 SCHPRT, TAD ("" /PRINT SEARCH STRING ON ENCOUNTERING "+" JMS I (XPUTT TAD (STABLE DCA PTR$ L$: CDF 0 TAD I PTR$ JMS FLERR ISZ PTR$ SNA JMP 1$ JMS I (XCHAR JMP L$ 1$: TAD ("" JMS I (XPUTT JMP EE3 PTR$: 0 EROV, CDF 0 TAD I (EHFLAG JMS FLERR AND (3 /ISOLATE HELP LEVEL TAD (-3 SNA CLA /IS IT WAR AND PEACE MODE? JMS I (HELP /YES CIF CDF 0 /NO, RETURN TO TECO JMP I EE2 XHELP, JMS I (HELP CIF CDF 0 JMP I (T0 CTAB, -S.NOT; 4016 -S.SEP; 4017 -S.ANY; 4020 -33; 4021 0 PAGE XCHAR, 0 DCA LC TAD (CTAB DCA PTR$ 2$: TAD I PTR$ SNA JMP 3$ TAD LC ISZ PTR$ SNA CLA JMP 4$ ISZ PTR$ JMP 2$ 4$: TAD I PTR$ DCA LC 3$: TAD LC SPA /PSEDUO-CHARACTERS ARE NEGATIVE JMP SPY TAD (-11 CLL TAD (-5 SNL CLA JMP SPY /IT'S IN THE RANGE 11-15 TAD LC AND (7740 SNA CLA JMP CARET /USE CARRET FORM FOR CONTROL CHARS TAD LC JMS XPUTT JMP I XCHAR PTR$: 0 LC, 0 CARET, TAD ("< JMS XPUTT TAD ("^ JMS XPUTT TAD (100 TAD LC JMS XPUTT JMP X2 SPY, STA CLL RAR /AC IS NON-0, FORCE 3777 AND LC TAD (-11 CLL RAL TAD (CNVTAB DCA W$ TAD ("< JMS XPUTT L$: TAD I W$ JMS ROTA JMS SIXTY TAD I W$ JMS SIXTY ISZ W$ JMP L$ W$: 0 ROTA, 0 RTR RTR RTR JMP I ROTA XPUTT, 0 CIF CDF 0 JMS I (PUTTX JMP I XPUTT SIXTY, 0 AND (77 SNA JMP X2 TAD (40 AND (77 TAD (40 JMS XPUTT JMP I SIXTY X2, TAD ("> JMS XPUTT JMP I XCHAR HSET, 0 CDF 0 STA TAD I (PTR DCA P$ TAD I P$ DCA K1$ ISZ P$ TAD I P$ DCA K2$ JMS I (FLERR TAD (HLPBUF+1 DCA P$ /WANT TO START AT HLPBUF AND FIRST STORE A "?" TAD K1$ JMS ROTA AND (37 /?XAB HAS SPECIAL *K* JMS FOOSTO TAD K1$ JMS FOOSTO TAD K2$ JMS ROTA JMS FOOSTO DCA I P$ /STORE A 0 AT THE END JMP I HSET K1$: 0 K2$: 0 P$: 0 FOOSTO: 0 AND (77 TAD (40 AND (77 TAD (40 DCA I P$ ISZ P$ JMP I FOOSTO PAGE .SBTTL . Help code HLPADR, 0 /BLOCK # OF FIRST BLOCK OF SYS:TECHLP.TXT /IF 0, MEANS NO TECHLP HLPSIZ, 4 /# OF BLOCKS IN HELP BUFFER HELBUF=0 / I/O BUFFER IS 2000 WORDS LONG, 0-1777 /IN FIELD OF OVERLAYS /************* / / NO LITERALS ALLOWED! / /************* /ENTER WITH STRING YOU REQUEST HELP ON IN HLPBUF (TERMINATED WITH 0) /HELP TEXT PRINTS ON TERMINAL UP TO NEXT ESCAPE OR CTRL/Z HELP, 0 TAD HLPADR SNA /DOES HELP FILE EXIST? JMP I HELP /NO, SORRY GUY DCA HLPBLK /START SEARCHING AT FIRST BLOCK JMS I LHSET TAD L15 JMS I LXPUTT TAD L12 JMS I LXPUTT /OUTPUT AT START TAD LHLPINI /INITIALIZE COROUTINES DCA HSEND TAD HLPSIZ /CREATE FUNCTION WORD CLL RTR RTR RTR DCA TM$ TAD HCDF1 AND L70 /GET OUT FIELD TAD TM$ DCA HFUNC L$: JMS HGET /SCAN FOR $ TAD M33 SZA CLA JMP L$ TAD LHLPBUF DCA HPTR$ 2$: TAD I HPTR$ SNA JMP 3$ DCA TM$ JMS HGET CIA TAD TM$ SZA CLA JMP L$ /DID NOT MATCH ISZ HPTR$ /PARTIAL MATCH JMP 2$ /KEEP TRYING TO MATCH HPTR$: 0 TM$: 0 3$: JMS HGET /MATCH! TAD M33 /START PRINTING SNA JMP CTRLZ /UNTIL AN ESCAPE TAD L33 JMS I LXPUTT JMP 3$ L33, 33 CTRLZ, CLA JMP I HELP /RETURN LHSET, HSET L15, 15 LXPUTT, XPUTT L12, 12 LHLPINI,HLPINI L70, 70 M33, -33 LHLPBUF,HLPBUF /coroutines HGET, 0 JMP I HSEND HSEND, HLPINI AND L177 /7-BIT TAD MCTZ SNA JMP CTRLZ TAD CONST SNA JMP I HSEND /IGNORE FORM FEEDS TAD L14 JMP I HGET L14, 14 L177, 177 MCTZ, -^"Z CONST, ^"Z-14 HCDF1: CDF 30 L$: TAD I H1 JMS HSEND TAD I H2 JMS HSEND TAD I H2 AND L7400 CLL RTR RTR DCA HTM TAD I H1 AND L7400 TAD HTM CLL RTR RTR JMS HSEND ISZ H1 ISZ H1 ISZ H2 ISZ H2 ISZ HLPCNT JMP L$ HLPINI, CIF 0 /READ NEXT BUFFER JMS I L7607 /USING RESIDENT SYSTEM HANDLER HFUNC, 1030 /4 BLOCKS INTO FIELD 3 (OR 4) HELBUF /BUFFER HLPBLK, 0 /NEXT BLOCK TO SEARCH JMP CTRLZ /END OF FILE OR ERROR TAD HLPBLK TAD HLPSIZ DCA HLPBLK /POINT TO NEXT BLOCK TAD HLPSIZ /GET # OF BLOCKS CLL RTR RTR RTR /CONVERT TO DOUBLE WORDS CIA /MAKE NEGATIVE DCA HLPCNT / TAD LHELBUF .IF NE HELBUF <__ERROR__> DCA H1 TAD H1 IAC DCA H2 JMP HCDF1 L7400, 7400 L7607, 7607 /LHELBUF,HELBUF HTM, 0 H1, HELBUF H2, HELBUF+1 HLPCNT, -1 HLPBUF, "?;"/;0 /MUST BE AT VERY END OF PAGE .IF GT .-7400 <__ERROR__>