COMPILATION LISTING OF SEGMENT decode_nstd_status_ Compiled by: Multics PL/I Compiler, Release 27d, of October 11, 1982 Compiled at: Honeywell LISD Phoenix, System M Compiled on: 11/19/82 1001.7 mst Fri Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 4* * * 5* * Copyright (c) 1972 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems, Inc. * 7* * * 8* *********************************************************** */ 9 10 11 decode_nstd_status_: proc (status, return_string); 12 13 14 /* This procedure will decode the status returned by nstd_ and will return 15* a short description of the status in a varying character string. It is called 16* with two arguments. The first is the 72 bit status. The second is a 50 (or 17* longer) character varying string in which the status interpretation message 18* will be returned. 19* 20* WRITTEN BY DICK SNYDER .... 1971 21* MODIFIED BY T. CASEY AUGUST 1974, NOVEMBER 1974 22* 23**/ 24 25 26 dcl status bit (72) aligned; 27 dcl phyem char (100) varying; 28 dcl return_string char (*) varying; 29 30 dcl 1 stat_word aligned based (addr (status)), 31 2 fill bit (26) unaligned, 32 2 major bit (4) unaligned, 33 2 minor bit (6) unaligned; 34 35 dcl 1 minor_bits aligned based (addr (status)), 36 2 fill2 bit (30) unaligned, 37 2 mb1 bit (1) unaligned, 38 2 mb2 bit (1) unaligned, 39 2 mb3 bit (1) unaligned, 40 2 mb4 bit (1) unaligned, 41 2 mb5 bit (1) unaligned, 42 2 mb6 bit (1) unaligned; 43 44 dcl (addr, string, substr) builtin; 45 46 if major = "0000"b then do; /* Peripheral Subsystem Ready */ 47 if minor = "000000"b then phyem = "tape ready"; 48 else if minor = "001100"b then phyem = "ASCII alert"; 49 else if mb6 &^mb3 then phyem = "write protected"; 50 else if mb5 &substr (minor, 1, 3) = "000"b then phyem = "positioned at BOT"; 51 else if mb4 then phyem = "9 track handler"; 52 else if ^mb5 then do; 53 if substr (minor, 1, 3) = "010"b then phyem = "two bit fill"; 54 else if substr (minor, 1, 3) = "100"b then phyem = "four bit fill"; 55 else if substr (minor, 1, 3) = "110"b then phyem = "six bit fill"; 56 else goto unknown_ready; 57 end; 58 else 59 unknown_ready: phyem = "peripheral subsystem ready - unknown substatus"; 60 end; 61 62 else if major = "0001"b then do; /* Device Busy */ 63 if minor = "000001"b then phyem = "in rewind"; 64 else if minor = "100000"b then phyem = "device reserved"; 65 else if minor = "000010"b then phyem = "alternate channel in control"; 66 else if minor = "000100"b then phyem = "device loading"; 67 else phyem = "device busy - unknown substatus"; 68 end; 69 70 else if major = "0010"b then do; /* Device Attention */ 71 if mb1 then goto unknown_attention; 72 else if ^mb2 & substr (minor, 5, 2) = "01"b then phyem = "write protected"; 73 else if mb2 & substr (minor, 5, 2) = "00"b then phyem = "blank tape on write"; 74 else if substr (minor, 4, 2) = "10"b then phyem = "handler in standby"; 75 else if mb3 &^mb5 then phyem = "handler check"; 76 else 77 unknown_attention: phyem = "device attention - unknown substatus"; 78 end; 79 80 else if major = "0011"b then do; /* Device Data Alert */ 81 if minor = "000001"b then phyem = "transfer timing alert"; 82 else if minor = "000010"b then phyem = "blank tape on read"; 83 else if substr (minor, 5, 2) = "11"b then phyem = "bit detected during erase"; 84 else if mb4 then phyem = "transmission parity alert"; 85 else if mb3 then phyem = "lateral tape parity alert"; 86 else if mb2 then phyem = "longitudinal tape parity alert"; 87 else if mb1 then phyem = "end-of-tape mark"; 88 else phyem = "device data alert - unknown substatus"; 89 end; 90 91 else if major = "0100"b then do; /* End of File */ 92 if minor = "001111"b then phyem = "eof 7 track"; 93 else if minor = "010011"b then phyem = "eof 9 track"; 94 else if minor = "111111"b then phyem = "data alert"; 95 else phyem = "single character record"; 96 end; 97 98 else if major = "0101"b then do; /* Command Reject */ 99 if minor = "000000"b then phyem = "invalid set density"; 100 else if minor = "001000"b then phyem = "backspace while at at BOT"; 101 else if minor = "010000"b then phyem = "forward read after write"; 102 else if minor = "100000"b then phyem = "9 track command to 7 track handler"; 103 else if substr (minor, 1, 3) = "000"b then do; 104 if mb6 then phyem = "invalid operation code"; 105 else if mb5 then phyem = "invalid device code"; 106 else if mb4 then phyem = "invalid IDCW parity"; 107 else goto unknown_reject; 108 end; 109 else 110 unknown_reject: phyem = "command reject - unknown substatus"; 111 end; 112 113 else if major = "0111"b then phyem = "program load termination"; /* MTS 400s only */ 114 115 else if major = "1000"b then phyem = "peripheral subsystem busy"; /* MTS 400s only */ 116 117 else if major = "1010"b then do; /* MPC Device Attention */ 118 if minor = "000001"b then phyem = "configuration switch error"; 119 else if minor = "000010"b then phyem = "multiple devices with same id"; 120 else if minor = "000011"b then phyem = "illegal device id number"; 121 else if minor = "001000"b then phyem = "incompatible PE and NRZI modes"; 122 else if minor = "010000"b then phyem = "handler malfunction"; 123 else if minor = "010001"b then phyem = "multiple BOT markers"; 124 else if substr (minor, 1, 4) = "0011"b then phyem = "TCA malfunction"; 125 else phyem = "MPC device attention - unknown substatus"; 126 end; 127 128 else if major = "1011"b then do; /* MPC Device Data Alert */ 129 if minor = "000001"b then phyem = "transmission parity alert"; 130 else if minor = "000010"b then phyem = "inconsistent command"; 131 else if minor = "000011"b then phyem = "sum check (sic) error"; 132 else if minor = "000100"b then phyem = "byte locked out"; 133 else if minor = "001000"b then phyem = "PE-burst write error"; 134 else if minor = "001001"b then phyem = "preamble error"; 135 else if minor = "100000"b then phyem = "marginal condition"; 136 else if minor = "010000"b then phyem = "multi-track error"; 137 else if minor = "010001"b then phyem = "skew error"; 138 else if minor = "010010"b then phyem = "postamble error"; 139 else if minor = "010011"b then phyem = "NRZI correctable error"; 140 else if minor = "010100"b then phyem = "code alert"; 141 else phyem = "MPC device data alert - unknown substatus"; 142 end; 143 144 else if major = "1101"b then do; /* MPC command reject */ 145 if minor = "000001"b then phyem = "illegal procedure"; 146 else if minor = "000010"b then phyem = "illegal logical channel number"; 147 else if minor = "000011"b then phyem = "illegal suspended logical channel number"; 148 else if minor = "000100"b then phyem = "IDCW continue bit not set"; 149 else phyem = "MPC command reject - unknown substatus"; 150 end; 151 152 else phyem = "unknown major status"; 153 154 return_string = phyem; /* one assignment to the char (*) return string, to avoid/ 155* length-checking code for all the above assignments */ 156 return; 157 158 end decode_nstd_status_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/19/82 0929.8 decode_nstd_status_.pl1 >spec>on>11/19/82>decode_nstd_status_.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. addr builtin function dcl 44 ref 46 47 48 49 49 50 50 51 52 53 54 55 62 63 64 65 66 70 71 72 72 73 73 74 75 75 80 81 82 83 84 85 86 87 91 92 93 94 98 99 100 101 102 103 104 105 106 113 115 117 118 119 120 121 122 123 124 128 129 130 131 132 133 134 135 136 137 138 139 140 144 145 146 147 148 major 0(26) based bit(4) level 2 packed unaligned dcl 30 ref 46 62 70 80 91 98 113 115 117 128 144 mb1 0(30) based bit(1) level 2 packed unaligned dcl 35 ref 71 87 mb2 0(31) based bit(1) level 2 packed unaligned dcl 35 ref 72 73 86 mb3 0(32) based bit(1) level 2 packed unaligned dcl 35 ref 49 75 85 mb4 0(33) based bit(1) level 2 packed unaligned dcl 35 ref 51 84 106 mb5 0(34) based bit(1) level 2 packed unaligned dcl 35 ref 50 52 75 105 mb6 0(35) based bit(1) level 2 packed unaligned dcl 35 ref 49 104 minor 0(30) based bit(6) level 2 packed unaligned dcl 30 ref 47 48 50 53 54 55 63 64 65 66 72 73 74 81 82 83 92 93 94 99 100 101 102 103 118 119 120 121 122 123 124 129 130 131 132 133 134 135 136 137 138 139 140 145 146 147 148 minor_bits based structure level 1 dcl 35 phyem 000100 automatic varying char(100) dcl 27 set ref 47* 48* 49* 50* 51* 53* 54* 55* 58* 63* 64* 65* 66* 67* 72* 73* 74* 75* 76* 81* 82* 83* 84* 85* 86* 87* 88* 92* 93* 94* 95* 99* 100* 101* 102* 104* 105* 106* 109* 113* 115* 118* 119* 120* 121* 122* 123* 124* 125* 129* 130* 131* 132* 133* 134* 135* 136* 137* 138* 139* 140* 141* 145* 146* 147* 148* 149* 152* 154 return_string parameter varying char dcl 28 set ref 11 154* stat_word based structure level 1 dcl 30 status parameter bit(72) dcl 26 set ref 11 46 47 48 49 49 50 50 51 52 53 54 55 62 63 64 65 66 70 71 72 72 73 73 74 75 75 80 81 82 83 84 85 86 87 91 92 93 94 98 99 100 101 102 103 104 105 106 113 115 117 118 119 120 121 122 123 124 128 129 130 131 132 133 134 135 136 137 138 139 140 144 145 146 147 148 substr builtin function dcl 44 ref 50 53 54 55 72 73 74 83 103 124 NAME DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. string builtin function dcl 44 NAMES DECLARED BY EXPLICIT CONTEXT. decode_nstd_status_ 000605 constant entry external dcl 11 unknown_attention 001125 constant label dcl 76 ref 71 unknown_ready 000754 constant label dcl 58 ref 55 unknown_reject 001411 constant label dcl 109 ref 106 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2040 2050 2012 2050 Length 2214 2012 10 127 26 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME decode_nstd_status_ 96 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME decode_nstd_status_ 000100 phyem decode_nstd_status_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. return ext_entry_desc NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 11 000601 46 000620 47 000630 48 000642 49 000652 50 000666 51 000710 52 000721 53 000723 54 000734 55 000744 57 000753 58 000754 60 000761 62 000762 63 000764 64 000777 65 001007 66 001017 67 001027 68 001034 70 001035 71 001037 72 001042 73 001064 74 001076 75 001111 76 001125 78 001132 80 001133 81 001135 82 001150 83 001160 84 001172 85 001203 86 001214 87 001225 88 001236 89 001243 91 001244 92 001246 93 001261 94 001271 95 001301 96 001306 98 001307 99 001311 100 001323 101 001333 102 001343 103 001353 104 001356 105 001367 106 001400 108 001410 109 001411 111 001416 113 001417 115 001427 117 001437 118 001441 119 001454 120 001464 121 001474 122 001504 123 001514 124 001524 125 001537 126 001544 128 001545 129 001547 130 001562 131 001572 132 001602 133 001612 134 001622 135 001632 136 001642 137 001652 138 001662 139 001672 140 001702 141 001712 142 001717 144 001720 145 001722 146 001735 147 001745 148 001755 149 001765 150 001772 152 001773 154 002000 156 002011 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved