.TITLE RSXMSG - RETURN RSX-11M ERROR MESSAGE .IDENT /01/ .ENABL LC ;+ ; ; Free software BY ; Project Software & Development, Inc. ; ; This software is furnished for free and may be used and copied as ; desired. This software or any other copies thereof may be provided ; or otherwise made available to any other person. No title to and ; ownership of the software is hereby transferred or allowed. ; ; The information in this software is subject to change without notice ; and should not be construed as a commitment by PROJECT SOFTWARE ; AND DEVELOPMENT, INC. ; ; PROJECT SOFTWARE assumes no responsibility for the use or reliability ; of this software on any equipment whatsoever. ; ; Project Software & Development, Inc. ; 14 Story St. ; Cambridge, Ma. 02138 ; 617-661-1444 ; ; ; Title: RSXMSG ; Author: Robin Miller ; Date: November 10, 1981 ; ; Description: ; ; This module contains a complete list of all the RSX-11M error ; codes (both I/O and Directive error codes). It will either return ; the error (or success) messsage to a specified buffer, or will write ; the message to the terminal. In either case, control is returned ; to the user program for further processing. ; ; Modification History: ; ;- .ENABL AMA .MCALL ALUN$S, GLUN$S, QIOW$S ; ; Local equates. ; TOLUN = 6 ; TERMINAL OUTPUT LUN TOEFN = 6 ; TERMINAL OUTPUT EFN ; Offsets into error message block. ERROFF = 2 ; ERROR CODE OFFSET BUFOFF = 4 ; OUTPUT BUFFER OFFSET FLGOFF = 6 ; MESSAGE FLAGS OFFSET FACOFF = 10 ; FACILITY NAME OFFSET STAOFF = 12 ; STATUS RETURN OFFSET ; Bit definitions for message flags word. TXTBIT = 1 ; INCLUDE TEXT OF MESSAGE MIDBIT = 2 ; INCLUDE MESSAGE ID SEVBIT = 4 ; INCLUDE SEVERITY LEVEL FACBIT = 10 ; INCLUDE FACILTY NAME ; ; Local storage. ; .NLIST BEX TOTTY: .WORD 0 ; PUT MESSAGE TO TTY FLAG -1 = TRUE TIOSB: .BLKW 2 ; TERMINAL I/O STATUS BLOCK LUNBUF: .BLKW 6 ; BUFFER FOR GET LUN INFO ; Format of error message block (Fortran compatible). ERRBLK: .BYTE 5,0 ; ARGUMENT COUNT .WORD ERRCOD ; ADDRESS OF ERROR CODE .WORD OUTBUF ; ADDRESS OF OUTPUT BUFFER (-1 = PUT TO TTY) .WORD DEFFLG ; ADDRESS OF MESSAGE FLAGS (-1 = USE DEFAULT) .WORD FACNAM ; ADDRESS OF FACILITY NAME (-1 = USE DEFAULT) .WORD STATUS ; ADDRESS OF STATUS RETURN (-1 = NO STATUS) ERRCOD: .WORD 0 ; ERROR CODE OUTBUF: .BLKW 50. ; OUTPUT BUFFER DEFFLG: .WORD TXTBIT!MIDBIT!FACBIT ; MESSAGE FLAGS FACNAM: .ASCIZ %SYSTEM% ; FACILITY NAME .EVEN STATUS: .WORD 0 ; RETURN STATUS .SBTTL SUCTBL - SUCCESSFUL RETURN TABLE ; ; Successful return table. ; ; Although a message is usually not output on success, this table is ; included for completness. It may also be useful in debugging. ; ; Some of the success returns are duplicated such as IS.CLR and IS.PND. ; Because of this, it is impossible to know which message to return. ; Since many of our programs do terminal I/O, the terminal driver returns ; are used in this table. ; SUCTBL: .WORD IS.PND,ISPND ; OPERATION IS PENDING .WORD IS.SUC,ISSUC ; SUCCESSFUL OPERATION .WORD IS.TMO,ISTMO ; REQUEST TIMED OUT .WORD IS.CC,ISCC ; TERMINATED BY CTRL/C .WORD IS.EOT,ISEOT ; TERMINATED BY EOT (BLOCK MODE INPUT) .WORD IS.TAB,ISTAB ; TERMINATED BY TAB (FORMS MODE INPUT) .WORD IS.CR,ISCR ; TERMINATED BY CARRIAGE RETURN .WORD IS.ESC,ISESC ; TERMINATED BY ESCAPE .WORD IS.ESQ,ISESQ ; TERMINATED BY ESCAPE SEQUENCE .WORD IS.PES,IEPES ; TERMINATED BY PARTIAL ESCAPE SEQUENCE .WORD 0,0 ; END OF TABLE ; ; Successful return messages. ; .NLIST BEX ISPND: .ASCIZ %IS.PND% .ASCIZ %Operation is pending% ; IS.PND,+0. ISSUC: .ASCIZ %IS.SUC% .ASCIZ %Successful operation% ; IS.SUC,+1. ISTMO: .ASCIZ %IS.TMO% .ASCIZ %Request terminated by time out% ; IS.TMO,+2. ISCC: .ASCIZ %IS.CC% .ASCIZ %Terminated by CTRL/C% ; IS.CC, ISEOT: .ASCIZ %IS.EOT% .ASCIZ %Terminated by EOT% ; IS.EOT, ISTAB: .ASCIZ %IS.TAB% .ASCIZ %Terminated by TAB% ; IS.TAB, ISCR: .ASCIZ %IS.CR% .ASCIZ %Terminated by carriage return% ; IS.CR, ISESC: .ASCIZ %IS.ESC% .ASCIZ %Terminated by escape% ; IS.ESC, ISESQ: .ASCIZ %IS.ESQ% .ASCIZ %Terminated by escape sequence% ; IS.ESQ, NOMSG: .ASCIZ %NOMSG% .ASCII %No such message, code = % CODE: .BLKB 10. ; STORE ASCII CODE HERE .EVEN .SBTTL IOETBL - I/O (FCS) ERROR TABLE ; ; I/O (FCS) error table. ; IOETBL: .WORD NOMSG ; .WORD IEBAD ; IE.BAD,-01. .WORD IEIFC ; IE.IFC,-02. .WORD IEDNR ; IE.DNR,-03. .WORD IEVER ; IE.VER,-04. .WORD IEONP ; IE.ONP,-05. .WORD IESPC ; IE.SPC,-06. .WORD IEDNA ; IE.DNA,-07. .WORD IEDAA ; IE.DAA,-08. .WORD IEDUN ; IE.DUN,-09. .WORD IEEOF ; IE.EOF,-10. .WORD IEEOV ; IE.EOV,-11. .WORD IEWLK ; IE.WLK,-12. .WORD IEDAO ; IE.DAO,-13. .WORD IESRE ; IE.SRE,-14. .WORD IEABO ; IE.ABO,-15. .WORD IEPRI ; IE.PRI,-16. .WORD IERSU ; IE.RSU,-17. .WORD IEOVR ; IE.OVR,-18. .WORD IEBYT ; IE.BYT,-19. .WORD IEBLK ; IE.BLK,-20. .WORD IEMOD ; IE.MOD,-21. .WORD IECON ; IE.CON,-22. .WORD IENOD ; IE.NOD,-23. .WORD IEDFU ; IE.DFU,-24. .WORD IEIFU ; IE.IFU,-25. .WORD IENSF ; IE.NSF,-26. .WORD IELCK ; IE.LCK,-27. .WORD IEHFU ; IE.HFU,-28. .WORD IEWAC ; IE.WAC,-29. .WORD IECKS ; IE.CKS,-30. .WORD IEWAT ; IE.WAT,-31. .WORD IERER ; IE.RER,-32. .WORD IEWER ; IE.WER,-33. .WORD IEALN ; IE.ALN,-34. .WORD IESNC ; IE.SNC,-35. .WORD IESQC ; IE.SQC,-36. .WORD IENLN ; IE.NLN,-37. .WORD IECLO ; IE.CLO,-38. .WORD IENBF ; IE.NBF,-39. .WORD IERBG ; IE.RBG,-40. .WORD IENBK ; IE.NBK,-41. .WORD IEILL ; IE.ILL,-42. .WORD IEBTP ; IE.BTP,-43. .WORD IERAC ; IE.RAC,-44. .WORD IERAT ; IE.RAT,-45. .WORD IERCN ; IE.RCN,-46. .WORD IEICE ; IE.ICE,-47. .WORD IE2DV ; IE.2DV,-48. .WORD IEFEX ; IE.FEX,-49. .WORD IEBDR ; IE.BDR,-50. .WORD IERNM ; IE.RNM,-51. .WORD IEBDI ; IE.BDI,-52. .WORD IEFOP ; IE.FOP,-53. .WORD IEBNM ; IE.BNM,-54. .WORD IEBDV ; IE.BDV,-55. .WORD IEBBE ; IE.BBE,-56. .WORD IEDUP ; IE.DUP,-57. .WORD IESTK ; IE.STK,-58. .WORD IEFHE ; IE.FHE,-59. .WORD IENFI ; IE.NFI,-60. .WORD IEISQ ; IE.ISQ,-61. .WORD IEEOT ; IE.EOT,-62. .WORD IEBVR ; IE.BVR,-63. .WORD IEBHD ; IE.BHD,-64. .WORD IEOFL ; IE.OFL,-65. .WORD IEBCC ; IE.BCC,-66. .WORD IEONL ; IE.ONL,-67. .WORD IENNN ; IE.NNN,-68. .WORD IENFW ; IE.NFW,-69. .WORD IEBLB ; IE.BLB,-70. .WORD IETMM ; IE.TMM,-71. .WORD IENDR ; IE.NDR,-72. .WORD IECNR ; IE.CNR,-73. .WORD IETMO ; IE.TMO,-74. .WORD IEEXP ; IE.EXP,-75. .WORD IEBTF ; IE.BTF,-76. .WORD IENNC ; IE.NNC,-77. .WORD IENNL ; IE.NNL,-78. .WORD IENLK ; IE.NLK,-79. ; .WORD IEAST ; IE.AST,-80. .WORD IENST ; IE.NST,-80. .WORD IEFLN ; IE.FLN,-81. .WORD IEIES ; IE.IES,-82. .WORD IEPES ; IE.PES,-83. .WORD IEALC ; IE.ALC,-84. .WORD IEULK ; IE.ULK,-85. .WORD IEWCK ; IE.WCK,-86. .WORD IENTR ; IE.NTR,-87. .WORD IEREJ ; IE.REJ,-88. .WORD IEFLG ; IE.FLG,-89. .WORD IEDSQ ; IE.DSQ,-90. IOEENT = <.-IOETBL/2> .SBTTL I/O ERROR MESSAGES ; ; I/O error messages. ; .NLIST BEX IEBAD: .ASCIZ %IE.BAD% .ASCIZ %Bad parameters% ; IE.BAD,-01. IEIFC: .ASCIZ %IE.IFC% .ASCIZ %Invalid function code% ; IE.IFC,-02. IEDNR: .ASCIZ %IE.DNR% .ASCIZ %Device is not ready% ; IE.DNR,-03. IEVER: .ASCIZ %IE.VER% .ASCIZ %Parity error on device% ; IE.VER,-04. IEONP: .ASCIZ %IE.ONP% .ASCIZ %Hardware option not present% ; IE.ONP,-05. IESPC: .ASCIZ %IE.SPC% .ASCIZ %Illegal user buffer% ; IE.SPC,-06. IEDNA: .ASCIZ %IE.DNA% .ASCIZ %Device is not attached% ; IE.DNA,-07. IEDAA: .ASCIZ %IE.DAA% .ASCIZ %Device is already attached% ; IE.DAA,-08. IEDUN: .ASCIZ %IE.DUN% .ASCIZ %Device is not attachable% ; IE.DUN,-09. IEEOF: .ASCIZ %IE.EOF% .ASCIZ %End-of-file detected% ; IE.EOF,-10. IEEOV: .ASCIZ %IE.EOV% .ASCIZ %End-of-volume detected% ; IE.EOV,-11. IEWLK: .ASCIZ %IE.WLK% .ASCIZ %Write attempted to locked unit% ; IE.WLK,-12. IEDAO: .ASCIZ %IE.DAO% .ASCIZ %Data overrun% ; IE.DAO,-13. IESRE: .ASCIZ %IE.SRE% .ASCIZ %Send/receive failure% ; IE.SRE,-14. IEABO: .ASCIZ %IE.ABO% .ASCIZ %Request terminated% ; IE.ABO,-15. IEPRI: .ASCIZ %IE.PRI% .ASCIZ %Privilege violation% ; IE.PRI,-16. IERSU: .ASCIZ %IE.RSU% .ASCIZ %Sharable resource in use% ; IE.RSU,-17. IEOVR: .ASCIZ %IE.OVR% .ASCIZ %Illegal overlay request% ; IE.OVR,-18. IEBYT: .ASCIZ %IE.BYT% .ASCIZ %Odd byte count (or virtual address)% ; IE.BYT,-19. IEBLK: .ASCIZ %IE.BLK% .ASCIZ %Logical Block Number (LBN) too large% ; IE.BLK,-20. IEMOD: .ASCIZ %IE.MOD% .ASCIZ %Invalid UDC module number% ; IE.MOD,-21. IECON: .ASCIZ %IE.CON% .ASCIZ %UDC connect error% ; IE.CON,-22. IENOD: .ASCIZ %IE.NOD% .ASCIZ %System dynamic memory% ; IE.NOD,-23. IEDFU: .ASCIZ %IE.DFU% .ASCIZ %Device is full% ; IE.DFU,-24. IEIFU: .ASCIZ %IE.IFU% .ASCIZ %Index file is full% ; IE.IFU,-25. IENSF: .ASCIZ %IE.NSF% .ASCIZ %No such file% ; IE.NSF,-26. IELCK: .ASCIZ %IE.LCK% .ASCIZ %Locked from read/write access% ; IE.LCK,-27. IEHFU: .ASCIZ %IE.HFU% .ASCIZ %File header is full% ; IE.HFU,-28. IEWAC: .ASCIZ %IE.WAC% .ASCIZ %Accessed for write% ; IE.WAC,-29. IECKS: .ASCIZ %IE.CKS% .ASCIZ %File header checksum error% ; IE.CKS,-30. IEWAT: .ASCIZ %IE.WAT% .ASCIZ %Attribute control list format error% ; IE.WAT,-31. IERER: .ASCIZ %IE.RER% .ASCIZ %File processor device read error% ; IE.RER,-32. IEWER: .ASCIZ %IE.WER% .ASCIZ %File processor device write error% ; IE.WER,-33. IEALN: .ASCIZ %IE.ALN% .ASCIZ %File is already accessed on LUN% ; IE.ALN,-34. IESNC: .ASCIZ %IE.SNC% .ASCIZ %File ID, file number check% ; IE.SNC,-35. IESQC: .ASCIZ %IE.SQC% .ASCIZ %File ID, sequence number check% ; IE.SQC,-36. IENLN: .ASCIZ %IE.NLN% .ASCIZ %No file accessed on LUN% ; IE.NLN,-37. IECLO: .ASCIZ %IE.CLO% .ASCIZ %File was not properly closed% ; IE.CLO,-38. IENBF: .ASCIZ %IE.NBF% .ASCIZ %No buffer space available for file% ; IE.NBF,-39. IERBG: .ASCIZ %IE.RBG% .ASCIZ %Illegal record size% ; IE.RBG,-40. IENBK: .ASCIZ %IE.NBK% .ASCIZ %File exceeds space allocated, no blocks% ; IE.NBK,-41. IEILL: .ASCIZ %IE.ILL% .ASCIZ %Illegal operation of file descriptor% ; IE.ILL,-42. IEBTP: .ASCIZ %IE.BTP% .ASCIZ %Bad record type% ; IE.BTP,-43. IERAC: .ASCIZ %IE.RAC% .ASCIZ %Illegal record access bits set% ; IE.RAC,-44. IERAT: .ASCIZ %IE.RAT% .ASCIZ %Illegal record attribute bits set% ; IE.RAT,-45. IERCN: .ASCIZ %IE.RCN% .ASCIZ %Illegal record number-too large% ; IE.RCN,-46. IEICE: .ASCIZ %IE.ICE% .ASCIZ %Internal consistency error% ; IE.ICE,-47. IE2DV: .ASCIZ %IE.2DV% .ASCIZ %Rename-2 different devices% ; IE.2DV,-48. IEFEX: .ASCIZ %IE.FEX% .ASCIZ %Rename-new file name is already in use%; IE.FEX,-49. IEBDR: .ASCIZ %IE.BDR% .ASCIZ %Bad directory file% ; IE.BDR,-50. IERNM: .ASCIZ %IE.RNM% .ASCIZ %Cannot rename old file system% ; IE.RNM,-51. IEBDI: .ASCIZ %IE.BDI% .ASCIZ %Bad directory syntax% ; IE.BDI,-52. IEFOP: .ASCIZ %IE.FOP% .ASCIZ %File is already open% ; IE.FOP,-53. IEBNM: .ASCIZ %IE.BNM% .ASCIZ %Bad file name% ; IE.BNM,-54. IEBDV: .ASCIZ %IE.BDV% .ASCIZ %Bad device name% ; IE.BDV,-55. IEBBE: .ASCIZ %IE.BBE% .ASCIZ %Bad block on device% ; IE.BBE,-56. IEDUP: .ASCIZ %IE.DUP% .ASCIZ %Enter-duplicate entry in directory% ; IE.DUP,-57. IESTK: .ASCIZ %IE.STK% .ASCIZ %Not enough stack space (FCS or FCP)% ; IE.STK,-58. IEFHE: .ASCIZ %IE.FHE% .ASCIZ %Fatal hardware error on device% ; IE.FHE,-59. IENFI: .ASCIZ %IE.NFI% .ASCIZ %File ID was not specified% ; IE.NFI,-60. IEISQ: .ASCIZ %IE.ISQ% .ASCIZ %Illegal sequential operation% ; IE.ISQ,-61. IEEOT: .ASCIZ %IE.EOT% .ASCIZ %End-of-tape detected% ; IE.EOT,-62. IEBVR: .ASCIZ %IE.BVR% .ASCIZ %Bad version number% ; IE.BVR,-63. IEBHD: .ASCIZ %IE.BHD% .ASCIZ %Bad file header% ; IE.BHD,-64. IEOFL: .ASCIZ %IE.OFL% .ASCIZ %Device is offline% ; IE.OFL,-65. IEBCC: .ASCIZ %IE.BCC% .ASCIZ %Block check, CRC, or framing error% ; IE.BCC,-66. IEONL: .ASCIZ %IE.ONL% .ASCIZ %Device is online% ; IE.ONL,-67. IENNN: .ASCIZ %IE.NNN% .ASCIZ %No such node% ; IE.NNN,-68. IENFW: .ASCIZ %IE.NFW% .ASCIZ %Path lost to partner% ; IE.NFW,-69. IEBLB: .ASCIZ %IE.BLB% .ASCIZ %Bad logical buffer% ; IE.BLB,-70. IETMM: .ASCIZ %IE.TMM% .ASCIZ %Too many outstanding messages% ; IE.TMM,-71. IENDR: .ASCIZ %IE.NDR% .ASCIZ %No dynamic space available% ; IE.NDR,-72. IECNR: .ASCIZ %IE.CNR% .ASCIZ %Connect rejected% ; IE.CNR,-73. IETMO: .ASCIZ %IE.TMO% .ASCIZ %Timeout on request% ; IE.TMO,-74. IEEXP: .ASCIZ %IE.EXP% .ASCIZ %File expiration date not reached% ; IE.EXP,-75. IEBTF: .ASCIZ %IE.BTF% .ASCIZ %Bad tape format% ; IE.BTF,-76. IENNC: .ASCIZ %IE.NNC% .ASCIZ %Not ANSI "D" format byte count% ; IE.NNC,-77. IENNL: .ASCIZ %IE.NNL% .ASCIZ %Not a network LUN% ; IE.NNL,-78. IENLK: .ASCIZ %IE.NLK% .ASCIZ %Task not linked to specified ICR/ICR% ; IE.NLK,-79. IENST: .ASCIZ %IE.NST% .ASCIZ %Specified task is not installed% ; IE.NST,-80. ;IEAST: .ASCIZ %IE.AST% ; .ASCIZ %No AST specified in connect% ; IE.AST,-80. IEFLN: .ASCIZ %IE.FLN% .ASCIZ %Device is already offline% ; IE.FLN,-81. IEIES: .ASCIZ %IE.IES% .ASCIZ %Invalid escape sequence% ; IE.IES,-82. IEPES: .ASCIZ %IE.PES% .ASCIZ %Partial escape sequence% ; IE.PES,-83. IEALC: .ASCIZ %IE.ALC% .ASCIZ %Allocation failure% ; IE.ALC,-84. IEULK: .ASCIZ %IE.ULK% .ASCIZ %Unlock error% ; IE.ULK,-85. IEWCK: .ASCIZ %IE.WCK% .ASCIZ %Write check failure% ; IE.WCK,-86. IENTR: .ASCIZ %IE.NTR% .ASCIZ %Task is not triggered% ; IE.NTR,-87. IEREJ: .ASCIZ %IE.REJ% .ASCIZ %Transfer rejected by receiving CPU% ; IE.REJ,-88. IEFLG: .ASCIZ %IE.FLG% .ASCIZ %Event flag already specified% ; IE.FLG,-89. IEDSQ: .ASCIZ %IE.DSQ% .ASCIZ %Disk quota exceeded% ; IE.DSQ,-90. .EVEN .SBTTL DIRTBL - DIRECTIVE ERROR TABLE ; ; Directive error table. ; DIRTBL: .WORD NOMSG ; .WORD IEUPN ; IE.UPN,-01. .WORD IENST ; IE.INS,-02. .WORD IEPTS ; IE.PTS,-03. .WORD IEUNS ; IE.UNS,-04. .WORD IEULN ; IE.ULN,-05. .WORD IEHWR ; IE.HWR,-06. .WORD IEACT ; IE.ACT,-07. .WORD IEITS ; IE.ITS,-08. .WORD IEFIX ; IE.FIX,-09. .WORD IECKP ; IE.CKP,-10. .WORD IETCH ; IE.TCH,-11. ; -12., -13., -14. are I/O errors. .WORD IEWLK ; IE.WLK,-12. .WORD IEDAO ; IE.DAO,-13. .WORD IESRE ; IE.SRE,-14. ; .WORD IERBS ; IE.RBS,-15. .WORD IEPRI ; IE.PRI,-16. .WORD IERSU ; IE.RSU,-17. .WORD IENSW ; IE.NSW,-18. .WORD IEILV ; IE.ILV,-19. ; -20. thru -79. and -82. are I/O errors. .WORD IEBLK ; IE.BLK,-20. .WORD IEMOD ; IE.MOD,-21. .WORD IECON ; IE.CON,-22. .WORD IENOD ; IE.NOD,-23. .WORD IEDFU ; IE.DFU,-24. .WORD IEIFU ; IE.IFU,-25. .WORD IENSF ; IE.NSF,-26. .WORD IELCK ; IE.LCK,-27. .WORD IEHFU ; IE.HFU,-28. .WORD IEWAC ; IE.WAC,-29. .WORD IECKS ; IE.CKS,-30. .WORD IEWAT ; IE.WAT,-31. .WORD IERER ; IE.RER,-32. .WORD IEWER ; IE.WER,-33. .WORD IEALN ; IE.ALN,-34. .WORD IESNC ; IE.SNC,-35. .WORD IESQC ; IE.SQC,-36. .WORD IENLN ; IE.NLN,-37. .WORD IECLO ; IE.CLO,-38. .WORD IENBF ; IE.NBF,-39. .WORD IERBG ; IE.RBG,-40. .WORD IENBK ; IE.NBK,-41. .WORD IEILL ; IE.ILL,-42. .WORD IEBTP ; IE.BTP,-43. .WORD IERAC ; IE.RAC,-44. .WORD IERAT ; IE.RAT,-45. .WORD IERCN ; IE.RCN,-46. .WORD IEICE ; IE.ICE,-47. .WORD IE2DV ; IE.2DV,-48. .WORD IEFEX ; IE.FEX,-49. .WORD IEBDR ; IE.BDR,-50. .WORD IERNM ; IE.RNM,-51. .WORD IEBDI ; IE.BDI,-52. .WORD IEFOP ; IE.FOP,-53. .WORD IEBNM ; IE.BNM,-54. .WORD IEBDV ; IE.BDV,-55. .WORD IEBBE ; IE.BBE,-56. .WORD IEDUP ; IE.DUP,-57. .WORD IESTK ; IE.STK,-58. .WORD IEFHE ; IE.FHE,-59. .WORD IENFI ; IE.NFI,-60. .WORD IEISQ ; IE.ISQ,-61. .WORD IEEOT ; IE.EOT,-62. .WORD IEBVR ; IE.BVR,-63. .WORD IEBHD ; IE.BHD,-64. .WORD IEOFL ; IE.OFL,-65. .WORD IEBCC ; IE.BCC,-66. .WORD IEONL ; IE.ONL,-67. .WORD IENNN ; IE.NNN,-68. .WORD IENFW ; IE.NFW,-69. .WORD IEBLB ; IE.BLB,-70. .WORD IETMM ; IE.TMM,-71. .WORD IENDR ; IE.NDR,-72. .WORD IECNR ; IE.CNR,-73. .WORD IETMO ; IE.TMO,-74. .WORD IEEXP ; IE.EXP,-75. .WORD IEBTF ; IE.BTF,-76. .WORD IENNC ; IE.NNC,-77. .WORD IENNL ; IE.NNL,-78. .WORD IENLK ; IE.NLK,-79. .WORD IEAST ; IE.AST,-80. .WORD IEMAP ; IE.MAP,-81. .WORD IEIES ; IE.IES,-82. .WORD IEIOP ; IE.IOP,-83. .WORD IEALG ; IE.ALG,-84. .WORD IEWOV ; IE.WOV,-85. .WORD IENVR ; IE.NVR,-86. .WORD IENVW ; IE.NVW,-87. .WORD IEITP ; IE.ITP,-88. .WORD IEIBS ; IE.IBS,-89. .WORD IELNL ; IE.LNL,-90. .WORD IEIUI ; IE.IUI,-91. .WORD IEIDU ; IE.IDU,-92. .WORD IEITI ; IE.ITI,-93. .WORD IEPNS ; IE.PNS,-94. .WORD IEIPR ; IE.IPR,-95. .WORD IEILU ; IE.ILU,-96. .WORD IEIEF ; IE.IEF,-97. .WORD IEADP ; IE.ADP,-98. .WORD IESDP ; IE.SDP,-99. DIRENT = <.-DIRTBL/2> .SBTTL DIRECTIVE ERROR MESSAGES ; ; Directive error messages. ; .NLIST BEX IEUPN: .ASCIZ %IE.UPN% .ASCIZ %Insufficient dynamic memory% ; IE.UPN,-01. ;IEINS: .ASCIZ %IE.INS% ; .ASCIZ %Specified task is not installed% ; IE.INS,-02. IEPTS: .ASCIZ %IE.PTS% .ASCIZ %Partition too small for task% ; IE.PTS,-03. IEUNS: .ASCIZ %IE.UNS% .ASCIZ %Insufficient dynamic storage for send% ; IE.UNS,-04. IEULN: .ASCIZ %IE.ULN% .ASCIZ %Unassigned Logical Unit Number (LUN)% ; IE.ULN,-05. IEHWR: .ASCIZ %IE.HWR% .ASCIZ %Device driver not resident% ; IE.HWR,-06. IEACT: .ASCIZ %IE.ACT% .ASCIZ %Task is not active% ; IE.ACT,-07. IEITS: .ASCIZ %IE.ITS% .ASCIZ %Directive inconsistent with task state%; IE.ITS,-08. IEFIX: .ASCIZ %IE.FIX% .ASCIZ %Task already fixed/unfixed% ; IE.FIX,-09. IECKP: .ASCIZ %IE.CKP% .ASCIZ %Issuing task not checkpointable% ; IE.CKP,-10. IETCH: .ASCIZ %IE.TCH% .ASCIZ %Task is checkpointable% ; IE.TCH,-11. IERBS: .ASCIZ %IE.RBS% .ASCIZ %Receive buffer too small% ; IE.RBS,-15. ;IEPRI: .ASCIZ %IE.PRI% ; .ASCIZ %Privilege violation% ; IE.PRI,-16. ;IERSU: .ASCIZ %IE.RSU% ; .ASCIZ %Resource in use% ; IE.RSU,-17. IENSW: .ASCIZ %IE.NSW% .ASCIZ %No swap space available% ; IE.NSW,-18. IEILV: .ASCIZ %IE.ILV% .ASCIZ %Illegal vector speicified% ; IE.ILV,-19. IEAST: .ASCIZ %IE.AST% .ASCIZ %Directive issued/not issued from AST% ; IE.AST,-80. IEMAP: .ASCIZ %IE.MAP% .ASCIZ %Illegal mapping specified% ; IE.MAP,-81. IEIOP: .ASCIZ %IE.IOP% .ASCIZ %Window has I/O in progress% ; IE.IOP,-83. IEALG: .ASCIZ %IE.ALG% .ASCIZ %Alignment error% ; IE.ALG,-84. IEWOV: .ASCIZ %IE.WOV% .ASCIZ %Address window allocation overflow% ; IE.WOV,-85. IENVR: .ASCIZ %IE.NVR% .ASCIZ %Invalid region ID% ; IE.NVR,-86. IENVW: .ASCIZ %IE.NVW% .ASCIZ %Invalid address window ID% ; IE.NVW,-87. IEITP: .ASCIZ %IE.ITP% .ASCIZ %Invalid TI parameter% ; IE.ITP,-88. IEIBS: .ASCIZ %IE.IBS% .ASCIZ %Invalid send buffer size (.GT. 255.)% ; IE.IBS,-89. IELNL: .ASCIZ %IE.LNL% .ASCIZ %LUN locked in use% ; IE.LNL,-90. IEIUI: .ASCIZ %IE.IUI% .ASCIZ %Invalid User Identification Code (UIC)%; IE.IUI,-91. IEIDU: .ASCIZ %IE.IDU% .ASCIZ %Invalid device and/or unit% ; IE.IDU,-92. IEITI: .ASCIZ %IE.ITI% .ASCIZ %Invalid time parameters% ; IE.ITI,-93. IEPNS: .ASCIZ %IE.PNS% .ASCIZ %Partition/region not in system% ; IE.PNS,-94. IEIPR: .ASCIZ %IE.IPR% .ASCIZ %Invalid priority (.GT. 250.)% ; IE.IPR,-95. IEILU: .ASCIZ %IE.ILU% .ASCIZ %Invalid Logical Unit Number (LUN)% ; IE.ILU,-96. IEIEF: .ASCIZ %IE.IEF% .ASCIZ %Invalid event flag (.GT. 64.)% ; IE.IEF,-97. IEADP: .ASCIZ %IE.ADP% .ASCIZ %Part of DPB is out of user's space% ; IE.ADP,-98. IESDP: .ASCIZ %IE.SDP% .ASCIZ %DIC or DPB size is invalid% ; IE.SDP,-99. .EVEN .SBTTL ERROR - GET AN ERROR MESSAGE ;+ ; ; ERROR - Get an error message. ; ; GETMSG - Return error message to the user. ; PUTMSG - Put an error message to the terminal (TTY). ; ; This routine is used to report/return an I/O status error. The ; error code will normally be F.ERR of the FDB or the second word ; from an I/O status block. If the high byte is minus, a Directive ; error will be returned instead of an I/O error (FCS convention). ; ; Inputs: ; R5 = Points to error message block (Fortran standard): ; ; .BYTE 5,0 ; ARGUMENT COUNT ; .WORD ERRCOD ; ADDRESS OF ERROR CODE ; .WORD OUTBUF ; ADDRESS OF OUTPUT BUFFER (-1 = PUT TO TTY) ; .WORD DEFFLG ; ADDRESS OF MESSAGE FLAGS (-1 = USE DEFAULT) ; .WORD FACNAM ; ADDRESS OF FACILITY NAME (-1 = USE DEFAULT) ; .WORD STATUS ; ADDRESS OF STATUS RETURN (-1 = NO STATUS) ; ; Outputs: ; Initializes STATUS word to 0 (Success). ; R2 = Message address. ; ;- GETMSG:: CLR TOTTY ; PRESUME TO TTY TST BUFOFF(R5) ; SPECIFY A BUFFER ? BPL ERROR ; IF PL, YES ; FALL THROUGH TO PUTMSG PUTMSG:: MOV #-1,TOTTY ; ALWAYS WRITE TO TTY ERROR: TST STAOFF(R5) ; ADDRESS FOR STATUS ? BMI 5$ ; IF MI, NO CLR @STAOFF(R5) ; PRESUME GOOD RETURN 5$: TSTB @ERROFF(R5) ; SUCCESSFUL RETURN ? BMI 10$ ; IF MI, NO JMP SUCESS ; YES, RETURN MESSAGE 10$: TST @ERROFF(R5) ; DIRECTIVE ERROR ? BPL 20$ ; IF PL, NO JMP DIRERR ; REPORT DIRECTIVE ERROR 20$: CALL $SAVAL ; SAVE R0 - R5 MOVB @ERROFF(R5),R1 ; GET ERROR CODE (SIGN EXTEND) NEG R1 ; MAKE IT POSITIVE CMP R1,#IOEENT ; EXCEED # OF ENTRIES ? BLT 30$ ; IF LT, NO JMP WNOMSG ; YES, WRITE BAD MESSAGE 30$: ASL R1 ; MAKE WORD OFFSET ADD #IOETBL,R1 ; POINT INTO TABLE MOV (R1),R2 ; GET MESSAGE ADDRESS JMP CHKMSG ; CHECK WHERE TO PUT IT .SBTTL SIGNAL - SIGNAL ERROR AT TERMINAL ;+ ; ; SIGNAL - Signal error message at the terminal. ; ; Inputs: ; R5 = Pointer to argument list (Fortran convention): ; ; R5 -->> .BYTE 1,0 ; ARGUMENT COUNT ; .WORD ERRCOD ; ADDRESS OF ERROR CODE ; ; Outputs: ; R5 is destroyed. ;- SIGNAL:: MOV @2(R5),ERRCOD ; COPY THE ERROR CODE MOV #ERRBLK,R5 ; SETUP THE ERROR BLOCK JMP PUTMSG ; AND CONTINUE ... .SBTTL DIRERR - RETURN DIRECTIVE ERROR MESSAGE ;+ ; ; DIRERR - Return a directive error message. ; ; See ERROR for description of inputs. ; ; Outputs: ; R2 = Message address. ; ;- DIRERR: CALL $SAVAL ; SAVE R0 - R5 MOVB @ERROFF(R5),R1 ; COPY ERROR CODE NEG R1 ; MAKE IT POSITIVE CMP R1,#DIRENT ; EXCEED # OF ENTRIES ? BLT 20$ ; IF LT, NO JMP WNOMSG ; YES, RETURN BAD MESSAGE 20$: ASL R1 ; MAKE WORD OFFSET ADD #DIRTBL,R1 ; POINT INTO TABLE MOV (R1),R2 ; GET MESSAGE ADDRESS JMP CHKMSG ; CHECK WHERE TO PUT IT .SBTTL SUCESS - RETURN SUCCESS MESSAGE ;+ ; ; SUCESS - Return a successful return message. ; ; This routine is called whenever a successful return code ; (positive number in low byte) is passed to GETMSG or PUTMSG. ; ; See ERROR for description of inputs. ; ; Outputs: ; R1 = Success code. ; R2 = Message address. ; ;- SUCESS: CALL $SAVAL ; SAVE R0 - R5 MOV @ERROFF(R5),R1 ; COPY SUCCESS CODE MOV #SUCTBL,R0 ; TABLE OF SUCCESS RETURNS 10$: CMP R1,(R0)+ ; IS THIS THE CODE ? BEQ 20$ ; IF EQ, YES TST (R0)+ ; NEXT ENTRY BNE 10$ ; IF NE, MORE TO GO JMP WNOMSG ; ELSE, RETURN BAD MESSAGE 20$: MOV (R0),R2 ; GET ADDRESS OF MESSAGE JMP CHKMSG ; CHECK WHERE TO PIT IT .SBTTL WNOMSG - WRITE/RETURN "NO SUCH MESSAGE" ;+ ; ; WNOMSG - Write/return "No such message". ; ; This routine is entered whenever a unknown error/success code is ; encountered to return the code to the user. ; ; Inputs: ; R1 = illegal message code number. ; ; Outputs: ; Sets STATUS word in argument block to -1 (failure). ; ; Presumes registers were previously saved. ; ;- WNOMSG: MOV #CODE,R0 ; OUTPUT BUFFER CLR R2 ; ZERO SUPPRESSION CALL $CBDMG ; CONVERT TO DECIMAL MOVB #'.,(R0)+ ; SHOW DECIMAL NUMBER CLRB (R0) ; SET THE TERMINATOR MOV #NOMSG,R2 ; ADDRESS OF MESSAGE TST STAOFF(R5) ; ADDRESS FOR STATUS ? BMI 10$ ; IF MI, NO MOV #-1,@STAOFF(R5) ; SET BAD STATUS CODE 10$: JMP CHKMSG ; CHECK WHERE TO PUT IT .SBTTL CHKMSG - CHECK WHERE TO PUT MESSAGE ;+ ; ; CHKMSG - Check where to put message. ; ; This routine checks where the message should be put. It checks ; the message flags to determine which portions of the message ; should be returned/output. ; ; Message flag bits (VAX/VMS equivalent): ; ; Bit 0 = 1 - Include text of message. ; 0 Do not include text of message ; ; Bit 1 = 1 - Include message identifier. ; 0 Do not include message identifier. ; ; Bit 2 = x - Severity level indicator not implemented. ; ; Bit 3 = 1 - Include facility name. ; 0 - Do not include facility name. ; ; Bits 4-15 are unused and should be zero. ; ; Inputs: ; R2 = Message address. ; R5 = Pointer to error message block. ; ;- CHKMSG: TST FLGOFF(R5) ; SPECIFY A FLAG WORD ? BMI 5$ ; IF MI, NO MOV @FLGOFF(R5),R3 ; COPY FLAG BITS BIT DEFFLG,R3 ; SPECIFY ANY BITS ? BNE 10$ ; IF NE, YES 5$: MOV DEFFLG,R3 ; USE DEFAULT BITS 10$: MOV BUFOFF(R5),R1 ; GET MESSAGE BUFFER BPL 20$ ; IF PL, GOT ONE MOV #OUTBUF,R1 ; ELSE GO TO TERMINAL MOV #-1,TOTTY ; SHOW GOING TO TTY ; Copy the facility name. Don't destroy R1 or R3. 20$: MOV R1,R4 ; COPY MESSAGE BUFFER MOV FACOFF(R5),R0 ; ADDRESS OF FACILITY NAME BPL 30$ ; IF PL, GOT ONE MOV #FACNAM,R0 ; SET DEFAULT FACILITY NAME 30$: BIT #FACBIT,R3 ; OUTPUT FACILITY NAME ? BEQ 50$ ; IF EQ, NO MOVB #'%,(R4)+ ; MOVE IN PERCENT SIGN 40$: MOVB (R0)+,(R4)+ ; NOW THE FACILITY NAME BNE 40$ ; IF NE, MORE TO GO DEC R4 ; POINT TO THE NULL MOVB #'-,(R4)+ ; MOVE IN MINUS SIGN ; Copy the message ID. 50$: BIT #MIDBIT,R3 ; OUTPUT MESSAGE ID ? BEQ 70$ ; IF EQ, NO 60$: MOVB (R2)+,(R4)+ ; MOVE MESSAGE ID BNE 60$ ; IF NE, MORE TO GO DEC R4 ; POINT TO THE NULL MOVB #',,(R4)+ ; MOVE IN A COMMA MOVB #' ,(R4)+ ; AND A SPACE BR 80$ ; BR TO CONTINUE ... 70$: TSTB (R2)+ ; SKIP PAST MESSAGE ID BNE 70$ ; IF NE, MORE TO GO ; Copy text of the message. 80$: BIT #TXTBIT,R3 ; WANT TEXT OF MESSAGE ? BEQ 100$ ; IF EQ, NO 90$: MOVB (R2)+,(R4)+ ; MOVE IN MESSAGE TEXT BNE 90$ ; IF NE, MORE TO GO DEC R4 ; POINT AT THE NULL 100$: TST TOTTY ; PUT TO THE TERMINAL ? BNE 200$ ; IF NE, YES TST STAOFF(R5) ; ADDRESS FOR STATUS ? BMI 110$ ; IF MI, NO TST @STAOFF(R5) ; PASSING BACK BAD STATUS ? BMI 110$ ; IF MI, YES (DON'T ALTER) SUB R1,R4 ; CALCULATE BYTE COUNT MOV R4,@STAOFF(R5) ; PASS IT BACK AS STATUS 110$: RETURN ; ELSE RETURN TO USER ; Write the message to the terminal. 200$: SUB R1,R4 ; CALCULATE BYTE COUNT 210$: GLUN$S #TOLUN,#LUNBUF ; GET LUN INFOMATION BCC 220$ ; IF CC, OK CMP $DSW,#IE.ULN ; UNASSIGNED LUN ? BNE 999$ ; IF NE, NO (EXPECT NO OTHER) ALUN$S #TOLUN,#"TI,#0 ; ASSIGN LUN TO TI0: BCS 999$ ; IF CS, FAILED BR 210$ ; GET LUN INFO 220$: BIT #FD.TTY,LUNBUF+G.LUCW ; GOING TO A TERMINAL ? BEQ 999$ ; IF EQ, NO QIOW$S #IO.WVB,#TOLUN,#TOEFN,,#TIOSB,, BCS 999$ ; IF CS, ERROR TSTB TIOSB ; ANY I/O ERRORS ? BMI 999$ ; IF MI, YES RETURN ; If we receive a Directive or I/O error, put the error codes ; into the general purpose registers and dump via an IOT. 999$: MOV $DSW,R0 ; DIRECTIVE CODE MOVB TIOSB,R1 ; I/O STATUS CODE MOVB @ERROFF(R5),R3 ; COPY ORIGINAL CODE IOT ; DUMP THE REGISTERS .END