W katalogu LIB
Mad-Pascala znajdują się potrzebne do kompilacji podstawowe moduły UNIT
, takie jak SYSTEM
CRT
GRAPH
SYSUTILS
MATH
DOS
.
Moduł SYSTEM
jest kompilowany zawsze domyślnie jako pierwszy.
SYSTEM
Constants
M_PI_2 = 6.283285; // pi * 2
D_PI_2 = 1.570796; // pi / 2
D_PI_180 = 0.017453; // pi / 180
mGTIA = 0;
mVBXE = $80;
WINDOW = $10;
NARROW = $20;
VBXE_XDLADR = $0000; // XDLIST
VBXE_MAPADR = $1000; // COLOR MAP ADDRESS
VBXE_BCBADR = $0100; // BLITTER LIST ADDRESS
VBXE_OVRADR = $5000; // OVERLAY ADDRESS
VBXE_WINDOW = $B000; // 4K WINDOW $B000..$BFFF
iDLI = 0;
iVBL = 1;
CH_DELCHR = $FE;
CH_ENTER = $9B;
CH_ESC = $1B;
CH_CURS_UP = 28;
CH_CURS_DOWN = 29;
CH_CURS_LEFT = 30;
CH_CURS_RIGHT = 31;
CH_TAB = $7F;
CH_EOL = $9B;
CH_CLR = $7D;
CH_BEL = $FD;
CH_DEL = $7E;
CH_DELLINE = $9C;
CH_INSLINE = $9D;
COLOR_BLACK = $00;
COLOR_WHITE = $0e;
COLOR_RED = $32;
COLOR_CYAN = $96;
COLOR_VIOLET = $68;
COLOR_GREEN = $c4;
COLOR_BLUE = $74;
COLOR_YELLOW = $ee;
COLOR_ORANGE = $4a;
COLOR_BROWN = $e4;
COLOR_LIGHTRED = $3c;
COLOR_GRAY1 = $04;
COLOR_GRAY2 = $06;
COLOR_GRAY3 = $0a;
COLOR_LIGHTGREEN = $cc;
COLOR_LIGHTBLUE = $7c;
Types
TPoint
TPoint = record x,y: SmallInt end;
Definicja współrzędnych (x,y).
TRect
TRect = record left, top, right, bottom: smallint end;
Definicja położenia i rozmiaru czworokąta o parametrach (left, top) - lewy górny narożnik, (right, bottom) - prawy dolny narożnik.
TString
TString = string[32];
Definicja krótkiego ciągu znakowego wykorzystywanego do przekazywania nazw plików itp.
Variables
IOResult
IOResult: byte;
Zmienna przechowuje ostatni błąd operacji I/O
. Kody błędów I/O.
Dla PC brak błędów I/O
oznacza IORresult = 0
, dla Atari XE/XL IOResult = 1
.
ScreenWidth
ScreenWidth: word = 40
Zmienna przechowująca aktualną szerokość ekranu. Domyślnie jest to wartość 40 dla ekranu edytora.
ScreenHeight: word = 24;
ScreenHeight
Zmienna przechowująća aktualną wysokość ekranu. Domyślnie jest to wartość 24 dla ekranu edytora.
Procedures and functions
Abs Append ArcTan Assign BinStr
Concat Blockread Blockwrite Chr Cos
Close Dec DeleteFile DPeek DPoke
Eof Exit Exp FilePos FileSize
FillChar Frac GetIntVec Halt Hi
HexStr Inc Ln Lo LowerCase
Move OctStr Odd Ord ParamCount
ParamStr Pause Peek Point PointsEqual
Poke Pred Random ReadConfig ReadSecto
Rect RenameFile Reset Rewrite Round
Seek SetLength SetIntVec Sin Succ
Space SizeOf Str StringOfChar Sqr
Sqrt Trunc UpCase Val WriteSector
Abs
function Abs(x: real): real;
function Abs(x: integer): integer;
Funkcja obliczająca wartość bezwzględną podanej liczby (ang. Absolute value). Wartość bezwzględna liczby nieujemnej to ta sama liczba, a liczby ujemnej - liczba do niej przeciwna. Funkcja w przypadku podania jej argumentu całkowitego zwraca wynik również typu całkowitego.
Append
Append(var F: text)
Otwiera istniejący zbiór tekstowy w trybie dopisywania (wskaźnik zbioru jest ustawiany na końcu zbioru).
F
jest tekstową zmienną plikową, która musi być skojarzona z istniejącym zbiorem dyskowym (przy użyciu procedury Assign
).
ArcTan
function ArcTan(x: real): real;
Funkcja (arcus tangens) zwraca wartość kąta, którego tangens wynosi x
.
Assign
procedure Assign(var F:File; FileName:string)
Procedura przypisuje zmiennej plikowej F
plik o nazwie FileName
. Aby móc odwoływać się do jakiegoś pliku, zawsze należy najpierw użyć procedury Assign
. Przy dalszych operacjach pliki są identyfikowane przy pomocy zmiennej plikowej, a nie nazwy.
BinStr
function BinStr(Value: cardinal; Digits: byte): TString;
Funkcja zwraca ciąg znakowy z reprezentacją binarną wartości Value
. Digits
określa długość ciągu, który maksymalnie może liczyć 32 znaki.
Concat
function Concat(a,b: string): string; assembler
function Concat(a: string; b: char): string; assembler;
function Concat(a: char; b: string): string; assembler;
function Concat(a,b: char): string;
Funkcja łączy dwa ciągi tekstowe w nowy ciąg znakowy.
Blockread
procedure BlockRead(var f: file; var Buf; Count: word; var Result: word);
Procedura wczytuje z pliku plik do zmiennej Buf
nie więcej niż Count
bajtów i umieszcza w zmiennej Result
ilość rzeczywiście przeczytanych bajtów (która może być mniejsza od oczekiwanej np. ze względu na rzeczywistą długość pliku).
Blockwrite
procedure BlockWrite(var f: file; var Buf; Count: word; var Result: word);
Procedura zapisuje do pliku ze zmiennej Buf
nie więcej niż Count
bajtów.
Chr
Chr(65); // Zwraca znak A
Chr(90); // Zwraca znak Z
Chr(32); // Zwraca znak spacji
Writeln(#65); // Znak A
Writeln(#65#32#65); // Napisze 'A Z'
Funkcja zwraca znak Char
o odpowiadającym kodzie ATASCII podanym w parametrze. Zamiennie z funkcją Chr
, chcąc uzyskać odpowiedni znak możemy użyć jego kodu ATASCII poprzedzając go #
.
Cos
function Cos(x: real): real;
Cosinus kąta, x
w radianach.
Close
procedure Close(var f: file);
Procedura służąca do zamykania otwartego pliku dowolnego typu. Każdy plik otwarty przy pomocy Reset
lub Rewrite
powinno się zamknąć przy pomocy Close
.
Dec
procedure Dec(var X [, N: int]);
Procedura zmniejsza wartość parametru X
o 1
lub wartość parametru N
. Wartość parametru X
może być typu CHAR
BYTE
WORD
CARDINAL
. Procedura DEC
generuje optymalny kod, jest zalecana do używania w pętlach, zamiast operatora odejmowania -
.
dec(tmp);
dec(tmp[2]);
DeleteFile
function DeleteFile(FileName: string): Boolean;
Funkcja pozwala skasować plik z dysku o nazwie FileName
, zwraca TRUE
kiedy operacja powiodła się, FALSE
w przypadku wystąpienia błędu (najczęściej z powodu zabezpieczenia przed zapisem lub błędnej nazwy pliku).
DPeek
function DPeek(a: word): word;
Funkcja zwraca słowo spod adresu a
.
DPoke
procedure DPoke(a: word; value: word);
Procedura zapisuje słowo value
pod adresem a
.
Eof
function Eof(var f: file): Boolean;
Funkcja zwraca wartość logiczną TRUE
jeśli osiągnięty został koniec pliku.
Exit
Wywołanie procedury Exit
powoduje natychmiastowe opuszczenie bloku programu, w którym to wywołanie nastąpiło. Można jej użyć do opuszczenia pętli, wyjścia z procedury/funkcji lub programu głównego.
Exp
function Exp(x: real): real;
Funkcja podnosząca liczbę e (=2.71) do potęgi podanej przez argument x
.
FilePos
function FilePos(var f: file): cardinal;
Funkcja zwraca aktualną pozycję pliku. Plik nie może być tekstowy i musi być otwarty (np. poleceniem Reset
). Bity 0..15
zwróconej wartości to numer sektora dysku, bity 16..23
pozycja w sektorze [0..255]
. Jest to odpowiednik instrukcji NOTE
.
FileSize
function FileSize(var f: file): cardinal;
Funkcja zwraca długość pliku w bajtach (Sparta DOS X). Plik nie może być tekstowy i musi być otwarty (np. poleceniem Reset
).
FillChar
procedure FillChar(x: pointer; count: word; value: char);
Procedura wypełnia bufor określony w parametrze X
identycznymi znakami lub bajtami. Parametr value
musi określać dane, natomiast count
- ilość danych jakie zostaną przypisane do bufora.
var
Buffer : array[0..100] of Char;
begin
FillChar(Buffer, SizeOf(Buffer), 'A');
end.
Frac
function Frac(x: real): real;
Zwraca część ułamkową liczby x
w postaci rzeczywistej.
GetIntVec
procedure GetIntVec(intno: byte; var vector: pointer);
Procedura odczytuje adres wektora przerwań wg. kodu INTNO. Obecnie dopuszczalnymi kodami są: iDLI
przerwanie DLI, iVBL
przerwanie VBL.
Halt
procedure halt;
Wywołanie powoduje natychmiastowe wyjście z programu. Można (opcjonalnie) podać kod błędu, w przypadku Mad-Pascal jest on ignorowany.
Hi
function Hi(x): byte
Funkcja zwracająca starszy bajt parametru x
.
HexStr
function HexStr(Value: cardinal; Digits: byte): TString;
Funkcja zwraca ciąg znakowy z reprezentacją heksadecymalną wartości Value
. Digits
określa długość ciągu, który maksymalnie może liczyć 32 znaki.
Inc
Inc procedure Inc(var X [, N: int]);
Procedura zwiększa wartość parametru X
o 1
lub wartość parametru N
. Wartość parametru X
może być typu CHAR
BYTE
WORD
CARDINAL
. Procedura INC
generuje optymalny kod, jest zalecana do używania w pętlach, zamiast operatora dodawania +
.
inc(tmp);
inc(tmp[2]);
Int
function Int(x: real): real;
Funkcja zwraca część całkowitą argumentu będącego liczbą rzeczywistą.
Ln
function Ln(x: real): real;
Funkcja licząca logarytm naturalny (o podstawie e) z podanej liczby. Argument funkcji musi być dodatni!
Lo
function Lo(x): byte;
Funkcja zwracająca młodszy bajt parametru X
.
LowerCase
function LowerCase(a: char): char;
Funkcja zmieniająca znaki 'A'..'Z' na odpowiednie małe znaki 'a'..'z'.
Move
procedure Move(source, dest: pointer; count: word);
Procedura służy do kopiowania danych ze źródła, parametr Source
, do bufora oznaczonego jako przeznaczenie, parametr Dest
. Ilość kopiowanych danych określa parametr Count
.
OctStr
function OctStr(Value: cardinal; Digits: byte): TString;
Funkcja zwraca ciąg znakowy z reprezentacją ósemkową wartości Value
. Digits
określa długość ciągu, który maksymalnie może liczyć 32 znaki.
Odd
function Odd(x: cardinal): Boolean;
function Odd(x: integer): Boolean;
Funkcja zwraca wartość True
jeżeli liczba określona w parametrze X
jest nieparzysta, False
jeżeli jest parzysta.
Ord
function Ord(X);
Funkcja ta działa odwrotnie do Chr
. Z podanego znaku jako parametr zwraca nam jego kod w ATASCII.
Ord('A'); // Zwraca 65
Ord('Z'); // Zwraca 90
Ord(' '); // Zwraca 32
ParamCount
function ParamCount: byte;
Funkcja zwraca ilość dostępnych argumentów (Sparta Dos X, BWDos), tzn. maksymalny indeks dla procedury ParamStr
. ParamCount
określa ilość parametrów przekazanych do programu z linii poleceń.
ParamStr
function ParamStr(Index: byte): TString;
Funkcja zwraca parametry programu (Sparta Dos X, BWDos). Index
to numer parametru, czyli ciągu znaków oddzielonego spacją.
Jeżeli uruchomimy program TEST.EXE
w taki sposób:
TEST.EXE parametr1 parametr2 parametr3
To aby uzyskać parametr3
należy podać Index=3
, zaś aby uzyskać parametr1
należy Index=1
. Index=0
to specjalny argument, wtedy funkcja zwraca napęd z którego został uruchomiony programu, np. D1:
.
Pause
procedure Pause;
procedure Pause(n: word);
Procedura zatrzymuje działanie programu na N * 1.50
sek.
Peek
function Peek(a: word): byte;
Funkcja zwraca bajt spod adresu a
.
Point
function Point(AX, AY: smallint): TPoint;
Funkcja na podstawie parametrów AX
oraz AY
tworzony jest rekord typu TPoint
.
PointsEqual
function PointsEqual(const P1, P2: TPoint): Boolean;
Funkcja sprawdza czy wartości współrzędnych określone w parametrach P1
oraz P2
są sobie równe. W takim wypadku funkcja zwraca wartość True
.
Poke
procedure Poke(a: word; value: byte);
Procedura zapisuje bajt value
pod adresem a
.
Pred
function Pred(X: TOrdinal): TOrdinal;
Poprzednik elementu X
.
Random
function Random: Real; assembler;
Funkcja zwraca losową wartość z przedziału <0 .. 1>
.
function Random(range: byte): byte; assembler;
Funkcja zwraca losową wartość z przedziału <0 .. range-1>
, w przypadku Range=0 zwraca wartość losową z przedziału <0 .. 255 >
.
function Random(range: smallint): smallint;
Funkcja zwraca losową wartość z przedziału <0 .. range-1>
.
ReadConfig
function ReadConfig(devnum: byte): cardinal;
Odczyt statusu stacji devnum
. Wynikiem są cztery bajty DVSTAT ($02EA..$02ED)
.
Byte 0 ($02ea):
Bit 0:Indicates the last command frame had an error.
Bit 1:Checksum, indicates that there was a checksum error in the last command or data frame
Bit 2:Indicates that the last operation by the drive was in error.
Bit 3:Indicates a write protected diskette. 1=Write protect
Bit 4:Indicates the drive motor is on. 1=motor on
Bit 5:A one indicates MFM format (double density)
Bit 6:Not used
Bit 7:Indicates Density and a Half if 1
Byte 1 ($02eb):
Bit 0:FDC Busy should always be a 1
Bit 1:FDC Data Request should always be 1
Bit 2:FDC Lost data should always be 1
Bit 3:FDC CRC error, a 0 indicates the last sector read had a CRC error
Bit 4:FDC Record not found, a 0 indicates last sector not found
Bit 5:FDC record type, a 0 indicates deleted data mark
Bit 6:FDC write protect, indicates write protected disk
Bit 7:FDC door is open, 0 indicates door is open
Byte 2 ($2ec):
Timeout value for doing a format.
Byte 3 ($2ed):
not used, should be zero
ReadSector
procedure ReadSector(devnum: byte; sector: word; var buf);
Procedura odczytuje sektora sector
dyskietki w stacji dysków devnum
i zapisanie go w buforze buf
.
Rect
function Rect(ALeft, ATop, ARight, ABottom: smallint): TRect;
Funckja na podstawie parametrów tworzy rekord typu TRect
.
RenameFile
function RenameFile(OldName, NewName: string): Boolean;
Funkcja pozwala zmienić nazwę pliku OldName
na nową nazwę NewName
, zwraca TRUE
kiedy operacja powiodła się, FALSE
w przypadku wystąpienia błędu (najczęściej z powodu zabezpieczenia przed zapisem lub błędnej nazwy pliku).
RenameFile('D:OLDNAME.TMP', 'NEWNAME.TMP');
Reset
procedure Reset(var f: file; l: Word);
Procedura otwiera istniejący plik z nazwą przekazaną do F
poleceniem Assign
. Opcjonalnie możemy podać rozmiar rekordu w bajtach L
, domyślnie jest to wartość 128.
Rewrite
procedure Rewrite(var f: file; l: Word);
Procedura tworzy i otwiera nowy plik. f
jest nazwą przekazaną za pomocą polecenia Assign
. Opcjonalnie możemy podać rozmiar rekordu w bajtach l
, domyślnie jest to wartość 128.
Round
function Round(x: real): integer;
Funkcja dokonuje zaokrąglenia podanej liczby rzeczywistej do najbliższej liczby całkowitej.
Seek
procedure Seek(var f: file; N: cardinal);
Procedura ustawia pozycję w pliku na N
. N
powinno być wartością zwróconą przez FilePos
. Jest to odpowiednik instrukcji POINT
.
SetLength
procedure SetLength(var S: string; Len: byte);
Procedura ustawia długość ciągu S
na LEN
.
SetIntVec
procedure SetIntVec(intno: Byte; vector: pointer);
Procedura ustawia adres wektora przerwań wg. kodu INTNO. Obecnie dopuszczalnymi kodami są: iDLI
przerwanie DLI, iVBL
przerwanie VBL.
Sin
function Sin(x: real): real;
Sinus kąta. x
w radianach.
Succ
function Succ(X: TOrdinal): TOrdinal;
Następnik elementu X
.
Space
function Space(Len: Byte): ^char;
Funkcja generuje nowy ciąg znakowy o długości Len
wypełniony znakami spacji.
SizeOf
function SizeOf(X: AnyType): byte;
Funkcja zwraca rozmiar podanej zmiennej (lub typu) w bajtach.
Str
procedure Str(var X: TNumericType; var S: string);
Procedura zamienia liczbę X
na łańcuch znaków S
.
StringOfChar
procedure StringOfChar(ch: Char; len: byte): ^char;
Funkcja generuje nowy ciąg znakowy o długości len
wypełniony znakami ch
.
Sqr
function Sqr(x: real): real;
function Sqr(x: integer): integer;
Funkcja obliczająca kwadrat podanej liczby (ang. Square).
Sqrt
function Sqrt(x: real): real;
function Sqrt(x: single): single;
function Sqrt(x: integer): single;
Funkcja obliczająca pierwiastek kwadratowy podanej liczby (ang. Square root).
Trunc
function Trunc(x: real): integer;
Funkcja zwraca część całkowitą liczby rzeczywistej w postaci liczby całkowitej.
UpCase
function UpCase(a: char): char;
Funkcja zmieniająca znaki 'a'..'z'
na odpowiednie duże znaki 'A'..'Z'
.
Val
procedure Val(const S: string; var V; var Code: Byte);
Procedura przekształca ciąg znaków S
na liczbę V
. Code przyjmie wartość 0
jeśli nie było błędnych znaków, w przeciwnym wypadku przyjmie numer znaku który spowodował błąd konwersji.
WriteSector
procedure WriteSector(devnum: byte; sector: word; var buf);
Procedura zapisuje sektora sector
dyskietki w stacji devnum
na podstawie bufora buf
.
CRT
Constants
CN_START_SELECT_OPTION = 0;
CN_SELECT_OPTION = 1;
CN_START_OPTION = 2;
CN_OPTION = 3;
CN_START_SELECT = 4;
CN_SELECT = 5;
CN_START = 6;
CN_NONE = 7;
Variables
Consol
Consol: byte absolute $d01f
Zmienna zwraca kod naciśniętego klawisza/klawiszy konsoli.
TextAttr
TextAttr: byte = 0
Zmienna przechowuje wartość jaka jest dodawana do każdego wyświetlanego znaku, np. TextAttr = $80
spowoduje że znaki będą wyświetlane w inwersie.
WhereX
WhereX: byte absolute $54;
Zmienna przechowuje aktualną poziomą pozycję kursora.
WhereY
WhereY: byte absolute $55;
Zmienna przechowuje aktualną pionową pozycję kursora.
Procedures and functions
ClrEol ClrScr CursorOff CursorOn Delay
DelLine GotoXY InsLine Keypressed NoSound
ReadKey Sound TextBackground TextColor
ClrEol
procedure ClrEol;
Procedura czyści wiersz od aktualnej pozycji kursora do prawej strony krawędzi ekranu. Pozycja kursora nie ulega zmianie.
ClrScr
procedure ClrScr;
Procedura czyści ekran edytora, wykonuje kod znaku CH_CLR
.
CursorOff
procedure CursorOff;
Procedura wyłącza kursor.
CursorOn
procedure CursorOn;
Procedura włącza kursor.
Delay
procedure Delay(MS: Word);
Procedura czeka zadaną ilość milisekund MS
. W przybliżeniu Delay(1000)
generuje opóźnienie jednej sekundy.
DelLine
procedure DelLine;
Procedura kasuje wiersz na aktualnej pozycji kursora, wykonuje kod znaku CH_DELLINE
.
GotoXY
procedure GotoXY(x, y: byte);
Procedura ustawia nową pozycję kursora.
InsLine
procedure InsLine;
Procedura wstawia pusty wiersz na aktualnej pozycji kursora, wykonuje kod znaku CH_INSLINE
.
Keypressed
function Keypressed: Boolean;
Funkcja zwraca TRUE
gdy został naciśnięty jakiś klawisz klawiatury, w przeciwnym razie zwraca FALSE
.
NoSound
procedure NoSound;
Procedura wycisza kanały obu POKEY-i $D200
$D210)
.
ReadKey
function ReadKey: char;
Funkcja zwraca kod naciśniętego klawisza klawiatury.
Sound
procedure Sound(Chan,Freq,Dist,Vol: byte);
Procedura odtwarza dźwięk na kanale POKEY-a CHAN (0..3, 4..7)
, o częstotliwości FREQ (0..255)
, filtrach DIST (0..7)
, głośności VOL (0..15)
.
TextBackground
procedure TextBackground(a: byte);
Procedura ustawia nowy kolor tła znaków (działa najlepiej z włączonym VBXE).
TextColor
procedure TextColor(a: byte);
Procedura ustawia nowy kolor znaków (działa najlepiej z włączonym VBXE).
GRAPH
Constants
{ graphic drivers }
D1bit = 11;
D2bit = 12;
D4bit = 13;
D6bit = 14; // 64 colors Half-brite mode - Amiga
D8bit = 15;
D12bit = 16; // 4096 color modes HAM mode - Amiga
m640x480 = 8 + 16;
{ error codes }
grOK = 0;
grNoInitGraph = -1;
grNotDetected = -2;
grFileNotFound = -3;
grInvalidDriver = -4;
grNoLoadMem = -5;
grNoScanMem = -6;
grNoFloodMem = -7;
grFontNotFound = -8;
grNoFontMem = -9;
grInvalidMode = -10;
grError = -11;
grIOerror = -12;
grInvalidFont = -13;
grInvalidFontNum = -14;
grInvalidVersion = -18;
Variables
GraphResult
GraphResult : byte
Procedures and functions
Bar Bar3D Circle ClipLine Ellipse
FillEllipse FillRect FloodFill GetColor GetMaxX
GetMaxY GetPixel GetX GetY InitGraph
Line LineTo MoveRel MoveTo PutPixel
Rectangle SetBkColor SetClipRect SetColor SetColorMapEntry
SetColorMapDimensions
Bar
procedure Bar(x1, y1, x2, y2: Smallint);
Prostokąt, np. dla wykresów słupkowych.
Bar3D
procedure Bar3D(x1, y1, x2, y2: smallint; depth: word; top: boolean);
Słupek dla wykresów trójwymiarowych.
Circle
procedure Circle(x0,y0,radius: word);
Okrąg.
ClipLine
procedure ClipLine(x1, y1, x2, y2: smallint);
Ellipse
procedure Ellipse(x0, y0, a, b: word);
Elipsa.
FillEllipse
procedure FillEllipse(x0, y0, a, b: word);
Elipsa wypełniona wewnątrz.
FillRect
procedure FillRect(Rect: TRect);
Prostokąt wypełniony wewnątrz.
FloodFill
procedure FloodFill(x, y: smallint; color: byte);
Wypełnienie zamkniętego obszaru ekranu.
GetColor
function GetColor: byte; assembler;
Podaj bieżący kolor rysowania.
GetMaxX
function GetMaxX: word;
Podaj najwyższą wartość współrzędnej X na ekranie.
GetMaxY
function GetMaxY: word;
Podaj najwyższą wartość współrzędnej Y na ekranie.
GetPixel
function GetPixel(x,y: smallint): byte;
Podaj kolor danego punktu na ekranie.
GetX
function GetX: smallint;
Podaj bieżącą współrzędną X kursora graficznego.
GetY
function GetY: smallint;
Podaj bieżącą współrzędną Y kursora graficznego.
InitGraph
procedure InitGraph(mode: byte);
procedure InitGraph(driver, mode: byte; pth: TString);
Zainicjuj tryb graficzny.
Line
procedure Line(x0, y0, x1, y1: smallint);
Linia prosta.
LineTo
procedure LineTo(x, y: smallint);
Linia od bieżącej pozycji kursora do wskazanego punktu.
MoveRel
procedure MoveRel(Dx, Dy: smallint);
Przesuń kursor graficzny.
MoveTo
procedure MoveTo(x, y: smallint);
Przesuń kursor graficzny do wskazanego punktu.
PutPixel
procedure PutPixel(x,y: smallint);
procedure PutPixel(x,y: smallint; color: byte);
Zapal punkt na ekranie.
Rectangle
procedure Rectangle(x1, y1, x2, y2: smallint);
procedure Rectangle(Rect: TRect);
Prostokąt.
SetBkColor
procedure SetBkColor(color: byte);
Ustaw kolor tła.
SetClipRect
procedure SetClipRect(x0,y0,x1,y1: smallint);
procedure SetClipRect(Rect: TRect);
SetColor
procedure SetColor(color: byte);
Ustaw kolor pisaka.
SetColorMapEntry
procedure SetColorMapEntry;
procedure SetColorMapEntry(a,b,c: byte);
SetColorMapDimensions
procedure SetColorMapDimensions(w,h: byte);
SYSUTILS
Constants
faReadOnly = $01;
faHidden = $02;
faSysFile = $04;
faVolumeID = $08;
faDirectory = $10;
faArchive = $20;
faAnyFile = $3f;
Types
TSearchRec
TSearchRec = record
Attr: Byte;
Name: TString;
FindHandle: Pointer;
end;
Procedures and functions
AnsiUpperCase Beep Click DeleteFile ExtractFileExt
FileExists FindFirst FindNext FindClose GetTickCount
IntToHex IntToStr RenameFile StrToFloat StrToInt
AnsiUpperCase
function AnsiUpperCase(const a: string): string;
Funkcja konwertuje znaki z łańcucha a
na wielkie.
Beep
procedure Beep;
Sygnał brzęczka (buzzer).
Click
procedure Click;
Sygnał klawiatury.
DeleteFile
function DeleteFile(var FileName: TString): Boolean;
Funkcja kasuje plik określony w parametrze FileName
, zwraca TRUE
gdy operacja się powiodła.
ExtractFileExt
function ExtractFileExt(const FileName: string): TString;
Na podstawie nazwy pliku lub pełnej ścieżki do pliku określonej w parametrze FileName
, funkcja zwraca rozszerzenie (poprzedzone kropką - np. .txt
).
FileExists
function FileExists(const FileName: string): Boolean;
Funkcja sprawdza czy plik określony w parametrze FileName
, istnieje True
czy też nie False
.
FindFirst
function FindFirst(const FileMask: TString; Attributes: Byte; var SearchResult: TSearchRec): byte;
Funkcja wyszukuje pliki pasujące do wzorca FileMask
i posiadające atrybuty określone w Attributes
. Jeśli zostały znalezione pliki pasujące do szablonu to pierwszy z nich jest zwracany w zmiennej SerchResult
.
FindNext
function FindNext(var f: TSearchRec): byte;
Funkcja przechodzi do następnego rekordu znalezionego wcześniej przy pomocy FindFirst
. W parametrze musi zostać przekazane wskazanie na rekord, który wcześniej został użyty w funkcji FindFirst
.
FindClose
procedure FindClose(var f: TSearchRec);
Procedura zwalnia zasoby (pamięć) zaalokowaną przez funkcję FindFirst
. Procedura ta powinna być wywoływana za każdym razem po zakończeniu procesu wyszukiwania.
GetTickCount
function GetTickCount: cardinal;
GetTickCount zwraca 24-bitowy licznik czasu (PEEK(RTCLOK+2) + PEEK(RTCLOK+1)*256 + PEEK(RTCLOK)*65536)
. Jest to przydatne do pomiaru czasu.
IntToHex
function IntToHex(Value: cardinal; Digits: byte): TString;
Funkcja konwertuje wartość liczbową na jej odpowiednik łańcuchowy w systemie szesnastkowym.
IntToStr
function IntToStr(a: integer): ^char;
Funkcja służy do konwersji liczby całkowitej podanej w parametrze do postaci łańcuchowej.
RenameFile
function RenameFile(var OldName,NewName: TString): Boolean;
Funkcja próbuje zmienić nazwę pliku określonego w parametrze OldName
na NewName
. Jeżeli operacja się powiedzie, funkcja zwróci wartość True
w przeciwnym wypadku False
. Może się zdarzyć, że funkcja nie będzie mogła zmienić nazwy (np. gdy aplikacja nie ma prawa do tego) - wówczas funkcja zwróci False
.
StrToFloat
function StrToFloat(var s: TString): real;
Funkcja konwertuje łańcuch do postaci zmiennoprzenkowej typu Real
.
StrToInt
function StrToInt(const S: char): byte;
function StrToInt (const S: TString): integer;
Funkcja służy do konwersji tekstu zapisanego w zmiennej S na liczbę całkowitą - o ile to możliwe.
VBXE
Mapa pamięci dla VBXE zdefiniowana jest w module SYSTEM
.
VBXE_XDLADR = $0000; // XDLIST
VBXE_MAPADR = $1000; // COLOR MAP ADDRESS
VBXE_BCBADR = $0100; // BLITTER LIST ADDRESS
VBXE_OVRADR = $5000; // OVERLAY ADDRESS
VBXE_WINDOW = $B000; // 4K WINDOW $B000..$BFFF
Constants
LoRes = 1; // 160x240x256c
MedRes = 2; // 320x240x256c
HiRes = 3; // 640x240x16c
Types
TUInt24
record
byte0: byte;
byte1: byte;
byte2: byte;
end;
Typ 24-bitowy wykorzystywany do definicji adresów pamięci VBXE.
TXDL
record
xdlc_: word;
rptl_: byte;
xdlc: word;
rptl: byte;
ov_adr: TUInt24;
ov_step: word;
mp_adr: TUInt24;
mp_step: word;
mp_hscrol: byte;
mp_vscrol: byte;
mp_width: byte;
mp_height: byte;
ov_width: byte;
ov_prior: byte;
end;
Typ TXDL
wykorzystywany przez procedury GetXDL
i SetXDL
. Pozwala na modyfikację programu dla VBXE wykorzystywanego przez Mad-Pascal.
TBCB
record
src_adr: TUInt24;
src_step_y: smallint;
src_step_x: shortint;
dst_adr: TUInt24;
dst_step_y: smallint;
dst_step_x: shortint;
blt_width: word;
blt_height: byte;
blt_and_mask: byte;
blt_xor_mask: byte;
blt_collision_mask: byte;
blt_zoom: byte;
pattern_feature: byte;
blt_control: byte;
end;
Typ TBCB
(21 bajtów), Blitter Code Block. Definicja typu bloku programu dla Blittera VBXE.
TVBXEMemoryStream
Object
Position: cardinal;
Size: cardinal; // 0..Size-1
procedure Create;
procedure Clear;
procedure SetBank;
procedure ReadBuffer(var Buffer; Count: word);
procedure WriteBuffer(var Buffer; Count: word);
function ReadByte: Byte;
function ReadWord: Word;
function ReadDWord: Cardinal;
procedure WriteByte(b: Byte);
procedure WriteWord(w: Word);
procedure WriteDWord(d: Cardinal);
end;
Obiekt TVBXEMemoryStream
pozwala na liniowy dostęp do pamięci VBXE.
Procedures and functions
BlitterBusy ColorMapOff ColorMapOn DstBCB ExtractFileExt
GetXDL IniBCB OverlayOff RunBCB SetHorizontalRes
VBXEMemoryBank SetXDL SrcBCB VBXEControl VBXEOff
BlitterBusy
function BlitterBusy: Boolean; assembler;
Funkcja zwraca TRUE
jeśli blitter VBXE zajęty jest wykonywaniem programu blittera.
ColorMapOff
procedure ColorMapOff; assembler;
Wyłączenie mapy kolorów w programie XDLIST
dla VBXE.
ColorMapOn
procedure ColorMapOn; assembler;
Włączenie mapy kolorów w programie XDLIST
dla VBXE.
DstBCB
procedure DstBCB(var a: TBCB; dst: cardinal);
Procedura zmieniająca adres docelowy dst_adr
w programie blittera A
.
GetXDL
procedure GetXDL(var a: txdl); register; assembler;
Procedura przepisuje do zmiennej A
program XDLIST
spod adresu VBXE_XDLADR
w pamięci VBXE.
IniBCB
procedure IniBCB(var a: TBCB; src,dst: cardinal; w0, w1: smallint; w: word; h: byte; ctrl: byte);
Procedura pozwala zaincjować pamięć dla programu blittera pod adresem A
. Dodatkowe parametry określają adres spod którego będą kopiowane dane SRC
, adres docelowy kopiowanych danych DST
, szerokość okna danych źródłowych W0
, docelowych W1
, rozmiar okna wynikowego, jego szerokość W
, wysokość H
, oraz określić parametry końcowe bloku programu blittera CTRL
(ustawiony bit 3 CTRL
nakazuje blitterowi odczyt kolejnego programu i jego wykonanie).
OverlayOff
procedure OverlayOff; assembler;
Wyłączenie trybu overlay w programie XDLIST
.
RunBCB
procedure RunBCB(var a: TBCB); assembler;
Wystartowanie blittera VBXE na podstawie adresu programu A
.
SetHorizontalRes
procedure SetHorizontalRes(a: byte); assembler;
procedure SetHRes(a: byte); assembler;
Ustanowienie trybu overlay w programie XDLIST
.
VBXEMemoryBank
procedure VBXEMemoryBank(b: byte); assembler;
Włączenie 4K banku VBXE w okno pamięci XE/XL $B000..$BCFF
.
SetXDL
procedure SetXDL(var a: txdl); register; assembler;
Procedura przepisuje program A
pod adres VBXE_XDLADR
w pamięci VBXE.
SrcBCB
procedure SrcBCB(var a: TBCB; src: cardinal);
Procedura zmieniająca adres źródłowy src_adr
w programie blittera A
.
VBXEControl
procedure VBXEControl(a: byte); assembler;
Procedura ustawia wartośc FX_VIDEO_CONTROL
.
VBXEOff
procedure VBXEOff
Wyłączenie, reset VBXE.
MATH
Procedures and functions
ArcCos ArcSin ArcTan2 Ceil CycleToRad
DegNormalize DegToGrad DegToRad DivMod EnsureRange
Floor FMod GradToDeg GradToRad InRange
IsNan Log2 Log10 LogN Max
Min Power RadToCycle RadToDeg RadToGrad
RandG RandomRange RandomRangeF Tan
ArcCos
function ArcCos(x: real): real;
ArcCos
jest funkcją odwrotną do funkcji Cos
. Wartość parametru X
musi należeć do przedziału obustronnie domkniętego <-1; 1>
. Wartością zwracaną przez funkcję jest kąt z przedziału <0; ?>
wyrażony w mierze łukowej (radianach).
ArcSin
function ArcSin(x: real): real;
Funkcja służy do obliczenia funkcji matematycznej arcus sinus z liczby X
. Jest to funkcja odwrotna do funkcji sinus, tzn. sin(arcsin(x)) = x
.
ArcTan2
function ArcTan2(y, x: real) : real;
Funkcja oblicza arcus tangens (odwrotność tangensa) z liczby Y/X
i zwraca wartość w radianach.
Ceil
function Ceil(a: real): smallint;
Funkcja zwraca najmniejszą liczbę całkowitą większą lub równą od tej podanej w parametrze.
CycleToRad
function CycleToRad(cycle : real) : real;
Funkcja przelicza wartość kąta wyrażonego w cyklach (obrotach) na kąt wyrażony w radianach.
DegNormalize
function DegNormalize(deg : real) : real;
DegToGrad
function DegToGrad(deg : real) : real;
Funkcja przelicza wartość kąta wyrażonego w stopniach na kąt wyrażony w gradach.
DegToRad
function DegToRad(deg : real) : real;
Funkcja przelicza wartość kąta wyrażonego w stopniach na kąt wyrażony w mierze łukowej, czyli radianach.
DivMod
procedure DivMod(Dividend: integer; Divisor: Word; var r, Remainder: Word);
procedure DivMod(Dividend: integer; Divisor: Word; var r, Remainder: smallint);
EnsureRange
function EnsureRange(const AValue, AMin, AMax: byte): Integer;
function EnsureRange(const AValue, AMin, AMax: Integer): Integer;
Floor
function Floor(a: real): smallint;
Funkcja zwraca najbliższą liczbę całkowitą mniejszą lub równą od tej podanej w parametrze.
FMod
function FMod(a, b: real): real;
Funkcja zwraca resztę z dzielenia dwóch liczb rzeczywistych.
GradToDeg
function GradToDeg(grad : real) : real;
Funkcja przelicza wartość kąta wyrażonego w gradach na kąt wyrażony w stopniach.
GradToRad
function GradToRad(grad : real) : real;
Funkcja GradToRad przelicza wartość kąta wyrażonego w gradach na kąt wyrażony w radianach.
InRange
function InRange(const AValue, AMin, AMax: byte): Boolean;
function InRange(const AValue, AMin, AMax: Integer): Boolean;
IsNan
function IsNan(const d : Single): Boolean;
Funkcja sprawdza czy wartość parametru d
jest poprawną liczbą.
Log2
function log2(x : single): single;
Funkcja zwraca wartość logarytmu przy podstawie 2 dla parametru rzeczywistego X>0.
Log10
function log10(x : single): single;
Funkcja zwraca wartość logarytmu dziesiętnego (logarytmu przy podstawie 10) dla parametru rzeczywistego X>0.
LogN
function logN(n,x : single): single;
Funkcja zwraca wartość logarytmu przy podstawie N>0 dla parametru rzeczywistego X>0.
Max
function Max(a, b: real): real;
function Max(a, b: integer): integer;
Przeciążona funkcja porównuje wartości dwóch parametrów: a
i b
, oraz zwraca ten, który jest większy.
Min
function Min(a, b: real): real;
function Min(a, b: integer): integer;
Przeciążona funkcja porównuje wartości dwóch parametrów a
i b
, oraz zwraca wartość tego który jest mniejszy.
Power
function Power(base : real; const exponent : shortint): real;
power(base : integer; const exponent : shortint): integer;
Funkcja podnosi liczbę A do dowolnej potęgi N, potęga może być ułamkiem.
RadToCycle
function RadToCycle(rad : real) : real;
Funkcja przelicza wartość kąta wyrażonego w radianach na kąt wyrażony w cyklach (obrotach).
RadToDeg
function RadToDeg(rad : real) : real;
Funkcja przelicza wartość kąta wyrażonego w radianach na kąt wyrażony w stopniach (deg).
RadToGrad
function RadToGrad(rad : real) : real;
Funkcja przelicza wartość kąta wyrażonego w radianach na kąt wyrażony w gradach.
RandG
function RandG(mean, StdDev : single) : single;
RandG
reprezentuje generator liczb pseudolosowych o rozkładzie Gaussa wokół średniej mean
. Parametr StdDev
jest odchyleniem standardowym generowanych liczb od wartości średniej mean
.
RandomRange
function RandomRange(const aFrom, aTo: smallint): smallint;
Funkcja zwraca losową liczbę z przedziału AFrom - ATo
, łącznie z wartością ATo
.
RandomRangeF
function RandomRangeF(const min, max: single): single;
Tan
function Tan(x: Real): Real;
Funkcja zwraca wartość tangensa kąta podanego w parametrze x
.