Jak napisać procedurę we Free Pascalu, wyświetlającą pixel o wsp.x,y i c(kolor) w grafice 320x200(13h)?
(Mem[$A000:320x*y]:=c;) nie chce działać
Czy grafika 13h może być w ogóle uruchomiona w fpc? Jeśli nie to jakiej (szybkiej) można użyć?
Jak napisać procedurę we Free Pascalu, wyświetlającą pixel o wsp.x,y i c(kolor) w grafice 320x200(13h)?
(Mem[$A000:320x*y]:=c;) nie chce działać
Czy grafika 13h może być w ogóle uruchomiona w fpc? Jeśli nie to jakiej (szybkiej) można użyć?
Nie jestem pewien, ale chyba:
a : word;
a:=y*320;
a:=a+x;
Mem[$A000:a]:=c;
nowy_nowy napisał:
Czy grafika 13h może być w ogóle uruchomiona w fpc?
Trybem 13h bawiłem się ostatnio ponad pół roku temu i w TP ale powinno pójść. Chyyba, że masz 64 bitowy procesor wtedy chyba game over ;/
Jakby nie chodziło to moge wrzucić moduł do wyświetlania grafiki w trybie 13h.
Wszystko zależy od wersji Free Pascal'a. W wersji dla Ms DOS (tryb rzeczywisty; wsparcie zaprzestane; ostatnia wersja to 2.0.4.) można tak jak w Turbo Pascal - zapis pod pamięć ekranu. W wersji dla Windows (tryb chroniony) od takich rzeczy jest Winapi, a nie bezpośredni dostęp do pamięci.
Nie działa, wyświetlają sie błędy: (Identifier not found "Mem"); (syntax error, "]" expected but ":" found)
Mam wersję 2.0.4
a program wygląda tak:
uses crt;
var a:word;
x, y, c:integer;{$ASMMODE intel}
begin
x:=10; y:=10 c:=10;
asm
mov ax, 13h;
int 10h
end;a:=y*320; a:=a+x; Mem[$A000:a]:=c;
asm
mov ax, 09h
int 10h
end;
end.
co trzeba zmienić żeby działało?
Czy tryb 13h może w ogóle być wyświetlany w FPC?
nowy_nowy napisał:
(Identifier not found "Mem")
Nie wiem jak jest we free pascalu z bezpośrednim dostępem do pamięci, może jest na to jakaś funkcja....
Spróbuj ustawić na ten adres wskaźnik i do niego zapisać c.
Jeżeli po wykonaniu tego:
asm
mov ax, 13h;
int 10h
end;
wyświetla sie czarny ekran to znaczy, że można. Zresztą poszukaj - google odpowie :)
A może przerzucisz sie na turbo pascala? Kod powyżej na pewno na nim pójdzie:)