assm 01 12-10-82 15.698 console manager for 355 with multics page 1 preface program break 740 common length 0 v count bits 5 primary symdef entry cons 0 wcon 130 contip 161 consol 243 consjt 235 secondary symdef entry .chain 0 block length symref 1 invp 2 g3wjt 3 mdisp 4 conabt end of binary card 00000001 5 dspqur 6 octasc 7 secdsp end of binary card 00000002 assm 01 12-10-82 15.698 console manager for 355 with multics page 2 1 * *********************************************************** 2 * * * 3 * * copyright, (c) honeywell information systems inc., 1982 * 4 * * * 5 * * copyright (c) 1972 by massachusetts institute of * 6 * * technology and honeywell information systems, inc. * 7 * * * 8 * *********************************************************** 9 10 lbl ,console_man assm 01 12-10-82 15.698 console manager for 355 with multics page 3 12 13 15 pcc on 16 detail on 17 editp on 18 19 20 symdef cons 21 22 symdef wcon write console routine 23 called from outside in emergency 24 symdef contip terminate interrupt processor for above 25 26 symdef consol console interrupt processing routine 27 symdef consjt so init can find jump tables 28 29 symref mdisp dispatcher return 30 symref secdsp event dispatcher return 31 symref dspqur dispatcher queuer entry 32 symref conabt console operator abort routine 33 symref invp main interrupt processing routine 34 symref g3wjt get 3rd word of jump table routine 35 symref octasc octal to ascii conversion subroutine 36 37 38 39 40 41 pmc save,on 00000 42 cons null 00000 43 start cons,7 symdef -.chain crsm save,off 00000 even ine '7','',2 000007 modnum equ 7 00000 000007 0 .chain dec 7 ife '7','',1 crsm restore 00001 234645 0 bci 2,cons 00002 622020 0 00003 0 00000 1 ind cons 00004 010201 0 date 00005 001002 0 ine '.001.','',1 00006 330000 0 bci 4,.001. 00007 013320 0 00010 202020 0 00011 202020 0 assm 01 12-10-82 15.704 console manager for 355 with multics page 4 console read and write routines 44 ttls console read and write routines 45 ************************************************************************ 46 * 47 * these routines are used to write messages 48 * on the datanet-355 console and/or to receive messages from the 49 * system operator. 50 * 51 * the routines have no queueing capability, so a "busy flag" is used to 52 * prevent more than one access to the console at a time. if the console 53 * is busy at the time the user calls "write" or "wrcon," a return is made 54 * immediately to a special "busy return" point in the user's calling 55 * sequence. at this time the user would (perhaps) queue up a time 56 * delayed routine to retry at a later time. if the console is not busy 57 * when the user calls, his request will be initiated and control 58 * returned to his "accepted return" point. 59 * 60 ************************************************************************ 61 * 62 * calling sequence for "write" -- 63 * pre-set registers -- the a, q, and x1 registers must be set up as 64 * required by the dispatcher queuer. this specifies the 65 * routine which will be queued when the write operation 66 * terminates. 67 * 68 * tsy write-* 69 * zero
70 * --- 71 * --- 72 * 73 ************************************************************************ 74 * 75 * calling sequence for "wrcon" -- 76 * 77 * pre-set registers -- the a, q, and x1 registers must 78 * be set up as required by the dispatcher queuer. 79 * this specifies the routine which will be queued 80 * when the read operation has terminated. 81 * 82 * tsy wrcon-* 83 * zero
84 * zero
85 * --- 86 * --- 87 * 88 ************************************************************************ assm 01 12-10-82 15.704 console manager for 355 with multics page 5 console read and write routines 89 eject 90 ************************************************************************ 91 * 92 * console "terminate interrupt" processing routine 93 * 94 * the "terminate interrupt" is caused, naturally enough, when data 95 * transfer between the console teletypewriter and the 355 terminates. 96 * 97 * several "abnormal" events can also cause this interrupt, and these 98 * are indicated in the code. 99 * 100 * the routine responds to this interrupt by indicating to the approprate 101 * user routine that his requested data transfer has been completed. 102 * 103 ************************************************************************ 104 * 105 * console "special interrupt" processing routine 106 * 107 * the "special interrupt" is caused by pressing the "break" key on the 108 * console tty. the routine "spcon" is called in response to this 109 * interrupt. this is the method to be used by the operator to request 110 * the performance of the several special operations provided. 111 * 112 * the routine responds to the special interrupt by printing "???" to 113 * which the operator is expected to type in one of the commands 114 * listed below -- 115 * 116 * command variable(s) function 117 * 118 * abort abort 355. cause an immediate dump. 119 * alter aaaaa,bbbbbb store bbbbbb in location aaaaa, absolute. 120 * peek aaaaa write contents of loc aaaaa, absolute 121 * peek aaaaa,n write n words starting at aaaaa. 122 * test call the on-line t&d system. 123 * 124 * n.b. -- future developers 125 * command words must be at least four (4) characters in length. to 126 * increase the number of variable fields, see the comments in the 127 * "idx" subroutine. 128 ************************************************************************ 129 130 00012 131 systm assm 01 12-10-82 15.704 console manager for 355 with multics page 6 datanet configuration description ttls datanet configuration description 000000 intv set 0 iom interrupt vector base address 000400 intc set 256 program interrupt cell base address 000420 fltst set 272 iom fault status base address 000440 fltv set 288 processor fault vector base address 000450 iomm set 296 iom mailbox base address *************************** * iom channel assignments * *************************** 000000 tych set 0 typewriter channel 000002 lpch set 2 line printer channel 000004 dich set 4 direct interface adaptor 000006 h1ch set 6 high speed line adapter number one 000007 h2ch set 7 high speed line adapter number two 000010 h3ch set 8 high speed line adapter number three 000011 l1ch set 9 low speed line adapter number one 000012 l2ch set 10 low speed line adapter number two 000013 l3ch set 11 low speed line adapter number three 000014 l4ch set 12 low speed line adapter number four 000015 l5ch set 13 low speed line adapter number five 000016 l6ch set 14 low speed line adapter number six 000077 tmch set 63 interval timer channel 000077 swch set 63 data switch channel assm 01 12-10-82 15.704 console manager for 355 with multics page 7 datanet configuration description eject ************************* * iom interrupt vectors * ************************* 000000 tyft set 0 typewriter fault 000001 tyrq set 1 typewriter request 000002 tytm set 2 typewriter terminate 000040 lpft set 32 line printer fault 000041 lpat set 33 line printer attention 000042 lptm set 34 line printer terminate 000100 dift set 64 dia fault 000102 ditm set 66 dia terminate 000003 dis0 set 3 dia special - 0 000023 dis1 set 19 dia special - 1 000043 dis2 set 35 dia special - 2 000063 dis3 set 51 dia special - 3 000103 dis4 set 67 dia special - 4 000123 dis5 set 83 dia special - 5 000143 dis6 set 99 dia special - 6 000163 dis7 set 115 dia special - 7 000203 dis8 set 131 dia special - 8 000223 dis9 set 147 dia special - 9 000243 dis10 set 163 dia special - 10 000263 dis11 set 179 dia special - 11 000303 dis12 set 195 dia special - 12 000323 dis13 set 211 dia special - 13 000343 dis14 set 227 dia special - 14 assm 01 12-10-82 15.704 console manager for 355 with multics page 8 datanet configuration description 000363 dis15 set 243 dia special - 15 000140 h1ft set 96 hsla 1 fault 000004 h1a0 set 4 hsla 1 subch 0 active terminate vector 000005 h1a16 set 5 hsla 1 subch 16 active terminate vector 000006 h1c0 set 6 hsla 1 subch 0 config terminate vector 000007 h1c16 set 7 hsla 1 subch 16 config terminate vector 000024 h1a1 set 20 hsla 1 subch 1 active terminate vector 000025 h1a17 set 21 hsla 1 subch 17 active terminate vector 000026 h1c1 set 22 hsla 1 subch 1 config terminate vector 000027 h1c17 set 23 hsla 1 subch 17 config terminate vector 000044 h1a2 set 36 hsla 1 subch 2 active terminate vector 000045 h1a18 set 37 hsla 1 subch 18 active terminate vector 000046 h1c2 set 38 hsla 1 subch 2 config terminate vector 000047 h1c18 set 39 hsla 1 subch 18 config terminate vector 000064 h1a3 set 52 hsla 1 subch 3 active terminate vector 000065 h1a19 set 53 hsla 1 subch 19 active terminate vector 000066 h1c3 set 54 hsla 1 subch 3 config terminate vector 000067 h1c19 set 55 hsla 1 subch 19 config terminate vector 000104 h1a4 set 68 hsla 1 subch 4 active terminate vector 000105 h1a20 set 69 hsla 1 subch 20 active terminate vector 000106 h1c4 set 70 hsla 1 subch 4 config terminate vector 000107 h1c20 set 71 hsla 1 subch 20 config terminate vector 000124 h1a5 set 84 hsla 1 subch 5 active terminate vector 000125 h1a21 set 85 hsla 1 subch 21 active terminate vector 000126 h1c5 set 86 hsla 1 subch 5 config terminate vector 000127 h1c21 set 87 hsla 1 subch 21 config terminate vector assm 01 12-10-82 15.704 console manager for 355 with multics page 9 datanet configuration description 000144 h1a6 set 100 hsla 1 subch 6 active terminate vector 000145 h1a22 set 101 hsla 1 subch 22 active terminate vector 000146 h1c6 set 102 hsla 1 subch 6 config terminate vector 000147 h1c22 set 103 hsla 1 subch 22 config terminate vector 000164 h1a7 set 116 hsla 1 subch 7 active terminate vector 000165 h1a23 set 117 hsla 1 subch 23 active terminate vector 000166 h1c7 set 118 hsla 1 subch 7 config terminate vector 000167 h1c23 set 119 hsla 1 subch 23 config terminate vector 000204 h1a8 set 132 hsla 1 subch 8 active terminate vector 000205 h1a24 set 133 hsla 1 subch 24 active terminate vector 000206 h1c8 set 134 hsla 1 subch 8 config terminate vector 000207 h1c24 set 135 hsla 1 subch 24 config terminate vector 000224 h1a9 set 148 hsla 1 subch 9 active terminate vector 000225 h1a25 set 149 hsla 1 subch 25 active terminate vector 000226 h1c9 set 150 hsla 1 subch 9 config terminate vector 000227 h1c25 set 151 hsla 1 subch 25 config terminate vector 000244 h1a10 set 164 hsla 1 subch 10 active terminate vector 000245 h1a26 set 165 hsla 1 subch 26 active terminate vector 000246 h1c10 set 166 hsla 1 subch 10 config terminate vector 000247 h1c26 set 167 hsla 1 subch 26 config terminate vector 000264 h1a11 set 180 hsla 1 subch 11 active terminate vector 000265 h1a27 set 181 hsla 1 subch 27 active terminate vector 000266 h1c11 set 182 hsla 1 subch 11 config terminate vector 000267 h1c27 set 183 hsla 1 subch 27 config terminate vector 000304 h1a12 set 196 hsla 1 subch 12 active terminate vector assm 01 12-10-82 15.704 console manager for 355 with multics page 10 datanet configuration description 000305 h1a28 set 197 hsla 1 subch 28 active terminate vector 000306 h1c12 set 198 hsla 1 subch 12 config terminate vector 000307 h1c28 set 199 hsla 1 subch 28 config terminate vector 000324 h1a13 set 212 hsla 1 subch 13 active terminate vector 000325 h1a29 set 213 hsla 1 subch 29 active terminate vector 000326 h1c13 set 214 hsla 1 subch 13 config terminate vector 000327 h1c29 set 215 hsla 1 subch 29 config terminate vector 000344 h1a14 set 228 hsla 1 subch 14 active terminate vector 000345 h1a30 set 229 hsla 1 subch 30 active terminate vector 000346 h1c14 set 230 hsla 1 subch 14 config terminate vector 000347 h1c30 set 231 hsla 1 subch 30 config terminate vector 000364 h1a15 set 244 hsla 1 subch 15 active terminate vector 000365 h1a31 set 245 hsla 1 subch 31 active terminate vector 000366 h1c15 set 246 hsla 1 subch 15 config terminate vector 000367 h1c31 set 247 hsla 1 subch 31 config terminate vector 000220 l1ft set 144 lsla 1 fault 000221 l1a set 145 lsla 1 active terminate vector 000222 l1c set 146 lsla 1 configuration terminate vector 000240 l2ft set 160 lsla 2 fault 000241 l2a set 161 lsla 2 active terminate vector 000242 l2c set 162 lsla 2 configuration terminate vector 000260 l3ft set 176 lsla 3 fault 000261 l3a set 177 lsla 3 active terminate vector 000262 l3c set 178 lsla 3 configuration terminate vector 000300 l4ft set 192 lsla 4 fault 000301 l4a set 193 lsla 4 active terminate vector assm 01 12-10-82 15.704 console manager for 355 with multics page 11 datanet configuration description 000302 l4c set 194 lsla 4 configuration terminate vector 000320 l5ft set 208 lsla 5 fault 000321 l5a set 209 lsla 5 active terminate vector 000322 l5c set 210 lsla 5 configuration terminate vector 000340 l6ft set 224 lsla 6 fault 000341 l6a set 225 lsla 6 active terminate vector 000342 l6c set 226 lsla 6 configuration terminate vector 000360 tmft set 240 timer channel fault 000361 tmro set 241 interval timer runout 000362 etr set 242 elapsed timer roll-over assm 01 12-10-82 15.704 console manager for 355 with multics page 12 datanet configuration description eject 1 *************************** * program interrupt cells * *************************** 000400 ilev0 set 256 level 0 (common peripheral fault) 000401 ilev1 set 257 level 1 (common peripheral req/attn) 000402 ilev2 set 258 level 2 (common peripheral terminate) 000403 ilev3 set 259 level 3 (dia special) 000404 ilev4 set 260 level 4 (hsla 1 subch 0-15 active) 000405 ilev5 set 261 level 5 (hsla 1 subch 16-31 active) 000406 ilev6 set 262 level 6 (hsla 1 subch 0-15 config) 000407 ilev7 set 263 level 7 (hsla 1 subch 16-31 config) 000410 ilev8 set 264 level 8 (hsla 2 subch 0-15 active) 000411 ilev9 set 265 level 9 (hsla 2 subch 16-31 active) 000412 ilev10 set 266 level 10 (hsla 2 subch 0-15 config) 000413 ilev11 set 267 level 11 (hsla 2 subch 16-31 config) 000414 ilev12 set 268 level 12 (hsla 3 subch 0-15 active) 000415 ilev13 set 269 level 13 (hsla 3 subch 16-31 active) 000416 ilev14 set 270 level 14 (hsla 3 subch 0-15 config) 000417 ilev15 set 271 level 15 (hsla 3 subch 16-31 config) ******************** * iom fault status * ******************** 000420 tyfts set 272 typewriter fault status word 000422 lpfts set 274 line printer fault status word 000424 difts set 276 dia fault status word 000426 h1fts set 278 hsla 1 fault status word 000427 h2fts set 279 hsla 2 fault status word assm 01 12-10-82 15.704 console manager for 355 with multics page 13 datanet configuration description 000430 h3fts set 280 hsla 3 fault status word 000431 l1fts set 281 lsla 1 fault status word 000432 l2fts set 282 lsla 2 fault status word 000433 l3fts set 283 lsla 3 fault status word 000434 l4fts set 284 lsla 4 fault status word 000435 l5fts set 285 lsla 5 fault status word 000436 l6fts set 286 lsla 6 fault status word 000437 tmfts set 287 timer fault status word *************************** * processor fault vectors * *************************** 000440 suflt set 288 startup fault 000441 sdflt set 289 shutdown fault 000442 parflt set 290 memory parity fault 000443 iopflt set 291 illegal operation fault 000444 ovflt set 292 overflow fault 000445 memflt set 293 illegal memory operation fault 000446 dvflt set 294 divide check fault 000447 ipiflt set 295 illegal program interrupt fault assm 01 12-10-82 15.704 console manager for 355 with multics page 14 datanet configuration description eject ************************************ * iom mailbox communication region * ************************************ 000450 itmb set 296 interval timer mailbox 000451 etmb set 297 elapsed timer mailbox 000454 dimb set 300 dia pcw mailbox 000456 dist set 302 dia status icw mailbox 000460 tyst set 304 typewriter status icw mailbox 000462 tyicw set 306 typewriter data icw mailbox 000470 lpst set 312 line printer status icw mailbox 000472 lpicw set 314 line printer data icw mailbox 000475 cptp set 317 cpu page table pointer 000476 yelcnt set 318 memory yellow counter (edac corected erro 000500 l1mb set 320 lsla 1 mailbox base address 000520 l2mb set 336 lsla 2 mailbox base address 000540 l3mb set 352 lsla 3 mailbox base address 000560 l4mb set 368 lsla 4 mailbox base address 000600 l5mb set 384 lsla 5 mailbox base address 000620 l6mb set 400 lsla 6 mailbox base address 001000 h1mb set 512 hsla 1 mailbox base address 002000 h2mb set 1024 hsla 2 mailbox base address 003000 h3mb set 1536 hsla 3 mailbox base address 002000 .end. set 1024 end of iom mailbox communication region 00012 132 comreg assm 01 12-10-82 15.704 console manager for 355 with multics page 15 system communications region ttls system communications region ********************************** * system communication region * ********************************** 000640 .crldt set 416 date and time of binding 000644 .crbdt set 420 date and time of bootloading 000650 .crbuf set 424 starting address of buffer area 000651 .crmem set 425 last location of memory 000652 .crnbf set 426 number of buffers available 000653 .criom set 427 start of iom table 000654 .crnhs set 428 number of hsla's configured 000655 .crnls set 429 number of lsla's configured 000656 .crcon set 430 console enabled flag 000657 .crmod set 431 starting address of module chain 000660 .crnxa set 432 ptr to next avaliable buffer 000661 .crtra set 433 trace entry enable mask 000662 .crtrb set 434 base address of trace table 000663 .crtrc set 435 next available location in trace table 000664 .crreg set 436 disaster fault register storage location 000665 .crttb set 437 location of tib table 000666 .crtte set 438 location of end of tib table 000667 .crdly set 439 head of delay table chain 000670 .crver set 440 mcs version number, 4 chars 000672 .crbrk set 442 addr of breakpoint control table 000673 .crtsw set 443 if non-zero, tracing will cease 000674 .crnxs set 444 next free small block 000675 .crnbs set 445 number of buffers devoted to small space assm 01 12-10-82 15.704 console manager for 355 with multics page 16 system communications region 000676 .crcct set 446 address of first cct descriptor 000677 .crskd set 447 address of scheduler data block 000700 .cretb set 448 list of echo-negotiation bit tables 000701 .crcpt set 449 address of cpu page table 000702 .crpte set 450 address of variable cpu page table entry 000703 .crtsz set 451 size of trace data buffer 000704 .crmet set 452 non-zero if metering enabled 000705 .crtdt set 453 address of tib for t&d executive channel 000706 .crbtm set 454 address of time meters for getbuf/frebuf 000760 .crcpr set 496 copyright notice 133 134 pmc restore 000015 135 cr bool 15 000012 136 lf bool 12 000023 137 xoff bool 23 assm 01 12-10-82 15.704 console manager for 355 with multics page 17 write -- write console routine 138 ttls write -- write console routine 139 ************************************************************************ 140 * 141 * write write console routine 142 * 143 ************************************************************************ 144 00012 145 write subr wri,(x1,inh) 146 00024 0 20 203 227 147 szn nocon-* see if console is not configured or down 00025 0 64 003 30 148 tnz w05-* yes 00026 0 20 200 226 149 szn conbsy-* ? console busy ? 00027 0 74 003 32 150 tze w10-* no 00030 151 w05 null 00030 0 76 762 12 152 aos write-* yes, go to user's "busy return" 00031 0 71 017 50 153 tra wribak-* 154 155 156 00032 157 w10 null 00032 0 76 174 226 158 aos conbsy-* set busy flag 00033 0 76 175 230 159 aos cwrite-* set write operation control flag 00034 0 76 175 231 160 aos cwconf-* set wcon routine in control flag 00035 0 44 766 23 161 ldi wrisi-* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 162 00036 0 14 164 222 163 staq cqueaq-* save parameters of routine to be queued 00037 0 53 166 225 164 stx1 cquex1-* when write operation terminates 00040 0 04 150 210 165 ldaq csicw-* set up status icw mailbox 00041 4 14 171 232 166 staq csicwa-*,* 00042 4 43 750 12 167 ldx1 write-*,* set up data icw mailbox 00043 1 04 000 0 168 ldaq 0,1 00044 4 14 167 233 169 staq cdicwa-*,* 00045 0 14 151 216 170 staq cwwicw-* save output data icw 171 00046 073 000 0 172 sel tych issue write command end of binary card 00000003 00047 0 60 143 212 173 cioc cwpcw-* 174 00050 175 wribak null 00050 0 76 742 12 176 aos write-* 00051 177 return write assm 01 12-10-82 15.704 console manager for 355 with multics page 18 wrcon -- write-then-read console routine 178 ttls wrcon -- write-then-read console routine 179 ************************************************************************ 180 * 181 * wrcon write-then-read console routine 182 * 183 ************************************************************************ 184 00053 185 wrcon subr wrc,(inh,x1) 186 00065 0 20 142 227 187 szn nocon-* see if console is not configured or down 00066 0 64 003 71 188 tnz w105-* yes 00067 0 20 137 226 189 szn conbsy-* ? console busy ? 00070 0 74 004 74 190 tze w110-* no 00071 191 w105 null 00071 0 76 762 53 192 aos wrcon-* yes, go to user's "busy return" 00072 0 76 761 53 193 aos wrcon-* 00073 0 71 023 116 194 tra wrcbak-* 195 196 197 00074 198 w110 null 00074 0 76 132 226 199 aos conbsy-* set busy flag 00075 0 76 133 230 200 aos cwrite-* set write operation control flag 00076 0 56 133 231 201 stz cwconf-* clear wcon routine in control flag 00077 0 44 764 63 202 ldi wrcsi-* >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 203 00100 0 14 122 222 204 staq cqueaq-* save parameters of routine to be queued 00101 0 53 124 225 205 stx1 cquex1-* when read operation terminates 00102 0 04 106 210 206 ldaq csicw-* set up status icw mailbox 00103 4 14 127 232 207 staq csicwa-*,* 00104 4 43 747 53 208 ldx1 wrcon-*,* set up data icw mailbox 00105 1 04 000 0 209 ldaq 0,1 00106 4 14 125 233 210 staq cdicwa-*,* 00107 0 14 107 216 211 staq cwwicw-* save output data dcw 00110 0 76 743 53 212 aos wrcon-* save input-area data icw 00111 4 43 742 53 213 ldx1 wrcon-*,* 00112 1 04 000 0 214 ldaq 0,1 00113 0 14 105 220 215 staq cwricw-* 216 00114 073 000 0 217 sel tych issue write command 00115 0 60 075 212 218 cioc cwpcw-* 219 00116 220 wrcbak null end of binary card 00000004 00116 0 76 735 53 221 aos wrcon-* go to user's "accepted return" point 00117 4 71 734 53 222 tra wrcon-*,* 223 224 ********************************************************* 225 * continue after write operation terminates and initiate 226 * the read operation 227 ********************************************************* assm 01 12-10-82 15.704 console manager for 355 with multics page 19 wrcon -- write-then-read console routine 228 00120 229 wrcont null 00120 0 56 110 230 230 stz cwrite-* clear write operation control flag 00121 0 04 067 210 231 ldaq csicw-* set up status icw mailbox 00122 4 14 110 232 232 staq csicwa-*,* 00123 0 04 075 220 233 ldaq cwricw-* set up input-area data icw mailbox 00124 4 14 107 233 234 staq cdicwa-*,* 235 00125 0 60 067 214 236 cioc crpcw-* 237 00126 4 71 001 127 238 tra 1,* return to dispatcher 00127 0 07000 3 239 cdisp ind secdsp assm 01 12-10-82 15.704 console manager for 355 with multics page 20 wcon -- emergency write routine 240 ttls wcon -- emergency write routine 241 242 243 ********************************************************************** 244 * wcon is the routine called from outside console_man to write error 245 * messages and crash warnings on the console. 246 * 247 * it does not return to its caller until the write is complete. 248 * it expects that only level 0, 1, and 2 interrupts are enabled, 249 * and that other interrupts will go to an "ignore" subroutine. 250 * 251 * in general, contip will be the terminate interrupt processor 252 * associated with this routine, rather than consol as for write 253 * and wrcon. 254 * 255 * calling sequence: 256 * 257 * tsy wcon-* 258 * zero
259 * --- 260 * --- 261 * 262 ********************************************************************** 263 264 000030 265 cntrlx bool 30 000050 266 sbits bool 50 267 268 269 00130 270 wcon subr wco,(x1,inh) 271 00142 0 20 065 227 272 szn nocon-* is there a console? 00143 0 64 037 202 273 tnz wcobak-* take error return if not 274 00144 4 20 070 234 275 szn conflg-*,* (=.crcon) console io enabled now? 00145 0 64 034 201 276 tnz wcook-* no, ignore call 277 00146 0 76 060 226 278 aos conbsy-* mark console busy 00147 4 43 761 130 279 ldx1 wcon-*,* get icw address 00150 1 04 000 0 280 ldaq 0,1 get icw 00151 4 14 062 233 281 staq cdicwa-*,* put it in mailbox 00152 0 04 036 210 282 ldaq csicw-* get status icw 00153 4 14 057 232 283 staq csicwa-*,* 284 00154 073 000 0 285 sel tych 00155 0 60 035 212 286 cioc cwpcw-* (write pcw) 287 00156 288 wco010 null 00156 7331 00 0 289 eni >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 00157 4331 00 0 290 dis wait for interrupt assm 01 12-10-82 15.704 console manager for 355 with multics page 21 wcon -- emergency write routine 00160 0 71 777 157 291 tra -1 292 assm 01 12-10-82 15.704 console manager for 355 with multics page 22 contip -- terminate interrupt ptocessor for wcon 293 ttls contip -- terminate interrupt ptocessor for wcon 294 00161 0 00000 0 295 contip ind ** 00162 0 54 024 206 296 sti conind-* hang on to indicators 00163 3331 00 0 297 inh <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 00164 0 20 042 226 298 szn conbsy-* if console isn't busy, end of binary card 00000005 00165 0 64 003 170 299 tnz wco020-* 00166 0 44 020 206 300 ldi conind-* restore indicators and 00167 4 71 772 161 301 tra contip-*,* ignore interrupt 302 00170 303 wco020 null 00170 0 07 034 224 304 lda cstat-* get status; is it "ready"? 00171 0 65 011 202 305 tpl wcobak-* no, take error return 306 00172 2337 11 0 307 arl 9 ptro or control char? 00173 222 050 0 308 icana sbits 00174 0 74 006 202 309 tze wcobak-* neither, take error return 310 00175 4 43 036 233 311 ldx1 cdicwa-*,* pick up last character transmitted 00176 1 07 377 0 312 lda -1,1,b.1 00177 422 030 0 313 icmpa cntrlx "control-x"? 00200 0 74 002 202 314 tze wcobak-* yes, error return 315 00201 0 76 727 130 316 wcook aos wcon-* else bump for good return 317 00202 318 wcobak null 00202 0 76 726 130 319 aos wcon-* bump return address once 00203 0 56 023 226 320 stz conbsy-* not busy any more 321 00204 322 return wcon 323 324 00206 325 conind bss 1 for storing indicators assm 01 12-10-82 15.704 console manager for 355 with multics page 23 data for wcon, wrcon, write 326 ttls data for wcon, wrcon, write 327 00207 233100 0 00210 328 even 00210 2 00224 1 329 csicw icw cstat,b.0,1 status icw image 00211 000001 0 00212 000000 0 330 cwpcw oct 0,44 pcw -- write 00213 000044 0 00214 000000 0 331 crpcw oct 0,50 pcw -- read 00215 000050 0 00216 332 cwwicw bss 2 wrcon's current output data icw 00220 333 cwricw bss 2 wrcon's current input data icw 00222 334 cqueaq bss 2 queue data for wrcon 335 00224 336 cstat bss 1 status store area 00225 337 cquex1 bss 1 queue data for wrcon 00226 338 conbsy bss 1 console busy flag (<>0=busy) 00227 339 nocon bss 1 no console (<>0) flag 00230 340 cwrite bss 1 write operation control flag 00231 341 cwconf bss 1 wcon routine in control (<>0) flag 342 00232 0 00460 0 343 csicwa ind tyst address of console status icw mailbox 00233 0 00462 0 344 cdicwa ind tyicw address of console data icw mailbox 345 00234 0 00656 0 346 conflg ind .crcon assm 01 12-10-82 15.704 console manager for 355 with multics page 24 consol -- console interrupt processing routine 347 ttls consol -- console interrupt processing routine 348 ************************************************************************ 349 * 350 * the sequence of events in processing the terminate and special 351 * interrupts from the system console is as follows: 352 * 353 * 1. the appropriate interrupt cell is set by the iom. 354 * 355 * 2. the processor acknowledges the interrupt by executing a 356 * "tsy x,*" where "x" is the address of the appropriate 357 * interrupt vector, which points to a "jump table." 358 * 359 * 3. the jump table routine stores the value of the ic and 360 * sends control to the "invp" routine. 361 * 362 * 4. the "invp" routine saves registers and sends control to 363 * the routine "consol" below. 364 * 365 * 5. "consol" determines from the 3rd word of the jump table 366 * which console interrupt (terminate or special) occurred, 367 * and enters the appropriate parameters into the event 368 * dispatcher's queue. 369 * 370 ************************************************************************ 371 372 ********************************************************* 373 * terminate and special interrupt jump tables 374 ********************************************************* 375 00235 376 consjt null symbol that init finds 00235 0 00000 0 377 contmj ind ** 00236 4 10 023 261 378 tsy invpx-*,* 00237 000006 0 379 vfd 12/0,6/modcon 380 00240 0 00000 0 381 conspj ind ** 00241 4 10 020 261 382 tsy invpx-*,* 00242 777706 0 383 vfd 12/-1,6/modcon assm 01 12-10-82 15.704 console manager for 355 with multics page 25 consol -- console interrupt processing routine 384 eject 385 ********************************************************* 386 * console interrupt processing routine 387 ********************************************************* 388 00243 389 consol null 00243 3331 00 0 390 inh <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 00244 4 10 016 262 391 tsy g3wjtx-*,* get 3rd word of jump table end of binary card 00000006 00245 573 000 0 392 iaq 0 ? terminate or special interrupt ? 00246 0 75 005 253 393 tmi con20-* special, go process 394 395 terminate interrupt... 396 00247 0 04 107 356 397 ldaq tmaq-* queue up the terminate interrupt 00250 0 43 110 360 398 ldx1 tmx1-* processing routine in event 00251 399 con10 null 00251 4 10 110 361 400 tsy tmquer-*,* dispatcher 00252 4 71 011 263 401 tra cmdisp-*,* 402 403 special interrupt... 404 00253 405 con20 null 00253 0 20 212 465 406 szn sibusy-* ? special interrupt already active ? 00254 4 64 007 263 407 tnz cmdisp-*,* yes, ignore this one 00255 0 76 210 465 408 aos sibusy-* no, set flag to block others 00256 0 04 162 440 409 ldaq spaq-* queue up the special interrupt 00257 0 43 203 462 410 ldx1 spx1-* processing routine in event 00260 0 71 771 251 411 tra con10-* 412 413 414 00261 0 01000 3 415 invpx ind invp main interrupt processor 00262 0 02000 3 416 g3wjtx ind g3wjt 00263 0 03000 3 417 cmdisp ind mdisp return to master dispatcher 418 000006 419 modcon set 6 assm 01 12-10-82 15.704 console manager for 355 with multics page 26 tmcon -- console terminate interrupt processor 420 ttls tmcon -- console terminate interrupt processor 421 ************************************************************************ 422 * 423 * tmcon console terminate interrupt processor -- part 1 424 * 425 ************************************************************************ 426 00264 427 tmcon null 00264 0 20 742 226 428 szn conbsy-* ? busy flag set ? 00265 0 64 003 270 429 tnz t10-* yes, as it should be! 00266 0 76 074 362 430 aos tmeict-* no, count this extraneous interrupt 00267 4 71 640 127 431 tra cdisp-*,* return to dispatcher 432 00270 433 t10 null 00270 073 000 0 434 tsel sel ** select console channel 00271 0 20 737 230 435 szn cwrite-* ? read or write termination ? 00272 0 74 043 335 436 tze tmread-* read, go process accordingly 437 438 ********************************************************* 439 * process write termination status 440 ********************************************************* 441 00273 0 07 731 224 442 lda cstat-* ? status = ready ? 00274 0 75 017 313 443 tmi t30-* yes 444 00275 445 t20 null 00275 0 76 733 230 446 aos cwrite-* 00276 0 07 732 230 447 lda cwrite-* test to see if console may be down 00277 0 27 064 363 448 cmpa cntrbl-* (377777 octal) 00300 0 64 005 305 449 tnz t25-* no, keep hanging in there 450 451 we have tried to go to the console 131071 times. 452 it must be down. set a switch to indicate this 453 and disable interrupts for the console. 454 00301 073 000 0 455 sel tych select console channel 00302 0 60 062 364 456 cioc cnmpcw-* connect to mask pcw 00303 0 76 724 227 457 aos nocon-* set switch to indicate no console 00304 4 71 623 127 458 tra cdisp-*,* return to dispatcher 00305 459 t25 null 00305 0 04 703 210 460 ldaq csicw-* re-issue the write command 00306 4 14 724 232 461 staq csicwa-*,* 00307 0 04 707 216 462 ldaq cwwicw-* 00310 4 14 723 233 463 staq cdicwa-*,* 00311 0 60 701 212 464 cioc cwpcw-* 00312 4 71 615 127 465 tra cdisp-*,* 466 00313 467 t30 null 00313 2337 11 0 468 arl 9 end of binary card 00000007 00314 222 040 0 469 icana 32 (000040) ? status = ptro ? assm 01 12-10-82 15.704 console manager for 355 with multics page 27 tmcon -- console terminate interrupt processor 00315 0 74 760 275 470 tze t20-* no, re-issue write command 00316 0 20 713 231 471 szn cwconf-* ? wcon or wrcon initiated write ? 00317 0 74 601 120 472 tze wrcont-* wrcon, return to issue read 473 00320 474 texit null 00320 3331 00 0 475 inh <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 00321 0 56 707 230 476 stz cwrite-* no longer in write sequence 00322 0 04 700 222 477 ldaq cqueaq-* queue user's courtesy call routine 00323 0 43 702 225 478 ldx1 cquex1-* 00324 4 10 035 361 479 tsy tmquer-*,* 00325 0 56 701 226 480 stz conbsy-* clear console busy flag 481 00326 0 20 136 464 482 szn spint-* ? special interrupt waiting ? 00327 4 74 600 127 483 tze cdisp-*,* no, return to dispatcher 00330 0 04 110 440 484 ldaq spaq-* yes, queue special interrupt 00331 0 43 131 462 485 ldx1 spx1-* processor 00332 4 10 027 361 486 tsy tmquer-*,* 00333 0 56 131 464 487 stz spint-* 00334 4 71 573 127 488 tra cdisp-*,* return to dispatcher 489 490 ********************************************************* 491 * process read termination status 492 ********************************************************* 493 00335 494 tmread null 00335 0 07 667 224 495 lda cstat-* 00336 2337 11 0 496 arl 9 00337 222 200 0 497 icana 128 (000200) ? status = timer runout ? 00340 0 64 735 275 498 tnz t20-* yes, re-issue write command 499 00341 500 t40 null 00341 222 100 0 501 icana 64 (000100) ? status = tro ? 00342 0 64 733 275 502 tnz t20-* yes, re-issue write command 00343 4 43 670 233 503 ldx1 cdicwa-*,* no, get last input character 00344 1 07 377 0 504 lda -1,1,b.1 00345 422 030 0 505 icmpa cntrlx ? control-x ? 00346 0 74 727 275 506 tze t20-* yes, re-issue write command 00347 422 215 0 507 icmpa cr+pbit ? carriage return ? 00350 0 74 003 353 508 tze t50-* yes 00351 422 223 0 509 icmpa xoff+pbit ? x-off ? 00352 0 64 723 275 510 tnz t20-* no, re-issue write command 511 00353 512 t50 null 00353 0 07 651 224 513 lda cstat-* ? status = ready ? 00354 0 65 721 275 514 tpl t20-* no, re-issue write command 00355 0 71 743 320 515 tra texit-* 516 517 518 00356 519 even 00356 000013 0 520 tmaq oct 13 assm 01 12-10-82 15.704 console manager for 355 with multics page 28 tmcon -- console terminate interrupt processor 00357 0 00264 1 521 ind tmcon 00360 0 00000 0 522 tmx1 zero 0 523 00361 0 05000 3 524 tmquer ind dspqur 00362 525 tmeict bss 1 count of extraneous interrupts end of binary card 00000008 00363 377777 0 526 cntrbl oct 377777 00364 527 even 00364 000000 0 528 cnmpcw oct 0,010000 mask bit on to disable channel 00365 010000 0 assm 01 12-10-82 15.704 console manager for 355 with multics page 29 spcon -- console special interrupt processor 529 ttls spcon -- console special interrupt processor 530 ************************************************************************ 531 * 532 * spcon console special interrupt processor 533 * 534 ************************************************************************ 535 00366 536 spcon null 00366 0 20 640 226 537 szn conbsy-* ? any outstanding console io ? 00367 0 74 003 372 538 tze sp9-* no, proceed 00370 0 76 074 464 539 aos spint-* yes, set special interrupt flag 00371 4 71 536 127 540 tra cdisp-*,* return to dispatcher 541 00372 542 sp9 null 00372 0 07 074 466 543 lda msg1p-* set message "???" 00373 544 sp9a null 00373 0 17 004 377 545 sta sp15-* 546 00374 547 sp10 null 00374 0 04 046 442 548 ldaq spbaq-* write-then-read message 1, 2, or 3 00375 0 43 066 463 549 ldx1 spbx1-* 00376 0 10 455 53 550 tsy wrcon-* 00377 0 00000 0 551 sp15 zero ** 00400 0 00436 1 552 zero spicwi 00401 4 71 526 127 553 tra cdisp-*,* accepted -- return to dispatcher 554 00402 0 04 042 444 555 ldaq spaqt-* busy -- re-queue with 5-second 00403 0 43 057 462 556 ldx1 spx1-* time delay 00404 4 10 755 361 557 tsy tmquer-*,* 00405 4 71 522 127 558 tra cdisp-*,* 559 560 ********************************************************* 561 * continue after operator's message has been read 562 ********************************************************* 563 00406 564 spconb null 00406 0 43 076 504 565 ldx1 spoptb-* x1 points to op-code table 566 00407 567 sp100 null 00407 0 04 037 446 568 ldaq input-* get 1st 4 characters of input data 00410 1 27 000 0 569 cmpa 0,1 search 00411 0 64 003 414 570 tnz sp110-* op-code 00412 1 67 001 0 571 cmpq 1,1 table 00413 5 74 002 0 572 tze 2,1* for match 573 00414 574 sp110 null 00414 173 003 0 575 iacx1 3 bump pointer 00415 0 63 104 521 576 cmpx1 spopnd-* ? end of table ? 00416 0 64 771 407 577 tnz sp100-* no, continue search 578 00417 2337 11 0 579 arl 9 assm 01 12-10-82 15.704 console manager for 355 with multics page 30 spcon -- console special interrupt processor 00420 422 215 0 580 icmpa cr+pbit ? null line -- cr only ? 00421 0 74 003 424 581 tze sp115-* yes, exit 582 00422 0 07 046 470 583 lda msg3p-* set message "what?" 00423 0 71 750 373 584 tra sp9a-* 585 00424 586 sp115 null 00424 3331 00 0 587 inh <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< 00425 0 56 040 465 588 stz sibusy-* yes, ignore this message 00426 4 71 501 127 589 tra cdisp-*,* 590 591 592 00427 233100 0 00430 593 even 00430 2 00471 1 594 spicw1 icw msg1,b.0,6 00431 000006 0 end of binary card 00000009 00432 2 00474 1 595 spicw2 icw msg2,b.0,8 00433 000010 0 00434 2 00500 1 596 spicw3 icw msg3,b.0,8 00435 000010 0 00436 2 00446 1 597 spicwi icw input,b.0,24 00437 000030 0 00440 000014 0 598 spaq vfd 12/0,o6/14,18/spcon 00441 000366 1 00442 000014 0 599 spbaq vfd 12/0,o6/14,18/spconb 00443 000406 1 00444 000514 0 600 spaqt vfd 12/5,o6/14,18/spcon 00445 000366 1 00446 601 input bss 12 602 000200 603 pbit bool 200 00462 0 00000 0 604 spx1 zero 0 00463 0 00000 0 605 spbx1 zero 0 00464 606 spint bss 1 00465 607 sibusy bss 1 "special interrupt processor" flag 608 00466 0 00430 1 609 msg1p zero spicw1 00467 0 00432 1 610 msg2p zero spicw2 00470 0 00434 1 611 msg3p zero spicw3 612 00471 015012 0 613 msg1 vfd 9/cr,9/lf 00472 077077 0 614 aci 2,??? 00473 077040 0 00474 015012 0 615 msg2 vfd 9/cr,9/lf 00475 115117 0 616 aci 3,more? 00476 122105 0 00477 077040 0 00500 015012 0 617 msg3 vfd 9/cr,9/lf 00501 127110 0 618 aci 3,what? assm 01 12-10-82 15.704 console manager for 355 with multics page 31 spcon -- console special interrupt processor 00502 101124 0 00503 077040 0 619 620 621 00504 0 00505 1 622 spoptb zero *+1 00505 101102 0 623 vfd o18/101102 00506 317322 0 624 vfd o18/317322 00507 000522 1 625 vfd 18/xabort 00510 120305 0 626 vfd o18/120305 00511 305113 0 627 vfd o18/305113 00512 000525 1 628 vfd 18/xpeek end of binary card 00000010 00513 101314 0 629 vfd o18/101314 00514 324305 0 630 vfd o18/324305 00515 000651 1 631 vfd 18/xalter 00516 324305 0 632 vfd o18/324305 00517 123324 0 633 vfd o18/123324 00520 000664 1 634 vfd 18/xtest 00521 0 00521 1 635 spopnd zero * assm 01 12-10-82 15.704 console manager for 355 with multics page 32 operator command processing routines 636 ttls operator command processing routines 637 ************************************************************************ 638 * 639 * abort 640 * 641 * this command causes an immediate system disaster dump (if a printer is 642 * configured) just as though a processor fault had occurred. 643 * 644 ************************************************************************ 645 00522 646 xabort null 00522 0 56 743 465 647 stz sibusy-* 00523 4 10 001 524 648 tsy 1,* 00524 0 04000 3 649 ind conabt assm 01 12-10-82 15.704 console manager for 355 with multics page 33 operator command processing routines 650 eject 651 ************************************************************************ 652 * 653 * peek aaaaa 654 * peek aaaaa,n 655 * 656 * this command causes the contents of specified locations to be written 657 * onto the console teletypewriter. if "n" is present, it specifies the 658 * number of words to be written, otherwise only one word will be written 659 * aaaaa specifies the address of the first, or only, word written. 660 * 661 * up to eight words will be printed per line 662 * 663 ************************************************************************ 664 00525 665 xpeek null 00525 0 41 711 436 666 ldx3 spicwi-* x3 points to input message 00526 0 10 141 667 667 tsy idx-* extract one or two octal fields 668 669 c(idxof1) = address of 1st, or only, word to be typed 670 c(idxof2) = number of words to be typed (0 = one word) 671 00527 0 20 206 735 672 szn idxof2-* if zero was specified, make it 1 00530 0 64 002 532 673 tnz 2 00531 0 76 204 735 674 aos idxof2-* 675 00532 676 xpk10 null 00532 4 07 131 663 677 lda xalmem-*,* mask address to allowable range 00533 0 32 201 734 678 ansa idxof1-* 00534 0 47 200 734 679 ldq idxof1-* convert address to ascii 00535 0 41 106 643 680 ldx3 xpkout-* 00536 4 10 106 644 681 tsy xpkcnv-*,* 682 00537 373 300 0 683 iacx3 0,b.1 leave extra blank after address 00540 673 011 0 684 ila 9 initialize tally 00541 0 17 040 601 685 sta xpkicw+1-* 686 00542 0 07 173 735 687 lda idxof2-* get remaining count 00543 422 010 0 688 icmpa 8 00544 0 75 002 546 689 tmi 2 if it's less than 8, use as is 00545 673 010 0 690 ila 8 else use 8 691 00546 322 777 0 692 iera -1 c(a) <- -c(a) 00547 773 001 0 693 iaa 1 00550 0 17 100 650 694 sta remain-* hang on to remainder 695 00551 696 xpk15 null conversion loop 00551 373 300 0 697 iacx3 0,b.1 precede word with a blank 00552 4 47 162 734 698 ldq idxof1-*,* convert data word to ascii 00553 4 10 071 644 699 tsy xpkcnv-*,* 700 assm 01 12-10-82 15.704 console manager for 355 with multics page 34 operator command processing routines 00554 673 007 0 701 ila 7 00555 0 16 024 601 702 asa xpkicw+1-* increment tally 00556 0 76 156 734 703 aos idxof1-* and data address 00557 0 76 071 650 704 aos remain-* more data words for this line? 00560 0 64 771 551 705 tnz xpk15-* yes, go convert next one 706 else write out the line 707 00561 708 xpk20 null 00561 0 04 015 576 709 ldaq xpkqa1-* end of binary card 00000011 00562 0 43 063 645 710 ldx1 xpkqx1-* 00563 4 10 063 646 711 tsy xpkwc-*,* write address and contents 00564 0 00600 1 712 zero xpkicw 00565 4 71 062 647 713 tra xpdisp-*,* (accepted) 00566 0 71 773 561 714 tra xpk20-* (busy) 715 716 ********************************************************* 717 * continue processing after 1st write terminates 718 ********************************************************* 719 00567 720 xpeekb null 721 00567 673 770 0 722 ila -8 any more words to be typed? 00570 0 16 145 735 723 asa idxof2-* yes if result > 0 00571 0 75 002 573 724 tmi 2 no 00572 0 64 740 532 725 tnz xpk10-* yes 726 00573 727 xpk50 null 00573 0 07 674 467 728 lda msg2p-* set message "more?" 00574 0 71 577 373 729 tra sp9a-* 730 731 732 00575 233100 0 00576 733 even 00576 000014 0 734 xpkqa1 vfd 12/0,o6/14 00577 0 00567 1 735 ind xpeekb 00600 2 00602 1 736 xpkicw icw xpkmsg,b.0,** 00601 000000 0 737 738 new-line and 64 blanks initially 00602 015012 0 739 xpkmsg vfd 9/cr,9/lf 00603 040040 0 740 aci 16 00604 040040 0 00605 040040 0 00606 040040 0 00607 040040 0 00610 040040 0 00611 040040 0 00612 040040 0 00613 040040 0 assm 01 12-10-82 15.704 console manager for 355 with multics page 35 operator command processing routines 00614 040040 0 00615 040040 0 00616 040040 0 00617 040040 0 00620 040040 0 00621 040040 0 00622 040040 0 00623 040040 0 741 aci 16 00624 040040 0 00625 040040 0 00626 040040 0 00627 040040 0 00630 040040 0 end of binary card 00000012 00631 040040 0 00632 040040 0 00633 040040 0 00634 040040 0 00635 040040 0 00636 040040 0 00637 040040 0 00640 040040 0 00641 040040 0 00642 040040 0 742 00643 2 00603 1 743 xpkout zero xpkmsg+1,b.0 00644 0 06000 3 744 xpkcnv ind octasc 00645 0 00000 0 745 xpkqx1 zero 0 00646 0 00012 1 746 xpkwc ind write 00647 0 07000 3 747 xpdisp ind secdsp 00650 748 remain bss 1 number of words remaining to be printed on line assm 01 12-10-82 15.704 console manager for 355 with multics page 36 operator command processing routines 749 eject 750 ************************************************************************ 751 * 752 * alter aaaaa,bbbbbb 753 * 754 * this command causes the octal number bbbbbb to be stored in the 755 * location whose absolute octal address is aaaaa. 756 * the octal address, aaaaa, will be "anded" with either 077777 or 757 * 037777, depending on the size of core storage in use. 758 * 759 ************************************************************************ 760 00651 761 xalter null 00651 0 41 565 436 762 ldx3 spicwi-* x3 points to input message 00652 0 10 015 667 763 tsy idx-* extract one or two octal fields 764 00653 0 07 061 734 765 lda idxof1-* limit address to 16k or 32k size 00654 4 34 007 663 766 ana xalmem-*,* 00655 4332 00 0 767 cax1 00656 0 07 057 735 768 lda idxof2-* store data in specified address 00657 1 17 000 0 769 sta 0,1 00660 673 001 0 770 ila 1 00661 0 17 054 735 771 sta idxof2-* peek location just altered 00662 0 71 650 532 772 tra xpk10-* 773 774 775 00663 0 00651 0 776 xalmem ind .crmem contains highest address in core assm 01 12-10-82 15.704 console manager for 355 with multics page 37 operator command processing routines 777 eject 778 ************************************************************************ 779 * 780 * test call the on-line t&d system 781 * 782 * this command will allow the future on-line t&d system to be called by 783 * the 355 console operator. 784 * 785 ************************************************************************ 786 00664 787 xtest null 00664 0 56 601 465 788 stz sibusy-* 00665 4 71 001 666 789 tra 1,* (temporary return) 00666 0 07000 3 790 ind secdsp 791 assm 01 12-10-82 15.704 console manager for 355 with multics page 38 idx -- console input data extraction subroutine 792 ttls idx -- console input data extraction subroutine 793 ************************************************************************ 794 * 795 * this subroutine is used to extract octal numbers from the input string 796 * typed on the system console. the routine was designed to permit the 797 * operator to make quick corrections to the octal numbers he may be 798 * required to type. 799 * 800 * for the purposes of this subroutine, the input string is assumed to be 801 * one octal number or two octal numbers separated by a comma. in the 802 * examples which follow, the first column is the input string, the 803 * symbol stands for either a "carriage return" or "x-off" 804 * character. the second and third columns are the output of this sub- 805 * routine -- idxof1 = octal field #1 and idxof2 = octal field #2 806 * 807 * as the input string is scanned (from left to right), octits (which is 808 * the word used to refer to octal integers) are saved in one of the 809 * "octal field registers" until a non-octit is encountered. if this 810 * non-octit is -- 811 * 812 * -- , control is immediately returned to the calling program. 813 * 814 * -- a comma, the saving of octits in the current octal field 815 * register is stopped, a pointer (x2) is bumped to point to 816 * the next octal field register, and scanning continues. 817 * 818 * -- letter x, all octits and resulting octal fields are ignored, 819 * the octal field registers are reset to zero, and scanning 820 * begins with the next input character. 821 * 822 * -- any other non-octit, the octits thus far typed and being saved 823 * in the current octal field register are ignored, the 824 * current octal field register is reset to zero, and 825 * scanning continues at the next character. 826 * 827 * the octal field registers will contain a maximum of six octits. since 828 * each new octit enters the register at the right end by moving the pre- 829 * vious contents left, typing more than six octits removes the high 830 * order extra octits and saves only the low order six octits. 831 * 832 * examples -- 833 * 834 * input string idxof1 idxof2 835 * 836 * 123456 123456 000000 837 * 123456,654321 123456 654321 838 * 1 000001 000000 839 * 1,2 000001 000002 840 * 1234567432,7654321346 567432 321346 841 * 13e12,456e556 000012 000556 842 * 123,456x321,654 000321 000654 assm 01 12-10-82 15.704 console manager for 355 with multics page 39 idx -- console input data extraction subroutine 843 * 844 ************************************************************************ 845 * 846 * calling sequence -- 847 * 848 * x3 = character/word address of start of the input string 849 * 850 * tsy idx-* 851 * 852 * exit conditions -- 853 * 854 * x2 = address of last octal field register used 855 * 856 * n.b. -- future developers... 857 * the following must be done to modify this subroutine to 858 * handle more than the present two octal fields. 859 * 1. following the instruction at , 860 * insert , , etc. 861 * 2. change the instruction at to , 862 * where # is the number of octal fields. 863 * 3. following the instruction at , 864 * insert , , etc. 865 * 866 ************************************************************************ 867 00667 0 00000 0 868 idx ind ** 869 00670 870 idx10 null 00670 0 03 042 732 871 ldx2 idxfof-* x2 points to octal field register 00671 0 56 043 734 872 stz idxof1-* clear octal field registers 00672 0 56 043 735 873 stz idxof2-* 00673 0 56 043 736 874 stz idxpco-* clear pco flag 875 00674 876 idx20 null 00674 3 07 200 0 877 lda 0,3,b.0 get current input character 00675 422 215 0 878 icmpa cr+pbit ? carriage return ? 00676 4 74 771 667 879 tze idx-*,* yes, return to user end of binary card 00000013 00677 422 223 0 880 icmpa xoff+pbit ? x-off ? 00700 4 74 767 667 881 tze idx-*,* yes, return to user 00701 373 300 0 882 iacx3 0,b.1 bump input character pointer 00702 0 23 031 733 883 cmpx2 idxlof-* ? more than 2 octal fields ? 00703 4 74 764 667 884 tze idx-*,* yes, return to user 885 00704 022 177 0 886 iana 127 (000177) strip parity bit 00705 6333 00 0 887 caq 00706 6337 03 0 888 qrl 3 00707 573 772 0 889 iaq -6 ? current character an octit ? 00710 0 64 012 722 890 tnz idx30-* no 00711 0 20 025 736 891 szn idxpco-* ? previous character an octit ? 00712 0 64 003 715 892 tnz 3 yes assm 01 12-10-82 15.704 console manager for 355 with multics page 40 idx -- console input data extraction subroutine 00713 2 56 000 0 893 stz 0,2 no, clear current octal field register, 00714 0 76 022 736 894 aos idxpco-* set pco flag 00715 2 47 000 0 895 ldq 0,2 store octit 00716 0336 17 0 896 als 18-3 in current octal 00717 2334 03 0 897 llr 3 field 00720 2 57 000 0 898 stq 0,2 register 00721 0 71 753 674 899 tra idx20-* 900 00722 901 idx30 null 00722 0 56 014 736 902 stz idxpco-* clear pco flag 00723 422 054 0 903 icmpa 44 (000054) ? current input character a comma ? 00724 0 64 003 727 904 tnz 3 no 00725 273 001 0 905 iacx2 1 yes, bump pointer to next field reg. 00726 0 71 746 674 906 tra idx20-* 907 00727 422 130 0 908 icmpa 88 (000130) ? current input character the letter x ? 00730 0 74 740 670 909 tze idx10-* yes, clear all and start over 00731 0 71 743 674 910 tra idx20-* no, resume scanning 911 912 913 00732 0 00734 1 914 idxfof zero idxof1 00733 0 00736 1 915 idxlof zero idxof2+1 00734 916 idxof1 bss 1 octal field register #1 00735 917 idxof2 bss 1 octal field register #2 00736 918 idxpco bss 1 previous character octit flag end of binary card 00000014 919 end 740 is the next available location. 355map version/assembly dates gmpa 770711/071177 gmpb 770711/071177 gmpc 770711/071177 there were no warning flags in the above assembly assm 01 12-10-82 15.706 console manager for 355 with multics page 41 octal symbol references by sequence no. 2 b.0 329 594 595 596 597 736 743 877 3 b.1 312 504 683 697 882 233 cdicwa 344 169 210 234 281 311 344 463 503 127 cdisp 239 239 431 458 465 483 488 540 553 558 589 263 cmdisp 417 401 407 417 364 cnmpcw 528 456 528 363 cntrbl 526 448 526 30 cntrlx 265 265 313 505 251 con10 399 399 411 253 con20 405 393 405 4 conabt 32 649 226 conbsy 338 149 158 189 199 278 298 320 338 428 480 537 234 conflg 346 275 346 206 conind 325 296 300 325 0 cons 42 20 42 43 235 consjt 376 27 376 243 consol 389 26 389 161 contip 295 24 295 301 222 cqueaq 334 163 204 334 477 225 cquex1 337 164 205 337 478 15 cr 135 135 507 580 613 615 617 739 878 214 crpcw 331 236 331 210 csicw 329 165 206 231 282 329 460 232 csicwa 343 166 207 232 283 343 461 224 cstat 336 304 329 336 442 495 513 231 cwconf 341 160 201 341 471 212 cwpcw 330 173 218 286 330 464 220 cwricw 333 215 233 333 230 cwrite 340 159 200 230 340 435 446 447 476 216 cwwicw 332 170 211 332 462 5 dspqur 31 524 2 g3wjt 34 416 262 g3wjtx 416 391 416 670 idx10 870 870 909 674 idx20 876 876 899 906 910 722 idx30 901 890 901 667 idx 868 667 763 868 879 881 884 732 idxfof 914 871 914 733 idxlof 915 883 915 734 idxof1 916 678 679 698 703 765 872 914 916 735 idxof2 917 672 674 687 723 768 771 873 915 917 736 idxpco 918 874 891 894 902 918 446 input 601 568 597 601 1 invp 33 415 261 invpx 415 378 382 415 656 .crcon 132 132 346 651 .crmem 132 132 776 12 lf 136 136 613 615 617 739 3 macwk1 270 145 177 185 270 322 6 macwk2 270 145 185 270 3 mdisp 29 417 assm 01 12-10-82 15.706 console manager for 355 with multics page 42 octal symbol references by sequence no. 6 modcon 419 379 383 419 471 msg1 613 594 613 466 msg1p 609 543 609 474 msg2 615 595 615 467 msg2p 610 610 728 500 msg3 617 596 617 470 msg3p 611 583 611 227 nocon 339 147 187 272 339 457 6 octasc 35 744 200 pbit 603 507 509 580 603 878 880 650 remain 748 694 704 748 50 sbits 266 266 308 7 secdsp 30 239 747 790 465 sibusy 607 406 408 588 607 647 788 407 sp100 567 567 577 414 sp110 574 570 574 424 sp115 586 581 586 377 sp15 551 545 551 372 sp9 542 538 542 373 sp9a 544 544 584 729 440 spaq 598 409 484 598 444 spaqt 600 555 600 442 spbaq 599 548 599 463 spbx1 605 549 605 366 spcon 536 536 598 600 406 spconb 564 564 599 430 spicw1 594 594 609 432 spicw2 595 595 610 434 spicw3 596 596 611 436 spicwi 597 552 597 666 762 464 spint 606 482 487 539 606 521 spopnd 635 576 635 504 spoptb 622 565 622 462 spx1 604 410 485 556 604 270 t10 433 429 433 275 t20 445 445 470 498 502 506 510 514 305 t25 459 449 459 313 t30 467 443 467 353 t50 512 508 512 320 texit 474 474 515 356 tmaq 520 397 520 264 tmcon 427 427 521 362 tmeict 525 430 525 361 tmquer 524 400 479 486 524 557 335 tmread 494 436 494 360 tmx1 522 398 522 0 tych 131 131 172 217 285 455 462 tyicw 131 131 344 460 tyst 131 131 343 30 w05 151 148 151 71 w105 191 188 191 assm 01 12-10-82 15.706 console manager for 355 with multics page 43 octal symbol references by sequence no. 32 w10 157 150 157 74 w110 198 190 198 170 wco020 303 299 303 202 wcobak 318 273 305 309 314 318 130 wcon 270 22 270 279 316 319 322 201 wcook 316 276 316 116 wrcbak 220 194 220 53 wrcon 185 185 192 193 208 212 213 221 222 550 120 wrcont 229 229 472 63 wrcsi 185 185 202 50 wribak 175 153 175 23 wrisi 145 145 161 12 write 145 145 152 167 176 177 746 522 xabort 646 625 646 663 xalmem 776 677 766 776 651 xalter 761 631 761 23 xoff 137 137 509 880 647 xpdisp 747 713 747 525 xpeek 665 628 665 567 xpeekb 720 720 735 532 xpk10 676 676 725 772 551 xpk15 696 696 705 561 xpk20 708 708 714 644 xpkcnv 744 681 699 744 600 xpkicw 736 685 702 712 736 602 xpkmsg 739 736 739 743 643 xpkout 743 680 743 576 xpkqa1 734 709 734 645 xpkqx1 745 710 745 646 xpkwc 746 711 746 664 xtest 787 634 787 ** 46568 words of memory were used by 355map for this assembly. ----------------------------------------------------------- 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