DIRECTORY IO, SoftcardDataExchImpl, SoftcardUtil; SoftcardDataExchUtilImpl: CEDAR PROGRAM IMPORTS IO, SoftcardDataExchImpl, SoftcardUtil SHARES SoftcardDataExchImpl ~ BEGIN OPEN SoftcardDataExchImpl; Dump: PUBLIC PROC [s: IO.STREAM, showContent: BOOLEAN _ TRUE] ~ { IO.PutRope[s, "6085 "]; DumpZone[data.myZone, s, showContent]; IO.PutRope[s, "Sparc "]; DumpZone[data.hisZone, s, showContent]; }; dumpAbLimit: NAT _ 128; DumpZone: PUBLIC PROC [z: Zone, s: IO.STREAM, showContent: BOOLEAN _ TRUE] ~ TRUSTED { r: REF TEXT _ NEW[TEXT[32*1024-1]]; IO.PutF[s, "Zone: %x\n", IO.card[z.a]]; IO.PutF[s, "lastWritten: %d\n", [cardinal[SoftcardUtil.GetCard32[[z.a+lastWritten]]]]]; IO.PutF[s, "lastRed : %d\n", [cardinal[SoftcardUtil.GetCard32[[z.a+lastRed]]]]]; FOR i: CARD32 IN [0..maxHeaders) DO hr: HeaderRec _ GetHeaderRec[z, i]; IO.PutF[s, "msg #%d: ", IO.card[i]]; IO.PutF[s, "b: %d, l: %d, t:%d, d1: %d, d2: %d\n", IO.card[hr.b], IO.card[hr.size], IO.card[hr.type], IO.card[hr.data1], IO.card[hr.data2]]; IF showContent AND hr.size>0 THEN { bufHead, bufTail: Block; r.length _ hr.size; bufHead _ hr.b; bufTail _ IF bufHead+hr.size>bufSize THEN hr.size-bufSize+bufHead ELSE bufHead+hr.size; IF bufHead<=bufTail THEN { SoftcardUtil.CopyFrom[r, 0, hr.size, [z+buffer+bufHead/2]]; } ELSE { SoftcardUtil.CopyFrom[r, 0, bufSize-bufHead, [z+buffer+bufHead/2]]; SoftcardUtil.CopyFrom[r, bufSize-bufHead, bufTail, [z+buffer]]; }; IF r.length Sparc communication Dump Description of the procedure. Description of the procedure. Κυ˜code•Mark outsideHeaderšœ™Kšœ<™