-- ROMMakerDefs.mesa -- a program to run within Chipmonk -- last modified by E. McCreight, February 2, 1982 5:49 PM -- written by E. McCreight, October 7, 1981 6:18 PM DIRECTORY ppddefs, ppdefs; RomMakerDefs: DEFINITIONS = BEGIN OPEN ppddefs, ppdefs; -- T y p e s Direction: TYPE = { vertical, horizontal, diagonal, up, down, left, right, upAndLeft, upAndRight, downAndLeft, downAndRight}; topRight: Direction = upAndRight; -- synonyms topLeft: Direction = upAndLeft; bottomRight: Direction = downAndRight; bottomLeft: Direction = downAndLeft; ListPtr: TYPE = listPtr; Cell: TYPE = obPtr; DCell: TYPE = ARRAY BOOLEAN --data in cell-- OF Cell; DCellPr: TYPE = ARRAY BOOLEAN -- data in even cell -- OF DCell; NameGroup: TYPE = RECORD [ x, y: Point ← [x: 1 -- coefficient --, y: 0 -- offset --], basicName: STRING ← NIL ]; nilNameGroup: NameGroup = []; -- V a r i a b l e s lpp: ListPtr; -- where new list elements are assembled uz: UNCOUNTED ZONE; dirFactor: ARRAY Direction OF Point; -- P r o c e d u r e s FindCell: PROCEDURE [ cellFamily: STRING, member: STRING, required: BOOLEAN ← FALSE, vCompat: Cell ← NIL, hCompat: Cell ← NIL] RETURNS [Cell]; FindDCell: PROCEDURE [ cellFamily, memberPrefix: STRING, required: BOOLEAN ← FALSE, vCompat: Cell ← NIL, hCompat: Cell ← NIL] RETURNS [d: DCell]; FindDCellPr: PROCEDURE [ cellFamily, memberPrefix: STRING, required: BOOLEAN ← FALSE, vCompat: Cell ← NIL, hCompat: Cell ← NIL] RETURNS [p: DCellPr]; CheckPitchCompatability: PROCEDURE [ c1, c2: Cell, dir: Direction, rep1: Point ← [1, 1], rep2: Point ← [1, 1]]; Repeat: PROCEDURE[p: Point, cell: Cell, corner: Direction ← topLeft, dir: Direction ← horizontal, rep: locNum ← 1, midCell: Cell ← NIL, midGap: locNum ← 0, altCell: Cell ← NIL, altMod: INTEGER ← 0, name, midName: NameGroup ← nilNameGroup]; RepeatArbitrary: PROCEDURE[p: Point, cp: PROCEDURE[i: INTEGER] RETURNS[Cell], corner: Direction ← topLeft, dir: Direction ← upAndLeft, rep: INTEGER ← 1, midCell: Cell ← NIL, midGap: locNum ← 0, name, midName: NameGroup ← nilNameGroup]; MakeMidGrid: PROCEDURE[p: Point, cell: Cell, rep: Point, midVCell, midHCell, midVHCell: Cell ← NIL, midGap: Point ← [0,0]]; PlaceCell: PROCEDURE[p: Point, cell: Cell, rep: Point ← [0,0], midCellSize: Point ← [0,0], midGap: Point ← [0,0], name: NameGroup ← nilNameGroup]; DirSize: PROCEDURE[size: Point, dir: Direction ← diagonal] RETURNS[Point]; CellSize: PROCEDURE[cell: Cell, dir: Direction ← diagonal] RETURNS[Point]; Offset: PROCEDURE[p: Point ← [0, 0], cell: Cell, dir: Direction, rep: Point ← [0, 0], midCell: Cell ← NIL, midCellSize: Point ← [0,0], midGap: Point ← [0, 0], includeTerminalMid: BOOLEAN ← TRUE] RETURNS [Point]; BlockSize: PROCEDURE [cell: Cell, rep: Point ← [1, 1], midCell: Cell ← NIL, midGap: Point ← [0, 0]] RETURNS [Point]; MakeNewCell: PROCEDURE [name: STRING, lpp: ListPtr] RETURNS [cp: LONG POINTER TO cList]; AddToMasterList: PROCEDURE[lpp: ListPtr]; DrawCell: PROCEDURE [obp: Cell]; BuildRom: PROCEDURE[]; BuildDecoder: PROCEDURE[]; END. -- of RomMakerDefs