Hallo erstmal, ich bin der neue 
Ich habe ein problem mit dem Code, den ich vergangene Nacht geschrieben habe
Ich ganz einfache Textausgabe im Protected Mode hinkriegen. Meine Funktion Clearscreen funktioniert auch, jedoch schaffe ich es nicht Zeichen auszugeben. Wär nett wenn ihr euch das mal ansehen könntet, ich blick da grad nicht mehr durch
Die Funktion putch sollte eigentlich einen Char an der aktuellen Position ausgeben, tut sie aber nicht.
Gruß,
Pascal

Ich habe ein problem mit dem Code, den ich vergangene Nacht geschrieben habe

Ich ganz einfache Textausgabe im Protected Mode hinkriegen. Meine Funktion Clearscreen funktioniert auch, jedoch schaffe ich es nicht Zeichen auszugeben. Wär nett wenn ihr euch das mal ansehen könntet, ich blick da grad nicht mehr durch

Code: [Auswählen]
unit video;
interface
const
MAX_SCREEN_WIDTH = 25;
MAX_SCREEN_HEIGHT = 80;
STANDARD_ATTR = $07;
type
TScreenPixel = record
c: char;
attr: byte;
end;
PScreen = ^TScreen;
TScreen = array[1..MAX_SCREEN_WIDTH, 1..MAX_SCREEN_HEIGHT] 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 25 do
begin
for h := 1 to 80 do
begin
screen^[w, h].c := #0;
screen^[w, h].attr := $07;
end;
end;
end;
procedure scroll(lines: Integer); [public, alias: 'scroll'];
var
n, I, J: Integer;
tempLine: array[1..25] of TScreenPixel;
begin
for n := 1 to lines do
begin
for I := 1 to 80 do
begin
for J := 1 to 25 do
begin
screen^[J, I-1] := screen^[J, I];
end;
end;
for J := 1 to 25 do
begin
screen^[J, 80].c := #0;
end;
end;
end;
procedure putch(c: Char); [public, alias: 'putch'];
begin
if c = #13 then y +=1;
if c = #10 then x := 1;
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^[x,y].c := c;
screen^[x,y].attr := STANDARD_ATTR;
x += 1;
end;
end.Die Funktion putch sollte eigentlich einen Char an der aktuellen Position ausgeben, tut sie aber nicht.
Gruß,
Pascal


Übersicht
Wiki
Hilfe
Suche
Einloggen
Registrieren
Drucken

Gespeichert
Hab ich dich falsch verstanden?