ASSEMBLY LISTING OF SEGMENT >spec>h>3.17>ntape.alm ASSEMBLED ON: 11/29/83 1527.5 mst Tue OPTIONS USED: list ASSEMBLED BY: ALM Version 6.6 November 1982 ASSEMBLER CREATED: 09/21/83 1227.3 mst Wed  1 " ***********************************************************  2 " * *  3 " * Copyright, (C) Honeywell Information Systems Inc., 1982 *  4 " * *  5 " ***********************************************************  6 " ntape -- Multics Standard Tape Package.  7 " Modified for MTS-500 Operation on 9/7/73 by N. I. Morris  8 " Modified 2/80 by R.J.C. Kissel for 6250 bpi operation.  9 " Modified November 1981 by C. Hornig to not use IOM rel mode.  10  11  000000 12 name ntape 13  14 " ******************************************************  15 " * *  16 " * *  17 " * Copyright (c) 1972 by Massachusetts Institute of *  18 " * Technology and Honeywell Information Systems, Inc. *  19 " * *  20 " * *  21 " ******************************************************  22  23  24 include bosequ 1-1 " Begin include file ...... bosequ.incl.alm 1-2 " Modified 8/25/76 by N. I. Morris  1-3 " Modified 8/79 by R.J.C. Kissel to expand BOS. 1-4 " Modified November 1981 by C. Hornig to add pgmorg.  1-5 " Modified October 1982 by J. Bongiovanni to take it out  1-6  000000 1-7 bool ds,0 descriptor segment  000001 1-8 bool tmp,1 temp seg  000002 1-9 bool bf,2 buffer segment for save/restor  000003 1-10 bool pgm,3 program in control 000004 1-11 bool xs1,4 spare segment  000005 1-12 bool xs2,5 spare segment  000005 1-13 bool fgb,5 flagbox segment  000006 1-14 bool com,6 common 000007 1-15 bool mem,7 all memory 1-16  000017 1-17 equ arglen,15 max number of args from scan  1-18  004000 1-19 bool runcom_bit,4000 runcom bit in dir entry  002000 1-20 bool firmware_bit,2000 firmware bit in dir entry  1-21  012000 1-22 bool utilorg,12000 origin of utility package  1-23  1-24 " End of include file ...... bosequ.incl.alm  25 include bos_toequ  2-1 "  2-2 " Begin include file ...... bos_toequ.incl.alm  2-3 " Converted for follow-on on 5/5/72 at 17:30 by D R Vinograd  2-4 " Modified on 5/3/77 by N. I. Morris  2-5 " Modified 8/79 by R.J.C. Kissel to expand parts of BOS.  2-6 " Modified by Sherman D. Sprague 02/11/81 for DPS8 support  2-7 " Last modified by Keith Loepere to fix addresses to toehold and setup so  2-8 " that dcw list in setup will correctly save/restore Multics image  2-9 " The following is a map of BOS memory. 2-10 "  2-11 " Address Length  2-12 "  2-13 " 0 100 interrupt vector  2-14 " 100 100 fault vector  2-15 " 200 400 its pointers for fault and interrupt vectors  2-16 " 600 300 padding?  2-17 " 1100 100 bulk store mbx  2-18 " 1200 200 IOM imw area  2-19 " 1400 400 IOM A mbx 2-20 " 2000 400 IOM B mbx 2-21 " 2400 400 IOM C mbx 2-22 " 3000 400 IOM D mbx 2-23 " 3400 300 FNP A mbx 2-24 " 3700 300 FNP B mbx 2-25 " 4200 300 FNP C mbx 2-26 " 4500 300 FNP D mbx 2-27 " 5000 300 FNP E mbx 2-28 " 5300 300 FNP F mbx 2-29 " 5600 300 FNP G mbx 2-30 " 6100 300 FNP H mbx 2-31 " 6400 1340 padding  2-32 " 7740 40 ds (descriptor segment)  2-33 " 10000 1000 toehold  2-34 " 11000 7000 setup  2-35 " 20000 2000 bf (buffer)  2-36 " 22000 4000 com (common) 2-37 " 31000 12000 pgm (program area)  2-38 " 40000 20000 util (utilities) 2-39 " 60000 717777 rest of BOS memory, unused  2-40  2-41 " EQU's for BOS core image. 2-42  060000 2-43 bool coresaved,60000 amount of Multics core saved by BOS  2-44  777777 2-45 bool lnmem,777777 length of memory  000000 2-46 bool origmem,0 absolute origin of start of memory  2-47  010000 2-48 bool lnsetup,10000 length of BOS control program  010000 2-49 bool origsetup,10000 absolute origin of BOS control program  2-50  010020 2-51 equ origflagbox,origsetup+16 absolute origin of flagbox area  000100 2-52 equ lnflagbox,64 length of flagbox area  2-53  000040 2-54 bool lnds,40 length of BOS descriptor segment  007740 2-55 equ origds,origsetup-lnds absolute origin of BOS descriptor segment  2-56  002000 2-57 equ lnbf,1024 length of buffer segment  020000 2-58 equ origbf,origsetup+lnsetup absolute origin of 1024-word buffer  2-59  007000 2-60 bool lncom,7000 length of BOS common area 022000 2-61 equ origcom,origbf+lnbf absolute origin of BOS common area  2-62  031000 2-63 equ origpgm,origcom+lncom absolute origin of BOS command programs  031000 2-64 equ pgmorg,origpgm for compatibility  027000 2-65 equ lnpgm,coresaved-origpgm length of BOS command programs 2-66  001400 2-67 bool imbx,1400 absolute loc'n of actual IOM mailbox  2-68  000037 2-69 bool rewpu,37 REWP access, unpaged bit for SDW  2-70  2-71  010000 2-72 bool maxw,10000  2-73  2-74  000020 2-75 bool absi,000020  004000 2-76 bool ovflm,004000  2-77  2-78  2-79 " BOS pointer registers.  2-80  2-81 mod 16 000000 2-82 bos_pr: 000000 aa 000000 000043 2-83 its 0,0 pr0 -> seg 0 etc  000001 aa 000000 000000 000002 aa 000001 000043 2-84 its 1,0  000003 aa 000000 000000 000004 aa 000002 000043 2-85 its 2,0  000005 aa 000000 000000 000006 aa 000003 000043 2-86 its 3,0  000007 aa 000000 000000 000010 aa 000004 000043 2-87 its 4,0  000011 aa 000000 000000 000012 aa 000005 000043 2-88 its 5,0  000013 aa 000000 000000 000014 aa 000006 000043 2-89 its 6,0  000015 aa 000000 000000 000016 aa 000007 000043 2-90 its 7,0  000017 aa 000000 000000 2-91  2-92  2-93 " BOS descriptor segment template.  2-94  000020 2-95 bos_dbr:  000020 2-96 dseg:  000020 aa 000077 400004 2-97 seg0: vfd 24/origds,9/0,o3/4  000021 aa 000017 600000 2-98 vfd 1/0,14/(lnds/16-1),5/rewpu,15/0  2-99  000022 aa 000310 000004 2-100 seg1: vfd 24/origpgm,9/0,o3/4  000023 aa 013377 600000 2-101 vfd 1/0,14/(lnpgm/16-1),5/rewpu,15/0  2-102  000024 aa 000200 000004 2-103 seg2: vfd 24/origbf,9/0,o3/4  000025 aa 000777 600000 2-104 vfd 1/0,14/(lnbf/16-1),5/rewpu,15/0  2-105  000026 aa 000100 000004 2-106 seg3: vfd 24/origsetup,9/0,o3/4 000027 aa 003777 600000 2-107 vfd 1/0,14/(lnsetup/16-1),5/rewpu,15/0 2-108  000030 aa 000000 000000 2-109 seg4: zero  000031 aa 000000 000000 2-110 zero  2-111  000032 aa 000100 200004 2-112 seg5: vfd 24/origflagbox,9/0,o3/4  000033 aa 000037 600000 2-113 vfd 1/0,14/(lnflagbox/16-1),5/rewpu,15/0  2-114  000034 aa 000220 000004 2-115 seg6: vfd 24/origcom,9/0,o3/4  000035 aa 003377 600000 2-116 vfd 1/0,14/(lncom/16-1),5/rewpu,15/0  2-117  000036 aa 000000 000004 2-118 seg7: vfd 24/origmem,9/0,o3/4  000037 aa 377767 600000 2-119 vfd 1/0,14/(lnmem/16-1),5/rewpu,15/0  2-120  2-121  2-122 " EQU's for locations in the IOM mailbox used by BOS toehold.  2-123  000014 2-124 equ scwr,3*4 loc of refill for IOM scw  000002 2-125 equ statq,2 loc of status word  000000 2-126 equ pcw,0 loc of pcw  000001 2-127 equ cow,1 loc of cow  000011 2-128 equ lpwr,2*4+1 array of lpw refills  2-129  2-130  2-131 " EQU's for locations in setup used by BOS toehold. 2-132 " NOTE: toelen M_U_S_T_ be 0 mod 64 long because it must fit into  2-133 " an integral number of disk sectors.  2-134  001000 2-135 bool toelen,1000  031000 2-136 equ toesaved,origcom+lncom core saved by toehold  000200 2-137 equ swaplen,128 Size of the Bos toehold area which is  2-138 " swapped with the Multics toehold area.  000575 2-139 equ mbxloc,toelen-swaplen-3  000576 2-140 equ devid,toelen-swaplen-2 000577 2-141 equ ttychan,toelen-swaplen-1  001000 2-142 equ cowsav,toelen  001001 2-143 equ mbbasesav,toelen+1 001002 2-144 equ mxbasesav,toelen+2 001003 2-145 equ dirbase,toelen+3  2-146  2-147 " End of include file ...... bos_toequ.incl.alm 2-148  26  27 " 28 include sav_io_buf_seg 3-1 " Begin include file ...... sav_io_buf_seg.incl.alm 3-2 " Overlay for segments which are used for disk and tape IO buffers  3-3 " by SAVE and RESTOR.  3-4 "  3-5 " Written 2/80 by R.J.C. Kissel.  3-6  044000 3-7 equ label_buff_len,18*1024 length of label buffer in bf  100000 3-8 equ disk_buff_len,32*1024 length of disk buffer in tmp 002000 3-9 equ small_tp_buff,1024 length of short tape buffer  002000 3-10 equ big_tp_buff,1024 length of big tape buffer  3-11  000000 3-12 equ dskbuf,0 start of disk buffers  000000 3-13 equ lbbuf,0 start of label buffer  3-14 " tape buffer is in ntape  3-15  3-16 " End include file ...... sav_io_buf_seg.incl.alm  29  30 include ntape_equ  4-1  4-2 " Begin include file ...... ntape_equ.incl.alm  4-3 " Last modified 11/25/75 by Noel I. Morris  4-4 " Modified 8/79 by R.J.C. Kissel to use expanded BOS.  4-5 " Modified 2/80 by R.J.C. Kissel to handle 6250 bpi operation.  4-6  4-7 " Transfer Vector values:  4-8  006000 4-9 bool ntape_org,6000 start of tape package  4-10  006000 4-11 equ taperopen,ntape_org+0  006001 4-12 equ tapewopen,ntape_org+1  006002 4-13 equ taper,ntape_org+2  006003 4-14 equ tapew,ntape_org+3  006004 4-15 equ inittape,ntape_org+4  006005 4-16 equ opentaper,ntape_org+5  006006 4-17 equ opentapew,ntape_org+6  006007 4-18 equ runtape,ntape_org+7  006010 4-19 equ endtape,ntape_org+8  4-20  4-21 " Queue entry codes:  4-22  000010 4-23 bool tpeot,10 EOT flag  000004 4-24 bool tpskip,4 skip queue entry  000002 4-25 bool tpdone,2 queue entry done  000001 4-26 bool tpstat,1 error in entry  4-27  4-28 " format of queue:  4-29 " 0/ zero next_entry,flags  4-30 " 1/ vfd 36/id  4-31 " 2/ vfd 3/data_seg,15/data_offset,18/data_length  4-32  4-33 " End of include file ...... ntape_equ.incl.alm 4-34  31 " 32 " events are:  33 " 0 = bad data xfer 34 " 1 = no tape  35 " 2 = good  36 "  37 " xrs are:  38 " 0 = buffer index  39 " 1 = log record index  40 " 3 = queue index  41 "  42 " tape format is:  43 " 0/ id of data 44 " 1/ offset of next log. header, offset in log record of following data  45 " ...  46 " logical header:  47 " id  48 " next log header, length of log record  49 " ...  50  51 " 52  006000 53 org ntape_org  54  006000 55 org taperopen  006000 0a 011350 7100 00 56 tra taperopen_ 57  006001 58 org tapewopen  006001 0a 011340 7100 00 59 tra tapewopen_ 60  006002 61 org taper  006002 0a 011360 7100 00 62 tra taper_ 63  006003 64 org tapew  006003 0a 011360 7100 00 65 tra tapew_ 66  006004 67 org inittape  006004 0a 006011 7100 00 68 tra inittape_  69  006005 70 org opentaper  006005 0a 006401 7100 00 71 tra opentaper_ 72  006006 73 org opentapew  006006 0a 006043 7100 00 74 tra opentapew_ 75  006007 76 org runtape  006007 0a 006721 7100 00 77 tra runtape_  78  006010 79 org endtape  006010 0a 006026 7100 00 80 tra endtape_  81  82  83 " 84  85 " tsx2 inittape to initialize tape package 86 " zero tapeden only used by ntape  87 " zero fatal_error go here on fatal error in opentape(r w)_ 88  006011 89 inittape_:  006011 0a 006024 7420 00 90 stx2 intpx2 save X2  91  006012 aa 000000 2350 32 92 lda 0,2* get the density setting command  006013 0a 007213 7550 00 93 sta ntapeden save it for later use  94  006014 aa 000001 6350 32 95 eaa 1,2* compute actual error return address  006015 0a 007221 7550 00 96 sta fatal_open_return save for later use by opentape(r w)_ 97  006016 aa 6 02015 2351 00 98 lda com|tapechanno 006017 0a 007202 7550 00 99 sta tpchanno  006020 aa 000011 7350 00 100 als 9 Shift to PCW position  006021 0a 007245 7550 00 101 sta tppcw+1  102  006022 aa 012276 7020 00 103 tsx2 get_status_interrupt Run "interrupt" driven for faster response. 006023 00 007202 006760 104 zero tpchanno,tpint  105  006024 0a 006024 6220 00 106 intpx2: eax2 * restore X2  006025 aa 000003 7100 12 107 tra 3,2  108  109  110  111 " tsx2 endtape to close out tape  112  006026 0a 006042 7420 00 113 endtape_: stx2 tpet here to end a tape 006027 0a 007173 5540 00 114 stc1 tpfin 006030 aa 006007 7020 00 115 tsx2 runtape  006031 0a 007173 2340 00 116 szn tpfin wait until finished 006032 0a 006030 6010 00 117 tnz *-2  118  006033 aa 012241 7020 00 119 tsx2 erpt print total errors on tape  006034 aa 021 164 141 160 120 acc "tape errors = ^d."  006035 aa 145 040 145 162 006036 aa 162 157 162 163 006037 aa 040 075 040 136 006040 aa 144 056 000 000 006041 0a 007217 0000 00 121 arg tperrors  006042 0a 006042 7100 00 122 tpet: tra * 123  124 " 125  126 " tsx2 opentape(r/w) to open tape  127 " zero queue  128 " zero tapeno  129  006043 130 opentapew_: 006043 0a 007065 7500 00 131 stc2 setrtn set return loc from setape  006044 0a 007047 7100 00 132 tra setape perform setup operations  133  006045 0a 007213 2350 00 134 lda ntapeden get the set density command  006046 0a 006050 7550 00 135 sta owden set it into the argument list  136  006047 0a 007147 7020 00 137 tsx2 dotape  006050 aa 000000 000000 138 owden: oct 0  006051 0a 006101 7100 00 139 tra owbadden couldn't do it  140  006052 141 owbuflen:  006052 0a 007213 2350 00 142 lda ntapeden adjust the buffer length depending on density  006053 aa 000041 1150 07 143 cmpa =o41,dl is it 6250 bpi?  006054 0a 006062 6000 00 144 tze ow6250 yes, we need a big buffer  006055 aa 002000 2350 03 145 lda small_tp_buff,du small buffer size 006056 0a 007210 7550 00 146 sta tpn_du 006057 aa 000022 7710 00 147 arl 18 get it into al 006060 0a 007207 7550 00 148 sta tpn  006061 0a 006066 7100 00 149 tra owcomden  006062 150 ow6250: 006062 aa 002000 2350 03 151 lda big_tp_buff,du big buffer size 006063 0a 007210 7550 00 152 sta tpn_du 006064 aa 000022 7710 00 153 arl 18 get it into al 006065 0a 007207 7550 00 154 sta tpn  006066 155 owcomden:  006066 0a 007250 7510 03 156 stca tpwlist+1,03 set the length into the write DCW  006067 0a 007254 7510 03 157 stca tprlist+1,03 set the length into the read DCW 006070 aa 000022 7350 00 158 als 18 get it into au 006071 0a 007206 7550 00 159 sta tprecl 006072 aa 000066 7730 00 160 lrl 18+36 put it back into ql for the multiply  006073 aa 000044 4020 07 161 mpy 36,dl convert to bits 006074 0a 007304 7520 07 162 stcq hdr+4,07 store in record header word 006075 0a 007211 7560 00 163 stq tpn_x_36 save for later use in dl 006076 aa 000022 7360 00 164 qls 18 get into qu  006077 0a 007212 7560 00 165 stq tpn_x_36_du save for later use in du  006100 0a 006121 7100 00 166 tra owcont 167  006101 168 owbadden:  006101 aa 012241 7020 00 169 tsx2 erpt  006102 aa 067 104 145 156 170 acc "Density not set as specified in save (from opentapew_)." 006103 aa 163 151 164 171 006104 aa 040 156 157 164 006105 aa 040 163 145 164 006106 aa 040 141 163 040 006107 aa 163 160 145 143 006110 aa 151 146 151 145 006111 aa 144 040 151 156 006112 aa 040 163 141 166 006113 aa 145 040 050 146 006114 aa 162 157 155 040 006115 aa 157 160 145 156 006116 aa 164 141 160 145 006117 aa 167 137 051 056 006120 0a 007221 7100 20 171 tra fatal_open_return,* transfer to return address saved by inittape  172  006121 173 owcont: 006121 aa 000000 6200 00 174 eax0 0 buffer index  175  006122 aa 000000 6270 00 176 eax7 0 006123 0a 007304 7470 00 177 stx7 hdr+4 reset bit count  006124 aa 600000 2350 03 178 lda =o600000,du set flags  006125 0a 007305 7550 00 179 sta hdr+5  180  006126 aa 000040 4130 00 181 rscr 4*8 read the clock  006127 0a 007301 7550 00 182 sta hdr+1 use for unique ID  006130 0a 007302 7560 00 183 stq hdr+2 ..  006131 0a 007311 7550 00 184 sta tlr+1 ..  006132 0a 007312 7560 00 185 stq tlr+2 ..  186  006133 0a 007340 4500 00 187 stz tpbuf clear header  006134 0a 007341 4500 00 188 stz tpbuf+1  006135 0a 007176 4500 00 189 stz tpburstsw clear PE burst error switch 190  006136 0a 006307 7020 00 191 tsx2 tpwrit write label  192  006137 0a 007176 2340 00 193 szn tpburstsw Did burst error occur?  006140 0a 007061 6010 00 194 tnz resetape if so, try all over again  195  006141 0a 006353 7020 00 196 tsx2 tpweof  197  006142 0a 006145 6220 00 198 eax2 tpw0 simulate call  006143 0a 007114 7100 00 199 tra tpqtest enter subroutine to get next queue entry  200  201 "  202 " Finish with current queue entry and get next one. 203  006144 0a 007111 7020 00 204 tpwql: tsx2 tpnextq on to the next 006145 0a 006241 7100 00 205 tpw0: tra tpweot end of tape return  206  006146 0a 007174 2340 00 207 szn tpeotsw if end of tape  006147 0a 006241 6010 00 208 tnz tpweot 209  210 " Prime new buffer. 211  006150 aa 000000 1000 03 212 cmpx0 0,du if at start of buffer  006151 0a 006157 6010 00 213 tnz tpw1  006152 aa 000001 2350 13 214 lda 1,3 fill in header  006153 0a 007340 7550 00 215 sta tpbuf with id 006154 aa 000002 2350 03 216 lda 2,du  006155 0a 007341 7550 00 217 sta tpbuf+1  006156 aa 000002 6200 00 218 eax0 2 next header at word 2  219  220 " Strip trailing zeroes from the data.  221  006157 aa 000000 6360 17 222 tpw1: eaq 0,7 length in QU 006160 aa 000006 4020 07 223 mpy =6,dl compute 6-bit character length  006161 aa 0 00000 1655 40 224 tctr (pr,rl) search backward for non-zero word  006162 aa 400000 020002 225 desc6a xs1|0,qu ..  006163 0a 007224 0000 00 226 arg tctable ..  006164 0a 007216 0000 00 227 arg tptemp .. 228  006165 0a 007216 2360 00 229 ldq tptemp get tally to non-zero character  006166 0a 011404 3760 00 230 anq =o77777777 mask the tally  006167 0a 011405 5060 00 231 div =-6 get word tally and complement 006170 aa 000001 6270 06 232 eax7 1,ql place in X7 and round to nearest even  006171 0a 007201 0670 00 233 adx7 tplenq subtract from original length 006172 aa 777776 3670 03 234 anx7 =o777776,du round 006173 0a 007200 7470 00 235 stx7 tplen save length with stripped zeroes  236  237 " Set logical header and copy data. 238  006174 0a 007341 4470 10 239 sxl7 tpbuf+1,0 set data length in header  240  006175 aa 000001 2350 13 241 tpw3: lda 1,3 set id in log header 006176 0a 007340 7550 10 242 sta tpbuf,0  006177 0a 007216 7410 00 243 stx1 tptemp save current data offset  006200 aa 000002 6270 10 244 eax7 2,0 will rest of data fit in this phy rec?  006201 0a 007200 0670 00 245 adx7 tplen compute next buffer index  006202 0a 007216 1670 00 246 sbx7 tptemp sub off what is done  006203 0a 007210 1070 00 247 cmpx7 tpn_du is it larger than tape record?  006204 0a 006206 6040 00 248 tmi *+2 tra if no 006205 0a 007210 2270 00 249 ldx7 tpn_du set index to fill rest of phy rec 006206 0a 007341 7470 10 250 stx7 tpbuf+1,0 store index to next header 251  006207 aa 000002 6200 10 252 eax0 2,0 skip over header info  006210 0a 007220 7400 00 253 stx0 tpcopyl store current index  006211 0a 007220 1470 00 254 ssx7 tpcopyl subtract from next index 006212 0a 006224 6000 00 255 tze tpwc0 if zero, avoid IPR fault  256  006213 0a 007220 2350 00 257 lda tpcopyl word count to copy in AU  006214 aa 000002 7350 00 258 als 2 get character count 006215 aa 000000 6270 01 259 eax7 0,au in X7  006216 aa 000000 6350 10 260 eaa 0,0 buffer offset in AU  006217 aa 000000 6360 11 261 eaq 0,1 data offset in QU 006220 aa 000002 7370 00 262 lls 2 compute character offsets  006221 aa 0 00041 1005 42 263 mlr (pr,rl,qu),(rl,au) copy the data into buffer  006222 aa 400000 000017 264 desc9a xs1|0,x7  006223 0a 007340 000017 265 desc9a tpbuf,x7  266  006224 0a 007220 0600 00 267 tpwc0: adx0 tpcopyl bump buffer index and  006225 0a 007220 0610 00 268 adx1 tpcopyl data index by amount copied  269  270 " If more data, then write out this record and proceed. 271 " Otherwise, go get next queue entry.  272  006226 0a 007210 1000 00 273 cmpx0 tpn_du if buffer not full  006227 0a 006144 6010 00 274 tnz tpwql go get more 275  006230 0a 007212 2270 00 276 ldx7 tpn_x_36_du full record, set bitcount 006231 0a 007304 7470 00 277 stx7 hdr+4 .. 006232 0a 007305 4500 00 278 stz hdr+5 clear record flags  006233 0a 006307 7020 00 279 tsx2 tpwrit write record  280  006234 aa 000000 6200 00 281 eax0 0 reset buffer pointer  006235 0a 007200 1010 00 282 cmpx1 tplen if all of log record  006236 0a 006144 6050 00 283 tpl tpwql go get more 284  006237 0a 007341 4410 00 285 sxl1 tpbuf+1 set current data offset in header  006240 0a 006175 7100 00 286 tra tpw3 and copy more data  287  288 " 289 " End of logical or physical tape.  290  006241 291 tpweot: 006241 aa 000000 6350 10 292 eaa 0,0 current buffer offset in AU  006242 aa 000000 5310 00 293 neg 0 subtract from buffer length 006243 0a 007210 0750 00 294 ada tpn_du to get remaining length  006244 aa 000000 6360 10 295 eaq 0,0 buffer offset in QU  006245 aa 000002 7370 00 296 lls 2 get character count and offset  006246 aa 777042 1004 00 297 mlr (),(rl,qu),fill(777) pad rest of record with 1's  006247 0a 006247 000000 298 desc9a *,0 006250 0a 007340 000001 299 desc9a tpbuf,au  300  006251 aa 000011 4020 07 301 mpy 36/4,dl compute bits in last record  006252 0a 007304 7520 70 302 stcq hdr+4,70 and place in tape header  303  006253 0a 007305 4500 00 304 stz hdr+5  006254 0a 006307 7020 00 305 tsx2 tpwrit write record  306  006255 0a 006353 7020 00 307 tsx2 tpweof write eof 308  006256 aa 000000 6270 00 309 eax7 0 then write end of tape label  006257 0a 007304 7470 00 310 stx7 hdr+4 reset bit count  006260 aa 500000 2350 03 311 lda =o500000,du set end of tape  006261 0a 007305 7550 00 312 sta hdr+5  313  006262 0a 007210 2350 00 314 lda tpn_du character length of tape buffer in AU  006263 aa 000002 7350 00 315 als 2 multiply by 4 to get characters 006264 aa 777040 1004 00 316 mlr (),(rl),fill(777) fill the buffer with 1's 006265 0a 006265 000000 317 desc9a *,0 006266 0a 007340 000001 318 desc9a tpbuf,au  319  006267 0a 006307 7020 00 320 tsx2 tpwrit  321  006270 aa 000003 6200 00 322 eax0 3 write 3 eofs  006271 0a 006353 7020 00 323 tsx2 tpweof  006272 aa 777777 6200 10 324 eax0 -1,0  006273 0a 006271 6050 00 325 tpl *-2  326  006274 327 tpreot: " Done with tape, unload it unless it is the last.  006274 0a 007173 2340 00 328 szn tpfin Zero if tape full, not if closing out last tape.  006275 0a 006300 6000 00 329 tze *+3  330  006276 0a 006366 7020 00 331 tsx2 tprew Rewind tape without unloading it. 006277 0a 006301 7100 00 332 tra *+2  333  006300 0a 006364 7020 00 334 tsx2 tprewun Rewind and unload tape, expecting another.  335  006301 aa 000010 2350 07 336 lda tpeot,dl get EOT flag 006302 aa 000000 2550 13 337 orsa 0,3 set in queue entry  338  006303 0a 007172 4500 00 339 stz tprunning tape no longer connected  006304 0a 006754 7020 00 340 tsx2 tpret wait for new open call 341  006305 0a 007173 4500 00 342 stz tpfin let endtape return  006306 0a 006754 7100 00 343 tra tpret  344  345 "  006307 0a 006346 7420 00 346 tpwrit: stx2 tpwx2 here to write a record  347  006310 0a 007304 2350 00 348 lda hdr+4 set total number of bits  006311 aa 000022 7710 00 349 arl 18 006312 0a 007313 0550 00 350 asa tlr+3  351  006313 0a 007301 2350 00 352 tprewt: lda hdr+1 bump the unique ID  006314 0a 007302 2360 00 353 ldq hdr+2 ..  006315 aa 000001 0330 07 354 adl 1,dl by 1 006316 0a 007301 7550 00 355 sta hdr+1 replace in header  006317 0a 007302 7560 00 356 stq hdr+2 ..  006320 0a 007311 7550 00 357 sta tlr+1 and in trailer  006321 0a 007312 7560 00 358 stq tlr+2 ..  359  006322 0a 007174 2340 00 360 szn tpeotsw was EOT reflector passed? 006323 0a 006326 6000 00 361 tze *+3 If not, skip this code.  006324 aa 000011 2350 03 362 lda =o11,du Get EOT flag for record.  006325 0a 007305 2550 00 363 orsa hdr+5 And insert in record header.  364  006326 0a 007066 7020 00 365 tsx2 tpcks_new compute checksum  006327 0a 007300 000000 366 zero hdr  006330 0a 007306 7550 00 367 sta hdr+6  368  006331 aa 012272 7020 00 369 tsx2 connect_iom start io  006332 00 007244 007246 370 zero tppcw,tpwidcw 371  006333 0a 007172 7500 00 372 stc2 tprunning set state  006334 0a 006754 7020 00 373 tsx2 tpret 374  006335 0a 006347 7100 00 375 tra tpwbad retry io errors  006336 0a 006313 7100 00 376 tra tprewt retry no tape  377  006337 0a 007316 0540 00 378 aos tlr+6 good write bump record nos  006340 aa 000001 2350 03 379 lda =1,du  006341 0a 007303 0550 00 380 asa hdr+3  381  006342 0a 007303 2270 00 382 ldx7 hdr+3 is it time to write eof  006343 aa 000200 1070 03 383 cmpx7 =o200,du 006344 0a 006346 6010 00 384 tnz *+2  006345 0a 006353 7020 00 385 tsx2 tpweof  386  006346 0a 006346 7100 00 387 tpwx2: tra *  388  006347 aa 000014 2350 03 389 tpwbad: lda =o14,du set retry flag 006350 0a 007305 2550 00 390 orsa hdr+5 006351 0a 007305 0540 00 391 aos hdr+5 and count  006352 0a 006313 7100 00 392 tra tprewt 393  394 " 395  006353 0a 006363 7420 00 396 tpweof: stx2 tpwex2 here to write eof  006354 0a 007147 7020 00 397 tsx2 dotape  006355 aa 000000 000055 398 oct 55 wef  006356 0a 006354 7100 00 399 tra *-2 try again if error  006357 0a 007315 0540 00 400 aos tlr+5 bump file count 006360 0a 007303 0540 00 401 aos hdr+3  006361 aa 000000 6270 00 402 eax7 0 006362 0a 007303 7470 00 403 stx7 hdr+3 zero record count  006363 0a 006363 7100 00 404 tpwex2: tra *  405  006364 aa 000072 2350 07 406 tprewun: lda =o72,dl Rewind and unload.  006365 0a 006367 7100 00 407 tra *+2  006366 aa 000070 2350 07 408 tprew: lda =o70,dl Rewind tape.  006367 0a 006376 7550 00 409 sta tprewop  006370 0a 006400 7420 00 410 stx2 rewx here to rew log tape  006371 0a 007303 4500 00 411 stz hdr+3 reset record and file counts  006372 0a 007313 4500 00 412 stz tlr+3  006373 0a 007315 4500 00 413 stz tlr+5  006374 0a 007316 4500 00 414 stz tlr+6  006375 0a 007147 7020 00 415 tsx2 dotape  006376 aa 000000 000072 416 tprewop: oct 72 rewind/unload or just rewind. 006377 0a 006375 7100 00 417 tra *-2  006400 0a 006400 7100 00 418 rewx: tra *  419  420 " 421 " tsx2 opentape(r/w) to open tape  422 " zero queue  423 " zero tapeno  424  006401 425 opentaper_: 006401 0a 007065 7500 00 426 stc2 setrtn set return from setape  006402 0a 007047 7100 00 427 tra setape setup for tape operation  428  006403 aa 000060 2350 07 429 lda =o60,dl  006404 0a 007213 7550 00 430 sta ntapeden  006405 0a 007147 7020 00 431 tsx2 dotape set the density  006406 aa 000000 000060 432 oct 60 try 800 bpi first  006407 0a 006414 7100 00 433 tra tpr1600 try 1600 bpi on error 006410 0a 007147 7020 00 434 tsx2 dotape  006411 aa 000000 000045 435 oct 45 fsf to test the density  006412 0a 006414 7100 00 436 tra tpr1600 1600 bpi on error 006413 0a 006457 7100 00 437 tra tprgo  438  006414 439 tpr1600:  006414 0a 006366 7020 00 440 tsx2 tprew 006415 aa 000065 2350 07 441 lda =o65,dl  006416 0a 007213 7550 00 442 sta ntapeden  006417 0a 007147 7020 00 443 tsx2 dotape  006420 aa 000000 000065 444 oct 65 1600 bpi  006421 0a 006426 7100 00 445 tra tpr6250 try 6250 bpi on error 006422 0a 007147 7020 00 446 tsx2 dotape  006423 aa 000000 000045 447 oct 45 fsf to test  006424 0a 006426 7100 00 448 tra tpr6250 6250 bpi  006425 0a 006457 7100 00 449 tra tprgo  450  006426 451 tpr6250:  006426 0a 006366 7020 00 452 tsx2 tprew 006427 aa 000041 2350 07 453 lda =o41,dl  006430 0a 007213 7550 00 454 sta ntapeden  006431 0a 007147 7020 00 455 tsx2 dotape  006432 aa 000000 000041 456 oct 41 6250 bpi  006433 0a 006440 7100 00 457 tra orbadden  006434 0a 007147 7020 00 458 tsx2 dotape  006435 aa 000000 000045 459 oct 45 fsf to test  006436 0a 006440 7100 00 460 tra orbadden give up if this fails  006437 0a 006457 7100 00 461 tra tprgo  462  006440 463 orbadden:  006440 aa 012241 7020 00 464 tsx2 erpt  006441 aa 063 103 157 165 465 acc "Could not read save tape at 800, 1600, or 6250 bpi."  006442 aa 154 144 040 156 006443 aa 157 164 040 162 006444 aa 145 141 144 040 006445 aa 163 141 166 145 006446 aa 040 164 141 160 006447 aa 145 040 141 164 006450 aa 040 070 060 060 006451 aa 054 040 061 066 006452 aa 060 060 054 040 006453 aa 157 162 040 066 006454 aa 062 065 060 040 006455 aa 142 160 151 056 006456 0a 007221 7100 20 466 tra fatal_open_return,*  467  006457 468 tprgo:  006457 0a 007213 2350 00 469 lda ntapeden adjust the buffer length depending on density  006460 aa 000041 1150 07 470 cmpa =o41,dl is it 6250 bpi?  006461 0a 006467 6000 00 471 tze or6250 yes, we need a big buffer  006462 aa 002000 2350 03 472 lda small_tp_buff,du small buffer size 006463 0a 007210 7550 00 473 sta tpn_du 006464 aa 000022 7710 00 474 arl 18 get it into al 006465 0a 007207 7550 00 475 sta tpn  006466 0a 006473 7100 00 476 tra orcomden  006467 477 or6250: 006467 aa 002000 2350 03 478 lda big_tp_buff,du big buffer size 006470 0a 007210 7550 00 479 sta tpn_du 006471 aa 000022 7710 00 480 arl 18 get it into al 006472 0a 007207 7550 00 481 sta tpn  006473 482 orcomden:  006473 0a 007250 7510 03 483 stca tpwlist+1,03 set the length into the write DCW  006474 0a 007254 7510 03 484 stca tprlist+1,03 set the length into the read DCW 006475 aa 000022 7350 00 485 als 18 get it into au 006476 0a 007206 7550 00 486 sta tprecl 006477 aa 000066 7730 00 487 lrl 18+36 put it back into ql for the multiply  006500 aa 000044 4020 07 488 mpy 36,dl convert to bits 006501 0a 007304 7520 07 489 stcq hdr+4,07 store in record header word 006502 0a 007211 7560 00 490 stq tpn_x_36 save for later use in dl 006503 aa 000022 7360 00 491 qls 18 get into qu  006504 0a 007212 7560 00 492 stq tpn_x_36_du save for later use in du  493  006505 0a 007210 2200 00 494 ldx0 tpn_du initialize buffer index to force tape read  006506 aa 000001 2350 07 495 lda 1,dl initialize expected record # 006507 0a 007205 7550 00 496 sta tpxrec .. 497  006510 0a 007203 4500 00 498 stz tperct 006511 0a 007204 4500 00 499 stz tpct reset error counts  006512 0a 007175 4500 00 500 stz tpcompatsw 006513 0a 007222 4500 00 501 stz tpuid clear the previous unique ID  006514 0a 007223 4500 00 502 stz tpuid+1 ..  503  006515 0a 006520 6220 00 504 eax2 tpr0 set return loc for subroutine  006516 0a 007114 7100 00 505 tra tpqtest go get first queue entry  506  507 "  508 " Proceed to next queue entry.  509  006517 0a 007111 7020 00 510 tprql: tsx2 tpnextq get next queue entry  006520 0a 006274 7100 00 511 tpr0: tra tpreot end of tape return  512  513 " Search for correct logical record.  514  006521 0a 007206 1000 00 515 tprsl: cmpx0 tprecl if through record, get another 006522 0a 006524 6040 00 516 tmi *+2 ..  006523 0a 006607 7020 00 517 tsx2 tprd ..  518  006524 0a 007340 2350 10 519 lda tpbuf,0 pick up ID  006525 0a 006274 6040 00 520 tmi tpreot test for end of tape  006526 aa 000001 1150 13 521 cmpa 1,3 is this correct ID?  006527 0a 006536 6040 00 522 tmi tpnid if not far enough, search more  006530 0a 006604 6054 00 523 tpnz tprfatal if too far, record is lost  524  006531 aa 000000 1000 03 525 cmpx0 0,du at beginning of physical record?  006532 0a 006540 6010 00 526 tnz tpr2 if not, go set length  006533 0a 007341 2270 00 527 ldx7 tpbuf+1 X7 = 2 => not a continuation record  006534 aa 000002 1070 03 528 cmpx7 2,du must not have a continuation record here  006535 0a 006604 6010 00 529 tnz tprfatal ..  530  006536 0a 007341 2200 10 531 tpnid: ldx0 tpbuf+1,0 go to next header  006537 0a 006521 7100 00 532 tra tprsl ..  533  534 " Set length of logical record. 535  006540 0a 007341 7270 10 536 tpr2: lxl7 tpbuf+1,0 set length  006541 0a 007200 7470 00 537 stx7 tplen 006542 aa 000000 6210 00 538 eax1 0 and index  539  540 " Copy data from tape record. When finished, pad copied data with zeroes.  541  006543 0a 007341 2270 10 542 tprcpy: ldx7 tpbuf+1,0 copy data from tpbuf  006544 aa 000002 6200 10 543 eax0 2,0 skip over header info  006545 0a 007220 7400 00 544 stx0 tpcopyl store current index  006546 0a 007220 1470 00 545 ssx7 tpcopyl subtract from next index 546  006547 0a 007201 2350 00 547 lda tplenq remaining data length in AU  006550 0a 007220 2360 00 548 ldq tpcopyl length to copy in QU  006551 aa 000002 7370 00 549 lls 2 compute character lengths  006552 aa 000000 6260 01 550 eax6 0,au target length in X6 006553 aa 000000 6270 02 551 eax7 0,qu source length in X7 552  006554 aa 000000 6350 10 553 eaa 0,0 get buffer offset 006555 aa 000000 6360 11 554 eaq 0,1 and data offset  006556 aa 000002 7370 00 555 lls 2 compute character offsets  556  006557 0a 007220 0600 00 557 adx0 tpcopyl bump buffer index  006560 0a 007220 0610 00 558 adx1 tpcopyl and data index  006561 0a 007200 1010 00 559 cmpx1 tplen is this the last copy?  006562 0a 006564 6050 00 560 tpl *+2 tra if so 006563 aa 000000 6260 17 561 eax6 0,7 if not, don't pad the data  006564 aa 000000 1060 03 562 cmpx6 0,du are we copying anything?  006565 0a 006573 6000 00 563 tze tprc0 if not, avoid IPR fault 564  006566 aa 000142 1004 41 565 mlr (rl,au),(pr,rl,qu),fill(0) copy and pad  006567 0a 007340 000017 566 desc9a tpbuf,x7  006570 aa 400000 000016 567 desc9a xs1|0,x6  568  006571 0a 007220 3350 00 569 lca tpcopyl get length copied 006572 0a 007201 0550 00 570 asa tplenq subtract from remaining data length  571  006573 0a 007200 1010 00 572 tprc0: cmpx1 tplen have we transferred all data?  006574 0a 006517 6050 00 573 tpl tprql yes. get next queue entry  574  575 " Read and check continuation record.  576  006575 0a 006607 7020 00 577 tsx2 tprd read the next physical record  578  006576 aa 000001 1150 13 579 cmpa 1,3 correct ID?  006577 0a 006604 6010 00 580 tnz tprfatal no, fatal error  581  006600 0a 007341 7270 00 582 lxl7 tpbuf+1 get offset of first word 006601 0a 007216 7470 00 583 stx7 tptemp ..  006602 0a 007216 1010 00 584 cmpx1 tptemp check against desired offset 006603 0a 006543 6000 00 585 tze tprcpy offset good. copy the data  586  587 " Fatal error. Mark failure in queue entry.  588  006604 aa 000001 2350 07 589 tprfatal: lda tpstat,dl get tape error flag  006605 aa 000000 2550 13 590 orsa 0,3 insert in queue entry flags  006606 0a 006517 7100 00 591 tra tprql and get next queue entry  592  593 " 594 " Read and Check Tape Record.  595  006607 0a 006702 7420 00 596 tprd: stx2 tprx2 save X2  006610 0a 007203 4500 00 597 tprd1: stz tperct clear the backspace-retry count  598  006611 0a 007204 4500 00 599 tpragn: stz tpct clear count of records skipped  600  006612 0a 007204 0540 00 601 tpag1: aos tpct count one record read  006613 0a 007320 4500 00 602 stz rhdr clear check words in header  006614 0a 007327 4500 00 603 stz rhdr+7 .. 006615 0a 007330 4500 00 604 stz rtlr and trailer  006616 0a 007337 4500 00 605 stz rtlr+7 .. 606  006617 aa 012272 7020 00 607 tpcon: tsx2 connect_iom start read  006620 00 007244 007252 608 zero tppcw,tpridcw 609  006621 0a 007172 7500 00 610 stc2 tprunning 006622 0a 006754 7020 00 611 tsx2 tpret set state to reading data  612  006623 0a 006612 7100 00 613 tra tpag1 try again on bad read  006624 0a 006617 7100 00 614 tra tpcon retry if not ready  615  006625 0a 007320 2350 00 616 lda rhdr check header check words 006626 0a 007300 1150 00 617 cmpa hdr  006627 0a 006612 6010 00 618 tnz tpag1  006630 0a 007327 2350 00 619 lda rhdr+7 006631 0a 007307 1150 00 620 cmpa hdr+7 006632 0a 006612 6010 00 621 tnz tpag1  622  006633 0a 007324 2360 00 623 ldq rhdr+4 get bit length of record  006634 aa 777777 3760 07 624 anq =o777777,dl in QL  006635 aa 000044 5060 07 625 div =36,dl compute word length  006636 aa 000022 7360 00 626 qls 18 shift to QU  006637 0a 007206 7560 00 627 stq tprecl save record length 006640 0a 007210 1160 00 628 cmpq tpn_du is it a short record? 006641 0a 006646 6000 00 629 tze tpok1 if not, trailer in correct place  630  006642 aa 000002 7360 00 631 qls 2 get character offset of trailer 006643 aa 000000 1004 02 632 mlr (qu),() copy the trailer to correct place 006644 0a 007340 000040 633 desc9a tpbuf,8*4  006645 0a 007330 000040 634 desc9a rtlr,8*4  635  006646 0a 007330 2350 00 636 tpok1: lda rtlr now check trailer check words  006647 0a 007310 1150 00 637 cmpa tlr  006650 0a 006612 6010 00 638 tnz tpag1  006651 0a 007337 2350 00 639 lda rtlr+7 006652 0a 007317 1150 00 640 cmpa tlr+7 006653 0a 006612 6010 00 641 tnz tpag1  642  006654 0a 007066 7020 00 643 tsx2 tpcks_new check check sum  006655 0a 007320 000000 644 zero rhdr  006656 0a 007326 1150 00 645 cmpa rhdr+6  006657 0a 006612 6010 00 646 tnz tpag1  647  006660 0a 007321 2350 00 648 lda rhdr+1 get unique ID from header  006661 0a 007322 2360 00 649 ldq rhdr+2 .. 006662 0a 007222 1170 00 650 cmpaq tpuid is it ascending?  006663 0a 006611 6044 00 651 tmoz tpragn if not, try again 652  006664 0a 007336 2350 00 653 lda rtlr+6 get record # from trailer  006665 0a 007205 1150 00 654 cmpa tpxrec is this expected #?  006666 0a 006611 6040 00 655 tmi tpragn too low. read gain  006667 0a 006704 6054 00 656 tpnz tpback too high. back up  657  006670 0a 007205 0540 00 658 aos tpxrec ok. bump expected record #  006671 0a 007321 2350 00 659 lda rhdr+1 get unique ID again  006672 0a 007322 2360 00 660 ldq rhdr+2 .. 006673 0a 007222 7570 00 661 staq tpuid and save it for next record  662  006674 0a 007325 2350 00 663 lda rhdr+5 get admin bits from header 006675 aa 100000 3150 03 664 cana =o100000,du test for end of reel  006676 0a 006274 6010 00 665 tnz tpreot tra if end of reel 666  006677 0a 007340 2350 00 667 lda tpbuf get first logical ID  006700 0a 006274 6040 00 668 tmi tpreot if negative, end of tape  006701 aa 000000 6200 00 669 eax0 0 reset index to first logical header  670  006702 0a 006702 6220 00 671 tprx2: eax2 * restore X2  006703 aa 000000 7100 12 672 tra 0,2 and return to caller  673  674  006704 0a 007204 7200 00 675 tpback: lxl0 tpct get # of records read  006705 aa 000004 6200 10 676 eax0 4,0 plus a few extra 677  006706 0a 007147 7020 00 678 tpbkl: tsx2 dotape backspace the tape  006707 aa 000000 000046 679 oct 46 .. 006710 0a 006711 7100 00 680 tra *+1 ignore errors 006711 aa 777777 6200 10 681 eax0 -1,0 ..  006712 0a 006706 6050 00 682 tpl tpbkl ..  683  006713 0a 007203 0540 00 684 aos tperct increment the backspace-retry count  006714 0a 007203 2350 00 685 lda tperct how many times have we done this?  006715 aa 000005 1150 07 686 cmpa 5,dl if fewer than 5,  006716 0a 006611 6040 00 687 tmi tpragn try again  006717 0a 007205 0540 00 688 aos tpxrec otherwise, throw away this record  006720 0a 006610 7100 00 689 tra tprd1 and try to read next  690  691 " 692 " tsx2 runtape to keep tape moving 693  006721 0a 006745 7420 00 694 runtape_: stx2 tprunx2 save callers regs  006722 0a 007172 2340 00 695 szn tprunning tape connected? 006723 0a 006730 6000 00 696 tze tpstatp if not, skip check_status call  697  006724 aa 012274 7020 00 698 tsx2 check_status  006725 0a 011406 0000 00 699 arg =0 006726 0a 006730 7100 00 700 tra *+2  006727 0a 006730 7100 00 701 tra *+1  702  006730 0a 007214 2350 00 703 tpstatp: lda tpstatus get saved status 006731 0a 007215 1150 00 704 cmpa tpoldstatus has it changed?  006732 0a 006745 6000 00 705 tze tprunx2 if not, don't print it  006733 0a 007215 7550 00 706 sta tpoldstatus save for comparison  707  006734 aa 012241 7020 00 708 tsx2 erpt print error status  006735 aa 030 156 164 141 709 acc 'ntape: tape status = ^w.' 006736 aa 160 145 072 040 006737 aa 164 141 160 145 006740 aa 040 163 164 141 006741 aa 164 165 163 040 006742 aa 075 040 136 167 006743 aa 056 000 000 000 006744 0a 007214 0000 00 710 arg tpstatus  711  006745 0a 006745 6220 00 712 tprunx2: eax2 * 006746 0a 007172 2340 00 713 szn tprunning tape running now?  006747 aa 000000 6010 12 714 tnz 0,2 if so, return to caller  715  006750 0a 007270 7530 00 716 sreg tphisreg  006751 0a 007260 0730 00 717 lreg tpmyreg load mine  006752 0a 007171 2220 00 718 ldx2 tpstate and tra to state prog  006753 aa 000000 7100 12 719 tra 0,2 at run entry  720  721  722  006754 0a 007171 7420 00 723 tpret: stx2 tpstate remember where we were 006755 0a 007260 7530 00 724 sreg tpmyreg here to return, save my regs 006756 0a 007270 0730 00 725 lreg tphisreg and load theirs 006757 aa 000000 7100 12 726 tra 0,2  727  728 " 729  730 " ldaq status  731 " tsx2 tpint to deliver status  732  006760 733 tpint:  006760 0a 007172 2140 00 734 sznc tprunning tape connected?  006761 aa 000000 6000 12 735 tze 0,2 if not, must be spurious call 736  006762 0a 007270 7530 00 737 sreg tphisreg save callers machine  006763 0a 007260 0730 00 738 lreg tpmyreg restore mine 006764 0a 007171 2220 00 739 ldx2 tpstate  006765 0a 007274 2350 00 740 lda tphisreg+4 get status  006766 0a 011407 3150 00 741 cana =o370000770000 Check for all bad status.  006767 0a 006773 6010 00 742 tnz tperr If bad, analyze error.  006770 0a 007214 4500 00 743 stz tpstatus Clear old status.  006771 0a 007215 4500 00 744 stz tpoldstatus .. 006772 aa 000002 7100 12 745 tra 2,2 Report normal termination.  746  006773 aa 000000 6360 01 747 tperr: eaq 0,au Major status in QU.  006774 aa 000014 7720 00 748 qrl 12 Right-justify in QU.  006775 aa 000037 3760 03 749 anq =o37,du Mask major status and power bit.  006776 0a 006777 7100 02 750 tra tpdisp,qu Dispatch on major status.  751  006777 0a 007020 7100 00 752 tpdisp: tra tpbio1 0: IOM channel or central error  007000 0a 007045 7100 00 753 tra tpatt 1: device busy 007001 0a 007045 7100 00 754 tra tpatt 2: device attention  007002 0a 007023 7100 00 755 tra tpdde 3: device data alert  007003 aa 000001 7100 12 756 tra 1,2 4: end of file  007004 aa 000000 7100 12 757 tra 0,2 5: command reject  007005 0a 007020 7100 00 758 tra tpbio1 6:  007006 0a 007020 7100 00 759 tra tpbio1 7:  007007 0a 007020 7100 00 760 tra tpbio1 10:  007010 0a 007020 7100 00 761 tra tpbio1 11:  007011 0a 007033 7100 00 762 tra tpcompat 12: MPC device attention 007012 0a 007037 7100 00 763 tra tpburst 13: MPC device data alert 007013 0a 007020 7100 00 764 tra tpbio1 14:  007014 0a 007020 7100 00 765 tra tpbio1 15: MPC command reject 007015 0a 007020 7100 00 766 tra tpbio1 16:  007016 0a 007020 7100 00 767 tra tpbio1 17:  007017 0a 007045 7100 00 768 tra tpatt 20: peripheral absent or power off  769  007020 0a 007214 7550 00 770 tpbio1: sta tpstatus save status for reporting 007021 0a 007217 0540 00 771 tpbio: aos tperrors count errors  007022 aa 000000 7100 12 772 tra 0,2 take error return 773  007023 aa 004000 3150 03 774 tpdde: cana =o4000,du EOT bit on?  007024 0a 007030 6000 00 775 tze tpdde1 If not, treat as tape error  007025 0a 007174 5540 00 776 stc1 tpeotsw Set EOT flag.  007026 aa 003700 3150 03 777 cana =o3700,du Any other substatus bits on?  007027 aa 000002 6000 12 778 tze 2,2 If not, take normal return  779  007030 aa 000100 3150 03 780 tpdde1: cana =o0100,du Transfer timing error?  007031 0a 007021 6000 00 781 tze tpbio If not, just count error.  007032 0a 007020 7100 00 782 tra tpbio1 Report the error.  783  007033 aa 001000 3150 03 784 tpcompat: cana =o1000,du Compatibility error?  007034 0a 007020 6000 00 785 tze tpbio1 If not, treat as tape error.  007035 0a 007175 5540 00 786 stc1 tpcompatsw Set compatibility error flag.  007036 aa 000000 7100 12 787 tra 0,2 Take error return 788  007037 aa 000000 6360 01 789 tpburst: eaq 0,au Status in QU.  007040 aa 007700 3760 03 790 anq =o7700,du Mask substatus. 007041 aa 001000 1160 03 791 cmpq =o1000,du PE burst error?  007042 0a 007021 6010 00 792 tnz tpbio If not, record and continue.  007043 0a 007176 5540 00 793 stc1 tpburstsw If so, set switch and continue.  007044 0a 007020 7100 00 794 tra tpbio1 Print error.  795  007045 0a 007214 7550 00 796 tpatt: sta tpstatus Report status online.  007046 aa 000001 7100 12 797 tra 1,2 Retry operation.  798  799 " 800 " Utility subroutines.  801  802 " tsx2 setape to set up PCW and IDCW's.  803  007047 aa 000002 6220 12 804 setape: eax2 2,2 change return loc 007050 0a 007270 7530 00 805 sreg tphisreg save registers  806  007051 aa 777776 2230 12 807 ldx3 -2,2 get queue pointer in X3 808  007052 aa 777777 2350 32 809 lda -1,2* get tape # in A 007053 0a 007177 7550 00 810 sta tapeno fill tape number into pcw's  007054 aa 000030 7350 00 811 als 24 007055 0a 007244 7510 20 812 stca tppcw,20  007056 0a 007252 7510 20 813 stca tpridcw,20  007057 0a 007246 7510 20 814 stca tpwidcw,20  007060 0a 007256 7510 20 815 stca tpdidcw,20  816  007061 0a 007173 4500 00 817 resetape: stz tpfin clear flags  007062 0a 007174 4500 00 818 stz tpeotsw  007063 0a 007217 4500 00 819 stz tperrors Clear error count.  820  007064 0a 006366 7020 00 821 tsx2 tprew rewind the tape  822  007065 0a 007065 7100 00 823 setrtn: tra * return to caller 824  825  826 " tsx2 tpcks_new to compute tape checksum  827  007066 828 tpcks_new: "See MPM Ref. Data 5.3 007066 0a 007107 7400 00 829 stx0 tpckx0 X0 gets clobbered by RPD  007067 aa 000000 2270 12 830 ldx7 0,2 routine to compute multics checksum  007070 aa 000010 6260 17 831 eax6 8,7 X6 is trailer pointer  007071 aa 000001 6250 00 832 eax5 1 X5 is shift index  007072 aa 004000 6340 07 833 ldi =o4000,dl 007073 aa 000000 2350 07 834 lda =0,dl  007074 aa 000000 0110 03 835 odd; rpda 6,1 do the header  007075 aa 015200 5602 01 007076 aa 000000 0710 17 836 awca 0,7  007077 aa 000000 7750 15 837 alr 0,5  007100 aa 000001 0710 17 838 awca 1,7 get the last word  007101 aa 000000 7750 15 839 alr 0,5  007102 aa 000000 0110 03 840 odd; rpda 8,1 do the trailer  007103 aa 021200 5602 01 007104 aa 000000 0710 16 841 awca 0,6  007105 aa 000000 7750 15 842 alr 0,5  007106 aa 000000 0710 07 843 awca =0,dl get any remaining carry  844  007107 0a 007107 6200 00 845 tpckx0: eax0 * restore X0  007110 aa 000001 7100 12 846 tra 1,2  847  848  849 " 850 " tsx2 tpnextq to discard current queue and get next entry 851  007111 aa 000002 2350 07 852 tpnextq: lda tpdone,dl finish with current queue entry 007112 aa 000000 2550 13 853 orsa 0,3 turn on done bit 854  007113 aa 000000 2230 13 855 ldx3 0,3 step to next queue entry 007114 aa 000000 2350 13 856 tpqtest: lda 0,3 get flags 007115 aa 000002 3150 07 857 cana tpdone,dl anything to do?  007116 0a 007126 6000 00 858 tze tpnd if so, go to it  859  007117 0a 007173 2340 00 860 szn tpfin finished with tape? 007120 aa 000000 6010 12 861 tnz 0,2 if so, take end of tape return  862  007121 0a 007124 7420 00 863 stx2 tpnqx2 save X2  007122 0a 007172 4500 00 864 stz tprunning set state to waiting  007123 0a 006754 7020 00 865 tsx2 tpret and wait for more work 866  007124 0a 007124 6220 00 867 tpnqx2: eax2 * run call, restore X2  007125 0a 007114 7100 00 868 tra tpqtest see if more work to do  869  007126 aa 000004 3150 07 870 tpnd: cana tpskip,dl skip this queue entry?  007127 0a 007111 6010 00 871 tnz tpnextq if so, go get another one 872  007130 aa 000001 2750 07 873 ora tpstat,dl turn off error bit  007131 aa 000001 6750 07 874 era tpstat,dl ..  007132 aa 000000 7550 13 875 sta 0,3 store flags back in queue entry  876  007133 aa 000002 2270 13 877 ldx7 2,3 get segment # and offset 007134 aa 000000 6350 17 878 eaa 0,7 segment # in A (0-2)  007135 aa 077777 3670 03 879 anx7 =o77777,du mask the offset  007136 aa 000017 7710 00 880 arl 15 right-justify segment # in AU  007137 aa 000000 3310 01 881 easp xs1,0,au pr 4 -> data segment  007140 aa 000000 3300 17 882 eawp xs1,0,7 ..  883  007141 aa 000002 7270 13 884 lxl7 2,3 get length from queue  007142 aa 000001 6270 17 885 eax7 1,7 round to next even  007143 aa 777776 3670 03 886 anx7 =o777776,du ..  007144 0a 007201 7470 00 887 stx7 tplenq save data length  888  007145 aa 000000 6210 00 889 eax1 0 reset data index  007146 aa 000001 7100 12 890 tra 1,2 return to caller  891  892  893 " 894 " tsx2 dotape to perform non-data transfer operation  895 " oct command  896 " tra error 897  007147 0a 007165 7420 00 898 dotape: stx2 dx 007150 aa 000000 2350 12 899 lda 0,2  007151 aa 000036 7350 00 900 als 30 fill in command  007152 0a 007256 7510 40 901 stca tpdidcw,40  007153 aa 012272 7020 00 902 domore: tsx2 connect_iom start oper 007154 00 007244 007256 903 zero tppcw,tpdidcw 904  007155 0a 007172 7500 00 905 stc2 tprunning 007156 0a 006754 7020 00 906 tsx2 tpret wait for status  907  007157 0a 007167 7100 00 908 tra dobad  007160 0a 007162 7100 00 909 tra doagain  007161 0a 007165 7100 00 910 tra dx 911  007162 aa 370000 3750 03 912 doagain: ana =o370000,du mask the major status  007163 aa 040000 1150 03 913 cmpa =o040000,du EOF?  007164 0a 007153 6010 00 914 tnz domore if not, try again  915  007165 0a 007165 6220 00 916 dx: eax2 *  007166 aa 000002 7100 12 917 tra 2,2  007167 0a 007165 2220 00 918 dobad: ldx2 dx  007170 aa 000001 7100 12 919 tra 1,2  920  921 " 922 " Storage and Constants.  923  007171 924 tpstate: bss ,1 last loc'n in ntape package  007172 925 tprunning:bss ,1 non-zero if tape connected  007173 926 tpfin: bss ,1 non-zero to finish up tape  007174 927 tpeotsw: bss ,1 non-zero when EOT reflector encountered  007175 928 tpcompatsw: bss ,1 non-zero if compatibility error occurred  007176 929 tpburstsw:bss ,1 non-zero if PE burst error occurred  007177 930 tapeno: bss ,1 current tape handler #  007200 931 tplen: bss ,1 length of logical record on tape 007201 932 tplenq: bss ,1 length of logical record from queue 007202 933 tpchanno: bss ,1 tape channel #  007203 934 tperct: bss ,1 # of times tape direction changed  007204 935 tpct: bss ,1 # of records skipped reading  007205 936 tpxrec: bss ,1 next expected physical record # 007206 937 tprecl: bss ,1 data length of record on reading  007207 938 tpn: bss ,1 length of tape record in dl  007210 939 tpn_du: bss ,1 length of tape record in du 007211 940 tpn_x_36: bss ,1 length of tape record in bits in dl  007212 941 tpn_x_36_du:  007212 942 bss ,1 length of tape record in bits in du  007213 943 ntapeden: bss ,1 tape density, set by opentaper_  007214 944 tpstatus: bss ,1  007215 945 tpoldstatus:  007215 946 bss ,1 007216 947 tptemp: bss ,1  007217 948 tperrors: bss ,1 count of errors on tape  007220 949 tpcopyl: bss ,1 # of words to copy 007221 950 fatal_open_return:  007221 951 bss ,1 set by inittape for use in opentape(r w)_  952 even  007222 953 tpuid: bss ,2 last unique ID read from tape  954  955  007224 aa 000001 001001 956 tctable: vfd 9/0,9/1,9/1,9/1 table to stop tct on non-zero character  007225 aa 001001 001001 957 vfd 9/1,9/1,9/1,9/1  007226 aa 001001 001001 958 vfd 9/1,9/1,9/1,9/1  007227 aa 001001 001001 959 vfd 9/1,9/1,9/1,9/1  007230 aa 001001 001001 960 vfd 9/1,9/1,9/1,9/1  007231 aa 001001 001001 961 vfd 9/1,9/1,9/1,9/1  007232 aa 001001 001001 962 vfd 9/1,9/1,9/1,9/1  007233 aa 001001 001001 963 vfd 9/1,9/1,9/1,9/1  007234 aa 001001 001001 964 vfd 9/1,9/1,9/1,9/1  007235 aa 001001 001001 965 vfd 9/1,9/1,9/1,9/1  007236 aa 001001 001001 966 vfd 9/1,9/1,9/1,9/1  007237 aa 001001 001001 967 vfd 9/1,9/1,9/1,9/1  007240 aa 001001 001001 968 vfd 9/1,9/1,9/1,9/1  007241 aa 001001 001001 969 vfd 9/1,9/1,9/1,9/1  007242 aa 001001 001001 970 vfd 9/1,9/1,9/1,9/1  007243 aa 001001 001001 971 vfd 9/1,9/1,9/1,9/1  972 " 973 " DCW Lists and Tape Buffers.  974 even  007244 aa 400000 720201 975 tppcw: vfd o6/40,6/0,6/0,3/7,3/2,6/2,6/1 reset status (PSIA compat.)  007245 aa 000000 000000 976 vfd 9/*-*  977  007246 aa 150000 700000 978 tpwidcw: vfd o6/15,6/0,6/0,3/7,3/0,6/0,6/0 Write tape binary.  007247 0a 040300 010010 979 tpwlist: vfd 18/hdr+pgmorg,6/1,12/8 Write header, data, trailer.  007250 0a 040340 010000 980 vfd 18/tpbuf+pgmorg,6/1,12/0 set in inittape_ and opentapew_  007251 0a 040310 000010 981 vfd 18/tlr+pgmorg,6/0,12/8 982  007252 aa 050000 700000 983 tpridcw: vfd o6/05,6/0,6/0,3/7,3/0,6/0,6/0 Read tape binary.  007253 0a 040320 010010 984 tprlist: vfd 18/rhdr+pgmorg,6/1,12/8 Read header, data, trailer.  007254 0a 040340 010000 985 vfd 18/tpbuf+pgmorg,6/1,12/0 set in inittape_ and opentaper_  007255 0a 040330 000010 986 vfd 18/rtlr+pgmorg,6/0,12/8  987  007256 aa 000000 700201 988 tpdidcw: vfd o6/0,6/0,6/0,3/7,3/0,6/2,6/1 Non-data operation.  007257 aa 000000 700201 989 tpddcw: vfd 6/0,6/0,6/0,3/7,3/0,6/2,6/1 Request status (just in case). 990  991 eight  007260 992 bss tpmyreg,8  007270 993 bss tphisreg,8 994 eight  007300 aa 670314 355245 995 hdr: oct 670314355245 phy rec header  007301 aa 000000 000000 996 vfd 72/0  007302 aa 000000 000000 007303 aa 000000 000000 997 vfd 18/0,18/0 phyrec,phyfil  007304 aa 000000 000000 998 vfd 18/0,18/0 ndata bits, initialized in opentapew_  007305 aa 000000 000000 999 vfd 36/0 flags  007306 aa 000000 000000 1000 vfd 36/0 checksum 007307 aa 512556 146073 1001 oct 512556146073  1002  007310 aa 107463 422532 1003 tlr: oct 107463422532  007311 aa 000000 000000 1004 vfd 72/0 mul id  007312 aa 000000 000000 007313 aa 000000 000000 1005 vfd 36/0 ndata bits of log tape  007314 aa 000000 000000 1006 vfd 36/0 padding bits 007315 aa 000000 000000 1007 vfd 18/0,18/0 reel number,phy file in log tape  007316 aa 000000 000000 1008 vfd 36/0 record in log tape  007317 aa 265221 631704 1009 oct 265221631704  1010  007320 1011 bss rhdr,8 007330 1012 bss rtlr,8 1013  1014  007340 1015 bss tpbuf,small_tp_buff  1016  1017 "  1018 " tapesyn -- simple tape interface. 1019  1020 "tsx2 tape(r/w)open to init simple tape interface  1021 "arg tapen  1022  011340 0a 011346 7420 00 1023 tapewopen_: stx2 stwo  011341 aa 000000 2350 12 1024 lda 0,2 loc of tape number  011342 0a 011345 7550 00 1025 sta *+3  011343 aa 006006 7020 00 1026 tsx2 opentapew 011344 0a 011400 000000 1027 zero stq  011345 0a 011345 000000 1028 zero * 011346 0a 011346 6220 00 1029 stwo: eax2 *  011347 aa 000001 7100 12 1030 tra 1,2  1031  011350 0a 011356 7420 00 1032 taperopen_: stx2 stro  011351 aa 000000 2350 12 1033 lda 0,2 loc of tape number  011352 0a 011355 7550 00 1034 sta *+3  011353 aa 006005 7020 00 1035 tsx2 opentaper 011354 0a 011400 000000 1036 zero stq  011355 0a 011355 000000 1037 zero * 011356 0a 011356 6220 00 1038 stro: eax2 *  011357 aa 000001 7100 12 1039 tra 1,2  1040  1041 "lda id  1042 "tsx2 tape(r/w) 1043 "arg segno|offset  1044 "arg length 1045 "tra error  1046  1047  011360 1048 taper_: tapew_: "both entrys same 011360 0a 011374 7420 00 1049 stx2 stx2  011361 0a 011401 7550 00 1050 sta stid save id  011362 aa 000000 2270 12 1051 ldx7 0,2 put loc in queue 011363 0a 011402 7470 00 1052 stx7 stloc 011364 aa 000001 2270 12 1053 ldx7 1,2 length  011365 0a 011402 4470 00 1054 sxl7 stloc 011366 aa 000000 6270 00 1055 eax7 0 turn off done bit  011367 0a 011400 4470 00 1056 sxl7 stq  1057  011370 aa 006007 7020 00 1058 tsx2 runtape keep tape running  011371 0a 011400 7270 00 1059 lxl7 stq wait for done bit to come on 011372 aa 000002 3070 03 1060 canx7 tpdone,du  011373 0a 011370 6000 00 1061 tze *-3  1062  011374 0a 011374 6220 00 1063 stx2: eax2 *  011375 aa 000001 3070 03 1064 canx7 tpstat,du test error bit  011376 aa 000002 6010 12 1065 tnz 2,2 error 011377 aa 000003 7100 12 1066 tra 3,2  1067  1068 even  011400 0a 011400 000000 1069 stq: zero * queue of one entry 011401 aa 000000 000000 1070 stid: oct 0 id 011402 aa 000000 000000 1071 stloc: oct 0 segno|offset,length  1072  1073  1074 include bos_tv 5-1 " 5-2 " Begin include file ...... bos_tv.incl.alm 5-3 " Created in November 1971 by N. I. Morris. 5-4 " Modified 9/9/76 by Noel I. Morris 5-5 " Modified by Sherman D. Sprague 02/11/81 for DPS8 support. 5-6 " Modified November 1981 by C. Hornig to remove iom_connect_rel.  5-7 " Modified January 1982 by J. Bongiovanni to add getport_info  5-8 " Modified May 1982 by Sherman D. Sprague to add getmpc.  5-9  5-10 " BOS Utility Package Transfer Vector.  5-11  012000 5-12 equ pagectl,utilorg  012001 5-13 equ line,pagectl+1 012040 5-14 equ arg,line+31  012060 5-15 equ darg,arg+arglen+1  012100 5-16 equ earg,darg+arglen+1 012120 5-17 equ fltscu,earg+arglen+1  5-18  012200 5-19 equ tv_org,utilorg+128 5-20  012200 5-21 equ scan,tv_org+0  012201 5-22 equ arg_count,tv_org+1 012202 5-23 equ nextline,tv_org+2  012203 5-24 equ nlraw,tv_org+3 012204 5-25 equ search,tv_org+4  012205 5-26 equ makefil,tv_org+5  012206 5-27 equ ldcom,tv_org+6 012207 5-28 equ getsec,tv_org+7  012210 5-29 equ cvinit,tv_org+8  012211 5-30 equ rdev,tv_org+9  012212 5-31 equ wdev,tv_org+10 012213 5-32 equ phybos,tv_org+11  012214 5-33 equ bosphy,tv_org+12  012215 5-34 equ phyadd,tv_org+13  012216 5-35 equ mulbos,tv_org+14  012217 5-36 equ bosmul,tv_org+15  012220 5-37 equ lookup_devmodel,tv_org+16  012221 5-38 equ makesdw,tv_org+17  012222 5-39 equ argbos,tv_org+18  012223 5-40 equ argmul,tv_org+19  012224 5-41 equ amdvt,tv_org+20  012225 5-42 equ amfirst,tv_org+21  012226 5-43 equ amlast,tv_org+22  012227 5-44 equ cvnamla,tv_org+23  012230 5-45 equ sect_per_cyl_list,tv_org+24  012231 5-46 equ sect_per_dev_list,tv_org+25  012232 5-47 equ rec_per_dev_list,tv_org+26 012233 5-48 equ amaxio,tv_org+27  012234 5-49 equ rdsec,tv_org+28  012235 5-50 equ wtsec,tv_org+29  012236 5-51 equ disk_brief,tv_org+30  012237 5-52 equ itaper,tv_org+31  012240 5-53 equ itapew,tv_org+32  012241 5-54 equ erpt,tv_org+33 012242 5-55 equ ercv,tv_org+34 012243 5-56 equ erbuf,tv_org+35  012244 5-57 equ type,tv_org+36 012245 5-58 equ ttyinit,tv_org+37  012246 5-59 equ readcd,tv_org+38  012247 5-60 equ readtty,tv_org+39  012250 5-61 equ getprt,tv_org+40  012251 5-62 equ punch,tv_org+41  012252 5-63 equ octwd,tv_org+42  012253 5-64 equ geas,tv_org+43 012254 5-65 equ geastab,tv_org+44  012255 5-66 equ asge,tv_org+45 012256 5-67 equ asgetab,tv_org+46  012257 5-68 equ ljust,tv_org+47  012260 5-69 equ rjust,tv_org+48  012261 5-70 equ bzel,tv_org+49 012262 5-71 equ stripa,tv_org+50  012263 5-72 equ stripg,tv_org+51  012264 5-73 equ getconf,tv_org+52  012265 5-74 equ getmore,tv_org+53  012266 5-75 equ getperiph,tv_org+54  012267 5-76 equ rdclock,tv_org+55  012270 5-77 equ cvclock,tv_org+56  012271 5-78 equ init_io,tv_org+57  012272 5-79 equ connect_iom,tv_org+58  012273 5-80 equ getmpc,tv_org+59  012274 5-81 equ check_status,tv_org+60 012275 5-82 equ get_special_interrupt,tv_org+61  012276 5-83 equ get_status_interrupt,tv_org+62 012277 5-84 equ xio_wait,tv_org+63 012300 5-85 equ initint,tv_org+64  012301 5-86 equ wantflt,tv_org+65  012302 5-87 equ intno,tv_org+66  012303 5-88 equ intrpts1,tv_org+67 012304 5-89 equ hexwd,tv_org+68  012305 5-90 equ find_disk,tv_org+69  012306 5-91 equ find_root,tv_org+70  012307 5-92 equ find_part,tv_org+71  012310 5-93 equ check_status_no_stat,tv_org+72 012311 5-94 equ check_special_status,tv_org+73 012312 5-95 equ check_cpu_type,tv_org+74  012313 5-96 equ getportinfo,tv_org+75  5-97  5-98 " End of include file ...... bos_tv.incl.alm  5-99  1075  1076 include bos_common 6-1 "  6-2 " Begin include file ...... bos_common.incl.alm 6-3 " Modified on 8/31/76 by N. I. Morris  6-4 " Modified on 9/01/80 by Sherman D. Sprague for DPS8 operation  6-5 " Modified on 5/26/82 by Sherman D. Sprague to lengthen config size 6-6 " Modified on 3/01/83 by Sherman D. Sprague to lengthen dirlen  6-7 " MACHINE CONDITIONS AREA  6-8 " Its length is "storlen". 6-9  000000 6-10 equ amptwregs,0 Ass. Mem PTW registers  000100 6-11 equ amptwptr,64 Ass. Mem PTW pointers 000200 6-12 equ amsdwregs,128 Ass. Mem SDW registers  000400 6-13 equ amsdwptr,256 Ass. Mem SDW pointers  000500 6-14 equ ouhist,320 operations hist regs  000700 6-15 equ cuhist,448 control unit hist regs  001100 6-16 equ eishist,576 eis hist regs  001300 6-17 equ aphist,704 appending unit hist regs  001500 6-18 equ prs,832 pointer regs  001520 6-19 equ regs,848 sreg 001530 6-20 equ low_order_port,856 port to read clock from 001532 6-21 equ mctime,858 bootload memory clock  001540 6-22 equ scu,864  001550 6-23 equ mcm,872 memory masks 8 ports 001570 6-24 equ dbr,888  001572 6-25 equ intrpts,890 waiting interrupts 001573 6-26 equ bar,891 bar  001574 6-27 equ modereg,892 processor & cache mode registers  001576 6-28 equ faultreg,894 processor fault register  001600 6-29 equ ptrlen,896 pointer-lengths EIS 0 mod 8 001610 6-30 equ coreblocks,904 array of port information  6-31 " Bits 0-17 => num 1st 64-word block  6-32 " Bits 18-35 => num of 64-word blocks  6-33 " (-1) => no mem on this port  001620 6-34 equ lowport_cfg,912 Saved CFG from bootload SCU  6-35  002000 6-36 equ storlen,1024  6-37  6-38  6-39  6-40 " BOS COMMAND DIRECTORY 6-41 " Its length is "dirlen".  6-42  002000 6-43 equ dir,1024 ( 0-23) => sector # of first sector on BOS disk  6-44 " (24-35) => # of sectors in BOS common  002001 6-45 equ used,dir+1 ( 0-23) => # of next available sector on BOS disk  002002 6-46 equ useable,dir+2 ( 0-23) => first unavailable sector on BOS disk  002003 6-47 equ corearea,dir+3 ( 0-23) => starting sector of Multics core image  6-48 " (24-35) => # of sectors in Multics core image  002004 6-49 equ setuparea,dir+4 Sector and length of setup 002005 6-50 equ utilarea,dir+5 where utility package is kept  002010 6-51 equ iom_mxbase,dir+8 IOM IMW area address  002011 6-52 equ iom_mbbase,dir+9 IOM mailbox base  002012 6-53 equ bos_dvt,dir+10 BOS disk loc: (o3/iom,o6/chn,o9/drive,o18/devtype)  002013 6-54 equ unitgroup,dir+11 disk unitgroup (device no. or area no.)  002014 6-55 equ diskchanno,dir+12 channel to be used for disk  002015 6-56 equ tapechanno,dir+13 channel # for tapes  002016 6-57 equ rdrchanno,dir+14 channel number for card reader  002017 6-58 equ ttychanno,dir+15 channel # for operator's tty  002020 6-59 equ quietsw,dir+16 if on, don't print card and macro commands  002021 6-60 equ inputsw,dir+17 read from tty, cards, macros  002022 6-61 equ macroloc,dir+18 disk addr, buffer index of macro file  002023 6-62 equ fdump_state,dir+19 completion flag for last FDUMP  002024 6-63 equ d355_state,dir+20 = 1 if DataNet 355 loaded successfully  002025 6-64 equ skipsw,dir+21 if on, skip runcom lines 002026 6-65 equ ttypmtsw,dir+22 if on, prompt  002027 6-66 equ curtcmd,dir+23 current bos command 002030 6-67 equ readysw,dir+24 if on, print ready message  002032 6-68 equ cmdlst,dir+26 list of commands 6-69  000600 6-70 equ dirlen,384 6-71  6-72  6-73  6-74 " MACRO BUFFER AREA 6-75  002600 6-76 equ macrobuf,dir+dirlen io buffer for macro files 002700 6-77 equ macroline,macrobuf+64 runcom command line 002716 6-78 equ macroargs,macroline+14 argument descriptors for runcom  6-79  6-80  6-81  6-82 " CONFIGURATION CARD AREA  6-83 " Its length is 2048 words.  6-84  003000 6-85 equ conf,macrobuf+128 start of configuration info  007000 6-86 equ econf,conf+2048 end of configuration info  000020 6-87 equ confl,16 length of each line  6-88  6-89  007000 6-90 equ seg6length,econf length of bos_common area segment 6-91  6-92 " End of include file ...... bos_common.incl.alm  6-93  1077  1078 end  LITERALS 011404 aa 000077 777777 011405 aa 777777 777772 011406 aa 000000 000000 011407 aa 370000 770000 NAME DEFINITIONS FOR ENTRY POINTS AND SEGDEFS 011410 5a 000003 000000 011411 5a 000017 600000 011412 aa 000000 000000 011413 55 000010 000002 011414 5a 000002 400003 011415 55 000006 000010 011416 aa 005 156 164 141 011417 aa 160 145 000 000 011420 55 000002 000003 011421 6a 000000 400002 011422 55 000013 000003 011423 aa 014 163 171 155 symbol_table  011424 aa 142 157 154 137 011425 aa 164 141 142 154 011426 aa 145 000 000 000 DEFINITIONS HASH TABLE  011427 aa 000000 000015 011430 aa 000000 000000 011431 aa 000000 000000 011432 aa 000000 000000 011433 aa 000000 000000 011434 aa 000000 000000 011435 aa 000000 000000 011436 5a 000010 000000 011437 aa 000000 000000 011440 aa 000000 000000 011441 aa 000000 000000 011442 aa 000000 000000 011443 aa 000000 000000 011444 aa 000000 000000 NO EXTERNAL NAMES  NO TRAP POINTER WORDS  TYPE PAIR BLOCKS  011445 aa 000001 000000 011446 aa 000000 000000 INTERNAL EXPRESSION WORDS 011447 aa 000000 000000 LINKAGE INFORMATION 000000 aa 000000 000000 000001 0a 011410 000000 000002 aa 000000 000000 000003 aa 000000 000000 000004 aa 000000 000000 000005 aa 000000 000000 000006 22 000010 000010 000007 a2 000000 000000 SYMBOL INFORMATION SYMBOL TABLE HEADER  000000 aa 000000 000001 000001 aa 163171 155142 000002 aa 164162 145145 000003 aa 000000 000004 000004 aa 000000 112143 000005 aa 305203 523135 000006 aa 000000 112272 000007 aa 227166 414613 000010 aa 141154 155040 000011 aa 040040 040040 000012 aa 000024 000040 000013 aa 000034 000040 000014 aa 000044 000100 000015 aa 000020 000002 000016 aa 000064 000000 000017 aa 000000 000732 000020 aa 000000 000214 000021 aa 000000 000715 000022 aa 000720 000214 000023 aa 000064 000000 000024 aa 101114 115040 000025 aa 126145 162163 000026 aa 151157 156040 000027 aa 040066 056066 000030 aa 040040 116157 000031 aa 166145 155142 000032 aa 145162 040061 000033 aa 071070 062040 000034 aa 110157 154155 000035 aa 163164 145144 000036 aa 164056 123171 000037 aa 163115 141151 000040 aa 156164 056141 000041 aa 040040 040040 000042 aa 040040 040040 000043 aa 040040 040040 000044 aa 154151 163164 000045 aa 040040 040040 000046 aa 040040 040040 000047 aa 040040 040040 000050 aa 040040 040040 000051 aa 040040 040040 000052 aa 040040 040040 000053 aa 040040 040040 000054 aa 040040 040040 000055 aa 040040 040040 000056 aa 040040 040040 000057 aa 040040 040040 000060 aa 040040 040040 000061 aa 040040 040040 000062 aa 040040 040040 000063 aa 040040 040040 000064 aa 000000 000001 000065 aa 000000 000007 000066 aa 000122 000026 000067 aa 122721 273064 000070 aa 000000 112272 000071 aa 216074 000000 000072 aa 000130 000040 000073 aa 113400 415301 000074 aa 000000 111341 000075 aa 220414 400000 000076 aa 000140 000037 000077 aa 122721 272761 000100 aa 000000 112272 000101 aa 214176 200000 000102 aa 000150 000050 000103 aa 074654 553123 000104 aa 000000 107470 000105 aa 740142 400000 000106 aa 000162 000043 000107 aa 074654 553115 000110 aa 000000 107470 000111 aa 740072 400000 000112 aa 000173 000040 000113 aa 110235 072677 000114 aa 000000 111024 000115 aa 524460 600000 000116 aa 000203 000044 000117 aa 121622 277475 000120 aa 000000 112162 000121 aa 321563 400000 000122 aa 076163 160145 >spec>h>3.17>ntape.alm  000123 aa 143076 150076 000124 aa 063056 061067 000125 aa 076156 164141 000126 aa 160145 056141 000127 aa 154155 040040 000130 aa 076154 144144 >ldd>bos>include>bosequ.incl.alm  000131 aa 076142 157163 000132 aa 076151 156143 000133 aa 154165 144145 000134 aa 076142 157163 000135 aa 145161 165056 000136 aa 151156 143154 000137 aa 056141 154155 000140 aa 076163 160145 >spec>h>3.17>bos_toequ.incl.alm 000141 aa 143076 150076 000142 aa 063056 061067 000143 aa 076142 157163 000144 aa 137164 157145 000145 aa 161165 056151 000146 aa 156143 154056 000147 aa 141154 155040 000150 aa 076154 144144 >ldd>bos>include>sav_io_buf_seg.incl.alm  000151 aa 076142 157163 000152 aa 076151 156143 000153 aa 154165 144145 000154 aa 076163 141166 000155 aa 137151 157137 000156 aa 142165 146137 000157 aa 163145 147056 000160 aa 151156 143154 000161 aa 056141 154155 000162 aa 076154 144144 >ldd>bos>include>ntape_equ.incl.alm 000163 aa 076142 157163 000164 aa 076151 156143 000165 aa 154165 144145 000166 aa 076156 164141 000167 aa 160145 137145 000170 aa 161165 056151 000171 aa 156143 154056 000172 aa 141154 155040 000173 aa 076154 144144 >ldd>bos>include>bos_tv.incl.alm  000174 aa 076142 157163 000175 aa 076151 156143 000176 aa 154165 144145 000177 aa 076142 157163 000200 aa 137164 166056 000201 aa 151156 143154 000202 aa 056141 154155 000203 aa 076154 144144 >ldd>bos>include>bos_common.incl.alm  000204 aa 076142 157163 000205 aa 076151 156143 000206 aa 154165 144145 000207 aa 076142 157163 000210 aa 137143 157155 000211 aa 155157 156056 000212 aa 151156 143154 000213 aa 056141 154155 MULTICS ASSEMBLY CROSS REFERENCE LISTING Value Symbol Source file Line number  20 absi bos_toequ: 75. 12233 amaxio bos_tv: 48. 12224 amdvt bos_tv: 41. 12225 amfirst bos_tv: 42. 12226 amlast bos_tv: 43. 100 amptwptr bos_common: 11. 0 amptwregs bos_common: 10. 400 amsdwptr bos_common: 13. 200 amsdwregs bos_common: 12. 1300 aphist bos_common: 17. 12040 arg bos_tv: 14, 15.  12222 argbos bos_tv: 39. 17 arglen bosequ: 17, bos_tv: 15, 16, 17. 12223 argmul bos_tv: 40. 12201 arg_count bos_tv: 22. 12255 asge bos_tv: 66. 12256 asgetab bos_tv: 67. 1573 bar bos_common: 26. 2 bf bosequ: 9. 2000 big_tp_buff ntape: 151, 478,  sav_io_buf_seg: 10.  12217 bosmul bos_tv: 36. 12214 bosphy bos_tv: 33. 20 bos_dbr bos_toequ: 95. 2012 bos_dvt bos_common: 53. 0 bos_pr bos_toequ: 82. 12261 bzel bos_tv: 70. 12312 check_cpu_type bos_tv: 95. 12311 check_special_status bos_tv: 94. 12274 check_status ntape: 698, bos_tv: 81. 12310 check_status_no_stat bos_tv: 93. 2032 cmdlst bos_common: 68. 6 com ntape: 98, bosequ: 14. 3000 conf bos_common: 85, 86.  20 confl bos_common: 87. 12272 connect_iom ntape: 369, 607, 902, bos_tv: 79. 2003 corearea bos_common: 47. 1610 coreblocks bos_common: 30. 60000 coresaved bos_toequ: 43, 65.  1 cow bos_toequ: 127. 1000 cowsav bos_toequ: 142. 700 cuhist bos_common: 15. 2027 curtcmd bos_common: 66. 12270 cvclock bos_tv: 77. 12210 cvinit bos_tv: 29. 12227 cvnamla bos_tv: 44. 2024 d355_state bos_common: 63. 12060 darg bos_tv: 15, 16.  1570 dbr bos_common: 24. 576 devid bos_toequ: 140. 2000 dir bos_common: 43, 45, 46, 47, 49, 50, 51, 52, 53, 54, 55, 56,  57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 76. 1003 dirbase bos_toequ: 145. 600 dirlen bos_common: 70, 76.  2014 diskchanno bos_common: 55. 12236 disk_brief bos_tv: 51. 100000 disk_buff_len sav_io_buf_seg: 8.  7162 doagain ntape: 909, 912.  7167 dobad ntape: 908, 918.  7153 domore ntape: 902, 914.  7147 dotape ntape: 137, 397, 415, 431, 434, 443, 446, 455, 458, 678, 898. 0 ds bosequ: 7. 20 dseg bos_toequ: 96. 0 dskbuf sav_io_buf_seg: 12.  7165 dx ntape: 898, 910, 916, 918.  12100 earg bos_tv: 16, 17.  7000 econf bos_common: 86, 90.  1100 eishist bos_common: 16. 6010 endtape ntape: 79, ntape_equ: 19. 6026 endtape_ ntape: 80, 113.  12243 erbuf bos_tv: 56. 12242 ercv bos_tv: 55. 12241 erpt ntape: 119, 169, 464, 708,  bos_tv: 54. 7221 fatal_open_return ntape: 96, 171, 466, 950.  1576 faultreg bos_common: 28. 2023 fdump_state bos_common: 62. 5 fgb bosequ: 13. 12305 find_disk bos_tv: 90. 12307 find_part bos_tv: 92. 12306 find_root bos_tv: 91. 2000 firmware_bit bosequ: 20. 12120 fltscu bos_tv: 17. 12253 geas bos_tv: 64. 12254 geastab bos_tv: 65. 12264 getconf bos_tv: 73. 12265 getmore bos_tv: 74. 12273 getmpc bos_tv: 80. 12266 getperiph bos_tv: 75. 12313 getportinfo bos_tv: 96. 12250 getprt bos_tv: 61. 12207 getsec bos_tv: 28. 12275 get_special_interrupt bos_tv: 82. 12276 get_status_interrupt ntape: 103, bos_tv: 83. 7300 hdr ntape: 162, 177, 179, 182, 183, 277, 278, 302, 304, 310, 312, 348,  352, 353, 355, 356, 363, 366, 367, 380, 382, 390, 391, 401,  403, 411, 489, 617, 620, 979, 995. 12304 hexwd bos_tv: 89. 1400 imbx bos_toequ: 67. 12300 initint bos_tv: 85. 6004 inittape ntape: 67, ntape_equ: 15. 6011 inittape_ ntape: 68, 89.  12271 init_io bos_tv: 78. 2021 inputsw bos_common: 60. 12302 intno bos_tv: 87. 6024 intpx2 ntape: 90, 106.  1572 intrpts bos_common: 25. 12303 intrpts1 bos_tv: 88. 2011 iom_mbbase bos_common: 52. 2010 iom_mxbase bos_common: 51. 12237 itaper bos_tv: 52. 12240 itapew bos_tv: 53. 44000 label_buff_len sav_io_buf_seg: 7.  0 lbbuf sav_io_buf_seg: 13.  12206 ldcom bos_tv: 27. 12001 line bos_tv: 13, 14.  12257 ljust bos_tv: 68. 2000 lnbf bos_toequ: 57, 61, 104. 7000 lncom bos_toequ: 60, 63, 116, 136.  40 lnds bos_toequ: 54, 55, 98. 100 lnflagbox bos_toequ: 52, 113.  777777 lnmem bos_toequ: 45, 119.  27000 lnpgm bos_toequ: 65, 101.  10000 lnsetup bos_toequ: 48, 58, 107. 12220 lookup_devmodel bos_tv: 37. 1620 lowport_cfg bos_common: 34. 1530 low_order_port bos_common: 20. 11 lpwr bos_toequ: 128. 2716 macroargs bos_common: 78. 2600 macrobuf bos_common: 76, 77, 85. 2700 macroline bos_common: 77, 78.  2022 macroloc bos_common: 61. 12205 makefil bos_tv: 26. 12221 makesdw bos_tv: 38. 10000 maxw bos_toequ: 72. 1001 mbbasesav bos_toequ: 143. 575 mbxloc bos_toequ: 139. 1550 mcm bos_common: 23. 1532 mctime bos_common: 21. 7 mem bosequ: 15. 1574 modereg bos_common: 27. 12216 mulbos bos_tv: 35. 1002 mxbasesav bos_toequ: 144. 12202 nextline bos_tv: 23. 12203 nlraw bos_tv: 24. 7213 ntapeden ntape: 93, 134, 142, 430, 442, 454, 469, 943.  6000 ntape_org ntape: 53, ntape_equ: 9, 11, 12, 13, 14, 15, 16, 17, 18, 19.  12252 octwd bos_tv: 63. 6005 opentaper ntape: 70, 1035,  ntape_equ: 16. 6401 opentaper_ ntape: 71, 425.  6006 opentapew ntape: 73, 1026,  ntape_equ: 17. 6043 opentapew_ ntape: 74, 130.  6467 or6250 ntape: 471, 477.  6440 orbadden ntape: 457, 460, 463. 6473 orcomden ntape: 476, 482.  20000 origbf bos_toequ: 58, 61, 103. 22000 origcom bos_toequ: 61, 63, 115, 136.  7740 origds bos_toequ: 55, 97.  10020 origflagbox bos_toequ: 51, 112.  0 origmem bos_toequ: 46, 118.  31000 origpgm bos_toequ: 63, 64, 65, 100.  10000 origsetup bos_toequ: 49, 51, 55, 58, 106. 500 ouhist bos_common: 14. 4000 ovflm bos_toequ: 76. 6062 ow6250 ntape: 144, 150.  6101 owbadden ntape: 139, 168.  6052 owbuflen ntape: 141. 6066 owcomden ntape: 149, 155.  6121 owcont ntape: 166, 173.  6050 owden ntape: 135, 138.  12000 pagectl bos_tv: 12, 13.  0 pcw bos_toequ: 126. 3 pgm bosequ: 10. 31000 pgmorg ntape: 979, 980, 981, 984, 985, 986,  bos_toequ: 64. 12215 phyadd bos_tv: 34. 12213 phybos bos_tv: 32. 1500 prs bos_common: 18. 1600 ptrlen bos_common: 29. 12251 punch bos_tv: 62. 2020 quietsw bos_common: 59. 12267 rdclock bos_tv: 76. 12211 rdev bos_tv: 30. 2016 rdrchanno bos_common: 57. 12234 rdsec bos_tv: 49. 12246 readcd bos_tv: 59. 12247 readtty bos_tv: 60. 2030 readysw bos_common: 67. 12232 rec_per_dev_list bos_tv: 47. 1520 regs bos_common: 19. 7061 resetape ntape: 194, 817.  37 rewpu bos_toequ: 69, 98, 101, 104, 107, 113, 116, 119.  6400 rewx ntape: 410, 418.  7320 rhdr ntape: 602, 603, 616, 619, 623, 644, 645, 648, 649, 659, 660, 663,  984, 1011.  12260 rjust bos_tv: 69. 7330 rtlr ntape: 604, 605, 634, 636, 639, 653, 986, 1012.  4000 runcom_bit bosequ: 19. 6007 runtape ntape: 76, 115, 1058, ntape_equ: 18. 6721 runtape_ ntape: 77, 694.  12200 scan bos_tv: 21. 1540 scu bos_common: 22. 14 scwr bos_toequ: 124. 12204 search bos_tv: 25. 12230 sect_per_cyl_list bos_tv: 45. 12231 sect_per_dev_list bos_tv: 46. 20 seg0 bos_toequ: 97. 22 seg1 bos_toequ: 100. 24 seg2 bos_toequ: 103. 26 seg3 bos_toequ: 106. 30 seg4 bos_toequ: 109. 32 seg5 bos_toequ: 112. 34 seg6 bos_toequ: 115. 7000 seg6length bos_common: 90. 36 seg7 bos_toequ: 118. 7047 setape ntape: 132, 427, 804. 7065 setrtn ntape: 131, 426, 823. 2004 setuparea bos_common: 49. 2025 skipsw bos_common: 64. 2000 small_tp_buff ntape: 145, 472, 1015, sav_io_buf_seg: 9.  2 statq bos_toequ: 125. 11401 stid ntape: 1050, 1070.  11402 stloc ntape: 1052, 1054, 1071. 2000 storlen bos_common: 36. 11400 stq ntape: 1027, 1036, 1056, 1059, 1069. 12262 stripa bos_tv: 71. 12263 stripg bos_tv: 72. 11356 stro ntape: 1032, 1038.  11346 stwo ntape: 1023, 1029.  11374 stx2 ntape: 1049, 1063.  200 swaplen bos_toequ: 137, 139, 140, 141.  2015 tapechanno ntape: 98, bos_common: 56. 7177 tapeno ntape: 810, 930.  6002 taper ntape: 61, ntape_equ: 13. 6000 taperopen ntape: 55, ntape_equ: 11. 11350 taperopen_ ntape: 56, 1032.  11360 taper_ ntape: 62, 1048.  6003 tapew ntape: 64, ntape_equ: 14. 6001 tapewopen ntape: 58, ntape_equ: 12. 11340 tapewopen_ ntape: 59, 1023.  11360 tapew_ ntape: 65, 1048.  7224 tctable ntape: 226, 956.  7310 tlr ntape: 184, 185, 350, 357, 358, 378, 400, 412, 413, 414, 637, 640,  981, 1003.  1 tmp bosequ: 8. 1000 toelen bos_toequ: 135, 139, 140, 141, 142, 143, 144, 145.  31000 toesaved bos_toequ: 136. 6612 tpag1 ntape: 601, 613, 618, 621, 638, 641, 646. 7045 tpatt ntape: 753, 754, 768, 796.  6704 tpback ntape: 656, 675.  7021 tpbio ntape: 771, 781, 792. 7020 tpbio1 ntape: 752, 758, 759, 760, 761, 764, 765, 766, 767, 770, 782, 785, 794. 6706 tpbkl ntape: 678, 682.  7340 tpbuf ntape: 187, 188, 215, 217, 239, 242, 250, 265, 285, 299, 318, 519,  527, 531, 536, 542, 566, 582, 633, 667, 980, 985, 1015. 7037 tpburst ntape: 763, 789.  7176 tpburstsw ntape: 189, 193, 793, 929.  7202 tpchanno ntape: 99, 104, 933. 7066 tpcks_new ntape: 365, 643, 828. 7107 tpckx0 ntape: 829, 845.  7033 tpcompat ntape: 762, 784.  7175 tpcompatsw ntape: 500, 786, 928. 6617 tpcon ntape: 607, 614.  7220 tpcopyl ntape: 253, 254, 257, 267, 268, 544, 545, 548, 557, 558, 569, 949.  7204 tpct ntape: 499, 599, 601, 675, 935. 7257 tpddcw ntape: 989. 7023 tpdde ntape: 755, 774.  7030 tpdde1 ntape: 775, 780.  7256 tpdidcw ntape: 815, 901, 903, 988.  6777 tpdisp ntape: 750, 752.  2 tpdone ntape: 852, 857, 1060, ntape_equ: 25. 10 tpeot ntape: 336, ntape_equ: 23. 7174 tpeotsw ntape: 207, 360, 776, 818, 927. 7203 tperct ntape: 498, 597, 684, 685, 934. 6773 tperr ntape: 742, 747.  7217 tperrors ntape: 121, 771, 819, 948.  6042 tpet ntape: 113, 122.  7173 tpfin ntape: 114, 116, 328, 342, 817, 860, 926. 7270 tphisreg ntape: 716, 725, 737, 740, 805, 993.  6760 tpint ntape: 104, 733.  7200 tplen ntape: 235, 245, 282, 537, 559, 572, 931. 7201 tplenq ntape: 233, 547, 570, 887, 932. 7260 tpmyreg ntape: 717, 724, 738, 992.  7207 tpn ntape: 148, 154, 475, 481, 938. 7126 tpnd ntape: 858, 870.  7111 tpnextq ntape: 204, 510, 852, 871.  6536 tpnid ntape: 522, 531.  7124 tpnqx2 ntape: 863, 867.  7210 tpn_du ntape: 146, 152, 247, 249, 273, 294, 314, 473, 479, 494, 628, 939.  7211 tpn_x_36 ntape: 163, 490, 940. 7212 tpn_x_36_du ntape: 165, 276, 492, 941.  6646 tpok1 ntape: 629, 636.  7215 tpoldstatus ntape: 704, 706, 744, 945.  7244 tppcw ntape: 101, 370, 608, 812, 903, 975.  7114 tpqtest ntape: 199, 505, 856, 868.  6520 tpr0 ntape: 504, 511.  6414 tpr1600 ntape: 433, 436, 439. 6540 tpr2 ntape: 526, 536.  6426 tpr6250 ntape: 445, 448, 451. 6611 tpragn ntape: 599, 651, 655, 687.  6573 tprc0 ntape: 563, 572.  6543 tprcpy ntape: 542, 585.  6607 tprd ntape: 517, 577, 596. 6610 tprd1 ntape: 597, 689.  7206 tprecl ntape: 159, 486, 515, 627, 937. 6274 tpreot ntape: 327, 511, 520, 665, 668. 6754 tpret ntape: 340, 343, 373, 611, 723, 865, 906. 6366 tprew ntape: 331, 408, 440, 452, 821. 6376 tprewop ntape: 409, 416.  6313 tprewt ntape: 352, 376, 392. 6364 tprewun ntape: 334, 406.  6604 tprfatal ntape: 523, 529, 580, 589.  6457 tprgo ntape: 437, 449, 461, 468.  7252 tpridcw ntape: 608, 813, 983. 7253 tprlist ntape: 157, 484, 984. 6517 tprql ntape: 510, 573, 591. 6521 tprsl ntape: 515, 532.  7172 tprunning ntape: 339, 372, 610, 695, 713, 734, 864, 905, 925. 6745 tprunx2 ntape: 694, 705, 712. 6702 tprx2 ntape: 596, 671.  4 tpskip ntape: 870, ntape_equ: 24. 1 tpstat ntape: 589, 873, 874, 1064,  ntape_equ: 26. 7171 tpstate ntape: 718, 723, 739, 924.  6730 tpstatp ntape: 696, 703.  7214 tpstatus ntape: 703, 710, 743, 770, 796, 944.  7216 tptemp ntape: 227, 229, 243, 246, 583, 584, 947. 7222 tpuid ntape: 501, 502, 650, 661, 953. 6145 tpw0 ntape: 198, 205.  6157 tpw1 ntape: 213, 222.  6175 tpw3 ntape: 241, 286.  6347 tpwbad ntape: 375, 389.  6224 tpwc0 ntape: 255, 267.  6353 tpweof ntape: 196, 307, 323, 385, 396. 6241 tpweot ntape: 205, 208, 291. 6363 tpwex2 ntape: 396, 404.  7246 tpwidcw ntape: 370, 814, 978. 7247 tpwlist ntape: 156, 483, 979. 6144 tpwql ntape: 204, 274, 283. 6307 tpwrit ntape: 191, 279, 305, 320, 346. 6346 tpwx2 ntape: 346, 387.  7205 tpxrec ntape: 496, 654, 658, 688, 936. 577 ttychan bos_toequ: 141. 2017 ttychanno bos_common: 58. 12245 ttyinit bos_tv: 58. 2026 ttypmtsw bos_common: 65. 12200 tv_org bos_tv: 19, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,  32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43,  44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55,  56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67,  68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,  80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,  92, 93, 94, 95, 96. 12244 type bos_tv: 57. 2013 unitgroup bos_common: 54. 2002 useable bos_common: 46. 2001 used bos_common: 45. 2005 utilarea bos_common: 50. 12000 utilorg bosequ: 22, bos_tv: 12, 19.  12301 wantflt bos_tv: 86. 12212 wdev bos_tv: 31. 12235 wtsec bos_tv: 50. 12277 xio_wait bos_tv: 84. 4 xs1 ntape: 225, 264, 567, 881, 882, bosequ: 11. 5 xs2 bosequ: 12. NO FATAL ERRORS  ----------------------------------------------------------- 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