File MESSAG.MA (MACREL macro assembler source file)

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

	TITLE	MESSAG - PPL ERROR MESSAGES   /EAT/ 19-NOV-72

	SEARCH	PPL
IFE FTEMF,<
	HISEG			;MESSAGES BEING ASSEMBLED IN HIGH SEGMENT
>
	XALL

;THIS SUBPROGRAM CONTAINS MOST OF THE ERROR MESSAGES USED IN PPL.
;   THEY ARE COLLECTED TOGETHER HERE FOR TWO REASONS:
;   (1) TO ELIMINATE REDUNDANT OR NEARLY IDENTICAL MESSAGES FOUND
;	IN DIFFERENT SUBPROGRAMS, AND
;   (2) TO ALLOW THE MESSAGES TO BE REMOVED FROM THE LANGUAGE PROCESSOR
;	ENTIRELY AND BE PLACED IN A FILE.

;IF FTEMF IS OFF, THIS SUBPROGRAM CONSISTS ONLY OF THE ERROR STRINGS
;   THEMSELVES, ALONG WITH THE GLOBAL SYMBOLS FOR DIRECTLY REFERENCING
;   THEM, AND IS LOADED ALONG WITH THE HIGH SEGMENT IN THE NORMAL WAY.

;IF FTEMF IS ON, THIS SUBPROGRAM ASSEMBLES AND LOADS INTO THE LOW SEGMENT,
;   ALONG WITH AN INITIALIZATION ROUTINE THAT WRITES ALL THE ERROR
;   MESSAGES INTO FILE PPL.ERR, THEN FLUSHES ITSELF AND RETURNS TO
;   THE MONITOR (OR DDT IF LOADED).  IN THIS CASE, THE GLOBAL SYMBOLS
;   ARE GIVEN VALUES OF THE FORM 700000+N, WHERE N IS THE RELATIVE LOCATION
;   IN THE FILE OF THE APPROPRIATE MESSAGE, AND WILL CAUSE THE TTOS
;   HANDLER TO READ PPL.ERR TO FIND THE MESSAGE ITSELF.

