Týmto by som paskal ukončil, keďže som presvedčovaný, že riešiť hlbšie paskal nemá zmysel, tak ok. Avšak na nete som našiel sympatický zdrojový kód, ktorý ma zaujal, a tým už by som s paskalom ako takým skončil, keďže som na základe Vašich odporučaní upustil od mnoho vecí. No to sa mi veľmi zapáčilo, a tento zdrojový kód by som chcel vedieť. V programe ide o to, že pomocou pohyblivého kurzora, by mi program mal umožniť kresliť, avšak ako náhle ho idem preložiť, zaseknem sa na riadku 11 ( scrbuf...... ) a nech robím čo chcem, nie a nie túto chybu odstrániť, možno má program viac chýb, ale keďže som sa zasekol na tom riadku, tak neviem ísť ďalej. Dokonca i po prepise do Lazarusu sa tento program pri preklade zasekne na tom istom riadku. Mohli by ste mi helfnúť s týmto posledným paskalovským programom:
program Kreslenie;
uses dos, crt;
var MousePresent : Boolean;
Mi : Pointer;
R : Registers;
scrbuf : array[1..4000] of byte absolute $B800:$0000;
function MouseInt(var nb: Word): boolean;
begin
if MousePresent then
begin
R.AX := 0;
Intr($33, R);
if R.AX = 0 then
begin
nb := 0;
MouseInit : False;
end
else
begin
nb := R.BX;
MouseInit := True;
end
end
else
begin
nb := 0;
MouseInit := false;
end
end;
procedure MouseShow;
begin
R.AX := 1;
Intr($33, R);
end;
procedure MouseRead( var x, y, bMask: Word);
begin
R.AX := 3;
Intr($33, R);
x := r.cx;
y := r.dx;
bmask := r.bx;
end;
procedure writechar(x, y: byte; c: char);
begin
scrbuf[(y-1)*2*80 + (x-1)*2] := ord(c);
end;
var x, y, bn, nb : word;
begin
GetIntVec($33, Mi);
if mi = nil then
begin
mousepresnt := false;
writeln('Mouse not present');
end
else
begin
mousepresent := true;
TextBackground(Green);
ClrScr;
TextColor(Yellow);
if MouseInit(nb) then
begin
MouseShow;
repeat
MouseRead(x, y, bn);
if bn and 1 <> 0 then
begin
x := x div 8 + 1;
y := y div 8 + 1;
writechar(x, y, '*');
end
until bn and 2 <> 0
end
end;
ClrScr;
end.