Wstęp
Mad-Pascal (MP) jest 32-bitowym kompilatorem Turbo Pascala dla Atari XE/XL. W założeniu jest kompatybilny z Free Pascal Compilator (FPC) (przełącznik -MDelphi
powinien być aktywny), co oznacza możliwość otrzymania kodu uruchomieniowego dla XE/XL, PC i każdej innej platformy dla której istnieje FPC. Mad-Pascal nie jest portem FPC, został napisany na podstawie kompilatorów SUB-Pascal (2009), XD-Pascal (2010), których autorem jest Vasiliy Tereshkov.
Program, który zadziała na Atari może mieć problem na PC jeżeli np. nie zaincjowaliśmy wskaźników adresem zmiennej, będziemy próbowali zapisywać coś pod adresem $0000
(błąd ochrony pamięci). Mocną stroną Mad-Pascal jest szybka i wygodna możliwość dołączania wstawek assemblerowych. Program z wstawkami ASM nie będzie działał na innej platformie niż XE/XL. MP wykorzystuje 64KB pamięci podstawowej, korzystanie z pamięci rozszerzonej udostępnia TMemoryStream
.
Alokacja zmiennych jest statyczna, nie ma dynamicznego zarządzania pamięcią. Parametry przekazywane do funkcji i procedur są przez wartość, zmienną lub stałą.
Dostępne są:
If
Case
For
While
Repeat
statements- Compound statements
Label
Goto
statements- Arithmetic and boolean operators
- Procedures and functions with up to 8 parameters. Returned value of a function is assigned to a predefined
RESULT
variable - Static local variables
- Primitive data types, all types except the
ShortReal
/Real
type are compatible. Pointers are dereferenced as pointers toWord
:Cardinal
Word
Byte
Boolean
String
PChar
Char
Integer
SmallInt
ShortInt
Pointer
File
Text
ShortReal
Real
fixed-point
Float
Single
Float16
- One-dimensional and Two-dimensional arrays (with zero lower bound) of any primitive type. Arrays are treated as pointers to their origins (like in C) and can be passed to subroutines as parameters
- Predefined type string
[N]
which is equivalent toarray [0..N] of Char
Type
aliases.Records
Objects
- Separate program modules
- Separate library modules
- Recursion
Układ katalogów
W katalogu z Mad-Pascal wymagana jest obecność odpowiednich plików i podkatalogów:
mp\
mp.exe
base\
rtl_default.asm
rtl6502_a8.asm
rtl6502_c4p.asm
rtl6502_c64.asm
rtl6502_neo.asm
rtl6502_raw.asm
atari\
c4p\
c64\
common\
neo\
raw\
runtime\
lib\
aplib.pas
atari.pas
blowfish.pas
c64.pas
...
src\
targets\
crt.inc
graph.inc
system.inc
Kompilacja
Aby skompilować źródło Mad-Pascala należy użyć kompilatora z pakietu Free Pascal Compiler (FPC
), dostępnego na stronie projektu freepascal.org.
Uruchamiamy instalator, wybieramy katalog w którym zostanie zainstalowany FPC
. Ważne jest aby nie używać w nazwie katalogu znaku wykrzyknika !
czy innych niestandardowych znaków. Jeśli nie uda nam się skompilować żadnego pliku, najpewniej winna jest nie standardowa nazwa ścieżki. Linia komend uruchamiająca kompilację może wyglądać następująco (wielkość liter w nazwach parametrów ma znaczenie):
fpc -Mdelphi -v -O3 mp.pas
-Mdelphi
pozwala kompilować plik w formacie Delphi-v
wyświetla wszystkie komunikaty błędów i ostrzeżeń-O3
dokonuje optymalizacji kodu