<> <> <> <<>> <> <<>> DIRECTORY Atom, BitOps; PCDynProg: CEDAR PROGRAM IMPORTS Atom, BitOps EXPORTS ~ BEGIN <> QWord: TYPE = ARRAY [0 .. 2) OF CARD; <<>> <> <<>> Q: PROC [c: QWord] RETURNS [rc: REF ANY] = {rc _ NEW[QWord _ c]}; C: PROC [c: CARD] RETURNS [rc: REF ANY] = {rc _ NEW[CARD _ LOOPHOLE[c]]}; B: PROC [c: CARDINAL] RETURNS [rc: REF ANY] = {rc _ NEW[CARDINAL _ c]}; AdDBus: PROC [bd,hyb,Int,ci,pth: CARDINAL _0] RETURNS [ad: CARDINAL _0] ~ { <
> <<>> << =0 is for BIC>> ad _ BitOps.WShift[bd,12]+BitOps.WShift[hyb,8]; ad _ ad+BitOps.WShift[Int,5]+BitOps.WShift[ci,3]+pth; }; IdCte: PROC [t,v:CARDINAL] RETURNS [id:CARDINAL] ~ { <> <> id _ 5000H + BitOps.WShift[t,6] + v; }; <> <<>> Atom.PutProp[$PCEmul, $PKList, LIST[ $Init, $Reset, <<$Nop,>> << LIST[$Jump,$Nop],>> LIST[$SendDBusAddress, B[AdDBus[bd:0,hyb:0,Int:0,ci:0,pth:0]]], -- ID path of DynInt $Nop, LIST[$Jump,$Nop], LIST[$ReadDBusAndCheck,C[IdCte[t:11,v:1]],B[16]], << LIST[$SendDBusAddress, B[AdDBus[bd:0,hyb:0,Int:0,ci:0,pth:1]]], -- path 1 of DynInt>> << LIST[$ReadDBusAndCheck,C[0],B[4]], >> << LIST[$ReadDBusAndCheck,C[0],B[32]], >> << LIST[$ReadDBusAndCheck,C[0],B[32]], >> << LIST[$SendDBusAddress, B[AdDBus[bd:0,hyb:0,Int:0,ci:0,pth:1]]], -- path 4 of DynInt>> << LIST[$ReadDBusAndCheck,C[0],B[4]], >> << LIST[$ReadDBusAndCheck,C[0],B[32]], >> << LIST[$ReadDBusAndCheck,C[11111111H],B[32]], >> << LIST[$ReadDBusAndCheck,C[0],B[4]], >> << LIST[$ReadDBusAndCheck,C[0],B[32]], >> << LIST[$ReadDBusAndCheck,C[22222222H],B[32]],>> << LIST[$ReadDBusAndCheck,C[0],B[4]], >> << LIST[$ReadDBusAndCheck,C[0],B[32]], >> << LIST[$ReadDBusAndCheck,C[33333333H],B[32]],>> << LIST[$ReadDBusAndCheck,C[0],B[4]], >> << LIST[$ReadDBusAndCheck,C[0],B[32]], >> << LIST[$ReadDBusAndCheck,C[44444444H],B[32]], >> LIST[$SendDBusAddress, B[AdDBus[bd:0,hyb:0,Int:0,ci:0,pth:1]]], -- path 1 of DynInt LIST[$SendDBusData,C[0],B[4]], LIST[$SendDBusData,C[01234567H],B[32]], LIST[$SendDBusData,C[89ABCDEFH],B[32]], << LIST[$SendDBusAddress, B[AdDBus[bd:0,hyb:0,Int:0,ci:0,pth:4]]], -- path 1 of DynInt>> << LIST[$SendDBusData,C[1],B[4]],>> << LIST[$SendDBusData,C[12345678H],B[32]],>> << LIST[$SendDBusData,C[9ABCDEF0H],B[32]],>> << LIST[$SendDBusData,C[2],B[4]],>> << LIST[$SendDBusData,C[23456789H],B[32]],>> << LIST[$SendDBusData,C[0BCDEF01H],B[32]],>> << LIST[$SendDBusData,C[3],B[4]],>> << LIST[$SendDBusData,C[3456789AH],B[32]],>> << LIST[$SendDBusData,C[0CDEF012H],B[32]],>> << LIST[$SendDBusData,C[4],B[4]],>> << LIST[$SendDBusData,C[456789ABH],B[32]],>> << LIST[$SendDBusData,C[0DEF0123H],B[32]],>> LIST[$SendDBusAddress, B[AdDBus[bd:0,hyb:0,Int:0,ci:0,pth:1]]], -- path 1 of DynInt LIST[$ReadDBusAndCheck,C[0],B[4]], LIST[$ReadDBusAndCheck,C[01234567H],B[32]], LIST[$ReadDBusAndCheck,C[89ABCDEFH],B[32]], << LIST[$SendDBusAddress, B[AdDBus[bd:0,hyb:0,Int:0,ci:0,pth:4]]], -- path 4 of DynInt>> << LIST[$ReadDBusAndCheck,C[1],B[4]],>> << LIST[$ReadDBusAndCheck,C[12345678H],B[32]],>> << LIST[$ReadDBusAndCheck,C[9ABCDEF0H],B[32]],>> << LIST[$ReadDBusAndCheck,C[2],B[4]],>> << LIST[$ReadDBusAndCheck,C[23456789H],B[32]],>> << LIST[$ReadDBusAndCheck,C[0BCDEF01H],B[32]],>> << LIST[$ReadDBusAndCheck,C[3],B[4]],>> << LIST[$ReadDBusAndCheck,C[3456789AH],B[32]],>> << LIST[$ReadDBusAndCheck,C[0CDEF012H],B[32]],>> << LIST[$ReadDBusAndCheck,C[4],B[4]],>> << LIST[$ReadDBusAndCheck,C[456789ABH],B[32]],>> << LIST[$ReadDBusAndCheck,C[0DEF0123H],B[32]], >> ]]; END.