<> <> <> DIRECTORY AMBridge USING [TVToLC], AMTypes USING [IndexToTV, TV], Basics USING [Card16FromH, Card32FromF, FWORD, HWORD], IO USING [PutF], PrintTV USING [RegisterRefPrintProc, RegisterTVPrintProc, RefPrintProc, TVPrintProc]; EndianDebug: CEDAR PROGRAM IMPORTS AMBridge, AMTypes, Basics, IO, PrintTV = { PrintRefFWord: PrintTV.RefPrintProc = { <<[ref: REF READONLY ANY, data: REF ANY, stream: STREAM, depth: INT _ 4, width: INT _ 32, verbose: BOOL _ FALSE] RETURNS [useOld: BOOL _ FALSE]>> foo: REF READONLY Basics.FWORD _ NARROW[ref]; IO.PutF[stream, "%G", [cardinal[Basics.Card32FromF[foo^]]] ]; }; PrintRefHWord: PrintTV.RefPrintProc = { <<[ref: REF READONLY ANY, data: REF ANY, stream: STREAM, depth: INT _ 4, width: INT _ 32, verbose: BOOL _ FALSE] RETURNS [useOld: BOOL _ FALSE]>> foo: REF READONLY Basics.HWORD _ NARROW[ref]; IO.PutF[stream, "%G", [cardinal[Basics.Card16FromH[foo^]]] ]; }; PrintTVFWord: PrintTV.TVPrintProc = TRUSTED { <<[tv: TV, data: REF ANY, stream: STREAM, depth: INT _ 4, width: INT _ 32, verbose: BOOL _ FALSE] RETURNS [useOld: BOOL _ FALSE]>> foo: Basics.FWORD; highTV: AMTypes.TV _ AMTypes.IndexToTV[tv, 1]; lowTV: AMTypes.TV _ AMTypes.IndexToTV[tv, 2]; hiHi: AMTypes.TV _ AMTypes.IndexToTV[highTV, 1]; hiLo: AMTypes.TV _ AMTypes.IndexToTV[highTV, 2]; loHi: AMTypes.TV _ AMTypes.IndexToTV[lowTV, 1]; loLo: AMTypes.TV _ AMTypes.IndexToTV[lowTV, 2]; foo.hi.hi _ AMBridge.TVToLC[hiHi]; foo.hi.lo _ AMBridge.TVToLC[hiLo]; foo.lo.hi _ AMBridge.TVToLC[loHi]; foo.lo.lo _ AMBridge.TVToLC[loLo]; IO.PutF[stream, "%G", [cardinal[Basics.Card32FromF[foo]]] ]; }; PrintTVHWord: PrintTV.TVPrintProc = TRUSTED { <<[tv: TV, data: REF ANY, stream: STREAM, depth: INT _ 4, width: INT _ 32, verbose: BOOL _ FALSE] RETURNS [useOld: BOOL _ FALSE]>> foo: Basics.HWORD; highTV: AMTypes.TV _ AMTypes.IndexToTV[tv, 1]; lowTV: AMTypes.TV _ AMTypes.IndexToTV[tv, 2]; foo.hi _ AMBridge.TVToLC[highTV]; foo.lo _ AMBridge.TVToLC[lowTV]; IO.PutF[stream, "%G", [cardinal[Basics.Card16FromH[foo]]] ]; }; PrintTV.RegisterRefPrintProc[CODE[Basics.FWORD], PrintRefFWord]; PrintTV.RegisterRefPrintProc[CODE[Basics.HWORD], PrintRefHWord]; PrintTV.RegisterTVPrintProc[CODE[Basics.FWORD], PrintTVFWord]; PrintTV.RegisterTVPrintProc[CODE[Basics.HWORD], PrintTVHWord]; }.