GET "FED.DEFS"
LET TRANSLATECHAR(XX, YY) BE
[
LET TMP,NWA,NBA,OWA,OBA = NIL,NIL,NIL,NIL,NIL
[ TMP = (RV 177030B)&7] REPEATUNTIL TMP EQ 7
[ RV 426B = -1
TMP = (RV 177030B)&7
RV 426B = RV 424B
RV 427B = RV 425B] REPEATUNTIL TMP EQ 5
LET NX = (RV 424B) - CLMARGIN + 2
LET NY = (RV 425B) - CTOPMARGIN + 2
NX = NX LS 0? 0, NX/BOXSIZE
NY = NY LS 0? 0, NY/BOXSIZE
NX = NX LS (FWMAX*16)? NX, (FWMAX*16) - 1
NY = NY LS FHMAX? NY, FHMAX - 1
LET DX = NX - XX
LET DY = NY - YY
LET NFARRAY = VEC FWMAX*FHMAX
BSTORE(NFARRAY, 0, FWMAX*FHMAX-1)
TMP = DX; IF DX LS 0 THEN TMP = -DX
TEST DX EQ 0 IFNOT[
FOR I=0 TO FHMAX-1 DO[
TEST DX GR 0 IFSO [
NWA = NFARRAY+(I+1)*FWMAX - 1
NBA = 15
OWA = FARRAY +(I+1)*FWMAX - 1 - DX/16
OBA = NBA - DX REM 16]
IFNOT[
NWA = NFARRAY + I*FWMAX
NBA = 0
OWA = FARRAY + I*FWMAX - DX/16
OBA = NBA + TMP REM 16]
FOR J=0 TO FWMAX*16 - TMP -1 DO [
IF RV OWA NE 0 THEN
RV NWA = RV NWA%(100000B RSHIFT OBA & RV OWA) RSHIFT (NBA - OBA)
TEST DX GR 0 IFSO[
NBA = NBA - 1
IF NBA LS 0 THEN [ NBA = 15; NWA = NWA -1]
OBA = OBA - 1
IF OBA LS 0 THEN [ OBA = 15; OWA = OWA - 1]]
IFNOT[
NBA = NBA + 1
IF NBA GR 15 THEN [ NBA = 0; NWA = NWA + 1]
OBA = OBA + 1
IF OBA GR 15 THEN [ OBA = 0; OWA = OWA + 1]]]]]
IFSO BMOVE(FARRAY, NFARRAY, FHMAX*FWMAX - 1)
BSTORE(FARRAY, 0, FHMAX*FWMAX - 1)
TEST DY GE 0 IFSO [
FOR I = FHMAX-1 TO DY BY -1 DO
BMOVE(NFARRAY+(I-DY)*FWMAX,FARRAY+(I)*FWMAX,FWMAX-1)]
IFNOT[
FOR I=0 TO FHMAX-1+DY DO
BMOVE(NFARRAY+(I-DY)*FWMAX,FARRAY+(I)*FWMAX,FWMAX-1)]
BUILDCHAR()
SETTICK(FCWIDTH,TRUE)
]
AND SETCHARWIDTH() BE
[
LET TMP = NIL
WS("*NBUG RIGHTMOST DESIRED BIT")
[ TMP = (RV 177030B)&7] REPEATUNTIL TMP EQ 7
[ TMP = (RV 177030B)&7
RV 426B = RV 424B
RV 427B = RV 425B] REPEATUNTIL TMP EQ 3
WS("*N!")
LET NX = (RV 424B) - CLMARGIN + 2
NX = NX LS 0? 0, NX/BOXSIZE
NX = NX LS (FWMAX*16)? NX, (FWMAX*16) - 1
FCWIDTH = NX+1
BUILDCHAR()
SETTICK(FCWIDTH,TRUE)
]