Witam serdecznie, mam ogomny problem, ktory probowalem rozwiazac, lecz mimo wielu prob, nie udaje mi sie ;/. Zegar mial byc napisany na przerwaniach, prosilbym o jakakolwiek rade, ktora mogla by rozwiazac moj problem, z gory wielkie dzieki :)
program so1;
uses crt, dos;
var
reg:registers;
procedure clean2;
begin
FillChar(Mem[$A000:0],6400,0);
end;
procedure clean;
var
w:word;
begin
for w:=0 to 1000 do meml[$b800:w shl 2] :=$07200720;
end;
procedure video;
begin
with reg do
begin
AH:=$00;
AL:=$13;
Intr($10,reg);
end;
end;
procedure kropka(x,y:integer);
var
i,j:integer;
begin
for j:=y to y+1 do
for i:=x to x+1 do
with reg do
begin
Ah:=$0c;
Bh:=0;
al:=4;
cx:=i;
dx:=j;
intr($10,reg);
end;
end;
procedure zegar(l,x,y:integer);
var
colour:byte;
i,j:integer;
begin
colour:=4;
if ((l=1) or (l=2) or (l=3) or (l=7) or (l=8) or (l=9) or (l=0)) then
begin
for j:=y to y+10 do
with reg do
begin
Ah:=$0c;
Bh:=0;
al:=colour;
cx:=x+10;
dx:=j;
intr($10,reg);
end;
{prawagora}
end;
if ((l=2) or (l=3) or (l=5) or (l=6) or (l=7) or (l=8) or (l=9) or (l=0)) then
begin
for i:=x to x+10 do
with reg do
begin
Ah:=$0c;
Bh:=0;
al:=colour;
cx:=i;
dx:=y;
intr($10,reg);
end;
{srodekgora}
end;
if ((l=4) or (l=5) or (l=6) or (l=8) or (l=9) or (l=0)) then
begin
for j:=y to y+10 do
with reg do
begin
Ah:=$0c;
Bh:=0;
al:=colour;
cx:=x;
dx:=j;
intr($10,reg);
end;
{lewagora}
end;
if ((l=2) or (l=3) or (l=4) or (l=5) or (l=6) or (l=8) or (l=9)) then
begin
for i:=x to x+10 do
with reg do
begin
Ah:=$0c;
Bh:=0;
al:=colour;
cx:=i;
dx:=y+10;
intr($10,reg);
end;
{srodek}
end;
if ((l=1) or (l=3) or (l=4) or (l=5) or (l=6) or (l=7) or (l=8) or (l=9) or (l=0)) then
begin
for j:=y+10 to y+20 do
with reg do
begin
Ah:=$0c;
Bh:=0;
al:=colour;
cx:=x+10;
dx:=j;
intr($10,reg);
end;
{dolprawy}
writeln('dp');
end;
if ((l=3) or (l=2) or (l=5) or (l=6) or (l=8) or (l=9) or (l=0)) then
begin
for i:=x to x+10 do
with reg do
begin
Ah:=$0c;
Bh:=0;
al:=colour;
cx:=i;
dx:=y+20;
intr($10,reg);
end;
{dolsrodek}
writeln('dd');
end;
if ((l=2) or (l=6) or (l=8) or (l=0)) then
begin
for j:=y+10 to y+20 do
with reg do
begin
Ah:=$0c;
Bh:=0;
al:=colour;
cx:=x;
dx:=j;
intr($10,reg);
end;
{lewydol}
end;
end;
procedure czas;
var
h1,h2,m1,m2,s1,s2:integer;
begin
with reg do
begin
ah:=$2C;
intr($21,reg);
h1:=ch div 10;
h2:=ch mod 10;
m1:=cl div 10;
m2:=cl mod 10;
s1:=dh div 10;
s2:=dh mod 10;
zegar(h1,0,10);
zegar(h2,15,10);
kropka(30,19);
kropka(30,22);
zegar(m1,35,10);
zegar(m2,50,10);
kropka(65,19);
kropka(65,22);
zegar(s1,70,10);
zegar(s2,85,10);
end;
end;
procedure data;
var
d1,d2,m1,m2,r1,r2,r3,r4:integer;
begin
with reg do
begin
ah:=$2A;
intr($21, reg);
d1:=dl div 10;
d2:=dl mod 10;
m1:=dh div 10;
m2:=dh mod 10;
r1:=cx div 1000;
r2:=((cx mod 1000) div 100);
r3:=((cx mod 100) div 10);
r4:=cx mod 10;
zegar(d1,0,35);
zegar(d2,15,35);
kropka(30,55);
zegar(m1,35,35);
zegar(m2,50,35);
kropka(65,55);
zegar(r1,70,35);
zegar(r2,85,35);
zegar(r3,100,35);
zegar(r4,115,35);
end;
end;
begin
video;
repeat
video;
clean2;
czas;
data;
until keypressed;
readln;
end.
poprawienie tytułu wątku + dodanie znacznika <code class="pascal"> - fp