{***************************************************************}
{ Draw sixteen boxes using pixel write }
{***************************************************************}
procedure pixel_box16;
const
MONO = 5;
VMONO = 7;
COLOR = 4;
ENHANCED = 3;
msg1 : array[0..40] of char = 'Writing using write mode 0, SET/RESET ';
msg2 : array[0..40] of char = 'Writing using write mode 2, packed pixels';
msg3 : array[0..40] of char = 'Writing using write mode 0, planar write ';
var
box,i,j,pixel_color,x,y : integer;
c : char;
begin
clear_screen;
i := get_display_type;
if i = MONO then set_mode($0F)
else if i = VMONO then set_mode($0F)
else if i = COLOR then set_mode($0E)
else set_mode($10);
{ Draw boxes using SET/RESET write mode }
for j := 0 to 40 do video_BIOS($E00 + integer(msg1[j]),7,0,0,0,0);
for box := 0 to 15 do { Loop over boxes }
begin
for j := 0 to 9 do { Loop over rasters }
begin { within box }
for i := 0 to 99 do { Loop over pixels }
begin
x := i; { Set x }
y := j + 10 * box; { Compute y }
pixel_color := box; { Set color }
pixel_set(x, y, pixel_color); { Fill next pixel }
end;
end;
end;
c := readkey; { Wait for <Enter> }
{ Draw boxes using PACKED write mode }
clear_screen;
for j := 0 to 40 do video_BIOS($E00 + integer(msg2[j]),7,0,0,0,0);
for box := 0 to 15 do { Loop over boxes }
begin
for j := 0 to 9 do { Loop over rasters }
begin { within box }
for i := 0 to 99 do { Loop over pixels }
begin { within raster }
x := i; { Set x }
y := j + 10 * box; { Compute y }
pixel_color := 15-box; { Set color }
pixel_packed_write(x, y, pixel_color);{Fill next pix }
end;
end;
end;
c := readkey; { Wait for <Enter> }
{ Draw boxes using planar write mode }
clear_screen;
for j := 0 to 40 do video_BIOS($E00 + integer(msg3[j]),7,0,0,0,0);
for box := 0 to 15 do { Loop over boxes }
begin
for j := 0 to 9 do { Loop over rasters }
begin { within box }
for i := 0 to 99 do { Loop over pixels }
begin { within raster }
x := i; { Set x }
y := j + 10 * box; { Compute y }
pixel_color := box; { Set color }
pixel_write(x, y, pixel_color);{Fill next pixel }
end;
end;
end;
{--- Set default text mode }
c := readkey; { Wait for <Enter> }
i := get_display_type;
if i = MONO then set_mode(7)
else if i = VMONO then set_mode(7)
else set_mode(3);
end;