1
Lowlevel-Coding / Re: Pascal Textausgabe
« am: 28. November 2009, 19:54 »
So, ich habe das ganze angepasst. Clearscreen lässt nach wie vor etwas Platz unbeachtet. Ich hab das Gefühl das ich mal wieder was dummes übersehe. Wenn ich die Schleifen in Clearscreen vertausche, wechselt die Position des unbeschriebenen Speichers, die Größe nicht.
Putch funktioniert nach wie vor anscheinend nicht.
Hier der Code:
Hoffe auf Hilfe!
Putch funktioniert nach wie vor anscheinend nicht.
Hier der Code:
Code: [Auswählen]
unit video;
interface
const
MAX_SCREEN_WIDTH = 80;
MAX_SCREEN_HEIGHT = 25;
STANDARD_ATTR = $07;
type
TScreenPixel = record
c: char;
attr: byte;
end;
PScreen = ^TScreen;
TScreen = array[1..MAX_SCREEN_HEIGHT, 1..MAX_SCREEN_WIDTH] of TScreenPixel;
var
screen: PScreen;
procedure initscreen();
procedure clearscreen();
procedure scroll(lines: Integer);
procedure putch(c: Char);
implementation
var
x, y: Integer;
procedure initscreen(); [public, alias: 'initscreen'];
begin
screen := Pointer($B8000);
x := 1;
y := 1;
end;
procedure clearscreen(); [public, alias: 'clearscreen'];
var
w, h: Integer;
begin
for w := 1 to 80 do
begin
for h := 1 to 25 do
begin
screen^[h, w].c := 'E';
screen^[h, w].attr := STANDARD_ATTR;
end;
end;
end;
procedure scroll(lines: Integer); [public, alias: 'scroll'];
var
n, I, J: Integer;
begin
for n := 1 to lines do
begin
for I := 1 to 25 do
begin
for J := 1 to 80 do
begin
screen^[I-1, J] := screen^[J, I];
end;
end;
for J := 1 to 80 do
begin
screen^[25, J].c := #0;
end;
end;
end;
procedure putch(c: Char); [public, alias: 'putch'];
begin
if c = #13 then
begin
y += 1;
exit;
end;
if c = #10 then
begin
x := 1;
exit;
end;
if x > MAX_SCREEN_WIDTH then
begin
x := 1;
y += 1;
end;
if y >= MAX_SCREEN_HEIGHT then
begin
scroll(1);
y -= 1;
end;
screen^[y,x].c := c;
screen^[y,x].attr := STANDARD_ATTR;
x += 1;
end;
end.
Hoffe auf Hilfe!