DIRECTORY Basics, IO, SirPress, PascalBasic, TexSysdep, TexTypes; TexSysdepInline: DEFINITIONS IMPORTS Basics, SirPress, TexSysdep = BEGIN OPEN PascalBasic, TexTypes; PressSetX: PROCEDURE [X: INT] = INLINE { xCoord _ LOOPHOLE[Basics.LowHalf[LOOPHOLE[X]]]; IF NOT pyping THEN StartPyping[xCoord] ELSE IF pypePosnsCount = pypePosnsLimit THEN {TexSysdep.FlushPype[]; StartPyping[xCoord]} ELSE {pypePosnsCount _ pypePosnsCount + 1; SirPress.PipePosition[pype, xCoord]}; }; PressSetY: PROCEDURE [Y: INT] = INLINE { newY: INTEGER _ LOOPHOLE[Basics.LowHalf[LOOPHOLE[Y]]]; IF pyping AND yCoord # newY THEN TexSysdep.FlushPype[]; yCoord _ newY}; PressShowChar: PROCEDURE [C: Quarterword] = INLINE { IF pypeCharsCount = pypeCharsLimit THEN {TexSysdep.FlushPype[]; StartPyping[xCoord]}; pypeCharsCount _ pypeCharsCount+1; SirPress.PipeChar[pype, LOOPHOLE[C]]; }; StartPyping: PROCEDURE [x: INTEGER] = INLINE { SirPress.OpenPipe[pressHandle, pype]; pyping _ TRUE; pypeCharsLimit _ pype.text.maxLength - pype.text.length; pypeCharsCount _ 0; SirPress.PipePosition[pype, x]; pypePosnsCount _ 1; }; Mem: PROCEDURE [First: PascalInteger] RETURNS [LONG POINTER TO TexTypes.MemoryWord] = INLINE { RETURN [memStart+First+First]; }; -- now, for the definitions of new globals memStart: LONG POINTER; pressFileStream: IO.STREAM; pressHandle: SirPress.PressHandle; pype: SirPress.Pipe; xCoord, yCoord: INTEGER; pyping: BOOLEAN; pypePosnsLimit: INTEGER = 200; pypePosnsCount: INTEGER; pypeCharsLimit: INTEGER; pypeCharsCount: INTEGER; END. Lfile: TexSysdepInline.mesa Edit by Ramshaw, January 30, 1984 3:53 pm ΚF˜Jšœ™J™)J˜šΟk ˜ J˜J˜J˜ Jšœ ˜ Jšœ ˜ Jšœ ˜ J˜—šœ ˜Jšœ˜#Jšœœœ˜#unitš Οn œ œœœœ˜(Jšœ œœœ˜/Jšœœœ˜&šœœ!œ˜-J˜,—JšœL˜PJ˜—š ž œ œœœœ˜(Jšœœœ œ˜6Jšœœœ˜7Jšœ˜—šž œ œœ˜4šœ!˜'Jšœ-˜-—Jšœ"˜"Jšœœœ˜%J˜—šž œ œœœ˜.Jšœ%˜%Jšœ œ˜J˜8J˜Jšœ˜Jšœ˜J˜—šžœ œ˜&Jš œœœœœ˜8Jšœ˜J˜—K˜*Kšœ œœ˜Kšœœœ˜Kšœ"˜"K˜Kšœœ˜Kšœœ˜Kšœœ˜Kšœœ˜Kšœ˜Kšœœ˜Kšœ˜J˜J˜——…—τ†