;THUS, IF FTEMF IS OFF, INSTALLING PPL IS DONE AS FOLLOWS: ; .LOAD @PPL ; .SSAVE DSK:PPL ; AND DEBUGGING IS DONE AS FOLLOWS: ; .DEBUG @DEBUG ; $G (ETC.) ;BUT IF FTEMF IS ON, THE PROCEDURE IS AS FOLLOWS: (FOR INSTALLATION:) ; .EXECUTE @PPL ; PPL.ERR WRITTEN ; .SSAVE DSK:PPL ; AND FOR DEBUGGING: ; .DEBUG @DEBUG ; $G (TO INITIALIZE) ; PPL.ERR WRITTEN ; DDT (ENTERS DDT AGAIN) ; $G (STARTS PPL ITSELF) ;WARNING************* ; MESSAG MUST BE LOADED LAST IF PPL IS BEING LOADED INTO ONE SEGMENT ; (WITH THE LOADER /H SWITCH). IN ANY CASE, MESSAG MUST BE AFTER ; BOTH LOW AND DDT.
;MESSAGES ASSEMBLED HERE ARE DECLARED BY ONE OF THE FOLLOWING ; MACRO CALLS: ; MESSAG LABEL,<TEXT OF MESSAGE> ; MESNCR LABEL,<TEXT OF MESSAGE> ; WHERE LABEL IS THE 5-CHARACTER MNEMONIC FOR THE MESSAGE. MESSAG ; AND MESNCR DIFFER ONLY IN THAT MESSAG APPENDS # AND MESNCR APPENDS ; ! TO THE MESSAGE. DEFINE MESSAG(L,M) < MSG L,<M#> > DEFINE MESNCR(L,M) < MSG L,<M!> > IFE FTEMF,< ;IF NO ERROR MESSAGE FILE CAPABILITY SUBTTL ASSEMBLED MESSAGE STRINGS (FTEMF=0) DEFINE MSG(L,M) < INTERN $'L XLIST $'L: SIXBIT \M\ LIST >> IFN FTEMF,< ;IF ERROR MESSAGE FILE CAPABILITY SUBTTL LOW-SEGMENT ERROR MESSAGE TABLE (FTEMF=1) MESTAB:!PHASE 700001 ;FIRST ERROR MESSAGE LOCATION WC== 1 ;RELATIVE LOCATION IN DIRST BLOCK DEFINE MSG(L,M) < XLIST ZZ== -1 IRPC M< ZZ== ZZ+1> IFG <WC==WC+ZZ/6+1>-200,< PHASE <<.-1>!177>+1 EXP 0 WC== ZZ/6+2 > $'L:: SIXBIT \M\ LIST >>
MESSAG IATYP,<IMPROPER ARGUMENT TYPE> MESSAG ILASG,<ILLEGAL ASSIGNMENT> MESSAG IUALT,<IMPROPER USE OF ALTERNATE NAME> MESSAG IPCON,<IMPROPER PARAMETER TO CONSTRUCTOR> MESSAG WNARC,<WRONG NUMBER OF ARGS TO CONSTRUCTOR> MESSAG ILIDS,<ILLEGAL IDENTIFIER STRING> MESSAG CNARG,<ARG WAS ALT IN ITHTYP> MESSAG FNNYI,<FUNCTION NOT YET IMPLEMENTED> MESSAG TMARG,<TOO MANY ARGUMENTS TO MAKE STRUCTURE> MESSAG IPSEL,<IMPROPER PARAMETER FOR SELECTION> MESSAG SYSEL,<ATTEMPT TO SELECT FROM SYSTEM OBJECT> MESSAG ATSEL,<ATTEMPT TO SELECT COMPONENT OF ATOMIC DATUM> MESSAG DDMSE,<DATA DEF MISSING DURING SELECTION> MESSAG DDALT,<DDEF WAS ALT IN SELECTION> MESSAG ISELS,<IMPROPER SELECTOR FOR STRUCTURE> MESSAG ILSEL,<ILLEGAL SELECTOR> MESSAG ISELQ,<IMPROPER SELECTOR FOR SEQUENCE> MESSAG SSOUT,<SELECTOR SUBSCRIPT OUT OF BOUNDS> MESSAG SYLEN,<ATTEMPT TO GET LENGTH OF SYSTEM OBJECT> MESSAG ALLEN,<LENGTH OF ALT CAN'T EXIST> MESSAG MAKE2,<SECOND ARG. MUST BE NON-NEG INTEGER> MESSAG MAKE3,<3RD ARG. IS NOT OF PROPER TYPE> MESSAG DDMIS,<MISSING DATA DEFINITION> MESSAG ICORI,<INSUFFICIENT CORE TO INITIALIZE> MESSAG PDLOV,<PDL OV> MESSAG ILMEM,<ILL MEM REF> MESSAG TTFAL,<INIT FAILED FOR TTY> MESSAG EOFOP,<END OF FILE WITH FUNCTION OPEN> MESSAG PDLSV,<PDL OV - SAVALL> IFN FTSTAT,< MESSAG ALROP,<FILE ALREADY OPEN> MESSAG OPFAI,<OPEN FAILURE> MESSAG ENFAI,<ENTER FAILURE FILE PPLSTM.BIN> MESSAG NOTOP,<FILE NOT OPEN> MESSAG STERR,<STATISTICS OUTPUT ERROR> > MESSAG IMPFN,<IMPROPER FUNCTION CALL> MESSAG WARGU,<CALLED USER FN WITH WRONG NO. OF ARGS> MESSAG IARGU,<IMPROPER ARG TO USER FUNCTION (CALL BY VALUE)> MESSAG LXTER,<BAD LXTYP IN ARGSUB> MESSAG IFNBL,<"IF" EXPRESSION WAS NOT BOOLEAN> MESSAG WHNBL,<"WHILE" EXPRESSION WAS NOT BOOLEAN> MESSAG RPNBL,<"REPEAT" EXPRESSION WAS NOT BOOLEAN> MESSAG SCFNI,<SCOPE OF "FOR" WAS NOT INTEGER> MESSAG ASGDL,<SYSTEM FUNCTION ASSIGN NEEDED IN FOR, BUT HAS BEEN DELETED>
MESSAG ERFMT,<ERROR IN FORMAT SPECIFICATION> MESSAG WRDRD,<CAN'T WRITE DURING READ> MESSAG FNREQ,<FILENAME OMITTED BUT REQUIRED> MESSAG DNXST,<DOES NOT EXIST> MESSAG ERFNS,<ERROR IN FILENAME STRING> MESSAG RECRD,<RECURSIVE READ NOT ALLOWED> MESSAG NPSAV,<NOT A PPL SAVE FILE> MESSAG OVSAV,<SORRY, FILE SAVED FROM DIFFERENT PPL VERSION> MESSAG ICENV,<INSUFFICIENT CORE FOR SAVED ENVIRONMENT> MESSAG FAOCH,<FILE ALREADY OPEN ON CHANNEL> MESSAG BYOUR,<BYTE SIZE OUT OF RANGE> MESSAG IMPDM,<IMPROPER DATA MODE> MESSAG NOTIN,<CANNOT DO INPUT> MESSAG NOTOU,<CANNOT DO OUTPUT> MESSAG NOTAV,<NOT AVAILABLE> MESSAG NOPEN,<FILE CHANNEL NOT OPEN> MESSAG FCNOR,<FILE CHANNEL NUMBER OUT OF RANGE> MESSAG CLCH0,<CHANNEL 0 MAY NOT BE CLOSED> MESSAG BDEOF,<BAD EOF> MESSAG DTMIS,<DATA TYPE MISMATCH> MESSAG NTDSK,<LEGAL ONLY FOR DISK INPUT> MESSAG POSNP,<POSITION ARGUMENT NON-POSITIVE> MESSAG CHNIN,<CHANNEL NOT OPEN FOR INPUT> MESSAG CHNOU,<CHANNEL NOT OPEN FOR OUTPUT> MESSAG SQRNG,<SQUARE ROOT OF NEGATIVE NUMBER> MESSAG ARGNG,<ARG MUST BE POSITIVE AND NONZERO> MESSAG BSMNN,<BASE MUST BE NON-NEGATIVE> MESSAG DZEXH,<DATA ZONE EXHAUSTED> MESSAG PZEXH,<POINTER ZONE EXHAUSTED> MESSAG CORRF,<CORE REDUCTION FAILED> MESSAG IOBFF,<IOBFIX FAILED> MESSAG ERDGC,<INTERNAL ERROR DURING GARBAGE COLLECTION> MESSAG DDMCP,<DATA DEFINITION MISSING FOR DATUM BEING COPIED> MESSAG PLMFC,<PARAMETER LIST MISSING IN FN CALL> MESSAG PNTSY,<ATTEMPT TO PRINT SYSTEM DATA BLOCK> MESSAG PNTUN,<ATTEMPT TO PRINT DATUM OF UNDEFINED TYPE> MESSAG DTALT,<DATUM WAS ALT IN PUTYPE> MESSAG NNFIT,<NUMBER WILL NOT FIT INTO CURRENT FORMAT>
MESSAG CXTEX,<CXTWD EXPECTED, NOT FOUND> MESSAG ENVLS,<ENVIRONMENT LOST> MESSAG FORDR,<FOR STATEMENT MAY NOT BE GIVEN DIRECTLY> MESSAG NOFOR,<NO STATEMENTS IN SCOPE OF "FOR"> MESSAG IMPCX,<IMPROPER CXTWD> MESSAG RTGLB,<ATTEMPTED TO RETURN FROM GLOBAL ENV> MESSAG GOGLB,<GOTO ILLEGAL IN GLOBAL ENVIRONMENT> MESSAG PRGNS,<PROGRAM WAS NOT SUSPENDED> MESSAG GLBEN,<GLOBAL ENVIRONMENT - NOTHING TO RESUME> MESSAG LLFOR,<INITIAL VALUE OF "FOR" NOT ARITHMETIC> MESSAG STFOR,<STEP ELEMENT OF "FOR" NOT ARITHMETIC> MESSAG ULFOR,<FINAL VALUE OF "FOR" NOT ARITHMETIC> MESSAG FCVNA,<"FOR" CONTROLLED VARIABLE NOT ARITHMETIC> MESSAG SENCN,<STEP ELEMENT NOT COERCED TO CONSTANT IN "FOR"> MESSAG WNARG,<WRONG NUMBER OF ARGUMENTS> MESSAG UNASG,<UNASSIGNED IDENTIFIER> MESSAG TRCZP,<TRIED TO TRACE A ZERO POINTER> MESSAG NULVO,<NULL-VALUED OPERAND> MESSAG ARGOR,<ARGUMENT OUT OF RANGE> MESSAG BDLHS,<BAD LHS IN ASSIGN> MESSAG ILGID,<ILLEGAL ID IN PREDICATE EXPRESSION> MESSAG ASNLR,<ASSOCIATIVITY NOT 'L OR 'R> MESSAG ILGOP,<ILLEGAL OP DEFINITION> MESSAG ERSER,<IMPROPER ARGUMENT TO ERASE> MESSAG LGOER,<LOGOUT RUN FAILURE> MESSAG ILLST,<IMPROPER ARG TO STOP/TRACE> MESSAG STUNX,<CAN'T STOP/TRACE UNEXECUTABLE FN> MESSAG STLNG,<STATEMENT TOO LONG> MESSAG NSFUN,<NO SUCH FUNCTION> MESSAG OFNHU,<OLD FN HEADER UNCHANGED> MESSAG FHDEL,<FUNCTION HEADER MAY NOT BE DELETED> MESSAG FNUNX,<FUNCTION UNEXECUTABLE> MESSAG ILEDC,<ILLEGAL EDITING COMMAND> MESSAG NSUDF,<NO SUCH USER-DEFINED FUNCTION> MESSAG NSLIN,<NO SUCH LINE>
;INPUT/OUTPUT ERRORS MESSAG FILNF,<NOT FOUND> MESSAG ILFIL,<ILLEGAL FILENAME> MESSAG NSUSR,<NO SUCH USER AREA> MESSAG PROTV,<PROTECTION VIOLATION> MESSAG DIRFL,<DIRECTORY FULL> MESSAG ALRBM,<ALREADY BEING MODIFIED> MESSAG UFDER,<UFD OR RIB ERROR> MESSAG DFOQE,<DISK FULL OR QUOTA EXCEEDED> MESSAG WRLKE,<WRITE-LOCK ERROR> MESSAG DEVER,<DEVICE ERROR> MESSAG CHOPE,<CHECKSUM OR PARITY ERROR> MESSAG TAPFL,<TAPE FULL> MESSAG ENDOF,<END OF FILE>
;ERROR MESSAGES FOR LEX AND PARSE, WHICH NEED TO KNOW THE LENGTH ; OF THE ERROR MESSAGE STRING SO THAT THEY CAN POSITION THE POINTER ; UNDER THE USER'S ERROR. DEFINE LMESS(L,N,M) < INTERN %EML'N MESSAG L,<M> %EML'N==ZZ > LMESS UTSTR,0,<UNTERMINATED STRING> LMESS NODIG,1,<NOT OCTAL DIGIT> LMESS MDECC,2,<MALFORMED DECIMAL CONSTANT> LMESS IDTLN,3,<IDENTIFIER TOO LONG> LMESS STRTL,4,<STRING TOO LONG> LMESS OPSTL,5,<OPERATOR SEQUENCE TOO LONG> LMESS INTOV,6,<INTEGER OVERFLOW> LMESS FLTOV,7,<FLOATING OVERFLOW> LMESS TMLEX,10,<TOO MANY LEXEMES> LMESS ILLIN,11,<ILLEGAL LINE NUMBER> LMESS UNDOP,12,<UNDEFINED OPERATOR> LMESS MFFNH,13,<MALFORMED FUNCTION HEADER> LMESS LBLER,14,<LABEL SAME AS FN NAME OR PARAMETER> LMESS TMLBL,15,<TOO MANY LABELS IN THIS FN> LMESS MDLBL,16,<MULTIPLY-DEFINED LABEL> LMESS TMPAR,17,<TOO MANY PARAMETERS AND/OR LOCALS> LMESS MDPAR,20,<MULTIPLY-DEFINED PARAMETER> LMESS MALDD,21,<MALFORMED DATA DEFINITION> LMESS IMPTY,22,<IMPROPER TYPE NAME> LMESS FNAIU,23,<NAME ALREADY IN USE> LMESS TMITM,24,<TOO MANY ITEMS> LMESS IMSLN,25,<IMPROPER SELECTOR NAME> LMESS IMBND,26,<IMPROPER BOUND> LMESS IMCHR,27,<IMPROPER CHARACTER> LMESS IMWRD,30,<IMPROPER USE OF SPECIAL WORD> ;"SYNTAX ERROR" IS A RESIDENT MESSAGE LMESS NOARR,32,<NO "_" IN PRECEDING "FOR"> LMESS DILBL,33,<DIRECT STMT MAY NOT BE LABELLED>
IFE FTEMF,< END > DEPHASE MESNUM==.-MESTAB ;SIZE OF ERROR MESSAGE TABLE
SUBTTL CODE TO WRITE OUT PPL.ERR, THEN FLUSH ITSELF ;ACCUMULATOR ASSIGNMENTS: T1== 1 ;TEMPS T2== T1+1 T3== T2+1 T4== T3+1 I== 5 ;INDEX INTO MESSAGE TABLE P== 17 ;PUSHDOWN POINTER ;NOTE: THE IN-CORE FORMAT OF THE MESSAGES IS A TABLE CONSTRUCTED ; AS FOLLOWS. FIRST, AS MANY SIXBIT MESSAGES AS WILL FIT INTO ; ONE BLOCK (BUT NOT SPLITTING ACROSS BLOCKS), THEN A ZERO TO ; MARK THE END OF THE BLOCK, AND SO ON. THIS MUST BE WRITTEN ; INTO THE ERROR MESSAGE FILE, SUCH THAT THE FIRST WORD OF EACH ; BLOCK IS C(VERCHK), AND THE MESSAGES ARE IN THEIR CORRECT ; PHASED LOCATIONS IN THE FILE (RELATIVE TO 700000). MESWRT:!RESET ;CLEAR EVERYTHING MOVE P,[IOWD 10,PDL] ;SETUP PUSHDOWN POINTER INIT 1,14 ;OPEN OUTPUT FILE DSK:PPL.ERR SIXBIT/DSK/ OBUF,,0 JRST ERRINI ;DSK NOT AVAILABLE (!) MOVSI T1,'PPL' MOVSI T2,'ERR' SETZB T3,T4 ENTER 1,T1 JRST ERRENT ;CANNOT ENTER FILE PPL.ERR MOVSI I,-MESNUM ;SETUP AOBJN POINTER TO IN-CORE TABLE NEWBLK:!PUSHJ P,FLUSH ;FORCE OUT PREVIOUS BLOCK, IF ANY MOVE T1,VERCHK ;OUTPUT VERSION CHECK WORD PUSHJ P,WRITE ; AS FIRST WORD OF BLOCK NXTWRD:!SKIPN T1,MESTAB(I) ;FETCH NEXT WORD OF MESSAGES AOBJN I,NEWBLK ;BLOCK END MARKER, MOVE TO NEXT BLOCK PUSHJ P,WRITE ;OUTPUT WORD OF MESSAGE AOBJN I,NXTWRD ;GO DO NEXT WORD CLOSE 1, ;CLOSE FILE STATZ 1,740000 ;ANY ERRORS? JRST ERROUT ;YES, COMPLAIN RELEAS 1, ;RELEASE OUTPUT CHANNEL OUTSTR [ASCIZ/PPL.ERR WRITTEN /]
;NOW FLUSH SELF, MOVING THE SYMBOL TABLE IF THERE IS ONE. MOVEI T1,PPL ;SET TO NORMAL STARTING ADDRESS HRRM T1,JOBSA MOVSI T1,'PPL' ;SET PROGRAM NAME TO 'PPL' SETNAM T1, SKIPE JOBDDT ;IS DDT LOADED? JRST FIXSYM ;YES, GO FIXUP SYMBOL TABLE MOVEI T1,MESTAB ;NO, SET FIRST FREE POINTER TO BEGINNING HRLM T1,JOBSA ; OF THIS SUBPROGRAM, THEREBY FLUSHING IT HRRM T1,JOBFF SETZM JOBCOR ;INDICATE NO NONZERO DATA IN LOW SEG ; THEREBY MAKING MONITOR NOT SAVE .LOW FILE XIT:! EXIT 1, ;EXIT TO MONITOR JRST PPL ;IN CASE OF .CONT ;HERE IF DDT IS LOADED. MOVE THE SYMBOL TABLE DOWN ON TOP OF MESSAG. FIXSYM:!SKIPL T1,JOBSYM ;MAKE DARN SURE THERE IS A SYMBOL TABLE HALT XIT ;OOP???? SKIPL JOBUSY ;IS THERE ALSO AN UNDEFINED SYMBOL TABLE? JRST .+3 ;NO ADD T1,JOBUSY ;YES, ADD ITS WORD COUNT IN HRR T1,JOBUSY ;AND USE ITS STARTING ADDRESS INSTEAD HLRE T2,T1 ;T2_NEG. NUMBER OF WORDS IN SYMBOL TABLE MOVN T2,T2 ;MAKE IT POSITIVE MOVNI T3,(T1) ;T3_NEGATIVE OF START OF TABLE ADDI T3,MESTAB+40 ;COMPUTE NEGATIVE OF DISTANCE TO MOVE ADDM T3,JOBSYM ;RELOCATE SYMBOL TABLE POINTER SKIPL JOBUSY ;IS THERE AN UNDEFINED SYMBOL TABLE? SETZM JOBUSY ;NO, MAKE DARN SURE DDT RECOMPUTES SKIPGE JOBUSY ADDM T3,JOBUSY ;YES, RELOCATE THIS POINTER ALSO MOVSI T1,(T1) ;PUT PRESENT SYM TAB LOCATION IN LH HRRI T1,MESTAB+40 ;WHERE TO MOVE IT (LEAVE 40 WORDS OF ; SPACE FOR NEW SYMBOLS) ADDI T2,MESTAB+40 ;COMPUTE FIRST FREE AFTER NEW END OF TABLE HRLM T2,JOBSA ;STORE FOR MONITOR HRRM T2,JOBFF HRLI T2,(BLT T1,) ;SETUP INST TO MOVE SYMBOL TABLE MOVSI T3,(JRST) ;NEXT INST TO TRANSFER TO DDT HRR T3,JOBDDT SOJA T2,T2 ;GO MOVE SYM TBL AND RETURN TO DDT
;ROUTINE TO OUTPUT ONE WORD TO THE FILE ; MOVE T1,WORD TO BE OUTPUT ; PUSHJ P,WRITE ; ALWAYS RETURN HERE UNLESS ERROR WRITE:! SOSL OBUF+2 ;ROOM IN OUTPUT BUFFER? JRST WRITE1 ;YES PUSHJ P,FLUSH ;NO, WRITE OUT CURRENT BUFFER JRST WRITE ;TRY AGAIN WRITE1:!IDPB T1,OBUF+1 ;STORE WORD IN BUFFER POPJ P, ;RETURN ;ROUTINE TO FORCE OUT THE CURRENT BUFFER ; PUSHJ P,FLUSH ; ALWAYS RETURN HERE UNLESS ERROR FLUSH:! OUT 1, ;OUTPUT THE BUFFER POPJ P, ;GOOD RETURN ;HERE ON OUTPUT ERROR ERROUT:!OUTSTR [ASCIZ\ ?OUTPUT ERROR FILE PPL.ERR \] EXIT ;HERE ON FAILURE TO INIT THE DSK ERRINI:!OUTSTR [ASCIZ\ ?DSK NOT AVAILABLE \] EXIT ;HERE ON ENTER FAILURE ERRENT:!OUTSTR [ASCIZ\ ?CANNOT ENTER FILE PPL.ERR \] EXIT PDL:! BLOCK 10 ;PUSHDOWN LIST OBUF:! BLOCK 3 ;OUTPUT BUFFER HEADER LIT END MESWRT



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