-+-+-+-+-+-+-+-+ START OF PART 2 -+-+-+-+-+-+-+-+ X`09movl`09#`5EB1,`20alignment`09`09;`20Assume`20word X`09pushaq`09word_qual`09`09;`20Word X`09calls`09#1,`20g`5Ecli$present`09;`20Is`20it`20there X`09blbs`09r0,`2099$`09`09`09;`20Get`20out`20when`20got`20it X`09decl`09size`09`09`09;`20Assume`20byte X`09clrl`09alignment`09`09;`20Assume`20byte X`09pushaq`09byte_qual`09`09;`20Byte X`09calls`09#1,`20g`5Ecli$present`09;`20Is`20it`20there X`09blbs`09r0,`2099$`09`09`09;`20Get`20out`20when`20got`20it X`09movl`09#4,`20size`09`09;`20Default`20to`20longword X`09movl`09#`5EB11,`20alignment`09;`20Default`20to`20longword X`09movl`09#ss$_normal,`20r0`09`09;`20all`20is`20ok X99$:`09rsb X; X;`20Opens`20and`20connects`20to`20the`20output`20file X; X;`20Inputs: X;`20Outputs: X;`20`20`20`20R0:`20Status X;`20Trashes: X;`20`20`20`20R1 X; Xopen_output_r1: X`09movq`09output,`20r0`09`09`09;`20get`20descriptor X`09movw`09r0,`20outfab+fab$b_fns`09`09;`20set`20size`20of`20filename X`09movl`09r1,`20outfab+fab$l_fna`09`09;`20set`20address`20of`20buffer X`09moval`09mbox__errcre,`20outfab+fab$l_ctx`09;`20Set`20error`20creating`20mes Vsage X`09$create`09fab`20=`20outfab,`20-`09`09`09;`20open`20the`20file X`09`09err`20=`20rmserr`09`09`09;`20Signal`20any`20errors X`09blbc`09r0,`2099$ X`09movzwl`09#default_line_length,`20- X`09`09line_length`09`09`09;`20Set`20default`20line`20length X`09bitl`09#dev$m_trm!dev$m_mbx,`20- X`09`09outfab+fab$l_dev`09`09;`20Terminal`20or`20mailbox? X`09beql`091$`09`09`09`09;`20Nope`20leave`20as`20default X; X;`20Can't`20use`20fab$w_bls`20as`20it`20always`20returns`2080! X; X`09bsbb`09get_terminal_width_r1`09`09;`20get`20terminal`20width X`09blbc`09r0,`2099$ X1$:`09moval`09mbox__errcon,`20outfab+fab$l_ctx`09;`20Set`20error`20connecting V`20message X`09$connect`20- X`09`09rab`20=`20outrab,`20-`09`09`09;`20Connect`20the`20rab X`09`09err`20=`20rmserr`09`09`09;`20Signal`20any`20errors X99$:`09rsb X; Xget_terminal_width_r1: X`09pushl`09outnam+nam$l_dev`09`09;`20get`20address`20of`20device X`09movzbl`09outnam+nam$b_dev,`20-(sp)`09`09;`20Set`20size`20of`20device X`09movl`09sp,`20r0 X`09$getdviw_s`20- X`09`09devnam`20=`20(r0),`20-`09`09;`20Use`20device`20from`20NAM`20block X`09`09itmlst`20=`20trmdvilst,`20-`09`09;`20Get`20terminal`20or`20mailbox`20siz Ve X`09`09iosb`20`20`20=`20iosb X`09addl2`09#8,`20sp`09`09`09`09;`20Drop`20descriptor X`09blbc`09r0,`2099$ X`09movl`09iosb,`20r0`09`09`09;`20get`20other`20status X`09blbc`09r0,`2099$ X`09cmpw`09line_length,`20#outbuf_len`09;`20Is`20it`20bigger`20than`20buffer X`09bleq`0999$`09`09`09`09;`20Its`20ok X`09movzbl`09#outbuf_len,`20line_length`09;`20Minimise X99$:`09rsb X; X`09.entry`09get_mailbox_sizes`20`5Em<> X`09$cmkrnl_s`20- X`09`09routin`20=`20get_mailbox_sizes_k,`20- X`09`09arglst`20=`20(ap) X`09ret X; X`09.entry`09get_mailbox_sizes_k`20`5Em X Xchan`20`20`20=`204 Xiniquo`20=`20chan`20+`204 Xbufquo`20=`20iniquo`20+`204 Xnargs`20`20=`20bufquo/4 X; X`09movl`09#ss$_accvio,`20r0`09`09`09;`20Assume`20access`20violation X`09prober`09#0,`20#*4,`20(ap)`09`09;`20Probe`20argument`20list X`09beql`0999$`09`09`09`09;`20Can't`20read`20argument`20list X`09movl`09chan(ap),`20r0`09`09`09;`20get`20channel`20number X`09bsbw`09get_mbx_ucb_r5`09`09`09;`20Get`20device`20ucb`20of`20mailbox X`09blbc`09r0,`2099$`09`09`09`09;`20Quit`20with`20error X; X;`20We`20don't`20care`20if`20bufquo`20is`20changed`20while`20we`20are`20readin Vg`20it.`20Its`20for X;`20information`20only`20so`20we`20wont`20need`20to`20lock`20them`20down. X; X`09movl`09#ss$_accvio,`20r0`09`09`09;`20Assume`20access`20violation X`09assume`09`20eq`20bufquo`09`09;`20Move`20in`20one`20go? X`09movq`09iniquo(ap),`20r2`09`09`09;`20Get`20both`20addresses X`09probew`09#0,`20#4,`20(r2)`09`09`09;`20Can`20we`20write`20the`20first X`09beql`0999$`09`09`09`09;`20Nope`20so`20quit X`09movzwl`09ucb$w_iniquo(r5),`20(r2)`09`09;`20Get`20initial`20size X`09probew`09#0,`20#4,`20(r3)`09`09`09;`20Can`20we`20write`20the`20first X`09beql`0999$`09`09`09`09;`20Nope`20so`20quit X`09movzwl`09ucb$w_bufquo(r5),`20(r3)`09`09;`20Get`20remaining`20space X`09movl`09#ss$_normal,`20r0`09`09`09;`20All`20was`20ok X99$:`09ret X; X`09.entry`09mbox_contents_k`20`5Em X; Xchan`20`20=`204 Xctx`20`20`20=`20chan`20+`204 Xpid`20`20`20=`20ctx`20+`204 Xmsg`20`20`20=`20pid`20+`204 Xlen`20`20`20=`20msg`20+`204 Xwait`20`20=`20len`20+`204 Xnargs`20=`20wait/4 X; X`09movl`09#ss$_accvio,`20r0`09`09`09;`20Assume`20access`20violation X`09prober`09#0,`20#*4,`20(ap)`09`09;`20Probe`20argument`20list X`09beql`0999$`09`09`09`09;`20Can't`20read`20argument`20list X`09bsbw`09probe_buffers_r11`09`09;`20probe`20buffer`20and`20retlen X`09blbc`09r0,`2099$`09`09`09`09;`20cant`20read`20it X`09movl`09chan(ap),`20r0`09`09`09;`20get`20channel`20number X`09bsbw`09get_mbx_ucb_r5`09`09`09;`20Get`20device`20ucb`20of`20mailbox X`09blbc`09r0,`2099$`09`09`09`09;`20Quit`20with`20error X`09movl`09(r6),`20r4`09`09`09;`20Get`20context`20value X`09incl`09(r6)`09`09`09`09;`20Increment`20context X`09movl`09pid(ap),`20r3`09`09`09;`20Get`20address`20of`20PID X`09probew`09#0,`20#4,`20(r3)`09`09`09;`20Write`20it? X`09beql`0999$`09`09`09`09;`20Quit`20with`20error X`09bsbb`09find_message_r10`09`09;`20look`20up`20message X`09blbc`09r0,`2099$`09`09`09`09;`20Quit`20with`20error X`09tstl`09r6`09`09`09`09;`20An`20IRP`20with`20this`20message? X`09beql`091$`09`09`09`09;`20No`20IRP`20so`20not`20waiting X`09movl`09#1,`20(r11)`09`09`09;`20Say`20process`20waiting X1$:`09movl`09r1,`20r0`09`09`09`09;`20Convert`20pid`20from`20internal X`09jsb`09g`5Eexe$ipid_to_epid`09`09;`20`20to`20external`20format X`09movl`09r0,`20(r3)`09`09`09;`20Save`20the`20PID X`09movl`09#ss$_normal,`20r0`09`09`09;`20assume`20allis`20ok X`09cmpw`09r7,`20r10`09`09`09`09;`20Buffer`20too`20small X`09bgequ`093$`09`09`09`09;`20It`20was`20big`20enough X`09movl`09#str$_tru,`20r0`09`09`09;`20Say`20truncated X`09movw`09r7,`20r10 X3$:`09movw`09r10,`20(r9)`09`09`09;`20Save`20length X99$:`09ret X; X;`20Looks`20up`20the`20message`20in`20the`20mailbox X; X;`20Inputs: X;`20`20`20`20R5:`20`20Address`20of`20mailbox`20UCB X;`20`20`20`20R7:`20`20Size`20of`20user`20buffer X;`20`20`20`20R8:`20`20Address`20of`20user`20buffer X;`20Outputs: X;`20`20`20`20R0:`20`20Status X;`20`20`20`20R10:`20Size`20of`20mailbox`20message X;`20Trashes: X;`20`20`20`20R1,R2,R4 X; X`09.enable`09lsb Xfind_message_r10: Xlock_start1: X`09movl`09g`5Evms$gl_license_version,`20r10`09;`20Get`20VMS`20version X`09lock`09lockname`20=`20MAILBOX,`20-`09`09;`20Lock`20mailbox X`09`09lockipl`20`20=`20#ipl$_mailbox,`20-`09;`20This`20is`20the`20IPL X`09`09preserve`20=`20NO`09`09`09;`20Trash`20R0 X`09moval`09ucb$l_fqfl(r5),`20r1`09`09;`20Get`20start`20of`20queue X`09movl`09r1,`20r2`09`09`09`09;`20copy`20start`20of`20queue X1$:`09movl`09mbx_l_flink(r2),`20r2`09`09;`20Get`20forward`20pointer X`09assume`09mbx_l_flink`20eq`200`09`09;`20Can`20we`20compare`20to`20top? X`09cmpl`09r2,`20r1`09`09`09`09;`20Back`20at`20start? X`09beql`094$`09`09`09`09;`20We`20are`20done X`09sobgeq`09r4,`201$`09`09`09`09;`20Next`20message X`09pushr`09#`5Em`09`09;`20save`20registers`20over`20move X`09cmpl`09r10,`20#`5EX00050004;`205.4? X`09blequ`092$`09`09`09`09;`20Yep`20use`20old`20format X`09pushl`09mbx5_l_pid(r2)`09`09`09;`20Copy`20pid`20of`20message`20to`20stack X`09movzwl`09mbx5_w_msgsiz(r2),`20r10`09`09;`20get`20size`20of`20message X`09movl`09mbx5_l_irpadr(r2),`20r6`09`09;`20Get`20address`20of`20IRP X`09movc5`09r10,`20mbx5_r_msg(r2),`20#0,`20- X`09`09r7,`20(r8)`09`09`09;`20Copy`20message`20to`20buffer X`09brb`093$ X2$:`09pushl`09mbx4_l_pid(r2)`09`09`09;`20Copy`20pid`20of`20message`20to`20stac Vk X`09movzwl`09mbx4_w_msgsiz(r2),`20r10`09`09;`20get`20size`20of`20message X`09movl`09mbx4_l_irpadr(r2),`20r6`09`09;`20Get`20address`20of`20IRP X`09movc5`09r10,`20mbx4_r_msg(r2),`20#0,`20- X`09`09r7,`20(r8)`09`09`09;`20Copy`20message`20to`20buffer X3$:`09popr`09#`5Em`09`09;`20Restore`20registers X4$:`09unlock`09lockname`20=`20MAILBOX,`20-`09`09;`20Unlock`20mailbox X`09`09newipl`20`20`20=`20#0,`20-`09`09;`20Set`20IPL`20to`20zero X`09`09preserve`20=`20NO`09`09`09;`20Trash`20R0 Xlock_end1: X`09movzwl`09#ss$_endoffile,`20r0`09`09;`20Say`20no`20more`20messages X`09tstl`09r1`09`09`09`09;`20PID`20or`20system`20address? X`09blss`0999$`09`09`09`09;`20Quit`20with`20error X`09movl`09#ss$_normal,`20r0`09`09`09;`20Say`20all`20was`20ok X99$:`09rsb X`09.disable`20lsb X X; X;`20Probes`20the`20buffer`20and`20its`20return`20length X; X;`20Inputs: X;`20`20`20`20ctx(ap):`20`20Address`20of`20context`20longword X;`20`20`20`20len(ap):`20`20Address`20of`20return`20length`20word X;`20`20`20`20msg(ap):`20`20Address`20of`20buffer`20descriptor X;`20`20`20`20wait(ap):`20Address`20of`20return`20flag`20longword X;`20Outputs: X;`20`20`20`20R0:`20`20Return`20status X;`20`20`20`20R6:`20`20Address`20of`20context`20longword`20(probed) X;`20`20`20`20R7:`20`20Length`20of`20message`20buffer X;`20`20`20`20R8:`20`20Address`20of`20message`20buffer`20(probed) X;`20`20`20`20R9:`20`20Address`20of`20return`20length`20word`20(probed) X;`20`20`20`20R11:`20Address`20of`20wait`20flag`20to`20return X;`20Trashes: X;`20`20`20`20R1,R2,R3 X; Xprobe_buffers_r11: X`09movl`09#ss$_accvio,`20r0`09`09`09;`20assume`20failure X`09movl`09len(ap),`20r9`09`09`09;`20get`20address`20of`20length X`09probew`09#0,`20#2,`20(r9)`09`09`09;`20Write`20it X`09beql`0999$`09`09`09`09;`20Quit`20with`20error X`09movl`09ctx(ap),`20r6`09`09`09;`20Get`20address`20of`20context X`09probew`09#0,`20#4,`20(r6)`09`09`09;`20Can`20we`20read`20it X`09beql`0999$`09`09`09`09;`20Quit`20with`20error X`09movl`09wait(ap),`20r11`09`09`09;`20Get`20address`20of`20wait`20flag X`09probew`09#0,`20#4,`20(r11)`09`09`09;`20Write`20the`20flag? X`09beql`0999$`09`09`09`09;`20Quit`20with`20error X`09clrl`09(r11)`09`09`09`09;`20Assume`20not`20waiting X`09movl`09msg(ap),`20r1`09`09`09;`20get`20address`20of`20descriptor X`09jsb`09g`5Eexe$probew_dsc`09`09;`20Probe`20the`20buffer X`09blbc`09r0,`2099$`09`09`09`09;`20Quit`20with`20error X`09movzwl`09r1,`20r7`09`09`09`09;`20get`20real`20length X`09movl`09r2,`20r8`09`09`09`09;`20copy`20address`20for`20later X`09movl`09#ss$_normal,`20r0`09`09`09;`20say`20all`20is`20ok X99$:`09rsb X; X;`20Gets`20the`20ucb`20of`20a`20mailbox`20from`20its`20channel`20number X; X;`20Inputs: X;`20`20`20`20R0:`20Channel`20number X;`20Outputs: X;`20`20`20`20R0:`20Status X;`20`20`20`20R1:`20CCB X;`20`20`20`20R5:`20UCB X;`20Trashes: X;`20`20`20`20R2,R3 X; Xget_mbx_ucb_r5: X`09jsb`09g`5Eioc$verifychan`09`09;`20check`20out`20channel X`09blbc`09r0,`2099$`09`09`09`09;`20Quit`20with`20error X; X;`20R1`20now`20contains`20CCB`20address. X; X`09movl`09ccb$l_ucb(r1),`20r5`09`09;`20Get`20UCB`20address X`09movzbl`09#ss$_devnotmbx,`20r0`09`09;`20Assume`20bad`20channel X`09cmpb`09ucb$b_devclass(r5),`20#dc$_mailbox;`20This`20a`20mailbox? X`09bneq`0999$`09`09`09`09;`20Quit`20with`20error X`09cmpb`09ucb$b_devtype(r5),`20#dt$_mbx`09;`20This`20a`20mailbox? X`09bneq`0999$`09`09`09`09;`20Quit`20with`20error X`09movl`09#ss$_normal,`20r0`09`09`09;`20All`20is`20ok X99$:`09rsb X; X;`20Gets`20the`20logical`20name`20associated`20with`20the`20mailbox`20(backpoi Vnter`20logical) X; X`09.entry`09get_logical_k`20`5Em Xchan`20`20=`204 Xlog`20`20`20=`20chan`20+`204 Xlen`20`20`20=`20log`20`20+`204 Xnargs`20=`20len/4 X; X`09movl`09#ss$_accvio,`20r0`09`09`09;`20Assume`20access`20violation X`09prober`09#0,`20#*4,`20(ap)`09`09;`20Probe`20argument`20list X`09beql`0999$`09`09`09`09;`20Can't`20read`20argument`20list X`09movl`09len(ap),`20r6`09`09`09;`20Get`20address`20of`20return`20len X`09probew`09#0,`20#2,`20(r6)`09`09`09;`20Write`20it? X`09beql`0999$`09`09`09`09;`20Quit`20with`20error X`09movl`09chan(ap),`20r0`09`09`09;`20get`20channel`20number X`09bsbb`09get_mbx_ucb_r5`09`09`09;`20Get`20device`20ucb`20of`20mailbox X`09blbc`09r0,`2099$`09`09`09`09;`20Quit`20with`20error X`09movl`09log(ap),`20r1`09`09`09;`20get`20address`20of`20logical`20name X`09jsb`09g`5Eexe$probew_dsc`09`09;`20Probe`20the`20buffer X`09blbc`09r0,`2099$`09`09`09`09;`20Quit`20with`20error X`09movq`09r1,`20r2`09`09`09`09;`20Copy`20to`20safe`20place X`09clrw`09(r6)`09`09`09`09;`20Default`20to`20no`20string X`09movl`09g`5Ectl$gl_pcb,`20r4`09`09;`20Get`20current`20PCB`20address X`09jsb`09g`5Elnm$lockr`09`09`09;`20Lock`20logical`20name`20table X`09movl`09ucb$l_logadr(r5),`20r0`09`09;`20Get`20address`20of`20logical`20name V X`09beql`0998$`09`09`09`09;`20nothing`20there X`09movab`09lnmb$t_name(r0),`20r1`09`09;`20Get`20address`20of`20string X`09movzbl`09(r1)+,`20r0`09`09`09;`20Get`20size`20of`20string X`09cmpw`09r2,`20r0`09`09`09`09;`20Users`20buffer`20big`20enough? X`09bgequ`091$`09`09`09`09;`20Branch`20if`20big`20enough X`09movl`09r2,`20r0`09`09`09`09;`20Reduce`20to`20maximum X1$:`09movzbw`09r0,`20(r6)`09`09`09;`20Save`20length X`09movc5`09r0,`20(r1),`20#`5EA/`20/,`20r2,`20(r3)`09;`20Copy`20string`20to`20b Vuffer X98$:`09movl`09g`5Ectl$gl_pcb,`20r4`09`09;`20Get`20current`20PCB`20address X`09jsb`09g`5Elnm$unlock`09`09`09;`20Lock`20logical`20name`20table X`09movl`09#ss$_normal,`20r0`09`09`09;`20say`20all`20is`20ok X99$:`09ret X; X`09.entry`09strip_device`20`5Em X; Xdev`20=`204 X; X`09movl`09dev(ap),`20r6`09`09`09;`20Get`20address`20of`20descriptor X`09movq`09(r6),`20r7`09`09`09;`20Get`20descriptor X`09movzwl`09r7,`20r7`09`09`09`09;`20Get`20real`20size X`09beql`0998$`09`09`09`09;`20Nothing`20to`20do X1$:`09cmpb`09#`5EA/_/,`20(r8)`09`09`09;`20Underscore`20on`20front? X`09bneq`092$`09`09`09`09;`20Nope X`09decl`09r7`09`09`09`09;`20One`20less`20character X`09beql`0997$`09`09`09`09;`20Thats`20it X`09movc3`09r7,`201(r8),`20(r8)`09`09`09;`20Copy`20droping`20data X2$:`09cmpb`09-1(r8)`5Br7`5D,`20#`5EA/:/`09`09;`20Collon`20on`20end X`09bneq`0997$`09`09`09`09;`20Reset`20size`20and`20continue X`09decl`09r7`09`09`09`09;`20One`20less`20chars X97$:`09movw`09r7,`20(r6)`09`09`09;`20Set`20new`20length X98$:`09movl`09#ss$_normal,`20r0`09`09`09;`20all`20is`20ok X`09ret X; X`09.entry`09get_input`20`5Em<>`09`09;`20Input`20routine`20for`20CLI$DCL_PARSE V Xline`20`20`20=`204`09`09`09`09;`20put`20input`20here Xprompt`20=`208`09`09`09`09;`20use`20this`20prompt Xlength`20=`2012`09`09`09`09;`20put`20length`20of`20input`20here X`09pushal`09frcpmt`09`09`09;`20used`20to`20force`20prompting`20after`20first X`09pushl`09length(ap)`09`09;`20put`20length`20here X`09assume`09`20eq`20prompt`09;`20can`20we`20copy`20both`20in`20one X`09movq`09line(ap),`20-(sp)`09`09;`20copy`20line`20and`20prompt X`09calls`09#4,`20g`5Elib$get_foreign`09;`20get`20command`20line X`09ret X; X;`20This`20routine`20signals`20rms`20errors. X; X X`09.entry`09rmserr`20`5Em X; Xrmsblock`20=`204 Xsavedr0`20`20=`20rmsblock`20+`204 Xsavedr1`20`20=`20savedr0`20+`204 Xsavedpc`20`20=`20savedr1`20+`204 Xsavedpsl`20=`20savedpc`20+`204 X; X`09assume`09fab$l_sts`20eq`20rab$l_sts X`09assume`09fab$l_stv`20eq`20rab$l_stv X`09assume`09fab$l_ctx`20eq`20rab$l_ctx X`09assume`09fab$b_bid`20eq`20rab$b_bid X; X`09movl`09rmsblock(ap),`20r0 X`09pushl`09fab$l_stv(r0)`09`09`09;`20Save`20other`20status`20value X`09pushl`09fab$l_sts(r0)`09`09`09;`20Save`20status`20value X; X;`20Assume`20this`20is`20a`20RAB`20and`20if`20so`20move`20to`20the`20FAB X; X`09movl`09r0,`20r1`09`09`09`09;`20Assume`20this`20is`20the`20fab X`09cmpb`09rab$b_bid(r0),`20#rab$c_bid`09;`20this`20a`20rab? X`09bneq`091$`09`09`09`09;`20Its`20a`20FAB`20so`20no`20need`20to`20switch X`09movl`09rab$l_fab(r0),`20r1`09`09;`20Get`20address`20of`20the`20fab X1$:`09movl`09fab$l_nam(r1),`20r2`09`09;`20Skip`20to`20NAM`20block X; X;`20Try`20and`20use`20resultant`20name`20first`20then`20expanded`20then`20fina Vly`20fab`20inputs. X; X`09pushl`09nam$l_rsa(r2)`09`09`09;`20Save`20address`20of`20string X`09movzbl`09nam$b_rsl(r2),`20-(sp)`09`09;`20Set`20length`20of`20string X`09bneq`092$`09`09`09`09;`20We`20got`20one`20so`20continue X`09movl`09nam$l_esa(r2),`204(sp)`09`09;`20Save`20address`20of`20other`20string V X`09movzbl`09nam$b_esl(r2),`20(sp)`09`09;`20Save`20new`20length`20of`20string X`09bneq`092$`09`09`09`09;`20We`20got`20one`20so`20continue X`09movl`09fab$l_fna(r1),`204(sp)`09`09;`20Save`20address`20of`20other`20string V X`09movzbl`09fab$b_fns(r1),`20(sp)`09`09;`20Save`20new`20length`20of`20string X2$:`09pushl`09#2`09`09`09`09;`20Two`20arguments`20for`20error X`09pushl`09fab$l_ctx(r0)`09`09`09;`20Save`20primary`20error X`09calls`09#6,`20g`5Elib$signal`09`09;`20Signal`20the`20error X`09ret X; X;`20This`20routine`20gets`20the`20read`20and`20write`20attention`20lists`20for V`20a`20mailbox. X; X`09.entry`09get_attn_list_k`20`5Em X; Xchan`20`20`20=`204`09`09;`20mailbox`20channel Xlist`20`20`20=`20chan`20+`204`09;`20list`20required`200`20=`20read,`201`20=`20 Vwrite Xctx`20`20`20`20=`20list`20+`204`09;`20Context`20for`20call`20loops Xmode`20`20`20=`20ctx`20+`204`09;`20access`20mode`20of`20AST Xpid`20`20`20`20=`20mode`20+`204`09;`20Process`20id`20of`20process Xastadr`20=`20pid`20+`204`09;`20AST`20address Xastprm`20=`20astadr`20+`204`09;`20AST`20parameter Xnargs`20`20=`20astprm/4`09;`20Number`20of`20arguments X; X`09.enable`09lsb X`09bsbb`09get_args_r10`09`09`09;`20Get`20the`20arguments X`09blbc`09r0,`2099$ X`09moval`09ucb$l_astqbl(r5),`20r2`09`09;`20Assume`20write`20ast`20queue X`09blbc`09list(ap),`201$`09`09`09;`20Just`20test`20low`20bit X`09moval`09ucb$l_astqfl(r5),`20r2`09`09;`20Use`20read`20queue`20instead X1$: Xlock_start2: X`09lock`09lockname`20=`20MAILBOX,`20-`09`09;`20Lock`20mailbox X`09`09lockipl`20`20=`20#ipl$_mailbox,`20-`09;`20This`20is`20the`20IPL X`09`09preserve`20=`20NO`09`09`09;`20Trash`20R0 X`09movzwl`09#ss$_endoffile,`20r0`09`09;`20Assume`20we`20fail X2$:`09movl`09(r2),`20r2`09`09`09;`20Get`20forward`20link X`09beql`0998$`09`09`09`09;`20Done X`09sobgeq`09r6,`202$`09`09`09`09;`20Do`20next X`09movq`09acb$l_kast(r2),`20r3`09`09;`20get`20astadr`20and`20astprm X`09extzv`09#acb$v_mode,`20#acb$s_mode,`20- X`09`09acb$l_kast+8(r2),`20r1`09`09;`20Get`20access`20mode X`09movl`09acb$l_kast+12(r2),`20r2`09`09;`20get`20pid X`09movl`09#ss$_normal,`20r0`09`09`09;`20All`20is`20ok X98$:`09unlock`09lockname`20=`20MAILBOX,`20-`09`09;`20Unlock`20mailbox X`09`09newipl`20`20`20=`20#0,`20-`09`09;`20Set`20IPL`20to`20zero X`09`09preserve`20=`20YES`09`09`09;`20Save`20R0 Xlock_end2: X`09blbc`09r0,`2099$`09`09`09`09;`20Quit`20with`20error X`09movl`09r1,`20(r7)`09`09`09;`20Save`20mode X`09movl`09r3,`20(r9)`09`09`09;`20Save`20astadr X`09movl`09r4,`20(r10)`09`09`09;`20Save`20astprm X`09movl`09r2,`20r0`09`09`09`09;`20Get`20into`20reg X`09jsb`09g`5Eexe$ipid_to_epid`09`09;`20`20to`20external`20format X`09movl`09r0,`20(r8)`09`09`09;`20Save`20the`20PID X`09movl`09#ss$_normal,`20r0`09`09`09;`20All`20is`20ok X99$:`09ret X`09.disable`20lsb X; X;`20Gets`20the`20arguments`20and`20context`20etc`20from`20arguments`20list X; Xget_args_r10: X`09movl`09#ss$_accvio,`20r0`09`09`09;`20Assume`20access`20violation X`09prober`09#0,`20#*4,`20(ap)`09`09;`20Probe`20argument`20list X`09beql`0999$`09`09`09`09;`20Can't`20read`20argument`20list X`09movl`09ctx(ap),`20r1`09`09`09;`20Get`20address`20of`20context X`09probew`09#0,`20#4,`20(r1)`09`09`09;`20Write`20it? X`09beql`0999$`09`09`09`09;`20Exit`20with`20error X`09movl`09(r1),`20r6`09`09`09;`20Get`20context`20value X`09incl`09(r1)`09`09`09`09;`20Update`20for`20next`20call X`09assume`09`20eq`20pid`09`09`09;`20Fields`20next`20to`20each`20other V X`09movq`09mode(ap),`20r7`09`09`09;`20Get`20access`20mode`20and`20pid X`09probew`09#0,`20#4,`20(r7)`09`09`09;`20Write`20the`20mode? X`09beql`0999$`09`09`09`09;`20Quit`20with`20error X`09probew`09#0,`20#4,`20(r8)`09`09`09;`20Write`20the`20pid? X`09beql`0999$`09`09`09`09;`20quit`20with`20error X`09assume`09`20eq`20astprm`09`09;`20Fields`20next`20to`20each`20othe Vr X`09movq`09astadr(ap),`20r9`09`09`09;`20Get`20astadr`20and`20astprm`20address X`09probew`09#0,`20#4,`20(r9)`09`09`09;`20Write`20the`20mode? X`09beql`0999$`09`09`09`09;`20quit`20with`20error X`09probew`09#0,`20#4,`20(r10)`09`09`09;`20Write`20the`20mode? X`09beql`0999$`09`09`09`09;`20Quit`20with`20error X`09movl`09chan(ap),`20r0`09`09`09;`20get`20channel`20number X`09bsbw`09get_mbx_ucb_r5`09`09`09;`20Get`20device`20ucb`20of`20mailbox X99$:`09rsb X; X; X;`20This`20routine`20gets`20the`20IO`20lists`20for`20a`20mailbox`20for`20readv Vblk. X; X`09.entry`09get_read_list_k`20`5Em X; Xchan`20`20`20=`204`09`09;`20mailbox`20channel Xctx`20`20`20`20=`20chan`20+`204`09;`20Context`20for`20call`20loops Xmode`20`20`20=`20ctx`20+`204`09;`20access`20mode`20of`20AST Xpid`20`20`20`20=`20mode`20+`204`09;`20Process`20id`20of`20process Xastadr`20=`20pid`20+`204`09;`20AST`20address Xastprm`20=`20astadr`20+`204`09;`20AST`20parameter Xnargs`20`20=`20astprm/4`09;`20Number`20of`20arguments X; X`09.enable`09lsb X`09bsbw`09get_read_args_r10`09`09;`20Get`20the`20arguments X`09blbc`09r0,`20lock_end4 X`09movl`09g`5Evms$gl_license_version,`20r11`09;`20Get`20VMS`20version Xlock_start4: X`09lock`09lockname`20=`20MAILBOX,`20-`09`09;`20Lock`20mailbox X`09`09lockipl`20`20=`20#ipl$_mailbox,`20-`09;`20This`20is`20the`20IPL X`09`09preserve`20=`20NO`09`09`09;`20Trash`20R0 X`09movzwl`09#ss$_endoffile,`20r0`09`09;`20Assume`20we`20fail X`09cmpl`09r11,`20#`5EX00050004;`205.4? X`09blequ`091$`09`09`09`09;`20Yep`20use`20old`20format X`09movaq`09ucb$l_mb_readqfl(r5),`20r3`09;`20New`20head`20for`20IO`20queue X`09brb`092$`09`09`09`09;`20Get`20in`20line X1$:`09bbc`09#ucb$v_bsy,`20ucb$l_sts(r5),`2098$`09;`20I/O`20in`20progress? X`09movl`09ucb$l_irp(r5),`20r2`09`09;`20Get`20current`20IRP X`09decl`09r6`09`09`09`09;`20First`20context? X`09blss`094$`09`09`09`09;`20Give`20current`20IO`20packet`20first X`09movaq`09ucb$l_ioqfl(r5),`20r3`09`09;`20Get`20IRP`20list`20head X2$:`09movl`09r3,`20r2`09`09`09`09;`20Copy`20header X`09assume`09irp$l_ioqfl`20eq`200 X3$:`09movl`09(r2),`20r2`09`09`09;`20Get`20forward`20link X`09cmpl`09r2,`20r3`09`09`09`09;`20At`20head`20again? X`09beql`0998$`09`09`09`09;`20Done X`09sobgeq`09r6,`203$`09`09`09`09;`20Do`20next X`09assume`09`20eq`20irp$l_astprm`09;`20Move`20both`20field`20at V`20once? X4$:`09movq`09irp$l_astprm(r2),`20r3`09`09;`20get`20astadr`20and`20astprm X`09extzv`09#acb$v_mode,`20#acb$s_mode,`20- X`09`09irp$b_rmod(r2),`20r1`09`09;`20Get`20access`20mode X`09movl`09irp$l_pid(r2),`20r2`09`09;`20get`20pid X`09movl`09#ss$_normal,`20r0`09`09`09;`20All`20is`20ok X98$:`09unlock`09lockname`20=`20MAILBOX,`20-`09`09;`20Unlock`20mailbox X`09`09newipl`20`20`20=`20#0,`20-`09`09;`20Set`20IPL`20to`20zero X`09`09preserve`20=`20YES`09`09`09;`20Save`20R0 Xlock_end4: X`09blbc`09r0,`2099$`09`09`09`09;`20Quit`20with`20error X`09movl`09r1,`20(r7)`09`09`09;`20Save`20mode X`09movl`09r3,`20(r9)`09`09`09;`20Save`20astadr X`09movl`09r4,`20(r10)`09`09`09;`20Save`20astprm X`09movl`09r2,`20r0`09`09`09`09;`20Get`20into`20reg X`09jsb`09g`5Eexe$ipid_to_epid`09`09;`20`20to`20external`20format X`09movl`09r0,`20(r8)`09`09`09;`20Save`20the`20PID X`09movl`09#ss$_normal,`20r0`09`09`09;`20All`20is`20ok X99$:`09ret X`09.disable`20lsb X; X;`20Gets`20the`20arguments`20and`20context`20etc`20from`20arguments`20list X; Xget_read_args_r10: X`09movl`09#ss$_accvio,`20r0`09`09`09;`20Assume`20access`20violation X`09prober`09#0,`20#*4,`20(ap)`09`09;`20Probe`20argument`20list X`09beql`0999$`09`09`09`09;`20Can't`20read`20argument`20list X`09movl`09ctx(ap),`20r1`09`09`09;`20Get`20address`20of`20context X`09probew`09#0,`20#4,`20(r1)`09`09`09;`20Write`20it? X`09beql`0999$`09`09`09`09;`20Exit`20with`20error X`09movl`09(r1),`20r6`09`09`09;`20Get`20context`20value X`09incl`09(r1)`09`09`09`09;`20Update`20for`20next`20call X`09assume`09`20eq`20pid`09`09`09;`20Fields`20next`20to`20each`20other V X`09movq`09mode(ap),`20r7`09`09`09;`20Get`20access`20mode`20and`20pid X`09probew`09#0,`20#4,`20(r7)`09`09`09;`20Write`20the`20mode? X`09beql`0999$`09`09`09`09;`20Quit`20with`20error X`09probew`09#0,`20#4,`20(r8)`09`09`09;`20Write`20the`20pid? X`09beql`0999$`09`09`09`09;`20quit`20with`20error X`09assume`09`20eq`20astprm`09`09;`20Fields`20next`20to`20each`20othe Vr X`09movq`09astadr(ap),`20r9`09`09`09;`20Get`20astadr`20and`20astprm`20address X`09probew`09#0,`20#4,`20(r9)`09`09`09;`20Write`20the`20mode? X`09beql`0999$`09`09`09`09;`20quit`20with`20error X`09probew`09#0,`20#4,`20(r10)`09`09`09;`20Write`20the`20mode? X`09beql`0999$`09`09`09`09;`20Quit`20with`20error X`09movl`09chan(ap),`20r0`09`09`09;`20get`20channel`20number X`09bsbw`09get_mbx_ucb_r5`09`09`09;`20Get`20device`20ucb`20of`20mailbox X99$:`09rsb X; X; X;`20This`20routine`20gets`20the`20processes`20waiting`20for`20free`20space`20i Vn`20this`20mailbox. X; X`09.entry`09get_rwmbx_k`20`5Em X; Xchan`20`20`20=`204`09`09;`20mailbox`20channel Xctx`20`20`20`20=`20chan`20+`204`09;`20Context`20for`20call`20loops Xpid`20`20`20`20=`20ctx`20+`204`09;`20Process`20id`20of`20process Xnargs`20`20=`20pid/4`09`09;`20Number`20of`20arguments X; X`09movl`09#ss$_accvio,`20r0`09`09`09;`20Assume`20access`20violation X`09prober`09#0,`20#*4,`20(ap)`09`09;`20Probe`20argument`20list X`09beql`0999$`09`09`09`09;`20Can't`20read`20argument`20list X`09movl`09ctx(ap),`20r7`09`09`09;`20Get`20context`20arg X`09probew`09#0,`20#4,`20(r7)`09`09`09;`20Can`20we`20write`20it X`09beql`0999$`09`09`09`09;`20Quit`20with`20error X`09movl`09pid(ap),`20r8`09`09`09;`20Get`20address`20of`20pid X`09probew`09#0,`20#4,`20(r8)`09`09`09;`20Can`20we`20write`20it X`09beql`0999$`09`09`09`09;`20Quit`20with`20error X`09movl`09(r7),`20r6`09`09`09;`20Get`20offset`20into`20PCBVEC X`09movl`09chan(ap),`20r0`09`09`09;`20get`20channel`20number X`09bsbw`09get_mbx_ucb_r5`09`09`09;`20Get`20device`20ucb`20of`20mailbox X`09blbc`09r0,`2099$`09`09`09`09;`20Quit`20with`20error X`09bsbb`09lookup_rwmbx_r6`09`09`09;`20Look`20up`20a`20process X`09blbc`09r0,`2099$`09`09`09`09;`20Quit`20with`20error X`09movl`09r6,`20(r7)`09`09`09;`20Save`20updated`20context X`09movl`09r1,`20(r8)`09`09`09;`20Save`20away`20PID X99$:`09ret X; X;`20Looks`20up`20processes`20that`20are`20in`20RWMBX`20for`20space`20in`20the V`20specified`20mailbox. X; X;`20Inputs: X;`20`20`20`20R5:`20Address`20of`20mailbox`20UCB X;`20`20`20`20R6:`20PIX`20of`20last`20scanned`20process X;`20Outputs: X;`20`20`20`20R0:`20Status X;`20`20`20`20R1:`20PID`20of`20matching`20process X;`20Trashes: X;`20`20`20`20R2,R3,R4 X; X`09.enable`20lsb Xlookup_rwmbx_r6: Xlock_start3: X`09lock`09lockname`20=`20SCHED,`20-`09`09;`20Lock`20sched`20database X`09`09lockipl`20`20=`20#ipl$_sched,`20-`09;`20This`20is`20the`20IPL X`09`09preserve`20=`20NO`09`09`09;`20Trash`20R0 X`09subl3`09r6,`20g`5Esch$gl_maxpix,`20r2`09`09;`20Vectors`20left`20to`20proces Vs X`09blss`0997$`09`09`09`09;`20Nothing`20left`20to`20process X`09movl`09g`5Esch$gl_pcbvec,`20r3`09`09;`20Get`20address`20of`20vector X`09moval`09(r3)`5Br6`5D,`20r3`09`09`09;`20Get`20address`20to`20start`20from X1$:`09incl`09r6`09`09`09`09;`20Keep`20track`20of`20PIX X`09movl`09(r3)+,`20r4`09`09`09;`20Get`20PCB`20address X`09cmpw`09pcb$w_state(r4),`20#sch$c_mwait`09;`20Misc`20or`20mutex`20wait`20sta Vte? X`09bneq`092$`09`09`09`09;`20Not`20do`20the`20next X`09cmpl`09pcb$l_efwm(r4),`20#rsn$_mailbox`09;`20Waiting`20for`20mailbox`20spac Ve? X`09bneq`092$`09`09`09`09;`20Nope`20do`20the`20next`20one X`09bbc`09#pcb$v_phdres,`20pcb$l_sts(r4),`202$;`20Can't`20get`20to`20header X`09movl`09pcb$l_phd(r4),`20r0`09`09;`20Get`20phd`20address X`09cmpl`09phd$l_r5(r0),`20r5`09`09;`20This`20the`20right`20UCB X`09bneq`092$`09`09`09`09;`20Nope,`20wrong`20mailbox X`09movl`09pcb$l_epid(r4),`20r1`09`09;`20Get`20PID`20for`20output X`09movl`09#ss$_normal,`20r0`09`09`09;`20All`20is`20ok X`09brb`0998$`09`09`09`09;`20Get`20out`20now X2$:`09sobgeq`09r2,`201$`09`09`09`09;`20Next`20one X97$:`09movzwl`09#ss$_endoffile,`20r0`09`09;`20We`20have`20failed`20to`20find V`20one X98$:`09unlock`09lockname`20=`20SCHED,`20-`09`09;`20Unlock`20sched`20database X`09`09newipl`20`20`20=`20#0,`20-`09`09;`20Set`20IPL`20to`20zero X`09`09preserve`20=`20YES`09`09`09;`20Save`20R0 Xlock_end3: X`09rsb X`09.disable`20lsb X X`09.end`09mbox $ call unpack MBOX.MAR;41 2000248660 "" 99 4 9 $! $ create 'f' Xmodule`20mbox_clitable X`20`20`20define`20verb`20mbox X`20`20`20parameter`20p1,`20label=MAILBOX,`20prompt="Mailbox", X`20`20`20`20`20`20value`20(required,`20type=$infile) X`20`20`20qualifier`20output`20default`20value`20(type=$outfile,default="SYS$OU VTPUT:") X`20`20`20qualifier`20byte`20nonnegatable X`20`20`20qualifier`20word`20nonnegatable X`20`20`20qualifier`20longword`20nonnegatable X`20`20`20qualifier`20hexadecimal`20nonnegatable X`20`20`20qualifier`20decimal`20nonnegatable X`20`20`20qualifier`20octal`20nonnegatable X`20`20`20disallow`20any2`20(byte,`20word,`20longword) X`20`20`20disallow`20any2`20(decimal,`20hexadecimal,`20octal) X! X!`20Output`20restriction`20qualifiers X! X`20`20`20qualifier`20rwmbx`20negatable X`20`20`20qualifier`20read_attention`20negatable X`20`20`20qualifier`20write_attention`20negatable X`20`20`20qualifier`20pending_reads`20negatable X`20`20`20qualifier`20messages`20negatable X`20`20`20qualifier`20headers`20negatable $ call unpack MBOX_CLD.CLD;5 151007096 "" 2 5 9 $! $ create 'f' X`0D`0A X`0D`0A X`0D`0A X1`20MBOX`0D`0A X`20`20`20Displays`20information`20on`20mailboxes`20(MBAnnnn:`20`20`20devices) V`20`20within`20`20the`0D`0A X`20`20`20system.`0D`0A X`0D`0A X`20`20`20Format`0D`0A X`0D`0A X`20`20`20`20`20MBOX`20mailboxname`0D`0A X`0D`0A X2`20PARAMETER`0D`0A X`20`20mailboxname`0D`0A X`20`20`20`20`20Specifies`20the`20name`20of`20`20the`20`20mailbox`20`20to`20`20 Vbe`20`20examined.`20`20`20Wildcard`0D`0A X`20`20`20`20`20characters`20`20(*`20`20and`20`20%)`20`20are`20`20allowed.`20 V`20`20Mailboxs`20are`20selected`20by`0D`0A X`20`20`20`20`20matching`20the`20following:`0D`0A X`0D`0A X`20`20`20`20`201.`20`20Physical`20device`20name`20MBAnnnn`0D`0A X`0D`0A X`20`20`20`20`202.`20`20Logical`20name`20created`20by`20the`20the`20$CREMBX`20s Vystem`20service`0D`0A X`0D`0A X`0D`0A X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20`20`20NOTE`0D`0A X`0D`0A X`20`20`20`20`20`20`20`20`20`20`20`20`20Logical`20`20names`20`20are`20`20matche Vd`20`20regardless`20`20of`20`20the`0D`0A X`20`20`20`20`20`20`20`20`20`20`20`20`20logical`20`20name`20table`20that`20cont Vains`20them.`20`20This`20can`0D`0A X`20`20`20`20`20`20`20`20`20`20`20`20`20cause`20multiple`20mailboxes`20to`20be V`20returned`20on`20`20exact`0D`0A X`20`20`20`20`20`20`20`20`20`20`20`20`20name`20`20matches`20`20even`20`20though V`20only`20one`20logical`20name`0D`0A X`20`20`20`20`20`20`20`20`20`20`20`20`20might`20be`20seen`20with`20a`20'show`20 Vlogical'`20command.`0D`0A X`0D`0A X2`20/BYTE`0D`0A X`20Formats`20the`20mail`20messages`20in`20bytes.`20`20The`20/BYTE,`20/LONGWORD V,`20and`20`20/WORD`0D`0A X`20qualifiers`20are`20mutually`20exclusive.`0D`0A X2`20/DECIMAL`0D`0A X`20Dumps`20mail`20messages`20in`20decimal`20`20radix.`20`20`20The`20`20/DECIMA VL,`20`20/HEXADECIMAL`0D`0A X`20(default),`20and`20/OCTAL`20qualifiers`20are`20mutually`20exclusive.`0D`0A V X`0D`0A X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20NOTE`0D`0A X`0D`0A X`20`20`20`20`20`20`20`20`20Decimal`20numbers`20are`20displayed`20as`20unsigned V`20quantities.`0D`0A X`0D`0A X2`20/HEADERS`0D`0A X`20`20`20`20/HEADERS`20(default)`0D`0A X`20`20`20`20/NOHEADERS`0D`0A X`0D`0A X`20Includes`20header`20information`20for`20all`20mailboxes`20matching`20the`20 V`20specified`0D`0A X`20mailbox`20`20name.`20`20`20By`20`20default`20`20headers`20`20are`20`20only V`20printed`20for`20mailboxs`0D`0A X`20matching`20other`20criterion`20such`20as`20/PENDING_READS`20or`20/MESSAGE. V`0D`0A X2`20/HEXADECIMAL`0D`0A X`20`20`20`20/HEXADECIMAL`20(default)`0D`0A X`0D`0A X`20Dumps`20mail`20messages`20in`20hexadecimal`20radix.`20`20The`20/DECIMAL,`20 V/HEXADECIMAL`0D`0A X`20(default),`20and`20/OCTAL`20qualifiers`20are`20mutually`20exclusive.`0D`0A V X2`20/LONGWORD`0D`0A X`20`20`20`20/LONGWORD`20(default)`0D`0A X`0D`0A X`20Formats`20the`20mail`20messages`20in`20longwords.`20`20The`20`20/BYTE,`20 V`20/LONGWORD,`20`20and`0D`0A X`20/WORD`20qualifiers`20are`20mutually`20exclusive.`0D`0A X2`20/MESSAGES`0D`0A X`20`20`20`20/MESSAGES`20(default)`0D`0A X`20`20`20`20/NOMESSAGES`0D`0A X`0D`0A X`20Selects`20mailboxs`20that`20contain`20messages.`0D`0A X2`20/OCTAL`0D`0A X`20Dumps`20mail`20messages`20`20in`20`20octal`20`20radix.`20`20`20The`20`20/DE VCIMAL,`20`20/HEXADECIMAL`0D`0A X`20(default),`20and`20/OCTAL`20qualifiers`20are`20mutually`20exclusive.`0D`0A V X2`20/OUTPUT`0D`0A X`20`20`20`20/OUTPUT=filename`0D`0A X`0D`0A X`20Specifies`20the`20output`20file`20for`20the`20dump.`20`20If`20the`20/OUTPUT V`20qualifier`20`20is`0D`0A X`20not`20`20specified,`20`20the`20dump`20goes`20to`20SYS$OUTPUT.`20`20No`20wil Vdcard`20characters`0D`0A X`20are`20allowed.`0D`0A X2`20/PENDING_READS`0D`0A X`20`20`20`20/PENDING_READS`20(default)`0D`0A X`20`20`20`20/NOPENDING_READS`0D`0A X`0D`0A X`20Selects`20mailboxs`20that`20have`20asynchronous`20reads`20pending`20on`20th Vem.`0D`0A X2`20/READ_ATTENTION`0D`0A X`20`20`20`20/READ_ATTENTION`20(default)`0D`0A X`20`20`20`20/NOREAD_ATTENTION`0D`0A X`0D`0A X`20Selects`20mailboxs`20that`20have`20read`20attention`20ASTs`20on`20them.`0D V`0A X2`20/RWMBX`0D`0A X`20`20`20`20/RWMBX`20(default)`0D`0A X`20`20`20`20/NORWMBX`0D`0A X`0D`0A X`20Selects`20mailboxs`20that`20have`20processes`20waiting`20in`20RWMBX`20for V`20free`20`20space`0D`0A X`20within`20them.`0D`0A X2`20/WORD`0D`0A X`20Formats`20the`20mail`20messages`20in`20words.`20`20The`20/BYTE,`20/LONGWORD V,`20and`20`20/WORD`0D`0A X`20qualifiers`20are`20mutually`20exclusive.`0D`0A X2`20/WRITE_ATTENTION`0D`0A X`20`20`20`20/WRITE_ATTENTION`20(default)`0D`0A X`20`20`20`20/NOWRITE_ATTENTION`0D`0A X`0D`0A X`20Selects`20mailboxs`20that`20have`20write`20attention`20ASTs`20on`20them.`0D V`0A X2`20Format_of_output`0D`0A X3`20Header_format`0D`0A XThe`20format`20of`20the`20header`20lines`20is:`0D`0A X`0D`0A XDevice:`20MBA4`20(CLU$CONFIGURE_MBX),`20Channels:`207,`20Operations:`20211`0D V`0A XTotal`20size:`201056,`20Remaining:`201056,`20Message`20size:`20256,`20Msgs:`20 V0`0D`0A X`0D`0A X"Device"`20gives`20`20the`20`20physical`20`20device`20`20name`20`20"MBA4:"`20 V`20of`20`20the`20`20mailbox`0D`0A Xfollowed`20`20by`20`20the`20`20logical`20name`20that`20was`20defined`20when`20 Vthis`20mailbox`20was`0D`0A Xcreated`20"CLU$CONFIGURE_MBX".`0D`0A X`0D`0A X"Channels"`20gives`20the`20total`20number`20of`20channels`20assigned`20to`20th Ve`20`20mailbox`0D`0A Xeither`20by`20calls`20to`20SYS$ASSIGN`20or`20SYS$CREMBX.`0D`0A X`0D`0A X"Operations"`20gives`20the`20total`20number`20`20of`20`20SYS$QIO`20`20requests V`20`20that`20`20have`0D`0A Xcompleted`20for`20this`20device.`0D`0A X`0D`0A X"Total`20size"`20gives`20the`20total`20size`20of`20the`20mailbox`20in`20bytes. V`0D`0A X`0D`0A X"Remaining"`20`20gives`20`20the`20`20space`20`20remaining`20`20in`20`20bytes V`20`20for`20`20`20additional`0D`0A Xmessages.`0D`0A X`0D`0A X"Message`20size"`20gives`20the`20maximum`20size`20of`20`20a`20`20single`20`20m Vailbox`20`20message.`0D`0A XThis`20may`20exceed`20the`20size`20of`20the`20size`20of`20the`20mailbox`20in V`20which`20case`20mail`0D`0A Xmessages`20are`20limited`20to`20the`20size`20of`20the`20mailbox.`0D`0A X`0D`0A X"Msgs"`20gives`20the`20total`20number`20of`20mail`20`20messages`20`20within`20 V`20the`20`20mailbox.`0D`0A XDue`20`20to`20`20the`20dynamic`20nature`20of`20the`20system`20the`20number`20o Vf`20messages`20given`0D`0A Xby`20this`20field`20and`20the`20number`20of`20messages`20printed`20out`20may V`20differ.`0D`0A X3`20RWMBX_format`0D`0A XMBA6533`20(ERRORLOGMBX),`20Size:`20956,35,3600,`20Msgs:`2018,`20Refs:`204,`20O Vps:`20729168`0D`0A X`0D`0A XRWMBX,`20PID:`204240261A`20(DEVC_TRANSERV)`0D`0A X`0D`0A XRWMBX,`20PID:`20424049F1`20(DEVC_MARKER)`0D`0A X`0D`0A XThis`20display`20`20shows`20`20two`20`20processes`20`20(DEVC_TRANSERV`20`20and V`20`20DEVC_MARKER)`0D`0A Xwaiting`20`20for`20`20space`20`20within`20`20a`20`20mailbox`20`20(ERRORLOGMBX) V.`20`20Both`20of`20these`0D`0A Xprocesses`20must`20be`20trying`20to`20write`20a`20message`20that`20contains`20 Vmore`20than`2035`0D`0A Xbytes`20(remaining`20space`20within`20the`20mailbox).`0D`0A X3`20Read_attention_format`0D`0A XREADATTN,`20PID:`2041600106`20(CONFIGURE),`20Mode:`20U,`20ADR:`200000F7B2,`20P VRM:`200000E175`0D`0A X`0D`0A X"PID"`20gives`20the`20process`20identification`20of`20the`20process`20`20with V`20`20the`20`20read`0D`0A Xattention`20AST`20queued`20followed`20by`20the`20name`20of`20the`20process.`0D V`0A X`0D`0A X"Mode"`20gives`20the`20current`20access`20mode`20of`20the`20attention`20AST. V`20`20Can`20be`20one`0D`0A Xof`20User,`20Supervisor,`20Executive`20or`20Kernel.`0D`0A X`0D`0A X"ADR"`20gives`20the`20address`20of`20the`20routine`20that`20`20will`20`20be`20 V`20called`20`20at`20`20AST`0D`0A Xlevel`20on`20a`20read`20to`20the`20mailbox.`0D`0A X`0D`0A X"PRM"`20gives`20the`20AST`20parameter`20associated`20with`20this`20I/O`20reque Vst.`0D`0A X3`20Write_attention_format`0D`0A XWRTATTN,`20PID:`2041600106`20(CONFIGURE),`20Mode:`20U,`20ADR:`200000F7B2,`20PR VM:`200000E175`0D`0A X`0D`0A X"PID"`20gives`20the`20process`20identification`20of`20the`20process`20with`20 V`20the`20`20write`0D`0A Xattention`20AST`20queued`20followed`20by`20the`20name`20of`20the`20process.`0D V`0A X`0D`0A X"Mode"`20gives`20the`20current`20access`20mode`20of`20the`20attention`20AST. V`20`20Can`20be`20one`0D`0A Xof`20User,`20Supervisor,`20Executive`20or`20Kernel.`0D`0A X`0D`0A X"ADR"`20gives`20the`20address`20of`20the`20routine`20that`20`20will`20`20be`20 V`20called`20`20at`20`20AST`0D`0A Xlevel`20on`20a`20write`20to`20the`20mailbox.`0D`0A X`0D`0A X"PRM"`20gives`20the`20AST`20parameter`20associated`20with`20this`20I/O`20reque Vst.`0D`0A X3`20Pending_read_format`0D`0A XREADIO,`20PID:`2041600107`20(IPCACP),`20Mode:`20K,`20ADR:`2000000000,`20PRM: V`2000000000`0D`0A X`0D`0A X"PID"`20gives`20the`20process`20identification`20of`20the`20process`20with`20t Vhe`20pending`0D`0A Xread`20followed`20by`20the`20name`20of`20the`20process.`0D`0A X`0D`0A X"Mode"`20gives`20the`20current`20access`20mode`20of`20the`20read.`20`20Can`20b Ve`20one`20of`20User,`0D`0A XSupervisor,`20Executive`20or`20Kernel.`0D`0A X`0D`0A X"ADR"`20gives`20the`20address`20of`20the`20routine`20that`20`20will`20`20be`20 V`20called`20`20at`20`20AST`0D`0A Xlevel`20on`20I/O`20completion.`0D`0A X`0D`0A X"PRM"`20gives`20the`20AST`20parameter`20associated`20with`20this`20I/O`20reque Vst.`0D`0A X3`20Message_format`0D`0A XDefault`20message`20format`20/HEXADECIMAL/LONGWORD:`0D`0A X`0D`0A XMessage`20number:`201,`2013`20bytes,`20Written`20by:`2041600698`20(_LTA5069:) V`0D`0A X`0D`0A X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`2033`2020322031`2020676E69`20747365 V54`20Testing`201`202`203.......`2000000000`0D`0A X`0D`0A XMessage`20format`20/DECIMAL/WORD`0D`0A X`0D`0A XMessage`20number:`201,`2013`20bytes,`20Written`20by:`2041600698`20(_LTA5069:) V`20Waiting`0D`0A X`0D`0A X`20`20`20`20`20`20`20`20`2051`20`208242`20`208241`20`208295`2028265`2029811`20 V25940`20Testing`201`202`203...`20`20`20`20`20`20`20`200`0D`0A X`0D`0A X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20`20 V`20`20`20`20`20`20`20NOTE`0D`0A X`0D`0A X`20`20`20`20`20`20`20`20The`20"Waiting"`20within`20the`20message`20header`20 V`20is`20`20displayed`0D`0A X`20`20`20`20`20`20`20`20when`20`20the`20`20process`20`20did`20not`20issue`20an V`20IO$M_NOW`20modifier`0D`0A X`20`20`20`20`20`20`20`20with`20the`20IO$_WRITEVBLK`20function`20code.`0D`0A X`0D`0A $ call unpack MBOX_HELP.HLP;2 - 587364685 "FORMAT VARIABLE;CARRIAGE_CONTROL NONE" 14 6 9 $! $ create 'f' X.no`20number`20.no`20paging`20.sthl`205,1,1 X.br X1`20MBOX X.br X.lm`20+3 XDisplays`20information`20on`20mailboxes`20(MBAnnnn:`20devices)`20within`20the V`20system. X.blank XFormat X.blank X.lm`20+2 XMBOX`20mailboxname X.blank X.lm`200 X2`20PARAMETER X.br X.lm`20+2 Xmailboxname X.lm`20+3 XSpecifies`20the`20name`20of`20the`20mailbox`20to`20be`20examined.`20Wildcard V`20characters X(*`20and`20%)`20`20are`20allowed.`20Mailboxs`20are`20selected`20by`20matching V`20the`20following: X.list X.list`20element;Physical`20device`20name`20MBAnnnn X.list`20element;Logical`20name`20created`20by`20the`20the`20$CREMBX`20system V`20service X.end`20list X.note XLogical`20names`20are`20matched`20regardless`20of`20the`20logical`20name`20tab Vle`20that`20contains Xthem.`20This`20can`20cause`20multiple`20mailboxes`20to`20be`20returned`20on`20 Vexact`20name`20matches Xeven`20though`20only`20one`20logical`20name`20might`20be`20seen`20with`20a`20' Vshow`20logical'`20command. X.end`20note X.lm`200 X2`20/BYTE X.lm`20+1 XFormats`20the`20mail`20messages`20in`20bytes.`20The`20/BYTE,`20/LONGWORD,`20an Vd`20/WORD Xqualifiers`20are`20mutually`20exclusive. X.lm`200 X2`20/DECIMAL X.lm`20+1 XDumps`20mail`20messages`20in`20decimal`20radix.`20The`20/DECIMAL,`20/HEXADECIM VAL X(default),`20and`20/OCTAL`20qualifiers`20are`20mutually`20exclusive. X.note XDecimal`20numbers`20are`20displayed`20as`20unsigned`20quantities. X.end`20note X.lm`200 X2`20/HEADERS X.lm`20+4 X/HEADERS`20(default) X.br X/NOHEADERS X.blank X.lm`20-3 XIncludes`20header`20information`20for`20all`20mailboxes`20matching`20the`20spe Vcified`20mailbox Xname.`20By`20default`20headers`20are`20only`20printed`20for`20mailboxs`20match Ving`20other`20criterion Xsuch`20as`20/PENDING__READS`20or`20/MESSAGE. X.br X.lm`200 X2`20/HEXADECIMAL X.lm`20+4 X/HEXADECIMAL`20(default) X.blank X.lm`20-3 XDumps`20mail`20messages`20in`20hexadecimal`20radix.`20The`20/DECIMAL,`20/HEXAD VECIMAL X(default),`20and`20/OCTAL`20qualifiers`20are`20mutually`20exclusive. X.lm`200 X2`20/LONGWORD X.lm`20+4 X/LONGWORD`20(default) X.blank X.lm`20-3 XFormats`20the`20mail`20messages`20in`20longwords.`20The`20/BYTE,`20/LONGWORD, V`20and`20/WORD Xqualifiers`20are`20mutually`20exclusive. X.lm`200 X2`20/MESSAGES X.lm`20+4 X/MESSAGES`20(default) X.br X/NOMESSAGES X.blank X.lm`20-3 XSelects`20mailboxs`20that`20contain`20messages. X.lm`200 X2`20/OCTAL X.br X.lm`20+1 XDumps`20mail`20messages`20in`20octal`20radix.`20The`20/DECIMAL,`20/HEXADECIMAL V X(default),`20and`20/OCTAL`20qualifiers`20are`20mutually`20exclusive. X.lm`200 X2`20/OUTPUT X.lm`20+4 X/OUTPUT=filename X.blank X.lm`20-3 XSpecifies`20the`20output`20file`20for`20the`20dump.`20If`20the`20/OUTPUT`20qua Vlifier`20is Xnot`20specified,`20the`20dump`20goes`20to`20SYS$OUTPUT.`20No`20wildcard`20char Vacters Xare`20allowed. X.lm`200 X2`20/PENDING__READS X.lm`20+4 X/PENDING__READS`20(default) X.br X/NOPENDING__READS X.blank X.lm`20-3 XSelects`20mailboxs`20that`20have`20asynchronous`20reads`20pending`20on`20them. V X.lm`200 X2`20/READ__ATTENTION X.lm`20+4 X/READ__ATTENTION`20(default) X.br X/NOREAD__ATTENTION X.blank X.lm`20-3 XSelects`20mailboxs`20that`20have`20read`20attention`20ASTs`20on`20them. X.lm`200 X2`20/RWMBX X.lm`20+4 X/RWMBX`20(default) X.br X/NORWMBX X.blank X.lm`20-3 XSelects`20mailboxs`20that`20have`20processes`20waiting`20in`20RWMBX`20for`20fr Vee`20space`20within Xthem. X.lm`200 X2`20/WORD X.lm`20+1 XFormats`20the`20mail`20messages`20in`20words.`20The`20/BYTE,`20/LONGWORD,`20an Vd`20/WORD Xqualifiers`20are`20mutually`20exclusive. X.lm`200 X2`20/WRITE__ATTENTION X.lm`20+4 X/WRITE__ATTENTION`20(default) X.br X/NOWRITE__ATTENTION X.blank X.lm`20-3 XSelects`20mailboxs`20that`20have`20write`20attention`20ASTs`20on`20them. X.lm`200 X2`20Format__of__output X.br X3`20Header__format X.br XThe`20format`20of`20the`20header`20lines`20is: X.blank X.lit XDevice:`20MBA4`20(CLU$CONFIGURE_MBX),`20Channels:`207,`20Operations:`20211 XTotal`20size:`201056,`20Remaining:`201056,`20Message`20size:`20256,`20Msgs:`20 V0 X.end`20lit X.blank X"Device"`20gives`20the`20physical`20device`20name`20"MBA4:"`20of`20the`20mailb Vox`20followed`20by Xthe`20logical`20name`20that`20was`20defined`20when`20this`20mailbox`20was`20cr Veated X"CLU$CONFIGURE__MBX". X.blank X"Channels"`20gives`20the`20total`20number`20of`20channels`20assigned`20to`20th Ve`20mailbox Xeither`20by`20calls`20to`20SYS$ASSIGN`20or`20SYS$CREMBX. X.blank X"Operations"`20gives`20the`20total`20number`20of`20SYS$QIO`20requests`20that V`20have`20completed`20for Xthis`20device. X.blank X"Total`20size"`20gives`20the`20total`20size`20of`20the`20mailbox`20in`20bytes. V X.blank X"Remaining"`20gives`20the`20space`20remaining`20in`20bytes`20for`20additional V`20messages. X.blank X"Message`20size"`20gives`20the`20maximum`20size`20of`20a`20single`20mailbox`20 Vmessage.`20This`20may Xexceed`20the`20size`20of`20the`20size`20of`20the`20mailbox`20in`20which`20case V`20mail`20messages`20are Xlimited`20to`20the`20size`20of`20the`20mailbox. X.blank X"Msgs"`20gives`20the`20total`20number`20of`20mail`20messages`20within`20the`20 Vmailbox.`20Due`20to`20the Xdynamic`20nature`20of`20the`20system`20the`20number`20of`20messages`20given`20 Vby`20this`20field`20and`20the Xnumber`20of`20messages`20printed`20out`20may`20differ. X.br X3`20RWMBX__format X.lit XMBA6533`20(ERRORLOGMBX),`20Size:`20956,35,3600,`20Msgs:`2018,`20Refs:`204,`20O Vps:`20729168 X XRWMBX,`20PID:`204240261A`20(DEVC_TRANSERV) X XRWMBX,`20PID:`20424049F1`20(DEVC_MARKER) X.end`20lit X.blank XThis`20display`20shows`20two`20processes`20(DEVC__TRANSERV`20and`20DEVC__MARKE VR)`20waiting`20for Xspace`20within`20a`20mailbox`20(ERRORLOGMBX).`20Both`20of`20these`20processes V`20must`20be`20trying`20to Xwrite`20a`20message`20that`20contains`20more`20than`2035`20bytes`20(remaining V`20space`20within`20the Xmailbox). X.br X3`20Read__attention__format X.lit XREADATTN,`20PID:`2041600106`20(CONFIGURE),`20Mode:`20U,`20ADR:`200000F7B2,`20P VRM:`200000E175 X.end`20lit X.blank X"PID"`20gives`20the`20process`20identification`20of`20the`20process`20with`20t Vhe`20read`20attention XAST`20queued`20followed`20by`20the`20name`20of`20the`20process. X.blank X"Mode"`20gives`20the`20current`20access`20mode`20of`20the`20attention`20AST. V`20Can`20be`20one`20of`20User, XSupervisor,`20Executive`20or`20Kernel. X.blank X"ADR"`20gives`20the`20address`20of`20the`20routine`20that`20will`20be`20called V`20at`20AST`20level`20on`20a Xread`20to`20the`20mailbox. X.blank X"PRM"`20gives`20the`20AST`20parameter`20associated`20with`20this`20I/O`20reque Vst. X.br X3`20Write__attention__format X.lit XWRTATTN,`20PID:`2041600106`20(CONFIGURE),`20Mode:`20U,`20ADR:`200000F7B2,`20PR VM:`200000E175 X.end`20lit X.blank X"PID"`20gives`20the`20process`20identification`20of`20the`20process`20with`20t Vhe`20write`20attention XAST`20queued`20followed`20by`20the`20name`20of`20the`20process. X.blank X"Mode"`20gives`20the`20current`20access`20mode`20of`20the`20attention`20AST. V`20Can`20be`20one`20of`20User, XSupervisor,`20Executive`20or`20Kernel. X.blank X"ADR"`20gives`20the`20address`20of`20the`20routine`20that`20will`20be`20called V`20at`20AST`20level`20on`20a Xwrite`20to`20the`20mailbox. X.blank X"PRM"`20gives`20the`20AST`20parameter`20associated`20with`20this`20I/O`20reque Vst. X.br X3`20Pending__read__format X.lit XREADIO,`20PID:`2041600107`20(IPCACP),`20Mode:`20K,`20ADR:`2000000000,`20PRM: V`2000000000 X.end`20lit X.blank X"PID"`20gives`20the`20process`20identification`20of`20the`20process`20with`20t Vhe`20pending`20read Xfollowed`20by`20the`20name`20of`20the`20process. X.blank X"Mode"`20gives`20the`20current`20access`20mode`20of`20the`20read.`20Can`20be V`20one`20of`20User, XSupervisor,`20Executive`20or`20Kernel. X.blank X"ADR"`20gives`20the`20address`20of`20the`20routine`20that`20will`20be`20called V`20at`20AST`20level`20on`20I/O Xcompletion. X.blank X"PRM"`20gives`20the`20AST`20parameter`20associated`20with`20this`20I/O`20reque Vst. X.br X3`20Message__format X.br XDefault`20message`20format`20/HEXADECIMAL/LONGWORD: X.blank X.lit XMessage`20number:`201,`2013`20bytes,`20Written`20by:`2041600698`20(_LTA5069:) V X X`20`20`20`20`20`20`20`20`20`20`20`20`20`20`2033`2020322031`2020676E69`20747365 V54`20Testing`201`202`203.......`2000000000 X.end`20lit X.blank XMessage`20format`20/DECIMAL/WORD X.blank X.lit XMessage`20number:`201,`2013`20bytes,`20Written`20by:`2041600698`20(_LTA5069:) V`20Waiting X X`20`20`20`20`20`20`20`20`2051`20`208242`20`208241`20`208295`2028265`2029811`20 V25940`20Testing`201`202`203...`20`20`20`20`20`20`20`200 X.end`20lit X.note XThe`20"Waiting"`20within`20the`20message`20header`20is`20displayed`20when`20th Ve`20process`20did`20not Xissue`20an`20IO$M__NOW`20modifier`20with`20the`20IO$__WRITEVBLK`20function`20c Vode. X.end`20note +-+-+-+-+-+-+-+- END OF PART 2 +-+-+-+-+-+-+-+-