File MACERR.MA (MACREL macro assembler source file)

Directory of image this file is from
This file as a plain text file

/20	MACREL ERROR MESSAGE OVERLAY POST FT-1
/	7-MAR-78	INSTALLED PATCHES
	.INCLUDE MGLOB.MA
	.ASECT MACERR,LEVEL=3,OVERLAY=0
/
/
/
/
/
/
/
/
/
/COPYRIGHT  (C)  1977 BY DIGITAL EQUIPMENT CORPORATION
/
/
/
/
/
/
/
/
/
/
/THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO CHANGE WITHOUT NOTICE
/AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
/CORPORATION.  DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
/FOR ANY ERRORS THAT MAY APPEAR IN THIS DOCUMENT.
/
/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED TO THE PURCHASER
/UNDER A LICENSE FOR USE ON A SINGLE COMPUTER SYSTEM AND CAN BE COPIED
/(WITH INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR USE IN SUCH
/SYSTEM, EXCEPT AS MAY OTHERWISE BE PROVIDED IN WRITING BY DIGITAL.
/
/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE
/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY
/DIGITAL.
/
/
/
/
/
/
/
/
/
/

.EXTERNAL ASEMLV,BACKUP,BRANCH,CREF,CRLF,DPRINT,ENTER,EOS,ERROR,EXPR .EXTERNAL FSCHEK,GETCHR,GETKAR,GETSYM,LETTER,LISTER,LOOKUP,ORIG,OUT,PARSYM .EXTERNAL PASS3,POP,PUSH,PUNBIT,PUTBIT,PUTSYM,PUXBIN,READLN,ROTL6,SCAN .EXTERNAL ERROR,OUTSKP,LINBUF,CALLIT,LISTER,OVRLIN,NEWPAG,NM,ERKNT .GLOBAL ERRTN,ERLST /THIS LIST HAS BEEN REVISED / MAC 400-437 / OVRA 440-447 / OVRB 450-457 / OVRC 460-467 / OVRD 470-477 / OVRE 500-507 / MACEXP 510-537 / MACRO 540-543 / OVRF 544-550 / OVRG 551-553 /ERROR LOG= TTY IF BATCH NOT RUNNING / OR IF /Z SPECIFIED / BATCH LOG IF BATCH RUNNING / AND /Z NOT SPECIFIED /OTHER SWITCHES: /E INITIAL ERROR LEVEL / /F E-EXPANDED ERRORS, F-FAST ERRORS /WHEN ONE GETS AN ERROR, ONE JMS'S TO 'ERROR' IN FIELD 0 /WITH DF=CUR. /ERROR SWAPS OUT 5 BLOCKS FROM 10400 TO 'ERRBLK'+16 /WHERE 'ERRBLK' IS THE FIRST BLOCK OF SYS:MACERR.SV /(WHICH MUST BE EXACTLY 23 OCTAL BLOCKS LONG). /THEN WE READ IN 4 BLOCKS FROM ERRBLK+1 INTO 11000 /THIS IS THE ACTUAL CODE COMPRISING MACERR.PA . /WE THAN BRANCH TO THIS CODE. /UPON RETURNING, THE 5 BLOCKS ARE READ BACK IN TO 10400 /FROM BLOCK ERRBLK+16. /WHILE MACERR IS RUNNING, IT WILL PICK UP THE ADDRESS OF AN ERROR /MESSAGE. THIS IS A VIRTUAL ADDRESS; IT REPRESENTS THE /ADDRESS THAT THAT ERROR MESSAGE HAS AT ASSEMBLY TIME. /AT ASSEMBLY TIME, THE ERROR MESSAGES LOAD INTO 23400-27377. /THESE GO OUT INTO MACERR.SV AS BLOCKS ERRBLK+6 TO ERRBLK+15. /WE READ IN THE APPROPRIATE BLOCK AND LOAD IT INTO /20400-20777 IN MEMORY, WHEREUPON WE FIGURE OUT WHERE THE MESSAGE /ACTUALLY IS. /LAYOUT OF MACERR.SV: /BLOCK CONTENTS / /0 CCB /1-4 CODE 21000-22777 /5 UNUSED (23000) /6 23400 /7 24000 /10 24400 /11 25000 /12 25400 /13 26000 /14 26400 /15 27000 /16-22 10000-12377 5 SCRATCH BLOCKS / CORE IMAGE OF SWAP AREA: 10400-12777
FIELD 5 BATOUT=7400 /CALL THIS TO PRINT ON BATCH LOG BATERR=7000 /BRANCH HERE TO STOP BATCH / MESSAGES HAVE THE FORM / ADDRESS OF FIXUP ROUTINE / PASS NUMBER / TEXT /XX MSG/ / / WHERE XX IS THE 2-LETTER ERROR CODE / CODES WITHIN MESSAGE: / # PRINT SYMBOL IN NAME1-NAME3 / ? PRINT CHARACTER IN CHAR *1000 ERRTN, 0 CDF 0 STA TAD I (ERROR DCA ERRLOC TAD (TP DCA ERRLOG /ERRORS TO TTY UNLESS LATER FIND OTHERWISE TAD (CIF 10 DCA ERRCIF TAD I (7777 CDF 10 RAL /**** ??? SPA CLA /IS BATCH RUNNING? JMS BAT /YES TAD (ERLST DCA ERRPTR TAD (MESLST DCA MESPTR ERLUP, TAD I ERRPTR IAC SNA JMP SYSERR TAD (-1 TAD ERRLOC SNA CLA JMP GOTE ISZ ERRPTR ISZ MESPTR JMP ERLUP
FIXUP, BAT, 0 STL RTR CLA /2000 AND I (7645 SZA CLA /WAS /Z SPECIFIED? JMP I BAT /YES, ERRORS TO TTY TAD (BATOUT /NO, ERRORS TO BATCH LOG DCA ERRLOG CDF 0 TAD I (7777 CDF 10 AND (70 /GET FIELD OF BATCH TAD (CIF DCA ERRCIF JMP I BAT
SYSERR, TAD ((SYSMES)) /THIS IS NOT A TYPO (WE MEAN TWO PARENS!) DCA MESPTR /TEMPORARY - UNKNOWN ERROR GOTE, TAD I MESPTR /GET VIRTUAL ADDRESS OF ERROR MESSAGE PACKET JMS I (VIRT /CONVERT TO ACTUAL ADDRESS DCA MESPTR TAD I MESPTR /GET ADDRESS OF FIXUP ROUTINE DCA FIXUP TAD FIXUP SZA CLA JMS I FIXUP /CALL IT IF THERE IS ONE ISZ MESPTR TAD I MESPTR /GET PASS NUMBER ISZ MESPTR SPA JMP POTE /NEGATIVE MEANS PRINT ERROR MESSAGE ON EVERY PASS CIA CDF 0 TAD I (PPASS /COMPARE AGAINST PHYSICAL PASS NUMBER CDF 10 SNA CLA /IS THIS THE PASS TO TYPE THE ERROR MESSAGE? POTE, JMS I (TYPERR /YES, TYPE ERROR ON TERMINAL /NO CLL STA RTL /-3 CDF 0 TAD I (PASS /GET REAL PASS NUMBER CDF 10 SNA CLA JMS PRNERR /ON PASS 3, PRINT MESSAGE IN LISTING BYERR, CIF CDF 0 JMP I ERRTN /GO AWAY ERRLOC, 0 ERRPTR, 0 MESPTR, 0
IFDEF PLM < / PRINTING ROUTINES USED BY ERROR MESSAGE PROCESSOR /TYPERR TYPES ERROR MESSAGE ON ERROR LOG /PRCHR PRINTS 'CHAR' ON OUTDEY / AC NON-0 ON RETURN /PRNAM PRINTS A 6-CHARACTER NAME ON OUTDEY / AC NON-0 ON RETURN /PR6A PRINTS A SIXBIT CHARACTER ON OUTDEY (IGNORES NULLS) /SETNAM SETS UP NAME TO BE PRINTED BY 'PRNAM' / CDF / PTR /PR PRINTS CHARACTER ON ERROR LOG IF NO ^O / ALSO CHECKS FOR ^O, ^C, E, F, ETC. /TPUT TYPES CHARACTER ON ERROR LOG UNCONDITIONALLY /TP UNCONDITIONALLY PRINTS CHARACTER ON TERMINAL /PR2 PRINTS 2 SIXBIT CHARACTERS USING 'PR' /PR6 PRINTS A SIXBIT CHARACTER USING 'PR' /PR12 PRINTS A 12-BIT NUMBER AS 4 OCTAL DIGITS USING 'PR' /STNAM SETS UP SYMBOL TABLE NAME TO BE PRINTED / SETS 'VAL' /CHKKBD CHECKS KBD FOR ^O, ^S, ^C, ETC. /OUTDEY IS EITHER 'PR' OR 'LPUT' /CRLFF PRINTS CR,LF ON OUTDEY /TYPE PRINTS SIXBIT CHARACTER ON OUTDEY / BUT IF NULL, PRINTS CR, LF AND TAKES EXIT 1 >
PRNERR, 0 TAD (LPUT DCA I (OUTDEY /OUTPUTTING TO LIST DEVICE JMS I (PAGO JMS I (SETNAM CDF 0 NAME1 / JMS I (CRLFF PRLUP, TAD I MESPTR CLL RTR RTR RTR JMS I (TYPE JMP EOP TAD I MESPTR JMS I (TYPE JMP EOP ISZ MESPTR JMP PRLUP EOP, TAD (SKP CLA /FORCE NEXT CALL TO 'OUT' CDF 0 DCA I (OUTSKP /TO PRINT LINE EVEN IF LISTING IS OFF CDF 10 JMP I PRNERR TPUT, 0 ERRCIF, CIF 10 JMS I ERRLOG JMP I TPUT ERRLOG, TP PAGE
ERLST, .EXTERNAL ER6 -ER6 .EXTERNAL ER7 -ER7 .EXTERNAL ER8 -ER8 .EXTERNAL ER9 -ER9 .EXTERNAL ER20 -ER20 .EXTERNAL ER25 -ER25 .EXTERNAL ER37 -ER37 .EXTERNAL ER38 -ER38 .EXTERNAL ER43 -ER43 .EXTERNAL ER49 -ER49 .EXTERNAL ER51 -ER51 .EXTERNAL ER57 -ER57 .EXTERNAL ER58 -ER58 .EXTERNAL ER59 -ER59 .EXTERNAL ER71 -ER71 .EXTERNAL ER300 -ER300 .EXTERNAL ER80 -ER80 .EXTERNAL ER301 -ER301 ZBLOCK 16 .EXTERNAL ER35 -ER35 .EXTERNAL ER44 -ER44 .EXTERNAL ER45 -ER45 .EXTERNAL ER46 -ER46 .EXTERNAL ER50 -ER50 ZBLOCK 3 .EXTERNAL ER15 -ER15 .EXTERNAL ER33 -ER33 .EXTERNAL ER47 -ER47 .EXTERNAL ER48 -ER48 .EXTERNAL ER2 -ER2 .EXTERNAL ER215 -ER215 .EXTERNAL ER216 -ER216 .EXTERNAL ER217 -ER217 .EXTERNAL ER12 -ER12 .EXTERNAL ER18 -ER18 .EXTERNAL ER19 -ER19 .EXTERNAL ER26 -ER26 .EXTERNAL ER27 -ER27 .EXTERNAL ER40 -ER40 ZBLOCK 2 .EXTERNAL ER52 -ER52 .EXTERNAL ER53 -ER53 .EXTERNAL ER61 -ER61 .EXTERNAL ER77 -ER77 .EXTERNAL ER211 -ER211 .EXTERNAL ER212 -ER212 .EXTERNAL ER213 -ER213 .EXTERNAL ER214 -ER214 .EXTERNAL ER72 -ER72 .EXTERNAL ER73 -ER73 .EXTERNAL ER74 -ER74 .EXTERNAL ER78 -ER78 .EXTERNAL ER90 -ER90 .EXTERNAL ER91 -ER91 .EXTERNAL ER218 -ER218 .EXTERNAL ER219 -ER219 .EXTERNAL ER10 -ER10 .EXTERNAL ER22 -ER22 .EXTERNAL ER24 -ER24 .EXTERNAL ER69 -ER69 .EXTERNAL ER92 -ER92 .EXTERNAL ER203 -ER203 .EXTERNAL ER34 -ER34 .EXTERNAL ER41 -ER41 .EXTERNAL ER56 -ER56 .EXTERNAL ER60 -ER60 .EXTERNAL ER67 -ER67 .EXTERNAL ER204 -ER204 .EXTERNAL ER30 -ER30 .EXTERNAL ER28 -ER28 .EXTERNAL ER32 -ER32 .EXTERNAL ER31 -ER31 .EXTERNAL ER66 -ER66 .EXTERNAL ER205 -ER205 .EXTERNAL ER206 -ER206 .EXTERNAL ER207 -ER207 .EXTERNAL ER208 -ER208 .EXTERNAL ER209 -ER209 .EXTERNAL ER210 -ER210 .EXTERNAL ER58 -ER58 .EXTERNAL ER101 -ER101 .EXTERNAL ER102 -ER102 .EXTERNAL ER201 -ER201 .EXTERNAL ER202 -ER202 .EXTERNAL ER110 -ER110 .EXTERNAL ER111 -ER111 .EXTERNAL ER112 -ER112 .EXTERNAL ER113 -ER113 .EXTERNAL ER114 -ER114 .EXTERNAL ER115 -ER115 .EXTERNAL ER116 -ER116 .EXTERNAL ER200 -ER200 .EXTERNAL IO1,IO2,IO3,IO4,IO5,IO6,IO8,IO9,IO10 -IO1 -IO2 -IO3 -IO4 -IO5 -IO6 ZBLOCK 1 -IO8 -IO9 -IO10 ZBLOCK 1 .EXTERNAL ER220 -ER220 .EXTERNAL ER229 -ER229 ZBLOCK 2 .EXTERNAL ER221 -ER221 .EXTERNAL ER103 -ER103 .EXTERNAL ER104 -ER104 .EXTERNAL ER230 -ER230 *1377 -1 / -1 PAGE *1400 MESLST, MES6 MES7 MES8 MES9 MES20 MES25 MES37 MES38 MES43 MES49 MES51 MES57 MES58 MES59 MES71 MES300 MES80 MES301 ZBLOCK 16 *40+1400 /OVRA ERRORS MES35 MES44 MES45 MES46 MES50 0 0 0 /OVRB ERRORS MES15 MES33 MES47 MES48 MES2 MES215 /MACOPN ERRORS MES216 MES217 /OVRC ERRORS MES12 MES18 MES19 MES26 MES27 MES40 0 0 /OVRD ERRORS MES52 MES53 MES61 MES77 MES211 MES212 MES213 MES214 /OVRE ERRORS MES72 MES73 MES74 MES78 MES90 MES91 MES218 MES219 /MACEXP ERRORS MES10 MES22 MES24 MES69 MES92 MES203 MES34 MES41 MES56 MES60 MES67 /EXPOVR MESSAGES MES204 MES30 MES28 MES32 MES31 MES66 MES205 /FIN2 ERRORS MES206 /OVRU ERRORS MES207 /OVRR MESSAGES MES208 MES209 MES210 /MACORG ERRORS MES58 /MACMAC ERROR MESSAGES: MES101 MES102 MES201 MES202 MES110 MES111 MES112 MES113 MES114 MES115 MES116 MES200 /MACIO ERROR MESSAGES: MES121 MES122 MES123 MES124 MES125 MES126 MES127 MES128 MES129 MES130 0 /OVRT ERRORS MES220 MES229 /OVRS MESSAGES MES2 MES2 MES221 MES103 MES104 MES230 PAGE
/ XX MSG @[FOO+]NNNN [P. XX] [MACRO FOO] [SECT NAME] [LINE] / / E GIVES LINE / F DELETES REPETITIONS / L REGULAR PRINTOUT / ^O TERMINATES ERROR PRINTING / ^S FREEZES OUTPUTTING / ^Q RESUMES AFTER A ^S / THE FOLLOWING SYMBOLS OCCUR IN THE FIELD 0 ROOT / /ERRPAG,0 /PAGE NUMBER OF LAST ERROR LOGGED /ERRMAC,0 /CHUNK POINTER TO MACRO NAME OF LAST ERROR LOGGED /ERRSCT,0 /SECT OF LAST ERROR LOGGED /ERRLIN,0 /LINE NUMBER (L.O.) OF LAST ERROR LOGGED TYPERR, 0 /TYPE ERROR MESSAGE ON TTY SZA CLA /NON-0 AC MEANS TURN OFF CTRL/O JMS CTRLOFF TAD (PR DCA I (OUTDEY /OUTPUT DEVICE FOR ERRORS IS TERMINAL TAD I (MESPTR /GET ADDRESS OF MESSAGE DCA ADDR /STORE IT ON THIS PAGE /1.1 PRINT 2-LETTER ERROR CODE TAD I ADDR /GET FIRST WORD OF SIXBIT JMS I (PR2 /PRINT TWO CHARACTERS JMS I (SPACE /THEN PRINT A SPACE /1.2 GO THROUGH ERROR MESSAGE AND PRINT ANY SPECIAL STUFF /? DCA I (NAMPT JMS I (SETNAM CDF 0 NAME1 /BE PREPARED TO PRINT NAME1-NAME3 ON DEMAND E1, ISZ ADDR /GO TO NEXT WORD OF MESSAGE TAD I ADDR /GET NEXT TWO CHARACTERS OF ERROR MESSAGE RTR RTR RTR /LEFT-MOST CHARACTER TO RIGHT BYTE OF AC JMS I (FLUBBR /EXAMINE IT FOR SPECIAL CHARACTERS JMP E2 /DONE SNA CLA JMS I (SPACE /PRINT A SPACE AFTER SPECIAL CODE TAD I ADDR /NOW LOOK AT RIGHT BYTE OF MESSAGE JMS I (FLUBBR /EXAMINE IT TOO JMP E2 /DONE SNA CLA JMS I (SPACE JMP E1 /KEEP DOING THIS 'TILL MESSAGE IS DONE CTRLOFF,0 CDF 0 DCA I (CTRLO CDF 10 JMP I CTRLOFF
/1.3 PRINT @FOO+NNNN E2, TAD ("@ JMS I (PR /PRINT AN AT-SIGN DCA I (VAL CDF 0 TAD I (TAGLOC /GET CHUNK POINTER TO LAST TAG CDF 10 SNA JMP E3 /BUT MAYBE THERE WAS NONE (IN WHICH CASE, SKIP FOO+) JMS I (STNAM /SET SYMBOL TABLE NAME TO BE PRINTED JMS I (PRNAM /PRINT THAT NAME CLA JMS DIF SNA CLA JMP E3A /DON'T BOTHER PRINTING A 0 TAD ("+ /THEN PRINT A PLUS JMS I (PR E3, JMS DIF JMS I (PR12 /PRINT THIS DIFFERENCE AS AN OCTAL NUMBER /2.0 PRINT PAGE NUMBER IF NEW / HLT /2.1 PRINT MACRO NAME IF NEW /2.2 PRINT SECTION NAME IF NEW E3A, CDF 0 TAD I (ERRSCT /GET SECTION IN WHICH LAST ERROR OCCURRED CIA TAD I (CURSCT /COMPARE AGAINST CURRENT SECTION CDF 10 SZA CLA /IS THIS A NEW SECT? JMS I (PRSECT /YES, PRINT SECT /NO, WE PRINTED IT LAST TIME /3.0 PRINT LINE WHICH HAD ERROR IF EXTENDED PRINTOUT ENABLED CDF 0 TAD I (ERRLVL CDF 10 SPA SNA CLA JMP E4 /SKIP THIS PHASE IF NOT 'E' MODE JMS I (SPACE DCA I (TABCNT TAD (LINBUF-1 DCA LP LPL, ISZ LP CDF 10 TAD I LP SNA JMP E4 /END OF INPUT LINE TAD (-11 SNA /CHECK FOR TAB JMP I (SIMTAB /SIMULATE TAB WITH SPACES TAD (11 /RESTORE CHARACTER JMS I (PR ISZ I (TABCNT /KEEP TRACK OF WHAT COLUMN WE'RE AT JMP LPL E4, JMS I (CRLFF JMP I TYPERR LP, 0 /AVOID RETYPING SAME LINE MULTIPLE TIMES ADDR, 0 DIF, 0 TAD I (VAL CIA CDF 0 TAD I (PC /COMPUTE DIFFERENCE BETWEEN LC AND PREVIOUS TAG CDF 10 JMP I DIF
TP, 0 TLS TSF JMP .-1 CLA JMP I TP LPUT, 0 CIF 0 JMS I (CALLIT LISTER JMP I LPUT PAGE
PRCHR, 0 /PRINT CHARACTER IN 'CHAR' TAD ("" JMS I OUTDEY KCDF0, CDF 0 TAD I (CHAR /GET IT CDF 10 JMS I OUTDEY /PRINT IT TAD ("" JMS I OUTDEY TAD (-77 /RETURN A -77 FOR USE BY FLUBBR JMP I PRCHR OUTDEY, TPUT /OUTPUT DEVICE TO LOG ERROR LINE ON STNAM, 0 /SET SYMBOL TABLE NAME AS NAME TO BE PRINTED DCA VAL TAD VAL CLL RAL CLL RAL CLL RAL IAC DCA ST1 TAD VAL RTR RTR RTR AND (70 TAD KCDF0 DCA ST2 TAD ST2 DCA .+1 HLT /CHANGE DATA FIELD TO THAT FIELD TAD ST1 /WHILE WE'RE AT IT, TAD (3 /GET VALUE OF SYMBOL DCA VAL TAD I VAL DCA VAL /AND SAVE IT IN 'VAL' CDF 10 JMS I (SETNAM ST2, HLT ST1, HLT JMP I STNAM VAL, 0
PRNTEM, 0 NKNT, -3 NAMPT, 0 PRNAM, 0 JMS I (QUOTEE CLL STA RTL /-3 DCA NKNT /LINK IS SET NAMCDF, HLT SZL JMS DOLL /FIRST TIME THROUGH LINK IS SET SO CHECK FOR DOLLAR TAD I NAMPT CDF 10 DCA PRNTEM TAD PRNTEM RTR RTR RTR JMS I (PR6A TAD PRNTEM JMS I (PR6A ISZ NAMPT CLL ISZ NKNT JMP NAMCDF NAMGO, JMS I (QUOTEE TAD (-43 /SPECIAL RETURN IN AC FOR USE BY FLUBBR JMP I PRNAM OUTPRT, 0 JMS I OUTDEY JMP I OUTPRT DOLL, 0 ISZ DOLL TAD I NAMPT AND (7700 TAD (200 SNA CLA JMP LOCPRT /NUMERIC LOCAL LABEL TAD I NAMPT SMA JMP I DOLL DCA PRNTEM CDF 10 TAD ("$ JMS I OUTDEY STL CLA RAR /4000 GETS RID OF DOLLAR TAD PRNTEM JMP I DOLL LOCPRT, ISZ NAMPT /PRINT NUMERIC LOCAL LABEL TAD I NAMPT CDF 10 JMS I (PR10 /BUG - (NOT DECIMAL) ISZ NAMPT / TAD I NAMPT /DF IS WRONG TAD ("$ JMS I (PR6 /PRINT $ AT END ISZ NAMPT JMP NAMGO
TYPE, 0 JMS I (FLUBBR JMP PRFIN /FLUBBR SAYS WE'RE DONE SNA JMP TYPEGO /FLUBBR PRINTED IT TAD (40 AND (77 TAD (40 JMS I OUTDEY TYPEGO, ISZ TYPE JMP I TYPE PRFIN, JMS I (CRLFF JMP I TYPE PAGE
CHKKBD, 0 /CHECK KBD FOR SPECIAL CHARACTERS DCA CTRLS GETKEY, KSF /ANYTHING AT ALL? JMP GOCHK /NO KRB /READ CHARACTER AND (177 /STRIP PARITY BIT TAD (-3 SNA JMP CTC /FOUND A CTRL/C TAD (3-17 SNA JMP CTO /FOUND A CTRL/O TAD (17-106 SNA JMP F /FOUND AN "F" IAC SNA JMP E /FOUND AN "E" TAD (105-114 SNA JMP L /FOUND AN "L" TAD (114-23 SZA CLA JMP RESET /FOUND NOTHING SPECIAL, TURN ON ECHO, /TURN OFF HOLD SCREEN MODE CLA IAC /FOUND A CTRL/S DCA CTRLS /NOTE FACT JMP GETKEY /ALLOW OTHER CHARACTERS F, CLL STA RAL /F=-1 E, IAC /E=1 L, CDF 0 /L=0 DCA I (ERRLVL /SET ERROR LEVEL RESET, CDF 0 DCA I (CTRLO DCA CTRLS CDF 10 GOCHK, TAD CTRLS SZA CLA /WAITING FOR CTRL/Q? JMP GETKEY /YES, KEEP WAITING JMP I CHKKBD /NO, LEAVE CTRLS, 0 /NON-0 MEANS SAW CTRL/S
CTO, TAD (OMSG DCA CONO CTO2, TAD I CONO SNA JMP RESET1 JMS I (TPUT ISZ CONO JMP CTO2 CONO, 0 CTC, CIF CDF 0 JMP I (7605 RESET1, CLA IAC JMP RESET
PR12, 0 SNA JMP PR0 DCA PR12T TAD (-4 DCA PR12K STL CLA RAR DCA ZERFLG PR12L, TAD PR12T RTL RTL AND (7 SZA JMS NZERO TAD (60 TAD ZERFLG SMA JMS I (PR CLA TAD PR12T RTL RAL DCA PR12T ISZ PR12K JMP PR12L JMP I PR12 PR0, TAD (60 JMS I (PR JMP I PR12 T, 0 PR12T, 0 PR12K, 0
ZERFLG, 4000 /NEGATIVE MEANS IN LEADING 0'S NZERO, 0 DCA T DCA ZERFLG TAD T JMP I NZERO OMSG, "^;"O;215;212;0 PAGO, 0 CIF 0 JMS I (CALLIT OVRLIN /GO TO NEW PAGE IF NECESSARY CDF 0 TAD I (FORM CDF 10 SNA CLA JMP PAGOO CIF 0 JMS I (CALLIT NEWPAG PAGOO, JMS I (STARS JMP I PAGO PAGE
PR2SAV, 0 PR2, 0 DCA PR2SAV TAD PR2SAV RTR RTR RTR JMS I (PR6 TAD PR2SAV JMS I (PR6 JMP I PR2
PR6, 0 AND (77 SNA JMP I PR6 TAD (40 AND (77 JMS SPACE JMP I PR6
TABCNT, 0 SIMTAB, JMS I (SPACE ISZ TABCNT TAD TABCNT AND (7 SZA CLA JMP SIMTAB JMP I (LPL SPACE, 0 TAD (40 JMS I (PR JMP I SPACE CRLFF, 0 TAD (215 JMS I (OUTPRT TAD (212 JMS I (OUTPRT JMP I CRLFF
FLUBBR, 0 AND (77 /JUST LOOK AT SIXBIT CODE IN RIGHT HALF OF AC SNA JMP I FLUBBR /0 MEANS END OF MESSAGE, TAKE RETURN 1 TAD (-77 /LOOK FOR "?" SNA JMS I (PRCHR /IF "?", PRINT CHARACTER IN 'CHAR' TAD (77-43 /NOW LOOK FOR "#" SNA JMS I (PRNAM /IF "#", PRINT NAME IN NAME1-NAME3 TAD (43 /RESTORE CHARACTER ISZ FLUBBR /TAKE NORMAL RETURN JMP I FLUBBR /OTHERWISE, THAT'S IT. DON'T PRINT CHARACTER /THE OPERATION OF THIS ROUTINE HINGES ON THE FACT /THAT BOTH PRCHR AND PRNAM RETURN SPECIAL CODES IN THE AC /WHICH CAUSES FLUBBR TO RETURN A 0 TO ITS CALLER /A 0 RETURNED BY FLUBBR INDICATES THAT FLUBBR HAS PRINTED A SPECIAL CODE /OTHERWISE, THE CALLER HAS THE OPTION TO PRINT THE CHARACTER OR NOT /WHICH IS LEFT AS A SIXBIT QUANTITY IN THE AC.
PR6A, 0 AND (77 SNA JMP I PR6A TAD (-34 SNA TAD (56-34 IAC SNA TAD (44-33 TAD (33+40 AND (77 TAD (40 JMS I (OUTPRT JMP I PR6A
SETNAM, 0 TAD I SETNAM DCA I (NAMCDF ISZ SETNAM TAD I SETNAM DCA I (NAMPT ISZ SETNAM JMP I SETNAM QUOTEE, 0 /PRINT A QUOTE IF OUTDEY IS ERROR LOG TAD I (OUTDEY TAD (-LPUT SZA CLA JMP I QUOTEE /NO QUOTE IF OUTDEY IS 'LPUT' TAD ("" JMS I (OUTPRT JMP I QUOTEE
PRSECT, 0 JMS SPACE CDF 0 TAD I (CURSCT DCA I (ERRSCT TAD I (ERRSCT CDF 10 JMS I (STNAM TAD (2305 /SE JMS PR2 TAD (324 /CT JMS PR2 JMS SPACE JMS I (PRNAM CLA JMP I PRSECT PAGE
TEM, 0 STARS, 0 TAD (-4 DCA TEM TAD ("* JMS I (LPUT ISZ TEM JMP .-3 TAD (40 JMS I (LPUT JMP I STARS
VIRT, 0 /CONVERT VIRTUAL ADDRESS TO ACTUAL /AND PAGE IN APPROPRIATE ERROR MESSAGE DCA ADR /SAVE ADDRESS TAD ADR AND (7400 TAD (-3400 CLL RTL RTL RAL /DIVIDE BY 400 CDF 0 TAD I (ERRBLK CDF 10 TAD (6 DCA LOGBLK /THIS IS THE BLOCK CONTAINING THIS MSG CIF 0 /READ IT IN JMS I (7607 210 /READ 2 PAGES INTO FIELD 1 0400 /ADDRESS LOGBLK, 0 /FROM THIS BLOCK HLT /*** TAD ADR /GET RELATIVE BLOCK ADDRESS AND (377 TAD (400 /RELATIVE TO BLOCK AT 400 JMP I VIRT ADR, 0 DECIMAL DTABLE, -1000;-100;-10;0 OCTAL
PR, 0 /PRINT A CHARACTER ON TTY AND (177 DCA PRSAV JMS I (CHKKBD /SEE IF USER TPED ANYTHING ON KBD CDF 0 TAD I (CTRLO CDF 10 SZA CLA JMP I PR /CTRL/O IN EFFECT - DON'T TYPE TAD PRSAV JMS I (TPUT /TYPE CHARACTER JMP I PR PRSAV, 0
PR10, 0 DCA NUMX TAD (DTABLE DCA NPTR NPR1, DCA QUOTEX JMP NPLOOP NPR2, DCA NUMX ISZ QUOTEX NPLOOP, TAD I NPTR SNA JMP NPR3 CLL TAD NUMX SZL JMP NPR2 CLA ISZ NPTR TAD QUOTEX SNA JMP NPLOOP /IGNORE LEADING 0'S TAD ("0 JMS PR STL CLA RAR /4000 JMP NPR1 /FORCE 0'S TO PRINT NPR3, TAD NUMX TAD ("0 JMS PR JMP I PR10 NUMX, 0 QUOTEX, 0 NPTR, 0 PAGE
0 PAGE 0 PAGE
*3400 MES6, 0;1;TEXT /IC - $ NOT ALLOWED IN DEVICE OR FILENAME/ MES7, 0;1;TEXT /SY - IMPROPER EXTENSION/ MES8, 0;1;TEXT /SY - NAME OF FILE OR DEVICE TOO LONG/ MES9, 0;1;TEXT /SY - "$" <DIGIT> MAY NOT START A SYMBOL NAME/ MES10, 0;1;TEXT /IP - # IS A BAD TYPE OF SYMBOL/ MES12, 0;1;TEXT /IC - BAD CHARACTER WHILE LOOKING FOR TASK NAME/ MES15, 0;4000;TEXT /PH - PHASE ERROR/ MES18, 0;1;TEXT /SY - TASK NAME HAS IMPROPER TYPE/ MES19, 0;1;TEXT /SY - MISSING DEVICE OR FILENAME/ MES20, 0;4000;TEXT /SE - RAN OUT OF ROOM IN FREESPACE/ MES22, 0;1;TEXT /IC - UNEXPECTED CHARACTER WHILE LOOKING FOR EXPRESSION/ MES24, 0;2;TEXT /US - SYMBOL # NOT FOUND/ MES220, 0;4000;TEXT /IO - CHAIN ERROR #/ PAGE
MES25, 0;1;TEXT /IC - CHARACTER ? AFTER LOGICAL END OF STATEMENT/ MES26, 0;1;TEXT /NE - RADIX OUT OF RANGE/ MES27, 0;1;TEXT /SY - BAD DEVICE NAME #/ MES28, 0;1;TEXT /SY - END OF LINE BEFORE COMPLETION OF ' OR " OPERATOR/ MES30, 0;1;TEXT /IC - BAD CHAR, ?, AFTER ^/ MES31, 0;1;TEXT /IC - NO DIGIT AFTER ^D, ^O, OR ^B/ MES32, 0;1;TEXT /NE - CONFLICTING RADIX OVERRIDE/ MES33, 0;1;TEXT /IF - MISSING </ MES34, 0;1;TEXT /NE - BAD DIGIT IN NUMBER FOR CURRENT RADIX/ MES35, 0;1;TEXT /SY - BAD ARGUMENT TO DIRECTIVE/ MES37, 0;1;TEXT /IC - NON ALPHABETIC WHILE LOOKING FOR SYMBOL/ MES38, 0;1;TEXT /IC - MISSING = AFTER FIXMRI/ MES221, 0;1;TEXT /IC - ILLEGAL CHAR IN FIXTAB/ PAGE
MES40, 0;1;TEXT /SY - UNKNOWN ENABLE CONDITION/ MES41, 0;1;TEXT /IC - NO MATCHING CLOSE ANGLE BRACKET (ONE ASSUMED)/ /MES42, 0;4000;TEXT /IO - CAN'T PERFORM INCLUDE/ MES43, 0;1;TEXT /SY - IMPROPER LOCAL SYMBOL - #/ MES44, 0;1;TEXT /SY - MISSING TEXT ITEM/ MES45, 0;1;TEXT /IC - UNPRINTABLE CHAR BOUNDING TEXT MESSAGE/ MES46, 0;1;TEXT /IC - MISSING ANGLE BRACKET IN TEXT/ MES47, 0;1;TEXT /SY - IFDEF NOT FOLLOWED BY SYMBOL/ MES48, 0;1;TEXT /SY - 4096 NESTED TRUE CONDITIONALS/ MES49, 0;1;TEXT /SY - EXTRA RIGHT ANGLE BRACKET IGNORED/ MES50, 0;1;TEXT /PH - UNTERMINATED RELOC/ MES51, 0;4000;TEXT /IO - OVERLAY BAD/ MES52, 0;1;TEXT /SY - NO COMMA AFTER SECT NAME/ MES53, 0;1;TEXT /RD - REDEFINITION OF SECT NAME #/ MES229, 0;1;TEXT /SY - FIELD ERR/ PAGE
MES56, 0;1;TEXT /SY - DANGLING OPERATOR/ MES57, 0;1;TEXT /RE - COMPLEX RELOCATABLE EXPRESSION NOT PERMITTED/ MES58, 0;1;TEXT /PE - PAGE ILLEGAL IN FSECT/ MES59, 0;1;TEXT /ID - REDEFINED TAG #/ MES60, 0;1;TEXT /SY - MISSING EXPRESSION/ MES61, 0;1;TEXT /SY - SECT # HAS UNKNOWN TYPE ?/ MES66, 0;1;TEXT /SY - MISSING NUMERIC ARG/ MES67, 0;1;TEXT /SY - Z IMPROPERLY SPECIFIED/ MES68, 0;1;TEXT /RE - RELOCATION ERROR/ MES69, 0;1;TEXT /IR - ILLEGAL REFERENCE/ MES71, 0;1;TEXT /RD - GLOBAL REDEFINED TO NON-GLOBAL/ MES72, 0;1;TEXT /SY - DEVICE NAME TOO LARGE/ MES73, 0;1;TEXT /RD - REDECLARATION OF SYMBOL #/ MES218, 0;1;TEXT /SY - INVALID ARG # TO .PUSH OR .POP/ MES219, 0;1;TEXT /IC - ILLEGAL CHAR ? IN .PUSH/ PAGE
MES74, 0;1;TEXT /SY - NO COMMA OR SYMBOL AFTER DECLARATION/ MES77, 0;1;TEXT /SY - MISSING SECT NAME/ MES78, 0;1;TEXT /IC - EXTRA CHARS AFTER INCLUDE/ MES300, 0;1;TEXT /PH - SYMBOL # WAS NOT DEFINED ON PASS 1/ MES80, 0;1;TEXT /SY - 4096 OPEN ANGLE BRACKETS!/
MES90, 0;1;TEXT /IO - DEVICE # DOES NOT EXIST/ MES91, 0;1 TEXT /IO - CAN'T DO INCLUDE FROM NON-FILE-STRUCTURED DEVICE/ MES101, 0;1;TEXT /SE - TOO MANY LEVELS OF MACRO (OR REPT) NESTING/ MES102, 0;1;TEXT /SY - QUOTED ARGUMENT MISSING FINAL "/ MES111, 0;1;TEXT /SY - NAME # ON .ENDM DOES NOT MATCH NAME ON .MACRO/ MES113, 0;1;TEXT /SY - BAD MACRO NAME (BEGINS WITH ?)/ MES301, 0;2;TEXT /PE - TOO MANY LITERALS/ PAGE
MES104, MACNAM-6000+400;1 TEXT /IC - EXTRANEOUS CHARACTER ? AFTER END OF MACRO DIRECTIVE, MACRO #/ MES110, MACNAM-6000+400;1;TEXT /PH - NO TEXT AFTER .MACRO DIRECTIVE, MACRO #/ MES103, MACNAM-6000+400;4000;TEXT /SE - NO ROOM IN FREESPACE FOR MACRO #/ MES112, MACNAM-6000+400;1 TEXT /PH - MACRO # DOES NOT TERMINATE (.ENDM ASSUMED)/ MES114, 0;1;TEXT /RD - SYMBOL # BEING REDEFINED TO MACRO NAME/ MES115, 0;1 TEXT /PH - REPEAT RANGE DOES NOT TERMINATE (.ENDR ASSUMED)/ MES116, 0;1;TEXT /PH - NO TEXT AFTER .REPT/ MES121, 0;4000;TEXT /IO - OUTPUT ERROR/ MES122, 0;4000;TEXT /DF - NO ROOM FOR OUTPUT/ MES123, 0;4000;TEXT /BE - INTERNAL STACK OVERFLOW/ MES92, 0;1;TEXT /DV - DIVIDE BY 0/
KEYFLD=10 MACNAM, 0 CDF KEYFLD TAD I (NM CDF 0 CIA DCA I (NAME1 CDF KEYFLD TAD I (NM+1 CDF 0 CIA DCA I (NAME2 CDF KEYFLD TAD I (NM+2 CDF 0 CIA DCA I (NAME3 CDF 10 JMP I MACNAM PAGE
MES124, 0;4000;TEXT /BE - INTERNAL STACK UNDERFLOW/ MES125, 0;4000;TEXT /FA - FATAL MACRO ERROR/ MES126, 0;4000;TEXT /IO - ERROR CLOSING FILE/ MES127, 0;4000;TEXT /IO - ENTER ERROR/ MES128, 0;4000;TEXT /IO - ERROR READING FILE/ MES129, 0;4000;TEXT /NF - FILE # NOT FOUND OR DEVICE WRITE-ONLY/ MES130, 0;4000;TEXT /IO - ERROR FETCHING HANDLER/ SYSMES, 0;4000 /UNKNOWN ERROR TEXT /XX - UNKNOWN ERROR # ?/ MES2, 0;1;TEXT /SY - INVALID EXPUNGE OF #/
MES200, 0;1;TEXT /IC - BAD SUBSTRING ?/ MES201, 0;1;TEXT /IC - NO MATCHING >/ MES230, ERL-6400+400;4000;0
ERL, 0 CDF 0 DCA I (CTRLO /FORCE OUT ERROR COUNT STA /DON'T COUNT THIS MSG AS AN ERROR TAD I (ERKNT CDF 10 SNA JMP NOERS TAD (-1 SNA JMS FIXS IAC DCA FIXS TAD FIXS AND (7700 SZA CLA JMS MANYER TAD FIXS JMS I (PR10 ERLE, TAD (4005 JMS I (PR2 TAD (2222 JMS I (PR2 TAD (1722 JMS I (PR2 TAD ("S SSSS, JMS I (PR TAD (215 JMS I (PR TAD (212 JMS I (PR JMP I (BYERR FIXS, 0 TAD (CLA DCA SSSS JMP I FIXS NOERS, TAD (1617 JMS I (PR2 JMP ERLE MANYER, 0 TAD (1717 JMS I (PR2 TAD (2023 JMS I (PR2 TAD (4140 JMS I (PR2 JMP I MANYER PAGE
MES202, 0;1;TEXT /ME - .MEXIT WHILE NOT IN MACRO/ MES203, 0;2;TEXT /RE - LITERAL NOT SIMPLY RELOCATABLE/ MES204, 0;1;TEXT /%0 - ZERO DIVIDE/ MES205, 0;1;TEXT /SY - BAD TERM AFTER \/ MES206, 0;4000;TEXT /SE - TOO MANY LSD ENTRIES/ MES207, 0;1;TEXT /RE - ARG TO RELOC NOT ABSOLUTE/ MES208, 0;1;TEXT /SY - ILLEGAL ARGUMENT #/ MES209, 0;1;TEXT /SY - UNKNOWN LIST CONDITION #/ MES210, 0;1;TEXT /IC - ILLEGAL CHARACTER ?/ MES211, 0;1;TEXT /SY - BAD SECT NAME #/ MES212, 0;1;TEXT /SY - NO PREVIOUS SECT/ MES213, 0;1;TEXT /IC - BAD KEYWORD. #/ MES214, 0;1;TEXT /SY - CAN'T RESTRICT A-SECT/ MES215, 0;1;TEXT /SY - UNKNOWN IF CONDITION #/ MES216, 0;4000;TEXT /IO - ENTER ERROR/ MES217, 0;4000;TEXT /IO - ERROR LOADING HANDLER/ PAGE
.ASECT ERRXTR,LEVEL=4,OVERLAY=0 FIELD 6 *0 ZBLOCK 5^400



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search