ASSEMBLY LISTING OF SEGMENT >spec>h>3.17>fd355.alm ASSEMBLED ON: 11/29/83 1522.1 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 " FD355 - Dump DataNet 355 Core Image into Dump Partition.  7 " Coded 5/73 by N. I. Morris & R. B. Snyder 8 " Modified 10/2/75 by Mike Grady to run multiple 355s  9  000000 10 name fd355 11  12  000000 0a 002322 7100 00 13 tra start Go to start of procedure.  14  15  16 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  17  18 include bos_common 2-1 "  2-2 " Begin include file ...... bos_common.incl.alm 2-3 " Modified on 8/31/76 by N. I. Morris  2-4 " Modified on 9/01/80 by Sherman D. Sprague for DPS8 operation  2-5 " Modified on 5/26/82 by Sherman D. Sprague to lengthen config size 2-6 " Modified on 3/01/83 by Sherman D. Sprague to lengthen dirlen  2-7 " MACHINE CONDITIONS AREA  2-8 " Its length is "storlen". 2-9  000000 2-10 equ amptwregs,0 Ass. Mem PTW registers  000100 2-11 equ amptwptr,64 Ass. Mem PTW pointers 000200 2-12 equ amsdwregs,128 Ass. Mem SDW registers  000400 2-13 equ amsdwptr,256 Ass. Mem SDW pointers  000500 2-14 equ ouhist,320 operations hist regs  000700 2-15 equ cuhist,448 control unit hist regs  001100 2-16 equ eishist,576 eis hist regs  001300 2-17 equ aphist,704 appending unit hist regs  001500 2-18 equ prs,832 pointer regs  001520 2-19 equ regs,848 sreg 001530 2-20 equ low_order_port,856 port to read clock from 001532 2-21 equ mctime,858 bootload memory clock  001540 2-22 equ scu,864  001550 2-23 equ mcm,872 memory masks 8 ports 001570 2-24 equ dbr,888  001572 2-25 equ intrpts,890 waiting interrupts 001573 2-26 equ bar,891 bar  001574 2-27 equ modereg,892 processor & cache mode registers  001576 2-28 equ faultreg,894 processor fault register  001600 2-29 equ ptrlen,896 pointer-lengths EIS 0 mod 8 001610 2-30 equ coreblocks,904 array of port information  2-31 " Bits 0-17 => num 1st 64-word block  2-32 " Bits 18-35 => num of 64-word blocks  2-33 " (-1) => no mem on this port  001620 2-34 equ lowport_cfg,912 Saved CFG from bootload SCU  2-35  002000 2-36 equ storlen,1024  2-37  2-38  2-39  2-40 " BOS COMMAND DIRECTORY 2-41 " Its length is "dirlen".  2-42  002000 2-43 equ dir,1024 ( 0-23) => sector # of first sector on BOS disk  2-44 " (24-35) => # of sectors in BOS common  002001 2-45 equ used,dir+1 ( 0-23) => # of next available sector on BOS disk  002002 2-46 equ useable,dir+2 ( 0-23) => first unavailable sector on BOS disk  002003 2-47 equ corearea,dir+3 ( 0-23) => starting sector of Multics core image  2-48 " (24-35) => # of sectors in Multics core image  002004 2-49 equ setuparea,dir+4 Sector and length of setup 002005 2-50 equ utilarea,dir+5 where utility package is kept  002010 2-51 equ iom_mxbase,dir+8 IOM IMW area address  002011 2-52 equ iom_mbbase,dir+9 IOM mailbox base  002012 2-53 equ bos_dvt,dir+10 BOS disk loc: (o3/iom,o6/chn,o9/drive,o18/devtype)  002013 2-54 equ unitgroup,dir+11 disk unitgroup (device no. or area no.)  002014 2-55 equ diskchanno,dir+12 channel to be used for disk  002015 2-56 equ tapechanno,dir+13 channel # for tapes  002016 2-57 equ rdrchanno,dir+14 channel number for card reader  002017 2-58 equ ttychanno,dir+15 channel # for operator's tty  002020 2-59 equ quietsw,dir+16 if on, don't print card and macro commands  002021 2-60 equ inputsw,dir+17 read from tty, cards, macros  002022 2-61 equ macroloc,dir+18 disk addr, buffer index of macro file  002023 2-62 equ fdump_state,dir+19 completion flag for last FDUMP  002024 2-63 equ d355_state,dir+20 = 1 if DataNet 355 loaded successfully  002025 2-64 equ skipsw,dir+21 if on, skip runcom lines 002026 2-65 equ ttypmtsw,dir+22 if on, prompt  002027 2-66 equ curtcmd,dir+23 current bos command 002030 2-67 equ readysw,dir+24 if on, print ready message  002032 2-68 equ cmdlst,dir+26 list of commands 2-69  000600 2-70 equ dirlen,384 2-71  2-72  2-73  2-74 " MACRO BUFFER AREA 2-75  002600 2-76 equ macrobuf,dir+dirlen io buffer for macro files 002700 2-77 equ macroline,macrobuf+64 runcom command line 002716 2-78 equ macroargs,macroline+14 argument descriptors for runcom  2-79  2-80  2-81  2-82 " CONFIGURATION CARD AREA  2-83 " Its length is 2048 words.  2-84  003000 2-85 equ conf,macrobuf+128 start of configuration info  007000 2-86 equ econf,conf+2048 end of configuration info  000020 2-87 equ confl,16 length of each line  2-88  2-89  007000 2-90 equ seg6length,econf length of bos_common area segment 2-91  2-92 " End of include file ...... bos_common.incl.alm  2-93  19  20 include fdmp  3-1 " 3-2 " Begin include file ...... fdmp.incl.alm  3-3 " Modified on 5/19/75 by Noel I. Morris 3-4 " Modified 11/75 by NIM for NSS 3-5 " Last modified by Sherman D. Sprague 02/11/81 for DPS8 support.  3-6 " These are the DUMP partition management routines. 3-7  3-8  3-9 " The format of the dump partition is given below. The header is one page  3-10 " long. The DataNet 355 dump is 16K long. The segment dumps  3-11 " may begin or end in the middle of a Multics page. They will always  3-12 " be dumped in muliples of sector-sized blocks. 3-13 "  3-14 " _____________________________________________________________ 3-15 " | |  3-16 " | HEADER |  3-17 " | |  3-18 " _|____________________________________________________________| 3-19 " | |  3-20 " | DataNet 355 CORE IMAGE | 3-21 " | |  3-22 " _|____________________________________________________________| 3-23 " | |  3-24 " | SEGMENT DUMP |  3-25 " | |  3-26 " . . .  3-27 " . . .  3-28 " . . .  3-29 " | |  3-30 " | SEGMENT DUMP |  3-31 " | |  3-32 " _|____________________________________________________________| 3-33  3-34  3-35 " The format of the header is:  3-36 "  3-37 " _____________________________________________________________ 3-38 " | |  3-39 " | HEADER INFO |  3-40 " | |  3-41 " _|____________________________________________________________| 3-42 " | |  3-43 " | SEGMENT ARRAY | 3-44 " | |  3-45 " _|____________________________________________________________| 3-46 " | |  3-47 " | FIRST PAGE OF BOS COMMON |  3-48 " | |  3-49 " _|____________________________________________________________| 3-50  3-51  3-52  3-53 " The segment array contains an entry for each segment dumped. Each entry is  3-54 " one word.  3-55  3-56 " Format of segment array entry:  3-57  3-58 " _____________________________________________________________ 3-59 " | 0 | 18 |  3-60 " | SEGMENT NUMBER | NUM SECTORS DUMPED |  3-61 " | | | 3-62 " _|______________________________|______________________________|  3-63  3-64  3-65  3-66  002000 3-67 equ page_size,1024 Number of words in a page. 000012 3-68 equ page_power,10 Page size as a power of 2. 3-69  000100 3-70 equ sector_size,64 Size of a secondary storage sector.  000006 3-71 equ sector_power,6 This size as a power of 2. 3-72  3-73 " Number of sector size blocks in a page.  000020 3-74 equ num_sectors_page,page_size/sector_size 3-75  002000 3-76 equ dmpbufl,page_size Size of the apnd buffer.  3-77  3-78 " 3-79 " The FDUMP header follows. It contains three parts. The first contains  3-80 " header information. The second is the segment array which contains  3-81 " an entry for each segment dumped. The third is the machine condition 3-82 " which is a copy of the first part of BOS common. The header is written  3-83 " into the first record of the DUMP partition.  3-84  004000 3-85 equ hdr_lth,2048 length of entire header  000020 3-86 equ hdr_sects,(hdr_lth-storlen)/sector_size # of sectors in first two parts of header  200000 3-87 equ d355_lth,16384*4 length of four DataNet 355 core images  3-88  000001 aa 000000 0110 03 3-89 mod 16 000002 aa 000000 0110 03 000003 aa 000000 0110 03 000004 aa 000000 0110 03 000005 aa 000000 0110 03 000006 aa 000000 0110 03 000007 aa 000000 0110 03 000010 aa 000000 0110 03 000011 aa 000000 0110 03 000012 aa 000000 0110 03 000013 aa 000000 0110 03 000014 aa 000000 0110 03 000015 aa 000000 0110 03 000016 aa 000000 0110 03 000017 aa 000000 0110 03 3-90  3-91 " This is part one of the header. It is the information section. It must not be longer  3-92 " than 16 words.  3-93  000020 3-94 header: 3-95  000020 3-96 hdr.words_dumped:  000020 aa 000000 000000 3-97 oct 0 number of words in dump image  3-98  000021 3-99 hdr.valid:  000021 aa 000000 000000 3-100 oct 0 Flag denoting whether or not the dump has been processed.  3-101 " 0 => that it has.  3-102 even  000022 3-103 hdr.time:  000022 aa 000000 000000 3-104 oct 0,0 Time of the dump.  000023 aa 000000 000000 3-105  000024 3-106 hdr.erfnum: 000024 aa 000000 000000 3-107 oct 0 Error Report Form Number.  3-108  000025 3-109 hdr.num_segs:  000025 aa 000000 000000 3-110 oct 0 Number of segments dumped.  3-111  000026 3-112 hdr.d355_valid: 000026 aa 000000 000000 3-113 oct 0 Flag denoting whether or not 355 dump has been processed.  3-114  000027 3-115 hdr.which_355:  000027 aa 000000 000000 3-116 oct 0 4 bit flag indicating which 355s were dumped.  3-117  3-118 even  000030 3-119 hdr.d355_time:  000030 aa 000000 000000 3-120 oct 0,0 Time DataNet 355 dump was taken.  000031 aa 000000 000000 3-121  000032 3-122 hdr.version:  000032 aa 000000 000002 3-123 dec 2 FDUMP version #  3-124  3-125  3-126 " Next is part two of the header - the segment array. It must begin at word 16 of 3-127 " the header.  3-128  000033 aa 000000 0110 03 3-129 mod 16 000034 aa 000000 0110 03 000035 aa 000000 0110 03 000036 aa 000000 0110 03 000037 aa 000000 0110 03 3-130  001760 3-131 equ seg_array_size,header+hdr_lth-*-storlen size of segment array  000040 3-132 hdr.seg_array:  000040 3-133 bss seg_array,seg_array_size  3-134  3-135 " 3-136  3-137 " FDMP_READ_HEADER - Initialize variables and read the dump header. 3-138 "  3-139 " tsx2 fdmp_read_header 3-140 " arg q = 0 => fdump  3-141 " = 1 => fd355  3-142 " tra error 3-143  002020 3-144 fdmp_read_header:  002020 aa 000000 2350 32 3-145 lda 0,2* grab argument  002021 0a 002321 7550 00 3-146 sta fdmp_switch save for later checks  002022 aa 000001 6220 12 3-147 eax2 1,2 step over argument  002023 0a 002156 7420 00 3-148 stx2 fdx2 save return 3-149  3-150 " Get limits of dump partition from PART DUMP card. 3-151  002024 0a 004642 2350 00 3-152 lda =adump Find dump partition.  002025 aa 012307 7020 00 3-153 tsx2 find_part .. 002026 0a 002307 0000 00 3-154 arg devt Fill in device type. 002027 0a 002276 7100 00 3-155 tra fdmp_erret 002030 0a 002304 7550 00 3-156 sta first_rnum Save first record number.  002031 0a 002304 0760 00 3-157 adq first_rnum Compute last record number. 002032 0a 002306 7560 00 3-158 stq last_rnum And save.  3-159  3-160 " Now read in the first sector of the current dump header. We must check to  3-161 " see if there is still a valid dump out there. 3-162  002033 0a 002304 2350 00 3-163 lda first_rnum Get num of first record in partition.  002034 aa 012216 7020 00 3-164 tsx2 mulbos Convert Multics device address to BOS address.  002035 0a 002307 0000 00 3-165 arg devt Device ID.  002036 0a 002255 7100 00 3-166 tra error_config_card Error implies config card contained error.  3-167  002037 0a 002314 7550 00 3-168 sta head_sectn_nsect Save sector number of first page of partition.  002040 0a 004643 3750 00 3-169 ana =o777777770000 Zero out sector count field.  002041 aa 000020 2750 07 3-170 ora hdr_sects,dl Insert number of sectors to read. 3-171  002042 aa 012211 7020 00 3-172 tsx2 rdev Read in the header. 002043 0a 002307 0000 00 3-173 arg devt  002044 aa 3 00020 0111 00 3-174 nop pgm|header 002045 0a 002266 7100 00 3-175 tra error_io  3-176  3-177 " 3-178  3-179 " The header is now in core. Test the flags which indicate whether or not  3-180 " the dump has been processed. Compute new ERF number. 3-181  002046 0a 002156 2220 00 3-182 ldx2 fdx2 restore X2  002047 0a 002321 2340 00 3-183 szn fdmp_switch fdmp or fd355? 002050 0a 002053 6010 00 3-184 tnz *+3 TRA if fd355  002051 0a 000021 2340 00 3-185 szn hdr.valid Has previous fdump been picked up?  002052 0a 002054 7100 00 3-186 tra *+2  002053 0a 000026 2340 00 3-187 szn hdr.d355_valid Has previous fd355 been picked up?  002054 0a 002111 6000 00 3-188 tze steperf If so, go to step ERF #  3-189  002055 aa 012241 7020 00 3-190 tsx2 erpt Tell operator about situation.  002056 aa 057 160 162 145 3-191 acc 'previous dump (erf # ^d) has not been picked up'  002057 aa 166 151 157 165 002060 aa 163 040 144 165 002061 aa 155 160 040 050 002062 aa 145 162 146 040 002063 aa 043 040 136 144 002064 aa 051 040 150 141 002065 aa 163 040 156 157 002066 aa 164 040 142 145 002067 aa 145 156 040 160 002070 aa 151 143 153 145 002071 aa 144 040 165 160 002072 0a 000024 0000 00 3-192 arg hdr.erfnum 3-193  002073 aa 012241 7020 00 3-194 tsx2 erpt Ask him what to do. 002074 aa 030 163 150 157 3-195 acc 'should it be overwritten' 002075 aa 165 154 144 040 002076 aa 151 164 040 142 002077 aa 145 040 157 166 002100 aa 145 162 167 162 002101 aa 151 164 164 145 002102 aa 156 000 000 000 3-196  002103 aa 012247 7020 00 3-197 tsx2 readtty Read answer: either "yes or "no".  002104 0a 002103 7100 00 3-198 tra *-1 Keep reading until we get answer. 3-199  002105 aa 012200 7020 00 3-200 tsx2 scan scan the input line 002106 aa 012040 2350 00 3-201 lda arg and grab first argument  002107 0a 004644 1150 00 3-202 cmpa =h yes Is it "yes"?  002110 0a 002276 6010 00 3-203 tnz fdmp_erret No, it is "no". Just return 3-204  002111 0a 000021 2350 00 3-205 steperf: lda hdr.valid Has ERF # been incremented? 002112 0a 000026 2750 00 3-206 ora hdr.d355_valid ..  002113 0a 002115 6010 00 3-207 tnz *+2 If not,  002114 0a 000024 0540 00 3-208 aos hdr.erfnum increment it now.  3-209  002115 0a 002156 2220 00 3-210 fdrhrtn: ldx2 fdx2 restore X2  002116 aa 000001 7100 12 3-211 tra 1,2 and return  3-212  3-213 " 3-214  3-215 " FDMP_WRITE_DATA - Write blocks of data into the dump parition.  3-216 "  3-217 " eax7 no_sectors number of sectors to be written  3-218 " tsx2 fdmp_write_data  3-219 " tra error 3-220 " stx7 no_sectors_written  3-221 "  3-222  002117 3-223 fdmp_write_data:  002117 0a 002156 7420 00 3-224 stx2 fdx2 Save return address.  002120 0a 002157 7400 00 3-225 stx0 fdx0 Save X0.  002121 0a 002453 6200 00 3-226 eax0 fdmp_buff X0 points to beginning of buffer.  002122 0a 002317 4500 00 3-227 stz num_sectors_written clear number of sectors written this call  3-228  002123 aa 000000 6350 17 3-229 eaa 0,7 sector count in AU  002124 aa 000022 7710 00 3-230 arl 18 shift to AL  3-231  002125 3-232 write_next: 002125 0a 002316 4500 00 3-233 stz num_ovfl_sects Initialize sector overflow count.  002126 0a 002310 7510 03 3-234 stca sectn_nsect,03 Initially assume that this is the number of  3-235 " sectors that will be written.  3-236  002127 0a 002315 0350 00 3-237 adla num_sectors Add to number of sectors from start of record.  002130 aa 000020 1350 07 3-238 sbla num_sectors_page,dl Are we crossing a Multics record boundary?  002131 0a 002140 6044 00 3-239 tmoz write Tra if NO. Info will fit into this record.  3-240  3-241  3-242 " We have encountered a Multics record boundary. Not all of the data we must write 3-243 " can be written with one call to "wdev". We will fill out this Multics record and 3-244 " then compute the physical location of the next Multics record. We will iterate  3-245 " to write out the remaining data.  3-246  002132 0a 002316 7550 00 3-247 sta num_ovfl_sects Save number of sectors which overflow record boundary.  3-248  002133 0a 002310 2350 00 3-249 lda sectn_nsect Get total number of sectors to write.  002134 aa 007777 3750 07 3-250 ana =o7777,dl ..  002135 0a 002316 1350 00 3-251 sbla num_ovfl_sects Get number that can be written into current record.  002136 0a 002310 7510 03 3-252 stca sectn_nsect,03 Set number to be written in this call in device  3-253 " data word. 002137 0a 002162 6000 00 3-254 tze set_next_write If none, skip this write.  3-255  3-256  3-257 " We can now write into the current record without fear of crossing a  3-258 " cylinder boundary.  3-259  002140 0a 002313 7400 00 3-260 write: stx0 buff_ptr+1 Set offset of data in ITS pointer.  002141 0a 002310 2350 00 3-261 lda sectn_nsect Get num of 1st sector and num of sectors.  002142 aa 012212 7020 00 3-262 tsx2 wdev  002143 0a 002307 0000 00 3-263 arg devt  002144 aa 3 02312 0111 20 3-264 nop pgm|buff_ptr,* 002145 0a 002266 7100 00 3-265 tra error_io  3-266  3-267  3-268 " Now that we have written the data we must update the first sector number in the device data  3-269 " word (sectn_nsect) and we must increment the number of sectors dumped for this segment. 3-270  002146 0a 002310 2350 00 3-271 lda sectn_nsect Get number of sectors written. 002147 aa 007777 3750 07 3-272 ana =o7777,dl mask  002150 0a 002317 0550 00 3-273 asa num_sectors_written Add to number of sectors written for this segment. 002151 0a 002315 0550 00 3-274 asa num_sectors Add to sector within page. 002152 aa 000014 7350 00 3-275 als 12 shift to sector address position  002153 0a 002310 0550 00 3-276 asa sectn_nsect Add to number of first sector to write.  3-277  002154 0a 002316 2340 00 3-278 szn num_ovfl_sects Are there any overflow sectors? 002155 0a 002162 6010 00 3-279 tnz set_next_write If so, compute next device address. 3-280  3-281  3-282 " No overflow sectors so return.  3-283  002156 0a 002156 6220 00 3-284 fdx2: eax2 * Restore return address.  002157 0a 002157 6200 00 3-285 fdx0: eax0 * Restore X0.  002160 0a 002317 7270 00 3-286 lxl7 num_sectors_written Return the number of sectors written this call.  002161 aa 000001 7100 12 3-287 tra 1,2 Return.  3-288  3-289  3-290  3-291 " We come here when we hit a Multics record boundary. We recompute the physical address  3-292 " for the next Multics record in case we are crossing a disk cylinder boundary. 3-293  002162 3-294 set_next_write: 002162 0a 002305 2350 00 3-295 lda next_rnum Get number of the 1st record of the new area.  002163 0a 002306 1150 00 3-296 cmpa last_rnum Are we at the end of the dump partition?  002164 0a 002242 6050 00 3-297 tpl error_out_of_part Tra if YES. 3-298  002165 aa 012216 7020 00 3-299 tsx2 mulbos NO, get 1st sector number and device number  002166 0a 002307 0000 00 3-300 arg devt for this area.  002167 0a 002255 7100 00 3-301 tra error_config_card  002170 0a 002310 7510 74 3-302 stca sectn_nsect,74 Save first sector number.  3-303  002171 0a 002315 4500 00 3-304 stz num_sectors Set sector number within record back to zero.  002172 0a 002305 0540 00 3-305 aos next_rnum Step next record number.  3-306  002173 0a 002310 2360 00 3-307 ldq sectn_nsect Get number of sectors written previously.  002174 aa 007777 3760 07 3-308 anq =o7777,dl Mask out the sector number. 002175 aa 000030 7360 00 3-309 qls sector_power+18 Compute number of words written  002176 0a 002320 7560 00 3-310 stq fdtemp Store number of words written  002177 0a 002320 0600 00 3-311 adx0 fdtemp Bump the offset.  3-312  002200 0a 002316 2350 00 3-313 lda num_ovfl_sects Number of sectors remaining to be written in X7.  002201 0a 002125 7100 00 3-314 tra write_next Write out remaining information.  3-315  3-316  3-317 "  3-318  3-319 " FDMP_WRITE_HEADER - Write out the header. If fdump, write out machine conditions, too.  3-320 "  3-321 " tsx2 fdmp_write_header  3-322 " tra error 3-323 "  3-324  002202 3-325 fdmp_write_header:  002202 0a 002156 7420 00 3-326 stx2 fdx2 save X2 3-327  002203 aa 000002 2350 07 3-328 lda 2,dl set FDUMP version number 002204 0a 000032 7550 00 3-329 sta hdr.version .. 3-330  3-331  3-332 " Write the first part of header. Device addresses were saved from when first sector of  3-333 " the header was read.  3-334  002205 0a 002314 2350 00 3-335 lda head_sectn_nsect Get header device data word.  002206 0a 004643 3750 00 3-336 ana =o777777770000 Mask out the length.  002207 aa 000020 2750 07 3-337 ora hdr_sects,dl Insert number of sectors to write.  002210 aa 012212 7020 00 3-338 tsx2 wdev Write first page of header. 002211 0a 002307 0000 00 3-339 arg devt  002212 aa 3 00020 0111 00 3-340 nop pgm|header 002213 0a 002266 7100 00 3-341 tra error_io  3-342  3-343  3-344 " Now we will write the rest of of the header directly from BOS common.  3-345  002214 0a 002321 2340 00 3-346 szn fdmp_switch is this fdump? 002215 0a 002226 6010 00 3-347 tnz fdwhrtn if not, just return  3-348  002216 0a 002314 2350 00 3-349 lda head_sectn_nsect Get disk address of header again  002217 0a 004645 0350 00 3-350 adla =v24/hdr_sects Increment address by length of header  002220 0a 004643 3750 00 3-351 ana =o777777770000 Mask out the sector count.  002221 aa 000000 2750 07 3-352 ora num_sectors_page-hdr_sects,dl Fill out the rest of a page. 002222 aa 012212 7020 00 3-353 tsx2 wdev Write BOS common.  002223 0a 002307 0000 00 3-354 arg devt  002224 aa 6 00000 0111 00 3-355 nop com|0  002225 0a 002266 7100 00 3-356 tra error_io  3-357  002226 0a 002156 2220 00 3-358 fdwhrtn: ldx2 fdx2 restore X2  002227 aa 000001 7100 12 3-359 tra 1,2 and return  3-360  3-361  3-362 " 3-363  002230 3-364 err_no_records: 002230 aa 012241 7020 00 3-365 tsx2 erpt  002231 aa 034 156 157 040 3-366 acc 'no records in dump partition' 002232 aa 162 145 143 157 002233 aa 162 144 163 040 002234 aa 151 156 040 144 002235 aa 165 155 160 040 002236 aa 160 141 162 164 002237 aa 151 164 151 157 002240 aa 156 000 000 000 002241 0a 002276 7100 00 3-367 tra fdmp_erret 3-368  3-369  002242 3-370 error_out_of_part:  002242 aa 012241 7020 00 3-371 tsx2 erpt  002243 aa 042 144 165 155 3-372 acc 'dump is larger than dump partition'  002244 aa 160 040 151 163 002245 aa 040 154 141 162 002246 aa 147 145 162 040 002247 aa 164 150 141 156 002250 aa 040 144 165 155 002251 aa 160 040 160 141 002252 aa 162 164 151 164 002253 aa 151 157 156 000 002254 0a 002276 7100 00 3-373 tra fdmp_erret 3-374  3-375  002255 3-376 error_config_card:  002255 aa 012241 7020 00 3-377 tsx2 erpt  002256 aa 033 142 141 144 3-378 acc 'bad dump configuration card'  002257 aa 040 144 165 155 002260 aa 160 040 143 157 002261 aa 156 146 151 147 002262 aa 165 162 141 164 002263 aa 151 157 156 040 002264 aa 143 141 162 144 002265 0a 002276 7100 00 3-379 tra fdmp_erret 3-380  3-381  002266 3-382 error_io:  002266 aa 012241 7020 00 3-383 tsx2 erpt  002267 aa 030 146 141 164 3-384 acc 'fatal i/o error in fdump' 002270 aa 141 154 040 151 002271 aa 057 157 040 145 002272 aa 162 162 157 162 002273 aa 040 151 156 040 002274 aa 146 144 165 155 002275 aa 160 000 000 000 002276 3-385 fdmp_erret: 002276 aa 6 02021 2351 00 3-386 lda com|inputsw Cause next input to come from tty. 002277 aa 000006 7710 00 3-387 arl 6 ..  002300 aa 6 02021 7551 00 3-388 sta com|inputsw .. 002301 0a 002156 2220 00 3-389 ldx2 fdx2 Restore X2. 002302 0a 002317 7270 00 3-390 lxl7 num_sectors_written Return number written successfully.  002303 aa 000000 7100 12 3-391 tra 0,2 Take error return.  3-392  3-393  3-394 " 3-395  3-396 " The following three words are used to keep track of record numbers in the 3-397 " dump partition.  3-398  002304 3-399 first_rnum: 002304 3-400 bss ,1 Num of the first record in the dump partition. 002305 3-401 next_rnum:  002305 3-402 bss ,1 Num of the next record in the dump partition. 002306 3-403 last_rnum:  002306 3-404 bss ,1 Num of the last record in the dump partition. 3-405  3-406  3-407  3-408 " The following words are used when reading or writing the FDUMP header  3-409 " or when writing a page of a segment dump.  3-410  002307 3-411 devt: bss ,1 Device ID.  3-412  002310 3-413 sectn_nsect:  002310 3-414 bss ,1 Device data word. (0-23) = num of 1st sector. 3-415 " (24-35) = number of sectors.  3-416  002311 aa 000000 0110 03 3-417 even  002312 aa 000003 000043 3-418 buff_ptr: its pgm,0 Pointer to data to be written. 002313 aa 000000 000000 3-419  002314 3-420 head_sectn_nsect:  002314 3-421 bss ,1 Device data word for first page of header. 3-422  002315 3-423 num_sectors:  002315 aa 000000 000020 3-424 zero 0,num_sectors_page  3-425  002316 3-426 num_ovfl_sects: 002316 3-427 bss ,1 Number of sectors that overflow the write area.  3-428  002317 3-429 num_sectors_written:  002317 3-430 bss ,1 # of sectors written in this call  3-431 " to fdmp_write_data 3-432  002320 3-433 fdtemp: bss ,1  3-434  002321 3-435 fdmp_switch:  002321 3-436 bss ,1 = 0 => fdump  3-437 " = 1 => fd355  3-438  3-439  3-440  3-441 " End of include file ...... fdmp.incl.alm  3-442  21  22 " 23 " This is the start of the FD355 program.  24  002322 25 start:  002322 0a 002434 7420 00 26 stx2 X2 save return address  27  002323 aa 012300 7020 00 28 tsx2 initint Initialize interrupts and faults.  002324 0a 002434 0000 00 29 arg X2 Return point for execute fault.  30  002325 aa 012271 7020 00 31 tsx2 init_io Initialize I/O package.  32  002326 aa 012245 7020 00 33 tsx2 ttyinit Initialize operator's console.  002327 0a 002434 0000 00 34 arg X2 Return point for REQUEST button.  35  002330 aa 012210 7020 00 36 tsx2 cvinit Initialize device address conversion  37  38 " Initialize the fdump package and read in header.  39  002331 0a 002020 7020 00 40 tsx2 fdmp_read_header  002332 0a 004646 0000 00 41 arg =1 002333 0a 002437 7100 00 42 tra fd355_error  43  002334 aa 000001 3350 07 44 lca 1,dl Set valid flag to indicate  002335 0a 000026 7550 00 45 sta hdr.d355_valid dump not processed. 46  002336 aa 000040 4130 00 47 rscr 4*8 Set time of this dump.  002337 0a 000030 7570 00 48 staq hdr.d355_time 49  002340 0a 002304 2350 00 50 lda first_rnum get first record of dump partition  002341 aa 000002 0350 07 51 adla (hdr_lth+page_size-1)/page_size,dl add # of records in header 002342 0a 002305 7550 00 52 sta next_rnum set next record for dumping 002343 aa 000100 0350 07 53 adla (d355_lth+page_size-1)/page_size,dl add # of records in dump  002344 0a 002306 7550 00 54 sta last_rnum set limit for d355 dump image  55  002345 0a 000027 4500 00 56 stz hdr.which_355 indicate no 355s dumped yet. 57  58  59 " Print message to operator.  60  002346 aa 012241 7020 00 61 tsx2 erpt  002347 aa 026 145 162 162 62 acc 'error report form # ^d'  002350 aa 157 162 040 162 002351 aa 145 160 157 162 002352 aa 164 040 146 157 002353 aa 162 155 040 043 002354 aa 040 136 144 000 002355 0a 000024 0000 00 63 arg hdr.erfnum 64 " 65  66 " The follwoing code reads 1024 36 bit words at a time from 67 " the Datanet-355 and calls a subroutine to put this data on disk  68 " in the dump partition.  69  002356 70 dump_355_loop:  002356 0a 004454 0540 00 71 aos which_355 increment 355 number  002357 0a 004454 2350 00 72 lda which_355 get number  002360 0a 004534 7020 00 73 tsx2 conf355 get config info  002361 0a 002427 7100 00 74 tra done none, next pls  75  002362 0a 004454 2360 00 76 ldq which_355 get number  002363 aa 000001 1760 07 77 sbq 1,dl get offset  002364 aa 000020 4020 07 78 mpy 16,dl into dump for this one  002365 0a 004453 7560 00 79 stq dump_offset save it  80  002366 0a 004454 2360 00 81 ldq which_355 get 355 number again  002367 aa 000001 1760 07 82 sbq 1,dl get 355 offset  002370 aa 400000 2350 03 83 lda =o400000,du get a bit  002371 aa 000000 7710 06 84 arl 0,ql shift into correct position  002372 0a 000027 2550 00 85 orsa hdr.which_355 set in hdr  86  002373 0a 002304 2350 00 87 lda first_rnum get first record to write into  002374 aa 000002 0350 07 88 adla (hdr_lth+page_size-1)/page_size,dl bump up to next page  002375 0a 004453 0350 00 89 adla dump_offset add in offset 002376 0a 002305 7550 00 90 sta next_rnum next place to write 91  002377 aa 000000 2260 03 92 ldx6 0,du zero addr of next to dump  002400 0a 002404 7460 00 93 stx6 dn355_addr (upper half of word only)  002401 0a 002451 4500 00 94 stz reread_sw not rereading now  95  002402 96 read_355_loop:  002402 0a 004455 7020 00 97 tsx2 read_355_words read data from 355 002403 0a 002452 0000 00 98 arg indword into buffer following indword 002404 99 dn355_addr: 002404 aa 000000 002000 100 zero 0,page_size Upper half of this word gets modified.  101  002405 aa 000020 6270 00 102 eax7 page_size/sector_size tell subroutine to write 16 64 word blocks  002406 0a 002117 7020 00 103 tsx2 fdmp_write_data do it 002407 0a 002437 7100 00 104 tra fd355_error  105  002410 0a 002451 2340 00 106 szn reread_sw is this the final re-read?  002411 0a 002427 6010 00 107 tnz done yes, all done  108  002412 0a 002404 2260 00 109 ldx6 dn355_addr get DataNet 355 address  002413 aa 004000 6260 16 110 eax6 page_size*2,6 step to next block of core  002414 0a 002404 7460 00 111 stx6 dn355_addr and replace address  002415 aa 100000 1060 03 112 cmpx6 32768,du are we finished?  002416 0a 002402 6040 00 113 tmi read_355_loop if not, loop 114  115 " Now setup to re-read the first 1024 words. This is  116 " done so that we get a good copy of the common region  117 " which is used to find the trace table. This is  118 " really only required if we are dumping a running  119 " 355, but who knows if its still running.  120  002417 0a 002451 5540 00 121 stc1 reread_sw make the switch non-zero  002420 aa 000000 2260 03 122 ldx6 0,du set address to zero 002421 0a 002404 7460 00 123 stx6 dn355_addr update the address 124  002422 0a 002304 2350 00 125 lda first_rnum get the address of the first disk record  002423 aa 000002 0350 07 126 adla (hdr_lth+page_size-1)/page_size,dl add in size of header  002424 0a 004453 0350 00 127 adla dump_offset add in offset 002425 0a 002305 7550 00 128 sta next_rnum set next address to write the data  129  002426 0a 002402 7100 00 130 tra read_355_loop  131  002427 132 done:  002427 0a 004454 2350 00 133 lda which_355 check which one that was  002430 aa 000004 1150 07 134 cmpa max_no_355s,dl last one?  002431 0a 002356 6010 00 135 tnz dump_355_loop no, loop 136  002432 0a 002202 7020 00 137 tsx2 fdmp_write_header Write out the header now.  002433 0a 002437 7100 00 138 tra fd355_error  139  002434 0a 002434 6220 00 140 X2: eax2 * Restore X2. 002435 aa 000001 3350 07 141 lca 1,dl No next command. 002436 aa 7 00001 7101 12 142 tra mem|1,2 Return to BOS main control.  143  144  002437 145 fd355_error:  002437 aa 012241 7020 00 146 tsx2 erpt  002440 aa 037 145 162 162 147 acc 'error return from fdump package'  002441 aa 157 162 040 162 002442 aa 145 164 165 162 002443 aa 156 040 146 162 002444 aa 157 155 040 146 002445 aa 144 165 155 160 002446 aa 040 160 141 143 002447 aa 153 141 147 145 002450 0a 002434 7100 00 148 tra X2 149  150  002451 151 reread_sw:  002451 aa 000000 000000 152 oct 0  153  154  002452 aa 000000 000000 155 indword: oct 0  002453 156 fdmp_buff:  002453 157 bss ,page_size 158  004453 159 dump_offset:  004453 aa 000000 000000 160 oct 0  004454 161 which_355:  004454 aa 000000 000000 162 oct 0  000004 163 equ max_no_355s,4  164  165  166 include rd355  4-1 " 4-2 " Begin include file ...... rd355.incl.alm  4-3 " Modified April, 1981, by Charlie Hornig, to move the 355 mailboxes  4-4  4-5  003400 4-6 bool dn355mbx,3400 location of DataNet 355 mailbox 040000 4-7 bool bit22,040000 bit 22 - parity bit for PCW  000075 4-8 bool dump,000075 dump op-code for DIA  4-9  4-10 " 4-11 " READ_355_WORDS - Read a number of words from DataNet 355. 4-12 "  4-13 " tsx2 read_355_words  4-14 " arg indword must be followed by data buffer  4-15 " zero 355_address,no_36bit_words  4-16  004455 4-17 read_355_words: 004455 0a 004517 7420 00 4-18 stx2 r3exit save return point 4-19  004456 aa 000000 2120 32 4-20 absa 0,2* get location of indword 004457 aa 000006 7350 00 4-21 als 6 in AU  004460 aa 000075 2750 07 4-22 ora dump,dl OR in dump op-code  004461 0a 004523 7020 00 4-23 tsx2 parity get parity on PCW 004462 0a 004637 2360 00 4-24 ldq mbx_offset get offset of this mbx  004463 aa 7 03400 7551 06 4-25 sta mem|dn355mbx,ql put PCW in 355 mailbox 4-26  004464 0a 004517 2220 00 4-27 ldx2 r3exit restore X2  004465 aa 000001 2350 12 4-28 lda 1,2 get 355 location and count  004466 aa 100000 2750 03 4-29 ora =o100000,du set 36-bit transfer mode  004467 aa 000000 7550 32 4-30 sta 0,2* store in indword 4-31  004470 0a 004632 2360 00 4-32 ldq iom_chan get channel number  004471 aa 000014 2350 07 4-33 lda 4*3,dl get interrupt cell number  004472 aa 000040 1160 07 4-34 cmpq 32,dl check the channel number  004473 0a 004475 6040 00 4-35 tmi *+2 all ok, continue  004474 aa 000004 1750 07 4-36 sba 4,dl fix the interrupt cell number  004475 0a 004633 0750 00 4-37 ada iom_no add in the iom number  004476 aa 6 02010 6351 65 4-38 eaa com|iom_mxbase,*al add in mbx base addr  004477 0a 004522 7550 00 4-39 sta norm_int_cell save it away 4-40  004500 aa 000037 3760 07 4-41 anq 31,dl get channel number mod 32  004501 aa 400000 2350 03 4-42 lda =o400000,du get a bit  004502 aa 000000 7710 06 4-43 arl 0,ql move the bit 004503 0a 004521 7550 00 4-44 sta intbit save the bit  4-45  004504 0a 004522 2270 00 4-46 ldx7 norm_int_cell point to cells  004505 aa 7 00000 4501 17 4-47 stz mem|0,7 clear all pending interrupts  004506 aa 7 00020 4501 17 4-48 stz mem|16,7 also for emergency  4-49  004507 aa 012272 7020 00 4-50 tsx2 connect_iom  004510 0a 004626 000000 4-51 zero diapcw,0 connect to dia via iom  4-52  004511 0a 004522 2270 00 4-53 ldx7 norm_int_cell get addr of int cell  004512 4-54 wait_for_int:  004512 0a 004521 2350 00 4-55 lda intbit look for interrupt 004513 aa 7 00000 3151 17 4-56 cana mem|0,7 is this it?  004514 0a 004517 6010 00 4-57 tnz r3exit yes, done  004515 aa 7 00020 3151 17 4-58 cana mem|16,7 no, was it emergency-level? 004516 0a 004512 6000 00 4-59 tze wait_for_int nope, loop for more  4-60  004517 0a 004517 6220 00 4-61 r3exit: eax2 * restore return addr 004520 aa 000002 7100 12 4-62 tra 2,2 return  4-63  004521 aa 000000 000000 4-64 intbit: oct 0  004522 4-65 norm_int_cell:  004522 aa 000000 000000 4-66 oct 0  4-67 " 4-68 " Subroutine to calculate parity on ica pcw. Enter with A reg  4-69 " holding word on which parity is to be calculated. Returns the word  4-70 " in the A-reg with parity bit set. 4-71  004523 4-72 parity: null  004523 0a 004533 7550 00 4-73 sta atemp save input word 004524 aa 000000 7740 00 4-74 gtb 0 calculate parity  004525 aa 000001 3750 07 4-75 ana 1,dl test for odd or even 004526 aa 000003 6010 04 4-76 tnz 3,ic odd  004527 aa 040000 2350 07 4-77 lda bit22,dl even..set parity bit 004530 0a 004533 2550 00 4-78 orsa atemp .. 004531 0a 004533 2350 00 4-79 lda atemp get pcw again  004532 aa 000000 7100 12 4-80 tra 0,2 return  4-81  004533 4-82 bss atemp,1 temp storage  4-83  4-84 " End of include file ...... rd355.incl.alm 4-85  167  168 include conf355  5-1 "  5-2 " Begin include file ... conf355.incl.alm  5-3 "  5-4 "  5-5 " This subroutine will look for a datanet 355 configuration card and  5-6 " will extract the necessary information from it. There are three  5-7 " required fields on the d355 card. These are 355 tag(A-D), channel 5-8 " number(1-64), and iom tag(A-B). The iom tag is converted to an  5-9 " iom number. The calling sequence of this routine is:  5-10 "  5-11 " lda which_355  5-12 " tsx2 conf355 5-13 " tra error routine  5-14 " next instruction 5-15 "  5-16 "  5-17 "  004534 5-18 conf355: null  004534 0a 004635 7550 00 5-19 sta conf355n save which 355 we want config for  004535 0a 004634 7420 00 5-20 stx2 confx2 save return address  004536 aa 000044 7730 00 5-21 lrl 36 355 tag in Q  004537 0a 004640 2350 00 5-22 lda srcharg get search arg "d355" 004540 aa 012264 7020 00 5-23 tsx2 getconf search config data  004541 0a 004565 7100 00 5-24 tra conferr tra if not found  004542 aa 6 00001 1161 17 5-25 cmpq com|1,7 test 355 number  004543 aa 012265 6010 00 5-26 tnz getmore if not the one, try again 5-27  004544 aa 6 00002 2351 17 5-28 lda com|2,7 get iom tag field 004545 0a 004605 6040 00 5-29 tmi badiom none, error  004546 aa 000001 1750 07 5-30 sba 1,dl convert to iom number  004547 0a 004633 7550 00 5-31 sta iom_no save it  004550 aa 000006 7350 00 5-32 als 6 make room for channel number  004551 aa 6 00003 0751 17 5-33 ada com|3,7 get channel no  004552 0a 004603 6040 00 5-34 tmi badchan error check  004553 0a 004632 7510 01 5-35 stca iom_chan,01 store for connect 004554 aa 000033 7350 00 5-36 als 36-9 create a pcw 004555 0a 004627 7550 00 5-37 sta diapcw+1 ..  004556 0a 004631 7550 00 5-38 sta maskpcw+1 set up a mask pcw too  5-39  004557 0a 004635 2360 00 5-40 ldq conf355n get number  004560 aa 000001 1760 07 5-41 sbq 1,dl relative to zero 004561 aa 000300 4020 07 5-42 mpy 192,dl get mbx_offset 004562 0a 004637 7560 00 5-43 stq mbx_offset for later  5-44  004563 0a 004634 2220 00 5-45 ldx2 confx2 retrieve return address  004564 aa 000001 7100 12 5-46 tra 1,2 return  5-47  5-48  004565 0a 004636 2340 00 5-49 conferr: szn conf355err error switch on?  004566 0a 004601 6000 00 5-50 tze confexit no, skip error  004567 aa 012241 7020 00 5-51 tsx2 erpt print error message 004570 aa 040 146 156 160 5-52 acc 'fnp configuration card not found' 004571 aa 040 143 157 156 004572 aa 146 151 147 165 004573 aa 162 141 164 151 004574 aa 157 156 040 143 004575 aa 141 162 144 040 004576 aa 156 157 164 040 004577 aa 146 157 165 156 004600 aa 144 000 000 000 004601 5-53 confexit: null  004601 0a 004634 2220 00 5-54 ldx2 confx2 retrieve return address  004602 aa 000000 7100 12 5-55 tra 0,2 take error exit  5-56  004603 5-57 badchan: null  004603 0a 004625 6350 00 5-58 eaa chanmsg get addr of chan message  004604 0a 004606 7100 00 5-59 tra *+2  004605 5-60 badiom: null  004605 0a 004624 6350 00 5-61 eaa iommsg 004606 0a 004622 7550 00 5-62 sta errarg 004607 aa 012241 7020 00 5-63 tsx2 erpt  004610 aa 047 142 141 144 5-64 acc 'bad ^a number on fnp configuration card'  004611 aa 040 136 141 040 004612 aa 156 165 155 142 004613 aa 145 162 040 157 004614 aa 156 040 146 156 004615 aa 160 040 143 157 004616 aa 156 146 151 147 004617 aa 165 162 141 164 004620 aa 151 157 156 040 004621 aa 143 141 162 144 004622 0a 004622 0000 00 5-65 errarg: arg *  004623 0a 004601 7100 00 5-66 tra confexit take error exit  5-67  5-68  004624 aa 151 157 155 000 5-69 iommsg: aci 'iom'  004625 aa 143 150 141 156 5-70 chanmsg: aci 'chan' 5-71 even  004626 aa 000000 700000 5-72 diapcw: oct 000000700000,0 pcw to send to iom  004627 aa 000000 000000 004630 aa 000000 740000 5-73 maskpcw: oct 000000740000,0 mask pcw to send to iom 004631 aa 000000 000000 004632 aa 000000 000000 5-74 iom_chan: oct 0 channel number on iom  004633 aa 000000 000000 5-75 iom_no: oct 0 iom tag 004634 aa 000000 000000 5-76 confx2: oct 0  004635 5-77 conf355n:  004635 aa 000000 000000 5-78 oct 0  004636 5-79 conf355err: 004636 aa 000000 000000 5-80 oct 0  004637 5-81 mbx_offset: 004637 aa 000000 000000 5-82 oct 0  004640 aa 146 156 160 040 5-83 srcharg: aci 'fnp ' 5-84  5-85  5-86 " End include file ... conf355.incl.alm 169  170 include bos_tv 6-1 " 6-2 " Begin include file ...... bos_tv.incl.alm 6-3 " Created in November 1971 by N. I. Morris. 6-4 " Modified 9/9/76 by Noel I. Morris 6-5 " Modified by Sherman D. Sprague 02/11/81 for DPS8 support. 6-6 " Modified November 1981 by C. Hornig to remove iom_connect_rel.  6-7 " Modified January 1982 by J. Bongiovanni to add getport_info  6-8 " Modified May 1982 by Sherman D. Sprague to add getmpc.  6-9  6-10 " BOS Utility Package Transfer Vector.  6-11  012000 6-12 equ pagectl,utilorg  012001 6-13 equ line,pagectl+1 012040 6-14 equ arg,line+31  012060 6-15 equ darg,arg+arglen+1  012100 6-16 equ earg,darg+arglen+1 012120 6-17 equ fltscu,earg+arglen+1  6-18  012200 6-19 equ tv_org,utilorg+128 6-20  012200 6-21 equ scan,tv_org+0  012201 6-22 equ arg_count,tv_org+1 012202 6-23 equ nextline,tv_org+2  012203 6-24 equ nlraw,tv_org+3 012204 6-25 equ search,tv_org+4  012205 6-26 equ makefil,tv_org+5  012206 6-27 equ ldcom,tv_org+6 012207 6-28 equ getsec,tv_org+7  012210 6-29 equ cvinit,tv_org+8  012211 6-30 equ rdev,tv_org+9  012212 6-31 equ wdev,tv_org+10 012213 6-32 equ phybos,tv_org+11  012214 6-33 equ bosphy,tv_org+12  012215 6-34 equ phyadd,tv_org+13  012216 6-35 equ mulbos,tv_org+14  012217 6-36 equ bosmul,tv_org+15  012220 6-37 equ lookup_devmodel,tv_org+16  012221 6-38 equ makesdw,tv_org+17  012222 6-39 equ argbos,tv_org+18  012223 6-40 equ argmul,tv_org+19  012224 6-41 equ amdvt,tv_org+20  012225 6-42 equ amfirst,tv_org+21  012226 6-43 equ amlast,tv_org+22  012227 6-44 equ cvnamla,tv_org+23  012230 6-45 equ sect_per_cyl_list,tv_org+24  012231 6-46 equ sect_per_dev_list,tv_org+25  012232 6-47 equ rec_per_dev_list,tv_org+26 012233 6-48 equ amaxio,tv_org+27  012234 6-49 equ rdsec,tv_org+28  012235 6-50 equ wtsec,tv_org+29  012236 6-51 equ disk_brief,tv_org+30  012237 6-52 equ itaper,tv_org+31  012240 6-53 equ itapew,tv_org+32  012241 6-54 equ erpt,tv_org+33 012242 6-55 equ ercv,tv_org+34 012243 6-56 equ erbuf,tv_org+35  012244 6-57 equ type,tv_org+36 012245 6-58 equ ttyinit,tv_org+37  012246 6-59 equ readcd,tv_org+38  012247 6-60 equ readtty,tv_org+39  012250 6-61 equ getprt,tv_org+40  012251 6-62 equ punch,tv_org+41  012252 6-63 equ octwd,tv_org+42  012253 6-64 equ geas,tv_org+43 012254 6-65 equ geastab,tv_org+44  012255 6-66 equ asge,tv_org+45 012256 6-67 equ asgetab,tv_org+46  012257 6-68 equ ljust,tv_org+47  012260 6-69 equ rjust,tv_org+48  012261 6-70 equ bzel,tv_org+49 012262 6-71 equ stripa,tv_org+50  012263 6-72 equ stripg,tv_org+51  012264 6-73 equ getconf,tv_org+52  012265 6-74 equ getmore,tv_org+53  012266 6-75 equ getperiph,tv_org+54  012267 6-76 equ rdclock,tv_org+55  012270 6-77 equ cvclock,tv_org+56  012271 6-78 equ init_io,tv_org+57  012272 6-79 equ connect_iom,tv_org+58  012273 6-80 equ getmpc,tv_org+59  012274 6-81 equ check_status,tv_org+60 012275 6-82 equ get_special_interrupt,tv_org+61  012276 6-83 equ get_status_interrupt,tv_org+62 012277 6-84 equ xio_wait,tv_org+63 012300 6-85 equ initint,tv_org+64  012301 6-86 equ wantflt,tv_org+65  012302 6-87 equ intno,tv_org+66  012303 6-88 equ intrpts1,tv_org+67 012304 6-89 equ hexwd,tv_org+68  012305 6-90 equ find_disk,tv_org+69  012306 6-91 equ find_root,tv_org+70  012307 6-92 equ find_part,tv_org+71  012310 6-93 equ check_status_no_stat,tv_org+72 012311 6-94 equ check_special_status,tv_org+73 012312 6-95 equ check_cpu_type,tv_org+74  012313 6-96 equ getportinfo,tv_org+75  6-97  6-98 " End of include file ...... bos_tv.incl.alm  6-99  171  172  173 end  LITERALS 004642 aa 144165 155160 004643 aa 777777 770000 004644 aa 202020 702562 004645 aa 000000 200000 004646 aa 000000 000001 NAME DEFINITIONS FOR ENTRY POINTS AND SEGDEFS 004647 5a 000003 000000 004650 5a 000017 600000 004651 aa 000000 000000 004652 55 000010 000002 004653 5a 000002 400003 004654 55 000006 000010 004655 aa 005 146 144 063 004656 aa 065 065 000 000 004657 55 000002 000003 004660 6a 000000 400002 004661 55 000013 000003 004662 aa 014 163 171 155 symbol_table  004663 aa 142 157 154 137 004664 aa 164 141 142 154 004665 aa 145 000 000 000 DEFINITIONS HASH TABLE  004666 aa 000000 000015 004667 aa 000000 000000 004670 aa 000000 000000 004671 aa 000000 000000 004672 aa 000000 000000 004673 aa 000000 000000 004674 aa 000000 000000 004675 5a 000010 000000 004676 aa 000000 000000 004677 aa 000000 000000 004700 aa 000000 000000 004701 aa 000000 000000 004702 aa 000000 000000 004703 aa 000000 000000 NO EXTERNAL NAMES  NO TRAP POINTER WORDS  TYPE PAIR BLOCKS  004704 aa 000001 000000 004705 aa 000000 000000 INTERNAL EXPRESSION WORDS LINKAGE INFORMATION 000000 aa 000000 000000 000001 0a 004647 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 224634 434215 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 000467 000020 aa 000000 000212 000021 aa 000000 000452 000022 aa 000455 000212 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 273013 000070 aa 000000 112272 000071 aa 215470 200000 000072 aa 000130 000040 000073 aa 113400 415301 000074 aa 000000 111341 000075 aa 220414 400000 000076 aa 000140 000044 000077 aa 121622 277475 000100 aa 000000 112162 000101 aa 321563 400000 000102 aa 000151 000036 000103 aa 077322 074060 000104 aa 000000 107733 000105 aa 111401 400000 000106 aa 000161 000037 000107 aa 102276 474114 000110 aa 000000 110227 000111 aa 663042 200000 000112 aa 000171 000041 000113 aa 043243 125745 000114 aa 000000 103730 000115 aa 106336 600000 000116 aa 000202 000040 000117 aa 110235 072677 000120 aa 000000 111024 000121 aa 524460 600000 000122 aa 076163 160145 >spec>h>3.17>fd355.alm  000123 aa 143076 150076 000124 aa 063056 061067 000125 aa 076146 144063 000126 aa 065065 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 076154 144144 >ldd>bos>include>bos_common.incl.alm  000141 aa 076142 157163 000142 aa 076151 156143 000143 aa 154165 144145 000144 aa 076142 157163 000145 aa 137143 157155 000146 aa 155157 156056 000147 aa 151156 143154 000150 aa 056141 154155 000151 aa 076154 144144 >ldd>bos>include>fdmp.incl.alm  000152 aa 076142 157163 000153 aa 076151 156143 000154 aa 154165 144145 000155 aa 076146 144155 000156 aa 160056 151156 000157 aa 143154 056141 000160 aa 154155 040040 000161 aa 076154 144144 >ldd>bos>include>rd355.incl.alm 000162 aa 076142 157163 000163 aa 076151 156143 000164 aa 154165 144145 000165 aa 076162 144063 000166 aa 065065 056151 000167 aa 156143 154056 000170 aa 141154 155040 000171 aa 076154 144144 >ldd>bos>include>conf355.incl.alm  000172 aa 076142 157163 000173 aa 076151 156143 000174 aa 154165 144145 000175 aa 076143 157156 000176 aa 146063 065065 000177 aa 056151 156143 000200 aa 154056 141154 000201 aa 155040 040040 000202 aa 076154 144144 >ldd>bos>include>bos_tv.incl.alm  000203 aa 076142 157163 000204 aa 076151 156143 000205 aa 154165 144145 000206 aa 076142 157163 000207 aa 137164 166056 000210 aa 151156 143154 000211 aa 056141 154155 MULTICS ASSEMBLY CROSS REFERENCE LISTING Value Symbol Source file Line number  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 fdmp: 201, 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. 4533 atemp rd355: 73, 78, 79, 82.  4603 badchan conf355: 34, 57.  4605 badiom conf355: 29, 60.  1573 bar bos_common: 26. 2 bf bosequ: 9. 40000 bit22 rd355: 7, 77.  12217 bosmul bos_tv: 36. 12214 bosphy bos_tv: 33. 2012 bos_dvt bos_common: 53. 2312 buff_ptr fdmp: 260, 264, 418. 12261 bzel bos_tv: 70. 4625 chanmsg conf355: 58, 70.  12312 check_cpu_type bos_tv: 95. 12311 check_special_status bos_tv: 94. 12274 check_status bos_tv: 81. 12310 check_status_no_stat bos_tv: 93. 2032 cmdlst bos_common: 68. 6 com bosequ: 14, fdmp: 355, 386, 388, rd355: 38, conf355: 25, 28, 33. 3000 conf bos_common: 85, 86.  4534 conf355 fd355: 73, conf355: 18. 4636 conf355err conf355: 49, 79.  4635 conf355n conf355: 19, 40, 77. 4565 conferr conf355: 24, 49.  4601 confexit conf355: 50, 53, 66. 20 confl bos_common: 87. 4634 confx2 conf355: 20, 45, 54, 76.  12272 connect_iom rd355: 50, bos_tv: 79. 2003 corearea bos_common: 47. 1610 coreblocks bos_common: 30. 700 cuhist bos_common: 15. 2027 curtcmd bos_common: 66. 12270 cvclock bos_tv: 77. 12210 cvinit fd355: 36, bos_tv: 29. 12227 cvnamla bos_tv: 44. 200000 d355_lth fd355: 53, fdmp: 87. 2024 d355_state bos_common: 63. 12060 darg bos_tv: 15, 16.  1570 dbr bos_common: 24. 2307 devt fdmp: 154, 165, 173, 263, 300, 339, 354, 411.  4626 diapcw rd355: 51, conf355: 37, 72.  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. 600 dirlen bos_common: 70, 76.  2014 diskchanno bos_common: 55. 12236 disk_brief bos_tv: 51. 2000 dmpbufl fdmp: 76. 3400 dn355mbx rd355: 6, 25.  2404 dn355_addr fd355: 93, 99, 109, 111, 123. 2427 done fd355: 74, 107, 132. 0 ds bosequ: 7. 75 dump rd355: 8, 22.  2356 dump_355_loop fd355: 70, 135.  4453 dump_offset fd355: 79, 89, 127, 159.  12100 earg bos_tv: 16, 17.  7000 econf bos_common: 86, 90.  1100 eishist bos_common: 16. 12243 erbuf bos_tv: 56. 12242 ercv bos_tv: 55. 12241 erpt fd355: 61, 146,  fdmp: 190, 194, 365, 371, 377, 383,  conf355: 51, 63,  bos_tv: 54. 4622 errarg conf355: 62, 65.  2255 error_config_card fdmp: 166, 301, 376. 2266 error_io fdmp: 175, 265, 341, 356, 382. 2242 error_out_of_part fdmp: 297, 370.  2230 err_no_records fdmp: 364. 1576 faultreg bos_common: 28. 2437 fd355_error fd355: 42, 104, 138, 145.  2453 fdmp_buff fd355: 156, fdmp: 226. 2276 fdmp_erret fdmp: 155, 203, 367, 373, 379, 385.  2020 fdmp_read_header fd355: 40, fdmp: 144. 2321 fdmp_switch fdmp: 146, 183, 346, 435.  2117 fdmp_write_data fd355: 103, fdmp: 223. 2202 fdmp_write_header fd355: 137, fdmp: 325. 2115 fdrhrtn fdmp: 210. 2320 fdtemp fdmp: 310, 311, 433. 2023 fdump_state bos_common: 62. 2226 fdwhrtn fdmp: 347, 358.  2157 fdx0 fdmp: 225, 285.  2156 fdx2 fdmp: 148, 182, 210, 224, 284, 326, 358, 389.  5 fgb bosequ: 13. 12305 find_disk bos_tv: 90. 12307 find_part fdmp: 153, bos_tv: 92. 12306 find_root bos_tv: 91. 2000 firmware_bit bosequ: 20. 2304 first_rnum fd355: 50, 87, 125, fdmp: 156, 157, 163, 399.  12120 fltscu bos_tv: 17. 12253 geas bos_tv: 64. 12254 geastab bos_tv: 65. 12264 getconf conf355: 23, bos_tv: 73. 12265 getmore conf355: 26, 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 bos_tv: 83. 30 hdr.d355_time fd355: 48, fdmp: 119. 26 hdr.d355_valid fd355: 45, fdmp: 112, 187, 206. 24 hdr.erfnum fd355: 63, fdmp: 106, 192, 208. 25 hdr.num_segs fdmp: 109. 40 hdr.seg_array fdmp: 132. 22 hdr.time fdmp: 103. 21 hdr.valid fdmp: 99, 185, 205. 32 hdr.version fdmp: 122, 329.  27 hdr.which_355 fd355: 56, 85,  fdmp: 115. 20 hdr.words_dumped fdmp: 96. 4000 hdr_lth fd355: 51, 88, 126, fdmp: 85, 86, 131. 20 hdr_sects fdmp: 86, 170, 337, 350, 352. 20 header fdmp: 94, 131, 174, 340.  2314 head_sectn_nsect fdmp: 168, 335, 349, 420.  12304 hexwd bos_tv: 89. 2452 indword fd355: 98, 155.  12300 initint fd355: 28, bos_tv: 85. 12271 init_io fd355: 31, bos_tv: 78. 2021 inputsw bos_common: 60, fdmp: 386, 388.  4521 intbit rd355: 44, 55, 64. 12302 intno bos_tv: 87. 1572 intrpts bos_common: 25. 12303 intrpts1 bos_tv: 88. 4624 iommsg conf355: 61, 69.  4632 iom_chan rd355: 32, conf355: 35, 74.  2011 iom_mbbase bos_common: 52. 2010 iom_mxbase bos_common: 51, rd355: 38. 4633 iom_no rd355: 37, conf355: 31, 75.  12237 itaper bos_tv: 52. 12240 itapew bos_tv: 53. 2306 last_rnum fd355: 54, fdmp: 158, 296, 403. 12206 ldcom bos_tv: 27. 12001 line bos_tv: 13, 14.  12257 ljust bos_tv: 68. 12220 lookup_devmodel bos_tv: 37. 1620 lowport_cfg bos_common: 34. 1530 low_order_port bos_common: 20. 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. 4630 maskpcw conf355: 38, 73.  4 max_no_355s fd355: 134, 163.  4637 mbx_offset rd355: 24, conf355: 43, 81.  1550 mcm bos_common: 23. 1532 mctime bos_common: 21. 7 mem fd355: 142, bosequ: 15, rd355: 25, 47, 48, 56, 58. 1574 modereg bos_common: 27. 12216 mulbos fdmp: 164, 299,  bos_tv: 35. 12202 nextline bos_tv: 23. 2305 next_rnum fd355: 52, 90, 128, fdmp: 295, 305, 401. 12203 nlraw bos_tv: 24. 4522 norm_int_cell rd355: 39, 46, 53, 65.  2316 num_ovfl_sects fdmp: 233, 247, 251, 278, 313, 426.  2315 num_sectors fdmp: 237, 274, 304, 423.  20 num_sectors_page fdmp: 74, 238, 352, 424.  2317 num_sectors_written fdmp: 227, 273, 286, 390, 429. 12252 octwd bos_tv: 63. 500 ouhist bos_common: 14. 12000 pagectl bos_tv: 12, 13.  12 page_power fdmp: 68. 2000 page_size fd355: 51, 53, 88, 100, 102, 110, 126, 157,  fdmp: 67, 74, 76. 4523 parity rd355: 23, 72.  3 pgm bosequ: 10, fdmp: 174, 264, 340, 418.  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. 4517 r3exit rd355: 18, 27, 57, 61.  12267 rdclock bos_tv: 76. 12211 rdev fdmp: 172, bos_tv: 30. 2016 rdrchanno bos_common: 57. 12234 rdsec bos_tv: 49. 12246 readcd bos_tv: 59. 12247 readtty fdmp: 197, bos_tv: 60. 2030 readysw bos_common: 67. 2402 read_355_loop fd355: 96, 113, 130. 4455 read_355_words fd355: 97, rd355: 17. 12232 rec_per_dev_list bos_tv: 47. 1520 regs bos_common: 19. 2451 reread_sw fd355: 94, 106, 121, 151.  12260 rjust bos_tv: 69. 4000 runcom_bit bosequ: 19. 12200 scan fdmp: 200, bos_tv: 21. 1540 scu bos_common: 22. 12204 search bos_tv: 25. 2310 sectn_nsect fdmp: 234, 249, 252, 261, 271, 276, 302, 307, 413. 6 sector_power fdmp: 71, 309.  100 sector_size fd355: 102, fdmp: 70, 74, 86. 12230 sect_per_cyl_list bos_tv: 45. 12231 sect_per_dev_list bos_tv: 46. 7000 seg6length bos_common: 90. 40 seg_array fdmp: 133. 1760 seg_array_size fdmp: 131, 133.  2004 setuparea bos_common: 49. 2162 set_next_write fdmp: 254, 279, 294. 2025 skipsw bos_common: 64. 4640 srcharg conf355: 22, 83.  2322 start fd355: 13, 25.  2111 steperf fdmp: 188, 205.  2000 storlen bos_common: 36, fdmp: 86, 131.  12262 stripa bos_tv: 71. 12263 stripg bos_tv: 72. 2015 tapechanno bos_common: 56. 1 tmp bosequ: 8. 2017 ttychanno bos_common: 58. 12245 ttyinit fd355: 33, 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.  4512 wait_for_int rd355: 54, 59.  12301 wantflt bos_tv: 86. 12212 wdev fdmp: 262, 338, 353, bos_tv: 31. 4454 which_355 fd355: 71, 72, 76, 81, 133, 161.  2140 write fdmp: 239, 260.  2125 write_next fdmp: 232, 314.  12235 wtsec bos_tv: 50. 2434 X2 fd355: 26, 29, 34, 140, 148. 12277 xio_wait bos_tv: 84. 4 xs1 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