freepascal a turbo pascal

0

Zastanawialem sie kiedys jak wstawic znak w pozycji (80,25) bez przesuwania ekranu i znalazlem takie cos:

mem[segB800:3998]:=Ord('w'); {jakis znak}
mem[segB800:3999]:=5; {jakis kolor}

Wszystko dziala dobrze ale tylko w turbo pascalu kiedy powyzszy kod wkleje do free pascala mam komunikat, ze nie zdefiniowana nazwa mem. Czy to jest wina ustaiwien? czy cos innego? co zrobic zeby w free pascalu dzialaly te komendy? Prosze o pomoc!

I przy okazji jak zrobic powyzsza metoda tlo dla danej komorki ??

Z gory dzieki za pomoc!

0

chyba to jest w module system ?

0

System zawiera wszytskie moduły więc skoro jest w system to musi być gdzieś.. np. w crt :P to prawda że free nie obsluguje wszytskiego. mam pewien bardzo obszerny program i gdy prubuje go odpalić free wyskakuje masa błędów na turbo ładnie pięknie. Obecnie mam bardzo złe zdanei na temat free i używam zwykłego TP.
Pozdrawiam

0
sonny napisał(a)

mem[segB800:3998]:=Ord('w'); {jakis znak}
mem[segB800:3999]:=5; {jakis kolor}

I przy okazji jak zrobic powyzsza metoda tlo dla danej komorki ??

na 99,(9)%

mem[segB800:3999]:=4 {jakis kolor} or (3 {jakis kolor tla} shl 4);
i blink = or 128

w freepascalu na 3,2% (z tendencją malejącą) możesz to ew. zastąpić wstawką:

asm

mov ax,0b800h
mov es,ax
mov byte ptr es:[3998],'K'
mov byte ptr es:[3999], 4 or 3 shl 4

end;

0

SebaZ napisał:

chyba to jest w module system ?

W FPC nie ma. Zajrzyjcie do dokumentacji (plik user.pdf, rozdział "Porting Turbo Pascal Code" ;)).

0

OK dzięki wszystkim za pomoc ! :)
Myslalem, że free pascal goruje nad turbo, bo caly czas sa jakies nowe wersje i poprawki, ale po tych postach chyba pozostane przy starym dobrym turbo pascalu :)

0

FPC, nie jest gorszy od TP, tylko poszedł z duchem czasu... :P Tylko szkoda że pascale generują tak zaśmecony kod.

0
sonny napisał(a)

OK dzięki wszystkim za pomoc ! :)
Myslalem, że free pascal goruje nad turbo, bo caly czas sa jakies nowe wersje i poprawki, ale po tych postach chyba pozostane przy starym dobrym turbo pascalu :)

Free Pascal robi programy 32-bitowe (a chyba nawet można 64 bitowe),
a Turbo zatrzymał się na 16 bitach (dos i windows 3.1 z 1990 roku).

16 bitowe programy mają bardzo marne możliwości - nawet odczyt obrazu jpg
jest tu już kosmicznym wyczynem, a grafika 3d, filmy i całe te multimedia,
które tygrysy lubią najbardziej, są praktycznie niedostępne.
Lepej przerzuć się na Delphi - to prawie paskal,
albo jakaś Java lub C++ - będzie trochę trudniej a nawet łatwiej, zwłaszcza później,
ale lepsze to niż... dać się pogrzebać żywcem razem z tymi paskalowymi zabawkami. :]

0

type byteptr=^byte;
byteptr(longint((seg shl 16)or ofs))^:=value;

gdyby seg shl 16 obcinalo na granicy 16bitow (czyli dawalo w rezultacie 0) to zmien na: (longint(seg)shl 16)or ofs

0

FPC jest pod Windows-a a tam AFAIK nie mozna pisac bezposrednio po pamieci ekranu.

0

W Win XP jest tylko emulator DOS'a. :P

0

Określenie, że FP jest pod Windowsa jest przynajmniej niedokładne. FP działa pod dosem (16 bit), Windowsem (32 i 64 bit), Linuxem (32 i 64 bit, nie wiem, czy 16 tyż) i paroma innymi systemami. To z kolei jest powodem tego, że po pierwsze nie da się mazać po pamięci bezpośrednio, bo system nie zezwoli, a po drugie mazanie po pamięci ekranu, nawet jakby było dostępne, jest bezcelowe, bo w różnych systemach i różnych trybach trzebaby to robić inaczej.

0

Nieścisłość: FPC nie działa pod 16-bitowym DOS-em, a pod 32-bitową nakładką na niego (go32).

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