DIRECTORY CharDisplays, IO, Rope; DisplayControllers: CEDAR DEFINITIONS = { REFTEXT: TYPE = REF TEXT; ROPE: TYPE = Rope.ROPE; CharDisplay: TYPE = CharDisplays.CharDisplay; DisplayController: TYPE = REF DisplayControllerRep; DisplayControllerRep: TYPE = RECORD [ cd: CharDisplay, cp: ControlProgram, cps: ControlProgramState, toDisplay, fromDisplay: IO.STREAM]; Create: PROC [cd: CharDisplay, cp: ControlProgram] RETURNS [dc: DisplayController]; ControlProgram: TYPE = REF ControlProgramRep; ControlProgramRep: TYPE = RECORD [ start: Vertex, clientData: REF ANY ]; Vertex: TYPE = REF VertexRep; VertexRep: TYPE = RECORD [ repStyle: VertexRepStyle, t: Transition _ [[NIL, NIL], NIL], edgeList: EdgeList _ NIL, edgeArray: TransitionArray _ NIL]; VertexRepStyle: TYPE = {epsilon, list, array}; TransitionArray: TYPE = REF TransitionArrayRep; TransitionArrayRep: TYPE = ARRAY CHAR OF Transition; EdgeList: TYPE = LIST OF Edge; Edge: TYPE = RECORD [ char: CHAR, transition: Transition ]; Transition: TYPE = RECORD [ action: Action, newVertex: Vertex]; Action: TYPE = RECORD [ proc: PROC [dc: DisplayController, clientData: REF ANY], clientData: REF ANY _ NIL]; ControlProgramState: TYPE = REF ControlProgramStateRep; ControlProgramStateRep: TYPE = RECORD [ curVertex: Vertex _ NIL, regs: ARRAY RegID OF INT _ ALL[0], chars--since last in start state--: REFTEXT ]; RegID: TYPE = {line, col}; NewControlProgram: PROC [clientData: REF ANY _ NIL] RETURNS [cp: ControlProgram]; AddInstruction: PROC [cp: ControlProgram, steps: StepList, final: Action]; naught: Action; StepList: TYPE = LIST OF Step; Step: TYPE = REF ANY --actually UNION [ROPE, REFTEXT, Decode]--; Decode: TYPE = REF DecodeRep; DecodeRep: TYPE = RECORD [ reg: RegID, base: NAT _ 10, org: CHAR _ '0, offset: INT _ 0, len: NAT _ 0 --=0 means variable length, #0 means fixed--]; }. ˆDisplayControllers.Mesa Last Edited by: Spreitzer, March 11, 1985 10:40:22 am PST decodes (char - org) by base, then adds offset ΚZ– "cedar" style˜Icode™J™9K˜KšΟk œœ˜!K˜šΠbxœœ œ˜)K˜Kšœœœœ˜Kšœœœ˜Kšœ œ˜-K˜Kšœœœ˜3šœœœ˜%K˜K˜Kšœ˜Kšœœœ˜#—K˜KšΟnœœ'œ˜SK˜Kšœœœ˜-šœœœ˜"K˜Kšœ œ˜K˜—K˜Kšœœœ ˜šœ œœ˜Kšœ˜Kšœœœœ˜"Kšœœ˜Kšœœ˜"—K˜Kšœœ˜.K˜Kšœœœ˜/Kš œœœœœ ˜4K˜Kšœ œœœ˜šœœœ˜Kšœœ˜ Kšœ˜K˜—K˜šœ œœ˜Kšœ˜Kšœ˜—K˜šœœœ˜Kšœœ%œœ˜8Kšœ œœœ˜—K˜Kšœœœ˜7šœœœ˜'Kšœœ˜Kš œœœœœ˜"KšœΟcœ˜+K˜—K˜Kšœœ˜K˜Kš Ÿœœœœœœ˜QK˜KšŸœœ6˜JK˜K˜K˜Kšœ œœœ˜Kš œœœœ *œ˜@K˜Kšœœœ ˜šœ œœ˜K˜ Kšœœ˜Kšœœ˜Kšœœ˜Kšœœ ,œ˜;K™.—K˜K˜——…—@ "