Metropoli BBS
VIEWER: progp080.pas MODE: TEXT (ASCII)
{***************************************************************}
{ 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;

[ RETURN TO DIRECTORY ]