/*********************************************************************** * kernal interaction-related definitions for PL/I symbolic debugger * ***********************************************************************/ dcl 1 knldef static external, /*put in structure to cut down on # of externals*/ /* send/receive packet, through which all interaction with kernal goes: */ /*note that there is only one static packet - you can't fillpacket and then getword before send*/ 2 rcvpacket, 3 rcvtsknam fixed bin(31), 3 packet(13) fixed bin(15), 2 knlpktaddr fixed bin(15), /*contains address in user task of word before actual packet, for calculating addresses from subscripts that start at one*/ 2 usertaskrad50 fixed bin(31), 2 suppress_address_error fixed bin(1) initial(0/*false*/), /*for internal R command*/ 2 prwbbuf pointer /*initial(addr(packet(orwbbf))) set by debinit*/, rwbbuf char(6) based(prwbbuf); /*assume rwbmax<=6*/ /* procedures in knlsndrcv.pli: */ dcl chkknl entry, (sendknl, rcvknl) entry, /*data is passed through packet*/ fillpacket entry(pointer /*to code packet defined in debasm*/), getbytes entry(fixed bin(15) /*addr in user task*/, fixed bin(15) /*# of bytes*/), /*data is in rwbbuf on return*/ putstring entry(fixed bin(15) /*addr in user task to put first byte*/, char(*) /*string of bytes to store*/); %include 'getword.inc'; %include 'putword.inc';