/* PL/I symbolic debugger routine to do a QIO to TI: from the user task */ userqio: procedure(function_word, function_name, characteristics, status); dcl function_word fixed bin(15), function_name char(*), (characteristics, status) fixed bin(15); %include 'putdef.pli'; %include 'knldef.pli'; dcl (oqiofn, oqiost, oqioch) fixed bin(15) external, /*defined in debasm*/ doqio pointer external, /*ditto*/ (sf_gmc, ie_dna, odsw) fixed bin(15) external; /*ditto*/ dcl no_error fixed bin(15) external; /*IS.SUC RSX dsw/iostatus code*/ dcl a_byte fixed bin(7) based; /**************************************************************************************************************/ call putword(knlpktaddr + oqiofn*2, function_word); /*set function code in user task kernal qio packet*/ call fillpacket(doqio); packet(oqioch) = characteristics; call sendknl; call rcvknl; status = addr(packet(oqiost))->a_byte; /*i/o status code is low-order byte*/ if packet(odsw) ^= no_error ! (status ^= 0 & status ^= no_error & status ^= ie_dna) then call put_skip_list('error from user task ', function_name, ' of TI:, dsw =', packet(odsw), ', I/O status =', status); /*cant give error for ie_dna since that is how breakpoint logic determines if user had TI: attached*/ if function_word = sf_gmc then characteristics = packet(oqioch); end;