--VideoMagic.mesa
--last edited by Maureen Stone September 10, 1982 3:49 pm
--last edited by Ken Pier November 18, 1982 1:14 pm
DIRECTORY
DisplayExtras,
DoradoInputOutput,
ColorDisplay,
ColorDisplayHeadDorado,
Real;
VideoMagic: PROGRAM IMPORTS DisplayExtras, ColorDisplay, ColorDisplayHeadDorado,
DoradoInputOutput, Real
SHARES ColorDisplayHeadDorado= {OPEN DisplayExtras, ColorDisplayHeadDorado, ColorDisplay;
SetTables: PROC [factor: REAL] = {
FOR i: NAT IN [0..255] DO
in,out: Byte;
in ← GetRedMap[i];
out ← MIN[255,MAX[0,Real.RoundI[in*factor]]];
ColorDisplay.SetRedMap[in: i, out: out];
in ← GetGreenMap[i];
out ← MIN[255,MAX[0,Real.RoundI[in*factor]]];
ColorDisplay.SetGreenMap[in: i, out: out];
in ← GetBlueMap[i];
out ← MIN[255,MAX[0,Real.RoundI[in*factor]]];
ColorDisplay.SetBlueMap[in: i, out: out];
ENDLOOP;
};
SetLineSize: PROC [size: CARDINAL] = {
color.hcontrol.HRamMaxAddr ← size;
mcb.flags.hc ← TRUE;
};
SetMDSH: PROC [m: [0..377B] ← 115, d: [0..16] ← 12,
z: [0..17B] ← 5, size: CARDINAL, h: CARDINAL] = {
color.hcontrol.HRamMaxAddr ← size;
color.hcontrol.HBTrailLength ← h;
color.ccontrol ← [zero: z, mul: m, div: d];
mcb.flags ← [hc: TRUE, clk: TRUE];
};
Set24: PROC [m: [0..377B] ← 115, d: [0..16] ← 14,
z: [0..17B] ← 5, size: CARDINAL ← 909, h: CARDINAL ← 30] = {
color.ccontrol ← [zero: z, mul: m, div: d];
color.hcontrol.HRamMaxAddr ← size;
color.hcontrol.HBLeadLength ← 2*HBLeadLength;
color.hcontrol.HSTrailAddr ← 2*HSTrailAddr;
color.hcontrol.HBTrailLength ← 2*h;
achan.leftMargin ← bchan.leftMargin ← 550B;
mcb.flags ← [hc: TRUE, clk: TRUE];
};
Set77: PROC [] = {
[] ← DisplayExtras.SetFieldRate[lf77hz];
};
Set60: PROC [] = {
[] ← DisplayExtras.SetFieldRate[lf60hz];
};
XSyncEnable: PROC [] = {
DoradoInputOutput.Output[datum: 200B, register: 377B];
};
XSyncDisable: PROC [] = {
DoradoInputOutput.Output[datum: 0, register: 377B];
};
HBLeadLength: [0..377B] ← 6;
HSTrailAddr: [0..377B] ← 28;
}.