PDFileFormat:
CEDAR
DEFINITIONS =
BEGIN
passwordValue: CARDINAL = 125252B;
versionValue: CARDINAL = 1B;
DeviceCode:
TYPE =
MACHINE
DEPENDENT {
invalid(0),
raven(1),
hornet(2),
gnat(3),
mig(4),
reticleMaker(5),
puffin(6),
last(LAST[CARDINAL])
};
Herald:
TYPE =
MACHINE
DEPENDENT
RECORD [
password(0): CARDINAL ← passwordValue,
version(1): CARDINAL ← versionValue,
deviceCode(2): DeviceCode ← invalid,
sResolution(3): CARDINAL,
fResolution(4): CARDINAL,
imageSSize(5): CARDINAL,
imageFSize(6): CARDINAL,
bandSSize(7): CARDINAL,
maxLoadWord(8): LONG CARDINAL,
copies(10): CARDINAL
];
Typ: TYPE = MACHINE DEPENDENT {control(0), imaging(2)};
ImagingCom:
TYPE =
MACHINE
DEPENDENT {
maskSamplesRef(0),
maskRunGroupRef(1),
maskRectangle(2),
maskTrapezoid(3),
maskRunGroup(4),
maskSamples(5),
colorSamples(6)
};
ControlCom:
TYPE =
MACHINE
DEPENDENT {
startImage(0),
setPriority(1),
setColorInk(2),
setColorClear(3),
setColorTile(4),
endBand(5),
endDocument(6),
storeLoad(7),
deviceCommand(8)
};
transparentFlag: [0..1] = 1;
opaqueFlag: [0..1] = 0;
Command:
TYPE =
MACHINE
DEPENDENT
RECORD [
command(0):
SELECT typ(0:0..1): Typ
FROM
imaging => [com(0:2..7): ImagingCom, addrHighBits(0:8..15): [0..256) ← 0],
addrHighBits is used by the maskSamplesRef and maskRunGroupRef commands.
control => [com(0:2..7): ControlCom, rest(0:8..15): [0..256) ← 0]
rest is used by the setPriority and setColorTile commands.
ENDCASE
];
SampleArray:
TYPE =
MACHINE
DEPENDENT
RECORD [
sSize(0): CARDINAL,
fSize(1): CARDINAL
Followed by the actual scan lines, each padded out to a word.
];
Tile:
TYPE =
MACHINE
DEPENDENT
RECORD [
phase(0): CARDINAL,
sMin(1): CARDINAL,
fMin(2): CARDINAL,
sSize(3): CARDINAL,
fSize(4): CARDINAL
Followed by the actual scan lines, each padded out to a word.
];
RunGroup:
TYPE =
MACHINE
DEPENDENT
RECORD [
sSize(0): CARDINAL
Followed by the Runs.
];
Run:
TYPE =
MACHINE
DEPENDENT
RECORD [
fMin(0): CARDINAL,
lastRun(1:0..0): BOOLEAN,
fSize(1:1..15): NAT
];
MaskRectangle:
TYPE =
MACHINE
DEPENDENT
RECORD [
sMin(0): CARDINAL,
sSize(1): CARDINAL,
fMin(2): CARDINAL,
fSize(3): CARDINAL
];
MaskTrapezoid:
TYPE =
MACHINE
DEPENDENT
RECORD [
sMin(0): CARDINAL,
sSize(1): CARDINAL,
fMin(2): CARDINAL,
fSize(3): CARDINAL,
fMinLast(4): CARDINAL,
fSizeLast(5): CARDINAL
];
MaskRunGroup:
TYPE =
MACHINE
DEPENDENT
RECORD [
sMin: CARDINAL
Followed by the RunGroup
];
MaskSamples:
TYPE =
MACHINE
DEPENDENT
RECORD [
sMin: CARDINAL,
fMin: CARDINAL
Followed by the SampleArray
];
MaskRunGroupRef:
TYPE =
MACHINE
DEPENDENT
RECORD [
addrLowBits:
CARDINAL,
High bits are in the command word
sMin: CARDINAL,
fMin: CARDINAL
];
MaskSamplesRef:
TYPE =
MACHINE
DEPENDENT
RECORD [
addrLowBits:
CARDINAL,
High bits are in the command word
sMin: CARDINAL,
fMin: CARDINAL
];
ColorSamples:
TYPE =
MACHINE
DEPENDENT
RECORD [
sMin: CARDINAL,
fMin: CARDINAL
Followed by the SampleArray
];
Priority:
TYPE =
MACHINE
DEPENDENT
RECORD [
rest field of ControlCom contains high order bits of priority.
priorityLowBits: CARDINAL
];
SetColorTile:
TYPE =
MACHINE
DEPENDENT
RECORD [
rest field of ControlCom contains transparentFlag or opaqueFlag.
addr: LONG CARDINAL
];
Toner: TYPE = MACHINE DEPENDENT {black(0), cyan(1), magenta(2), yellow(3)};
StartImage:
TYPE =
MACHINE
DEPENDENT
RECORD [
filler(0:0..8): [0..512) ← 0,
leftOverMode(0:9..9): BOOLEAN,
feed(0:10..10): BOOLEAN,
strip(0:11..11): BOOLEAN,
toner(0:12..15): Toner,
passBands(1): NAT,
nBands(2): NAT,
fMinPage(3): CARDINAL,
fSizePage(4): CARDINAL
];
StoreLoad:
TYPE =
MACHINE
DEPENDENT
RECORD [
firstAddress(0): LONG CARDINAL,
wordCount(2): CARDINAL
Followed by the data words
];
END.