// diablofinfo.sr // Last modified October 25, 1979 6:45 PM by Taft get "BRAVO1.DF" get "CHAR.DF" get "ST.DF" get "MSG.DF" get "DIABLO.DF" get "COM.DF" get "HARDCOPY.DF" // Outgoing Procedures external [ FinfoToDiablo MoveX PositionYd ] // Outgoing Statics external [ vxwChuldiablo vxDiablo ] // Incoming Procedures external [ ratio DiabloMoveXd errhlta DiabloMoveYd DiabloPrintChar ] // Incoming Statics external [ vxdDiablo vydDiablo rgfinfo vmaccr rgxw msgtbl look1std look2std ] // Local Statics static [ vxDiablo vyDiablo vxwChuldiablo ] // Local Structures // structure // Local Manifests manifest [ chulDiablo = #137 // get from font width description dydItalic = 2 cprintBold = 3 ] // D X D F R O M D X M I C A S let DxdFromDxMicas(dx) = valof [ let fsign = dx ls 0 let dxd = (ratio((fsign ? -dx, dx), 2 * mictodmlt, mictoddiv) + 1) rshift 1 resultis (fsign ? -dxd, dxd) ] // end DxdFromDxMicas // D Y D F R O M D Y P O I N T S and DydFromDyPoints(dy) = valof [ let fsign = dy ls 0 let dyd = (ratio((fsign ? -dy, dy), 2 * pttodmlt, pttoddiv) + 1) rshift 1 resultis (fsign ? -dyd, dyd) ] // end DydFromDyPoints // M O V E X and MoveX(dx) be [ vxDiablo = vxDiablo + dx // if vxDiablo ls 0 % vxDiablo ge vxEdgeofpage then errhlt("mxb") DiabloMoveXd(DxdFromDxMicas(vxDiablo) - vxdDiablo) ] // end MoveX // P O S I T I O N Y D and PositionYd(yd) be [ if yd ls 0 % yd ge ydMax then errhlta(203) DiabloMoveYd(yd - vydDiablo) ] // end PositionYd // F I N F O T O D I A B L O and FinfoToDiablo(fm, cp, xFirst, xLast, yd) = valof [ let cchPgbrk = 0 if (rgfinfo ! (vmaccr-1))<>FMSG.look1)<>FMSG.look1 look2 = tfmsg>>FMSG.look2 let look1Trans = not look1Old & look1 look1Old = look1 if look1<>FMSG.look1)<>FMSG.look1 & look1mask let look2First = fmsg>>FMSG.look2 & look2mask while (finfo & finfomask) eq finfoFirst & (fmsg>>FMSG.look1 & look1mask) eq look1First & (fmsg>>FMSG.look2 & look2mask) eq look2First do [ xw = xw + rgxw ! cr if fBackwards & finfo<