Grafika w FPC

0

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ć?

0

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.

0

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.

0

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?

0

Czy tryb 13h może w ogóle być wyświetlany w FPC?

0

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:)

1 użytkowników online, w tym zalogowanych: 0, gości: 1