;<134-TENEX>ERRMES.MAC;5    30-OCT-75 12:59:01    EDIT BY CLEMENTS
; Corrected text for CRJOB errors
;<134-TENEX>ERRMES.MAC;3    16-JUN-75 13:14:52    EDIT BY CALVIN
; Added SACTX5 & GJFX38 codes
;<133-TENEX>ERRMES.MAC;1	 9-DEC-74 13:51:25	EDIT BY CALVIN
; Added more codes for account verifying JSYS's
;<CALVIN>ERRMES.MAC;3     3-DEC-74 11:19:53    EDIT BY PLUMMER
; GFACX1,2
;<CALVIN>ERRMES.MAC;1	29-NOV-74 12:23:25	EDIT BY CALVIN
; added strings for account verifying JSYS's
;<SOURCES>ERRMES.MAC;10     3-JUN-74 15:41:42    EDIT BY TOMLINSON
; added GJFX37
;<SOURCES>ERRMES.MAC;9     9-MAY-74 08:31:46    EDIT BY TOMLINSON
; ADDED OPNX23
;<SOURCES>ERRMES.MAC;6     4-APR-74 12:46:56	EDIT BY TOMLINSON
;<SOURCES>ERRMES.MAC;2	8-MAR-74	9:05:00	EDIT BY SHAPIRO
;<SOURCES>ERRMES.MAC;1    17-NOV-72  0:12:53	EDIT BY CLEMENTS
;<SOURCES>ERRMES.FAI;12    29-JUN-72  9:47:51	EDIT BY TOMLINSON

TITLE ERRMES - SYSTEM ERROR MESSAGES
	SEARCH	STENEX		;ADDED 08MAR74  SRS

MAXERC==10000		; MAXIMUM NUMBER ERROR CODES ALLOWED

ENTVEC:	JRST START
	JRST TEST

; THE FOLLOWING SHORT PROGRAM IS USED TO STORE THE ERROR MNEMONIC
; INFORMATION ON THE DISC

START:	MOVSI 1,(1B0+1B17)
	HRROI 2,[ASCIZ /ERROR.MNEMONICS/]
	GTJFN
	0
	MOVE 2,[44B5+1B20]
	OPENF
	0
	MOVNI 3,ESTRINGS-ERRTAB
	MOVE 2,[POINT 36,ERRTAB]
	SOUT
	CLOSF
	JFCL
	HALTF

;ROUTINE TO PRINT OUT MESSAGES, FOR TEST PURPOSES.
;ENTER WITH DDT AFTER RUNNING PROGRAM AT "START" ABOVE.

TEST:	RESET
	HRROI 1,[ASCIZ /
OUTPUT FILE: /]
	PSOUT
	MOVSI 1,460003
	MOVE 2,[XWD 100,101]
	GTJFN
	  JRST TEST
	MOVE 2,[XWD 70000,100000]
	OPENF
	  JRST TEST
	MOVE 16,1		;SAVE JFN
	MOVSI 5,-MAXERC
	SETZ 15,

LOOP:	MOVE 1,16
	SKIPN 10,NAMTAB(5)
	JRST BOT
	HLLZ 11,10
	HRROI 2,[ASCIZ /
/]
	SETZ 3,
	CAME 11,15
	 SOUT
	MOVE 15,11
	MOVEI 11,0
	ROTC 10,6
	MOVEI 2,40(11)
	BOUT
	JUMPN 10,.-4
	MOVEI 2,11
	BOUT
	MOVEI 3,10
	MOVEI 2,600000(5)
	NOUT
	  JFCL
	MOVEI 2,11
	BOUT			;TAB
	MOVE 2,ERRTAB(5)
	IDIVI 2,5
	MOVEI 10,ERRTAB(2)
	HRLI 10,440700
LLL:	ILDB 2,10
	CAIN 2,100
	JRST EOL
	BOUT
	JRST LLL
