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