EOL:	MOVEI 2,15
	BOUT
	MOVEI 2,12
	BOUT
BOT:	AOBJN 5,LOOP
	CLOSF
	JFCL
	HALTF
	JRST .-1

LIT

; MACRO TO MAKE ENTRIES IN ERRTAB AND ASSEMBLE STRINGS

DEFINE X(N,S)<	QQ==<.-ERRTAB>*5
YY==<N>&37777
RELOC NAMTAB+YY
SIXBIT /N/
RELOC
RELOC ERRTAB+YY
QQ
RELOC
ASCII \S'@\
>

; Table of SIXBIT error mnemonics. Only used by TEST program.

NAMTAB:	XLIST
	REPEAT MAXERC,<0>

LIST

; Dispatch table:  points to string for each error code

ERRTAB:	XLIST
	REPEAT MAXERC,<0>

LIST

;ERROR MESSAGE TEXTS
;(ERROR NUMBER SYMBOLS DEFINED IN STENEX.MAC.)

STRINGS:

X(LGINX1,LOGIN: Illeg account)
X(LGINX2,LOGIN: Can't Log in under that directory number)
X(LGINX3,LOGIN: NO ROOM in System)
X(LGINX4,LOGIN: Password incorrect)
X(LGINX5,LOGIN: Already Logged in)

X(CRJBX1,CRJOB: Illegal parameter or option bits)
X(CRJBX2,CRJOB: Illeg inst while starting new job)
X(CRJBX3,CRJOB: Illeg account)
X(CRJBX4,CRJOB: Terminal illegal or not assigned to you)
X(CRJBX5,CRJOB: Illeg directory)
X(CRJBX6,CRJOB: NO ROOM in system for new job)
X(CRJBX7,CRJOB: Password incorrect)

X(LOUTX1,Illegal attempt to LGOUT job)
X(LOUTX2,LGOUT: No such job)

X(CACTX1,CACCT: Illegal account)
X(CACTX2,CACCT: Not logged in)

X(EFCTX1,EFACT: LOG Spec Cap not enabled)
X(EFCTX2,EFACT: Entry longer than 64 words)
X(EFCTX3,<EFACT: Accounting system failure,
 Contact Operator or Systems Personell>)


X(GJFX1,GTJFN: Desired "JFN" illeg)
X(GJFX2,GTJFN: Desired JFN not available)
X(GJFX3,GTJFN: No JFN's available)
X(GJFX4,GTJFN: Illeg char)
X(GJFX5,GTJFN: More than 39 chars in a field)
X(GJFX6,GTJFN: Two device fields or device not first)
X(GJFX7,GTJFN: Two directory fields or directory after name)
X(GJFX8,GTJFN: No "<" before ">")
X(GJFX9,GTJFN: More than 1 name field)
X(GJFX10,GTJFN: Non-numeric version)
X(GJFX11,GTJFN: Two version fields)
X(GJFX12,GTJFN: Two accounts)
X(GJFX13,GTJFN: Two protections)
X(GJFX14,GTJFN: Bad protection)
X(GJFX15,GTJFN: Illeg confirmation char)
X(GJFX16,GTJFN: No such device)
X(GJFX17,GTJFN: No such directory)
X(GJFX18,GTJFN: No such file name)
X(GJFX19,GTJFN: No such extension)
X(GJFX20,GTJFN: No such version)
X(GJFX21,<GTJFN: No such file (it disappeared)>)
X(GJFX22,GTJFN: JSB full)
X(GJFX23,GTJFN: Directory full)
X(GJFX24,GTJFN: Old file required)
X(GJFX25,GTJFN: Name given for non-directory device)
X(GJFX26,GTJFN: Extension for non-directory device)
X(GJFX27,GTJFN: New file required)
X(GJFX28,GTJFN: Device not mounted)
X(GJFX29,GTJFN: Device not available)
X(GJFX30,GTJFN: Numeric account required)
X(GJFX31,GTJFN: Illeg "*")
X(GJFX32,GTJFN: Empty directory and "*" given for name)
X(GJFX33,GTJFN: Null name not allowed)
X(GJFX34,GTJFN: ? was typed)
X(GJFX35,GTJFN: Access to directory not allowed)
X(GJFX36,GTJFN: Directory has bad format -- notify operator)
X(GJFX37,GTJFN: Illegal version number)
X(GJFX38,<GTJFN: Illegal account>)

X(OPNX1,OPENF or RNAMF: file open)
X(OPNX2,OPENF: File doesn't exist)
X(OPNX3,OPENF: Read access not allowed)
X(OPNX4,OPENF: Write access not allowed)
X(OPNX5,OPENF: Execute access not allowed)
X(OPNX6,OPENF: Append access not allowed)
X(OPNX7,OPENF: Device assigned to another job)
X(OPNX8,OPENF: Device not mounted)
X(OPNX9,OPENF: File busy)
X(OPNX10,OPENF: NO ROOM)
X(OPNX11,OPENF: WHEEL or OPER spec cap needed to not change dates)
X(OPNX12,OPENF: List access not allowed)
X(OPNX13,OPENF: Illeg access)
X(OPNX14,OPENF: Illeg mode)
X(OPNX15,OPENF: Non read/write access not allowed)
X(OPNX16,OPENF: File has bad index block)
X(OPNX17,OPENF: No room for long file page table table)
X(OPNX18,OPENF: No room to initialize index block)
X(OPNX19,OPENF: IMP is not up)
X(OPNX20,OPENF: Host is not up)
X(OPNX21,OPENF: Connection refused)
X(OPNX22,OPENF: Connection byte size mismatch)
X(OPNX23,OPENF: DIRECTORY ACCESS DOES NOT PERMIT OPENING FILES)


X(DESX1,Illeg TENEX source/destination designator)
X(DESX2,That terminal not available)
X(DESX3,Unassigned JFN)
X(DESX4,Illeg use of terminal designator or string pointer)
X(DESX5,File not open)
X(DESX6,File must be a TTY)
X(DESX7,JFN must not refer to output asterisks)
X(DESX8,File must be on a disk)

X(CLSX1,CLOSF: File not open)
X(CLSX2,CLOSF: File not closable by this fork)

X(RJFNX1,RLJFN: File is open)
X(RJFNX2,RLJFN: JFN being used to accumulate file name)
X(RJFNX3,RLJFN: JFN not accessible to this fork)

X(DELFX1,DELF: You don't have delete access to file)

X(SFPTX1,SFPTR: File not open)
X(SFPTX2,SFPTR: illeg to set this file's pointer)
X(SFPTX3,<SFPTR: illeg pointer (eg less than -1)>)

X(CNDIX1,<CNDIR (used for password check only): Incorrect password>)
X(CNDIX2,CNDIR: Incorrect password)
X(CNDIX3,CNDIR: Invalid directory #)
X(CNDIX4,CNDIR: Can't check password when logged in)
X(CNDIX5,CNDIR: Not logged in)
X(CNDIX6,CNDIR: Proxy connect not permitted except by top fork of group)

X(SFBSX1,SFBSZ: Can't change byte size for this opening of file)
X(SFBSX2,OPENF or SFBSZ: Illeg byte size)

X(IOX1,Reading from a file not open for reading)
X(IOX2,Writing on a file not open for writing)
X(IOX3,RIN or ROUT: Can't change pointer for this opening of file)
X(IOX4,Reading beyond end of file)
X(IOX5,Data error)
X(IOX6,Attempt to write beyond absolute maximum end of a file)

X(PMAPX1,PMAP: Illeg access request)
X(PMAPX2,PMAP: Illeg case)

X(SPACX1,SPACS: Illeg access request)

X(FRKHX1,Illeg fork handle)
X(FRKHX2,Attempt to manipulate a superior fork)
X(FRKHX3,Illeg attempt to manipulate multiple forks)
X(FRKHX4,Fork running)
X(FRKHX5,<HFORK: Fork(s) already halted>)
X(FRKHX6,CFORK: Fork handles used up)
X(FRKHX7,LGOUT: Not permitted except by fork in top fork group of a job)

X(SPLFX1,SPLFK: Attempt to manipulate superior fork)
X(SPLFX2,SPLFK: Attempt to splice with a non-inferior fork)
X(SPLFX3,SPLFK: Attempt to splice forks into a loop)
X(SPLFX4,SPLFK: Object forks have different JSYS trap monitors)

X(GTABX1,GETAB: Illeg table index)
X(GTABX2,GETAB: Illeg table #)
X(GTABX3,GETAB: Capability not enabled)

X(RUNTX1,RUNTM: Fork handle -3 or -4 given)

X(STADX1,STAD: Date & time already set and not WHEEL or OPER)
X(STADX2,STAD: Ridiculous date or time)

X(ASNDX1,ASND: Unassignable device)
X(ASNDX2,ASND: Illeg to assign this device)
X(ASNDX3,ASND or CSYNO: No such device)

X(CSYNX1,CSYNO: Synonym already in use)

X(ATACX1,ATACH: Illeg job #)
X(ATACX2,ATACH: Job already attached)
X(ATACX3,ATACH: Directory # does not match)
X(ATACX4,ATACH: Password Incorrect)
X(ATACX5,ATACH: No controlling terminal)

X(DCHRX1,DVCHR: Illeg device designator)

X(STDVX1,STDEV: No such device)

X(DEVX1,Illeg device designator)
X(DEVX2,Device assigned to another job)
X(DEVX3,Device not mounted)

X(MNTX1,MOUNT: Bad directory)
X(MNTX2,MOUNT: Attempt to mount device unsuccessful)
X(MNTX3,MOUNT: Unmountable device)

X(TERMX1,ATI or DTI: That code not usable for PSI's)

X(TLNKX1,TLINK: Must do object to remote before remote to object link)
X(TLNKX2,TLINK: Link refused)
X(TLNKX3,TLINK: All links in use)

X(ATIX1,ATI: Illeg channel #)
X(ATIX2,ATI: Spec cap required to assign ^C)

X(DTIX1,DTI: That code wasn't assigned to you) 

X(TTYX1,STI: Not a terminal or no such terminal)

X(CFRKX2,CFORK: Can't start fork with no pages)
X(CFRKX3,CFORK: NO ROOM in System)

X(KFRKX1,KFORK: Can't kill top level fork)
X(KFRKX2,KFORK: Can't kill self)

X(RFRKX1,<RFORK: Attempt to resume non-frozen fork(s)>)

X(GFRKX1,GFRKS: Illeg fork handle in 2)

X(GETX1,GET: Bad save file format)
X(GETX2,GET: System's Special Pages Table full)

X(TFRKX1,TFORK: Unknown function bits)
X(TFRKX2,TFORK: Unassigned fork handle or not immediate inferior)

X(SFRVX1,SFRKV: Illeg ent vect relative position)

X(NOUTX1,NOUT: Radix out of range 2 to 36)
X(NOUTX2,NOUT: Column overflow)

X(IFIXX1,NIN: Radix out of range 2 to 36)
X(IFIXX2,NIN: First character not a digit)
X(IFIXX3,NIN: Overflow)

X(ADVX1,ADVIZ: Advice not accepted)
X(ADVX2,ADVIZ: This error code is not currently used)
X(ADVX3,ADVIZ: Attempt to simultaneously advise and accept advice)
X(ADVX4,ADVIZ: ADVIZ already in progress)

X(GFDBX1,GTFDB: Illeg displacement)
X(GFDBX2,GTFDB: Illeg number of words)
X(GFDBX3,GTFDB: You don't have list access to file)

X(CFDBX1,CHFDB: Illeg displacement)
X(CFDBX2,CHFDB: Illeg to change those bits)
X(CFDBX3,CHFDB: You don't have spec cap or file access to change those bits)
X(CFDBX4,CHFDB: Illeg value for those bits)

X(DUMPX1,DUMPI/O: Command list error)
X(DUMPX2,DUMPI/O: JFN wasn't opened in mode 17)
X(DUMPX3,DUMPI/O: Address too big or crosses end of memory)
X(DUMPX4,DUMPI/O: Memory access error)

X(RNAMX1,RNAMF: Files not on same device)
X(RNAMX2,RNAMF: Destination file disappeared)
X(RNAMX3,RNAMF: Access to destination not allowed)
X(RNAMX4,RNAMF: No room)
X(RNAMX5,RNAMF: Destination busy)
X(RNAMX6,RNAMF: Destination has bad page table)
X(RNAMX7,RNAMF: Source disappeared)
X(RNAMX8,RNAMF: Access to source not allowed)
X(RNAMX9,RNAMF: Source is empty)
X(RNMX10,RNAMF: Source busy)
X(RNMX11,RNAMF: Source has bad page table)
X(RNMX12,RNAMF: Rename to self)

X(BKJFX1,Can't BKJFN that device twice)

X(TIMEX1,Time greater than 24 hours)
X(ZONEX1,Time zone out of range -12 to 12)
X(ODTNX1,ODTIM can't print time zones except USA and Greenwich)
X(DILFX1,Illegal date format)
X(TILFX1,Illegal time format)
X(DATEX1,Year out of range 1858 to 2576)
X(DATEX2,Month greater than 11)
X(DATEX3,Day of month too large)
X(DATEX4,Day of week greater than 6)
X(DATEX5,Date out of legal range)
X(DATEX6,System date and time not set)

X(SMONX1,SMON: LOG spec cap not enabled)

X(CPRTX1,CPRTF: You don't have access to file to change protection)

X(SACTX1,SACTF: File not on multiple-directory device)
X(SACTX2,SACTF: JSB full)
X(SACTX3,SACTF: Directory requires numeric account)
X(SACTX4,SACTF: You don't have access to file to change account)
X(SACTX5,<SACTF: Illegal account>)

X(GACTX1,GACTF: File not on multiple-directory device)
X(GACTX2,GACTF: File doesn't exist)

X(FFUFX1,FFUFP: File not open)
X(FFUFX2,FFUFP: File not on multiple-directory device)
X(FFUFX3,FFUFP: No used page found)

X(DSMX1,<DSMNT: Can't dismount -- file(s) open>)

X(RDDIX1,RDDIR failure)

X(SIRX1,SIR: table address less than 20)

X(SSAVX1,SSAVE: File not on disk)
X(SSAVX2,SSAVE: Page count greater than 1000)

X(SEVEX1,SEVEC: Entry vector longer than 777)

X(WHELX1,WHEEL or OPERATOR special capability not enabled)

X(CAPX1,<WHEEL, OPERATOR, or MAINTENANCE special capability required>)
X(CAPX2,<CTTY special capability required>)

X(NTWZX1,NETWIZ special capability required)

X(PEEKX1,PEEK: Block crosses page boundary)
X(PEEKX2,PEEK: Read access not allowed)

X(CRDIX1,CRDIR: WHEEL or OPER spec cap not enabled)
X(CRDIX2,CRDIR: Wrong directory # for name)
X(CRDIX3,CRDIR: JSB full)
X(CRDIX4,CRDIR: Sub-index full)
X(CRDIX5,CRDIR: Null name illeg)
X(CRDIX6,CRDIR: Can't change # of old directory)
X(CRDIX7,CRDIR: Can't kill directory with busy files)

X(GTDIX1,GTDIR: WHEEL or OPER spec cap not enabled)
X(GTDIX2,GTDIR: No such directory #)

X(FLINX1,FLIN: First char not blank or numeric)
X(FLINX2,FLIN: Number too small)
X(FLINX3,FLIN: Number too large)
X(FLINX4,FLIN: Bad format)

X(FLOTX1,FLOUT: Field overflow before or after point)
X(FLOTX2,FLOUT: Exponent field overflow)
X(FLOTX3,FLOUT: Illeg format spec)

X(FDFRX1,FDFRE: Not a multiple directory device)
X(FDFRX2,FDFRE: No such directory #)

X(ATPX1,ATPTY: Bad rec'v JFN)
X(ATPX2,ATPTY: Rec'v JFN not read)
X(ATPX3,ATPTY: Rec'v JFN not open)
X(ATPX4,ATPTY: Rec'v JFN not net)
X(ATPX5,ATPTY: Rec'v JFN not unused)
X(ATPX6,ATPTY: Rec'v connection refused)
X(ATPX7,ATPTY: Send JFN Bad)
X(ATPX8,ATPTY: Send JFN not write)
X(ATPX9,ATPTY: Send JFN not open)
X(ATPX10,ATPTY: Send JFN not net)
X(ATPX11,ATPTY: Send JFN not unused)
X(ATPX12,ATPTY: Send connection refused)
X(ATPX13,ATPTY: No NVT's)

X(CVSKX1,CVSKT: Bad JFN)
X(CVSKX2,CVSKT: Local socket illegal in this context)

X(DPX1,DISPLAY JSYS: Unassigned display process)
X(DPX2,DISPLAY JSYS: Illegal display process number)

X(STRDX1,<STRDP (STSDP): Illegal map word>)
X(STRDX2,<STRDP (STSDP): Too many pages locked>)
X(STRDX3,<STRDP (STSDP): Non-readable-writable-executable page>)
X(STTX1,<STTYP: Illegal terminal type number>)

X(ILINS1,Illegal instruction executed)
X(ILINS2,Unassigned JSYS executed)
X(ILINS3,10/50 UUO executed and compatability file not found)

X(SQX1,Special IMP Q number out of range)
X(SQX2,Special IMP Q not assigned to this job)

X(ASNSX1,ASNSQ: All special queues in use)
X(ASNSX2,ASNSQ: link(s) assigned to another special queue)

X(SNDIX1,SNDIM: Bad message size)
X(SNDIX2,SNDIM: No buffers available)
X(SNDIX3,<SNDIM: NCP links, 0 - 72, not permitted>)
X(SNDIX4,SNDIM: Header value not permitted on this queue)
X(SNDIX5,SNDIM: IMP down)

X(SCTX1,SCTTY: Undefined function bits)
X(SCTX2,SCTTY: TTY already in use a controlling TTY)
X(SCTX3,SCTTY: Attempt to set job controlling TTY as fork controlling TTY)
X(VACX1,<VACCT (GDACC): No such user>)
X(GBERR1,<VACCT: User name/account not in account matrix>)
X(VACX2,<VACCT: Invalid name/account pair>)

X(GDACX1,<GDACC: User name not in accounting matrix>)
X(GDACX2,<GDACC: No default account for user>)

X(PIEX1,<CGRP (GPSGN): Not a pie slice scheduler system>)
X(CGRPX1,<CGRP: No such group name>)
X(ACCTX1,<No user/account data file>)
X(ATGPX1,<ATGRP: Invalid account or no group for this acount>)
X(GCTJX1,<GACTJ (GPSGN): Invalid job #>)
X(GCTJX2,<GACTJ (GPSGN): Job doesn't exist>)

X(GFACX1,<No such directory (AC1 or AC3)>)
X(GFACX2,<Illegal protection word>)

ESTRINGS:

	END 2,,ENTVEC

