home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Whiteline: Alpha
/
Whiteline Alpha.iso
/
progtool
/
modula2
/
lpr
/
mogli
/
os.def
< prev
next >
Encoding:
Amiga
Atari
Commodore
DOS
FM Towns/JPY
Macintosh
Macintosh JP
MacRoman (detected)
NeXTSTEP
RISC OS/Acorn
Shift JIS
UTF-8
Wrap
Modula Definition
|
1994-09-22
|
35.4 KB
|
1,002 lines
(* --------------------------------------------------------------------- *)
(* OS (Operating System) DEFINITION MODULE *)
(* --------------------------------------------------------------------- *)
(* Einheitliche Modula-2 Schnittstelle zu (X)BIOS, GEMDOS des ATARI ST *)
(* --------------------------------------------------------------------- *)
(* Uwe Brahm *)
(* Johannes Schneiders *)
(* --------------------------------------------------------------------- *)
(* Version 1.0 von Mittwoch dem 1. November 1989 *)
(* --------------------------------------------------------------------- *)
(* Alle Rechte vorbehalten. Insbesondere bleiben Änderungen jeglicher *)
(* Art, sowie Anpassungen an andere Compiler bzw. Computersysteme *)
(* ausschließlich uns vorbehalten. *)
(* Copyright © 1989 by Uwe Brahm, Johannes Schneiders. *)
(* --------------------------------------------------------------------- *)
(* Es wurden alle erdenklichen Maßnahmen getroffen, um die Korrektheit *)
(* dieser Bibliothek zu gewährleisten. Wir können dennoch keine Gewähr *)
(* für die Vollständigkeit und Korrektheit übernehmen und schließen *)
(* deshalb alle Gewährleistungsansprüche, die durch Fehler in der *)
(* Software entstehen, ausdrücklich aus. *)
(* --------------------------------------------------------------------- *)
(* Um einen einheitlichen Standard auch in Zukunft gewährleisten zu *)
(* können, existiert eine zentrale Softwarewartung der Bibliotheken. *)
(* Sollten Sie Fehler entdecken oder Verbesserungsvorschläge haben, *)
(* wenden Sie sich schriftlich an: *)
(* U.Brahm, J.Schneiders, Carlo-Schmid-Straße 15, 6750 Kaiserslautern *)
(* --------------------------------------------------------------------- *)
(* Unterstützte Compiler: *)
(* TDI Modula-2 (Version 3.00) *)
(* SPC Modula-2 (Version 1.42) *)
(* --------------------------------------------------------------------- *)
(* ATARI ST ist ein Warenzeichen der Firma Atari *)
(* GEM ist ein Warenzeichen der Firma Digital Research *)
(* --------------------------------------------------------------------- *)
DEFINITION MODULE OS;
FROM SYSTEM IMPORT ADDRESS, BYTE;
VAR
BiosResult : LONGINT;
XBiosResult : LONGINT;
GEMDOSResult : LONGINT;
CONST
(* TOS-Fehlermeldungen *)
(* BIOS-Fehlermeldungen *)
Okay = 0 ; (* Funktion erfolgreich ausgefuehrt *)
Error = -1 ; (* Es ist ein Fehler aufgetreten, der nicht *)
(* genauer spezifiziert werden kann *)
DriveNotReady = -2 ; (* Angesprochenes Geraett nicht angeschlossen, *)
(* nicht funktionsbereit oder reagiert nicht *)
UnknownCommand = -3 ; (* Peripheriegeraet kennt Kommando nicht *)
CRCError = -4 ; (* Beim Lesen ist ein Fehler aufgetreten *)
BadRequest = -5 ; (* Peripheriegeraet kann Kommando nicht *)
(* ausfuehren. Befehlsparameter und Kontext ? *)
SeekError = -6 ; (* angesprochener Track nicht erreichbar *)
UnknownMedia = -7 ; (* Leseversuch gescheitert, Disk ohne Bootsektor. *)
SectorNotFound = -8 ; (* Sektor wurde nicht gefunden *)
NoPaper = -9 ; (* Drucker nicht betriebsbereit *)
WriteFault = -10 ; (* Fehler bei Schreiboperation aufgetreten *)
ReadFault = -11 ; (* Fehler bei Leseoperation aufgetreten *)
GeneralError = -12 ; (* Allgemeiner Fehler *)
WriteProtectedDisk = -13 ; (* Diskette ist schreibgeschuetzt *)
MediaChange = -14 ; (* Diskette wurde seit gewechselt *)
UnknownDevice = -15 ; (* Unbekanntes Geraet *)
BadSectorFormat = -16 ; (* defekte Sektoren beim Formatieren entdeckt *)
InsertOtherDisk = -17 ; (* Eine andere Diskette muß eingelegt werden *)
(* BDOS-Fehlermeldungen *)
InvalidFunctionNumber = -32 ; (* Unbekannte Funktionsnummer *)
FileNotFound = -33 ; (* Datei nicht gefunden *)
PathNotFound = -34 ; (* Ordner nicht gefunden *)
NoFileHandlesLeft = -35 ; (* Keine File-Handles mehr uebrig *)
AccessDenied = -36 ; (* Zugriff nicht erlaubt *)
InvalidHandle = -37 ; (* Falsche Handle-Nummer der Datei *)
NotEnoughMemory = -39 ; (* Nicht genuegend Speicher *)
InvalidBlockAddress = -40 ; (* Adresse des Speicherblocks falsch *)
InvalidDrive = -46 ; (* Laufwerksbezeichnung ungueltig *)
NotSameDrive = -48 ; (* Dateien auf verschiedenen Laufwerken *)
NoMoreFiles = -49 ; (* Keine weiteren Dateien zu oeffnen uebrig *)
(* Andere Fehler *)
RangeError = -64 ; (* Bereichsfehler *)
InternalGEMDOSError = -65 ; (* Interner GEMDOS-Fehler, Hiiiilllfffee !! *)
WrongLoadFormat = -66 ; (* Format des Programms nicht korrekt *)
MShrinkMfreeError = -67 ; (* Fehler bei ShrinkMemory(), FreeMemory() *)
(* ------------------------- BIOS Definitionen ------------------------ *)
CONST
(* Device : INTEGER *)
PRT = 0; (* Drucker, Parallele Schnittstelle *)
AUX = 1; (* Serielles Gerät, Serielle Schnittstelle *)
CON = 2; (* Console, Bildschirm *)
MIDI = 3; (* Midi, MIDI Schnittstelle *)
IKBD = 4; (* Keyboard, Tastatur *)
RAWCON = 5; (* Konsole, ohne Terminalemulation *)
(* Keyboard State : BITSET *)
RightShift = 0;
LeftShift = 1;
ControlKey = 2;
AlternateKey = 3;
CapsLock = 4;
RightMouseButton = 5;
LeftMMouseButton = 6;
ReservedKey = 7;
(* MediaChangeState : INTEGER *)
NoChange = 0; (* Diskette wurde mit Sicherheit nicht gewechselt *)
MayHaveChanged = 1; (* Diskette wurde moeglicherweise gewechselt *)
Changed = 2; (* Diskette wurde mit Sicherheit gewechselt *)
(* RWType : INTEGER *)
Read = 0; (* Normales Lesen *)
Write = 1; (* Normales Schreiben *)
ReadNoMediaChange = 2; (* Lesen, ohne Aenderung des media-change *)
WriteNoMediaChange = 3; (* Schreiben, ohne Aenderung des media-change *)
TYPE
MDPointerType = POINTER TO MDType;
MPBType = RECORD (* Memory Parameter Block *)
FreeListPtr : MDPointerType; (* Zeiger auf 'Memory Free List' *)
AllocatedListPtr : MDPointerType; (* Zeiger auf 'Memory Allocated List' *)
RovingPtr : MDPointerType; (* roving pointer; wird nur intern benötigt *)
END;
MDType = RECORD (* Memory Deskriptor Type *)
NextPtr : MDPointerType; (* Zeiger auf naechsten MD *)
StartAddress : ADDRESS; (* Anfangsadresse des Blocks *)
BlockLength : LONGINT; (* Laenge des Blocks *)
OwnerPtr : ADDRESS; (* Zeiger auf Prozess-Beschreibungs-Struktur *)
END;
BPBType = RECORD (* BIOS Parameter Block *)
BytesPerSector : CARDINAL; (* Bytes pro Sektor *)
ClusterSize : CARDINAL; (* Sektoren pro Cluster (Einheit) *)
BytesPerCluster : CARDINAL; (* Bytes pro Cluster *)
LengthOfDir : CARDINAL; (* Laenge des Directories in Sektoren *)
FATSize : CARDINAL; (* Laenge des File Allocation Table (FAT) *)
FATStartRecord : CARDINAL; (* Startsektor der zweiten FAT *)
FirstFreeSector : CARDINAL; (* Sektornummer des ersten freien Sektors *)
NumberOfCluster : CARDINAL; (* Gesamtzahl der Cluster auf dem Medium *)
Flags : CARDINAL; (* diverse Flags *)
END;
BPBPointerType = POINTER TO BPBType;
(* ------------------------- BIOS Prozeduren --------------------------- *)
PROCEDURE GetMPB (VAR MemoryParameterBlock : MPBType);
(* BIOS-Funktionsnummer: 0 *)
PROCEDURE DeviceInState (Device : INTEGER;
VAR Status : BOOLEAN);
(* BIOS-Funktionsnummer: 1 *)
PROCEDURE DeviceIn (Device : INTEGER;
VAR Return : LONGCARD);
(* BIOS-Funktionsnummer: 2 *)
PROCEDURE DeviceOut (Device : INTEGER;
Char : CHAR);
(* BIOS-Funktionsnummer: 3 *)
PROCEDURE ReadWriteAbsolute (ReadWriteFlag : INTEGER;
Buffer : ADDRESS;
Count : INTEGER;
StartSectorNumber : INTEGER;
Device : INTEGER;
VAR Return : LONGINT);
(* BIOS-Funktionsnummer: 4 *)
PROCEDURE GetSetException (VectorNumber : INTEGER;
NewVector : ADDRESS);
(* BIOS-Funktionsnummer: 5 *)
PROCEDURE TickCalibration (VAR MilliSeconds : LONGCARD);
(* BIOS-Funktionsnummer: 6 *)
PROCEDURE GetBPB (Drive : CARDINAL;
VAR Return : BPBPointerType);
(* BIOS-Funktionsnummer: 7 *)
PROCEDURE DeviceOutState (Device : INTEGER;
VAR Status : BOOLEAN);
(* BIOS-Funktionsnummer: 8 *)
PROCEDURE MediaChanged (Drive : CARDINAL;
VAR Status : LONGINT);
(* BIOS-Funktionsnummer: 9 *)
PROCEDURE DriveMap (VAR DriveSet : LONGBITSET);
(* BIOS-Funktionsnummer: 10 *)
PROCEDURE GetSetKeyboardState (Mode : BITSET;
VAR Return : LONGINT);
(* BIOS-Funktionsnummer: 11 *)
(* ------------------------- XBIOS Definitionen ----------------------- *)
CONST
(* MouseType : INTEGER *)
DisableMouse = 0;
RelativeMouse = 1;
AbsoluteMouse = 2;
UnusedMouse = 3;
KeycodeMouse = 4;
(* Resolution : INTEGER fuer GetResolution, SetScreen *)
Low = 0;
Medium = 1;
High = 2;
(* Wertvorgabe fuer Sector auf neuen Floppies, 010101010... *)
VirginMedia = 0E5E5H;
(* SerialDevice : INTEGER *)
RS232Device = 0;
KeyboardDevice = 1;
MIDIDevice = 2;
(* SerialSpeed : INTEGER *)
Baud19200 = 0;
Baud9600 = 1;
Baud4800 = 2;
Baud3600 = 3;
Baud2400 = 4;
Baud2000 = 5;
Baud1800 = 6;
Baud1200 = 7;
Baud600 = 8;
Baud300 = 9;
Baud200 = 10;
Baud150 = 11;
Baud134 = 12;
Baud110 = 13;
Baud75 = 14;
Baud50 = 15;
(* FlowControl : BITSET *)
XONXOFF = 0;
RTSCTS = 1;
(* Timer : INTEGER *)
TimerA = 0;
TimerB = 1;
TimerC = 2;
TimerD = 3;
(* PrinterConfiguration : BITSET *)
MatrixDaisyWheel = 0; (* Matrixdrucker oder Typenraddrucker *)
Monochrome = 1; (* farbig oder monochrom *)
AtariEpson = 2; (* Atari/Epson Drucker *)
DarftFinal = 3; (* normale oder hohe Quality *)
CentronicsRS232 = 4; (* Parallele oder RS232 *)
FormSingleSheet = 5; (* Endlospapier oder Einzelblatteinzug *)
(* Blitmodeflags : BITSET *)
BlitterOn = 0;
BlitterUsed = 1;
TYPE
ParameterBlock = RECORD
TopMode : (OriginBottom, OriginTop);
Buttons : CHAR;
XParameter : CHAR;
YParameter : CHAR;
(* Fuer den 'AbsoluteMouse mode' das folgende: *)
XMax : INTEGER;
YMax : INTEGER;
XInitial : INTEGER;
YInitial : INTEGER;
END;
PaletteType = ARRAY [0..15] OF CARDINAL;
IOBPointerType = POINTER TO IOBType;
IOBType = RECORD
IOBufferPointer : ADDRESS; (* Zeiger auf den Buffer *)
IOBufferSize : INTEGER; (* Laenge des Buffers *)
IOBufferHead : INTEGER; (* naechste Schreibposition *)
IOBufferTail : INTEGER; (* naechste Leseposition *)
IOBufferLow : INTEGER; (* 'untere Wassermarke' *)
IOBufferHigh : INTEGER; (* 'obere Wassermarke *)
END;
KeyTransferPointer = POINTER TO KeyTransferType;
KeyTransferType = ARRAY [0..127] OF BYTE;
KeyTablePointer = POINTER TO KeyTableType;
KeyTableType = RECORD
unshift : KeyTransferPointer; (* Tabelle fuer 'normale' Tastendruecke *)
shift : KeyTransferPointer; (* Tabelle fuer Tastendruecke mit 'Shift' *)
capslock : KeyTransferPointer; (* Tabelle fuer Tastendruecke bei 'Capslock' *)
END;
KBDVectorPointer = POINTER TO KBDVectorType;
KBDVectorType = RECORD
MidiVector : ADDRESS; (* MIDI-Eingabe *)
KeyboardError : ADDRESS; (* Tatstatur-Fehler *)
MidiError : ADDRESS; (* MIDI-Fehler *)
StateVector : ADDRESS; (* Status von IKDB lesen *)
MouseVector : ADDRESS; (* Mausabfrage *)
ClockVector : ADDRESS; (* Uhrzeitabfrage *)
JoyVector : ADDRESS; (* Joystickabfrage *)
MidiSystemVector : ADDRESS; (* MIDI-Systemvektor *)
IKBDSystemVektor : ADDRESS; (* IKBD-Systemvektor *)
END;
PBType = RECORD
PBHeight : INTEGER; (* Bildschirmhoehe in Punkten *)
PBLeft : INTEGER; (* Linker Rand in Punkten *)
PBRight : INTEGER; (* Rechter Rand in Punkten *)
PBScreenResolution : INTEGER; (* Aufloesung (0..2) *)
PBColorPointer : ADDRESS; (* Druckertyp Atari/Epson *)
PBPrinterType : LONGINT; (* 0 : Atari Matrix Monochrom *)
(* 1 : Atari Matrix Farbig *)
(* 2 : Atari Typenrad Monochrom *)
(* 3 : Epson Matrix Monochrom *)
PBPrinterPort : INTEGER; (* Schnittstelle Centronics/RS232 *)
PBMask : INTEGER; (* Zeiger auf Halbtonmaske *)
END;
PBPointerType = POINTER TO PBType;
(* ------------------------ XBIOS Prozeduren --------------------------- *)
PROCEDURE InitMouse (MouseType : INTEGER;
VAR Parameter : ParameterBlock;
ProcedureVector : ADDRESS);
(* XBIOS-Funktionsnummer: 0 *)
PROCEDURE Ssbrk (Amount : INTEGER;
VAR ReturnAddress : ADDRESS);
(* XBIOS-Funktionsnummer: 1 *)
PROCEDURE PhysicalBase (VAR StartAddress: ADDRESS);
(* XBIOS-Funktionsnummer: 2 *)
PROCEDURE LogicalBase (VAR StartAddress : ADDRESS);
(* XBIOS-Funktionsnummer: 3 *)
PROCEDURE GetResolution (VAR Value : INTEGER);
(* XBIOS-Funktionsnummer: 4 *)
PROCEDURE SetScreen (LogicalStartAddress : ADDRESS;
PhysicalStartAddress : ADDRESS;
Resolution : INTEGER);
(* XBIOS-Funktionsnummer: 5 *)
PROCEDURE SetPalette (VAR Palette : PaletteType);
(* XBIOS-Funktionsnummer: 6 *)
PROCEDURE GetSetColor (ColorNumber : INTEGER;
ColorRegister : INTEGER;
VAR ReturnColor : INTEGER);
(* XBIOS-Funktionsnummer: 7 *)
PROCEDURE FloppyRead (Buffer : ADDRESS;
DriveNumber : INTEGER;
StartSector : INTEGER;
TrackNumber : INTEGER;
Side : INTEGER;
SectorNumbers : INTEGER;
VAR Return : INTEGER);
(* XBIOS-Funktionsnummer: 8 *)
PROCEDURE FloppyWrite (Buffer : ADDRESS;
DriveNumber : INTEGER;
StartSector : INTEGER;
TrackNumber : INTEGER;
Side : INTEGER;
SectorNumbers : INTEGER;
VAR Return : INTEGER);
(* XBIOS-Funktionsnummer: 9 *)
PROCEDURE FloppyFormat (Buffer : ADDRESS;
DriveNumber : INTEGER;
SectorsPerTrack : INTEGER;
TrackNumber : INTEGER;
Side : INTEGER;
Interleave : INTEGER;
VirginBitPattern : INTEGER;
VAR Return : INTEGER);
(* XBIOS-Funktionsnummer: 10 *)
PROCEDURE GetDSB ();
(* XBIOS-Funktionsnummer: 11 *)
PROCEDURE MidiWriteString (VAR ByteStream : ARRAY OF BYTE;
StreamLength : INTEGER);
(* XBIOS-Funktionsnummer: 12 *)
PROCEDURE SetMFPInterrupt (InterruptNumber : INTEGER;
VectorPointer : ADDRESS);
(* XBIOS-Funktionsnummer: 13 *)
PROCEDURE GetIORecord (SerialDevice : INTEGER;
VAR ReturnPointer : IOBPointerType);
(* XBIOS-Funktionsnummer: 14 *)
PROCEDURE RS232Configure (SerialSpeed : INTEGER;
FlowControl : BITSET;
UCR : INTEGER;
RSR : INTEGER;
TSR : INTEGER;
SCR : INTEGER;
VAR RS232Return : LONGINT);
(* XBIOS-Funktionsnummer: 15 *)
PROCEDURE SetKeyTable (VAR Unshift : KeyTransferPointer;
Shift : KeyTransferPointer;
Capslock : KeyTransferPointer;
VAR ReturnKeyPointer : KeyTablePointer);
(* XBIOS-Funktionsnummer: 16 *)
PROCEDURE Random (VAR ReturnValue : LONGCARD);
(* XBIOS-Funktionsnummer: 17 *)
PROCEDURE PrototypeBootSector (Buffer : ADDRESS;
SerialNumber : LONGINT;
DiskType : INTEGER;
ExecutionFlag : INTEGER);
(* XBIOS-Funktionsnummer: 18 *)
PROCEDURE FloppyVerify (Buffer : ADDRESS;
DriveNumber : INTEGER;
StartSector : INTEGER;
TrackNumber : INTEGER;
Side : INTEGER;
SectorNumbers : INTEGER;
VAR ReturnValue : INTEGER);
(* XBIOS-Funktionsnummer: 19 *)
PROCEDURE ScreenDump;
(* XBIOS-Funktionsnummer: 20 *)
PROCEDURE CursorConfigure (Rate : INTEGER;
Function : INTEGER;
VAR ReturnValue : INTEGER);
(* XBIOS-Funktionsnummer: 21 *)
PROCEDURE XSetTime (DateTime : LONGCARD);
(* XBIOS-Funktionsnummer: 22 *)
PROCEDURE XGetTime (VAR ReturnValue : LONGCARD);
(* XBIOS-Funktionsnummer: 23 *)
PROCEDURE RestoreKeyTable;
(* XBIOS-Funktionsnummer: 24 *)
PROCEDURE IKBDWriteString (VAR ByteStream : ARRAY OF BYTE;
StreamLength : INTEGER);
(* XBIOS-Funktionsnummer: 25 *)
PROCEDURE DisableMFPInterupt (InterruptNumber : INTEGER);
(* XBIOS-Funktionsnummer: 26 *)
PROCEDURE EnableMFPInterupt (InterruptNumber : INTEGER);
(* XBIOS-Funktionsnummer: 27 *)
PROCEDURE GISRegisterAccess (Data : INTEGER;
RegisterNumber : INTEGER;
VAR ReturnValue : INTEGER);
(* XBIOS-Funktionsnummer: 28 *)
PROCEDURE OffGISBit (BitNumber : INTEGER);
(* XBIOS-Funktionsnummer: 29 *)
PROCEDURE OnGISBit (BitNumber : INTEGER);
(* XBIOS-Funktionsnummer: 30 *)
PROCEDURE SetMFPTimer (Timer : INTEGER;
ControlRegister : INTEGER;
DataRegister : INTEGER;
VectorPointer : ADDRESS);
(* XBIOS-Funktionsnummer: 31 *)
PROCEDURE DoSound (SoundPointer : ADDRESS);
(* XBIOS-Funktionsnummer: 32 *)
PROCEDURE GetSetPrinter (PrinterConfiguration : BITSET;
VAR ReturnConfiguration : BITSET);
(* XBIOS-Funktionsnummer: 33 *)
PROCEDURE GetKBDV (VAR ReturnPointer : KBDVectorPointer);
(* XBIOS-Funktionsnummer: 34 *)
PROCEDURE GetSetAutoRepeat (Initial : INTEGER;
Repeat : INTEGER;
VAR ReturnValue : INTEGER);
(* XBIOS-Funktionsnummer: 35 *)
PROCEDURE PrintBlock (Pointer : PBPointerType);
(* XBIOS-Funktionsnummer: 36 *)
PROCEDURE VerticalSynchronisation;
(* XBIOS-Funktionsnummer: 37 *)
PROCEDURE SuperExecute (CodePointer : ADDRESS);
(* XBIOS-Funktionsnummer: 38 *)
PROCEDURE PuntAES;
(* XBIOS-Funktionsnummer: 39 *)
PROCEDURE GetSetBlitterMode (Flag : INTEGER;
VAR ReturnState : BITSET);
(* XBIOS-Funktionsnummer: 64 *)
(* ---------------------- GEMDOS Definitionen ---------------------------*)
CONST
(* FileAttributes : BITSET *)
WriteProtected = 0;
HiddenFile = 1;
SystemFile = 2;
DiskName = 3;
Folder = 4;
Archiv = 5;
(* FileOpen-Mode : INTEGER *)
ReadMode = 0;
WriteMode = 1;
ReadWriteMode = 2;
(* SeekMode : INTEGER *)
FileStart = 0;
ActualPosition = 1;
FileEnd = 2;
(* Mode : INTEGER *)
ReadAttribute = 0;
WriteAttribute = 1;
(* StandardFileHandle : INTEGER *)
StandardIn = 0; (* Tastatur *)
Standardout = 1; (* Bildschirm *)
SeriellPort = 2; (* Serielle Schnittstelle *)
ParallelPort = 3; (* Parallele Schnittstelle *)
(* LoadMode : INTEGER *)
LoadAndStart = 0;
LoadOnly = 3;
StartProgram = 4;
NewBasePage = 5;
TYPE
DTAType = RECORD
Reserved : ARRAY [0..19] OF CHAR; (* 21 Bytes fuer GEMDOS reserviert *)
FileAttribute : BITSET; (* Datei-Attribut *)
FileTime : INTEGER; (* Uhrzeit *)
FileDate : INTEGER; (* Datum *)
FileLength : LONGINT; (* Dateilaenge *)
FileName : ARRAY [0..14] OF CHAR; (* Dateiname *)
END;
DTAPointerType = POINTER TO DTAType;
DiskInfoType = RECORD
FreeCluster : LONGINT; (* Anzahl der freien Cluster *)
TotalCluster : LONGINT; (* Gesamtzahl der Cluster *)
BytesPerSector : LONGINT; (* Bytes pro Sektor *)
SectorsPerCluster : LONGINT; (* Sektoren pro Cluster *)
END;
DiskInfoPointerType = POINTER TO DiskInfoType;
DOSTime = RECORD
Time : INTEGER;
Date : INTEGER;
END;
DOSTimePointer = POINTER TO DOSTime;
(* ------------------------- GEMDOS Prozeduren ------------------------- *)
PROCEDURE Terminate0;
(* GEMDOS-Funktionsnummer: 0 *)
PROCEDURE ConsoleIn (VAR CharValue : LONGINT);
(* GEMDOS-Funktionsnummer: 1 *)
PROCEDURE ConsoleOut (CharValue : INTEGER);
(* GEMDOS-Funktionsnummer: 2 *)
PROCEDURE AuxiliaryIn (VAR CharValue : INTEGER);
(* GEMDOS-Funktionsnummer: 3 *)
(* ATARI empfiehlt: besser BIOS-Funktion benutzen *)
PROCEDURE AuxiliaryOut (CharValue : INTEGER);
(* GEMDOS-Funktionsnummer: 4 *)
PROCEDURE PrinterOut (CharValue : INTEGER;
VAR ReturnValue : INTEGER);
(* GEMDOS-Funktionsnummer: 5 *)
PROCEDURE RawInOut (Function : INTEGER;
VAR ReturnValue : LONGINT);
(* GEMDOS-Funktionsnummer: 6 *)
PROCEDURE RawIn (VAR CharValue : LONGINT);
(* GEMDOS-Funktionsnummer: 7 *)
PROCEDURE NoEchoIn (VAR CharValue : INTEGER);
(* GEMDOS-Funktionsnummer: 8 *)
PROCEDURE ConsoleWriteString (OutputString : ARRAY OF CHAR;
VAR WrittenChars : LONGINT);
(* GEMDOS-Funktionsnummer: 9 *)
PROCEDURE ConsoleReadString (VAR InputString : ARRAY OF CHAR);
(* GEMDOS-Funktionsnummer: 10 *)
PROCEDURE ConsoleInState (VAR IsThere : INTEGER);
(* GEMDOS-Funktionsnummer: 11 *)
PROCEDURE SetDrive (DriveNumber : INTEGER;
VAR DriveVektor : BITSET);
(* GEMDOS-Funktionsnummer: 14 *)
PROCEDURE ConsoleOutState (VAR ReturnValue : LONGINT);
(* GEMDOS-Funktionsnummer: 16 *)
PROCEDURE PrinterOutState (VAR ReturnValue : INTEGER);
(* GEMDOS-Funktionsnummer: 17 *)
PROCEDURE AuxiliaryInState (VAR IsThere : INTEGER);
(* GEMDOS-Funktionsnummer: 18 *)
PROCEDURE AuxiliaryOutState (VAR ReturnValue : INTEGER);
(* GEMDOS-Funktionsnummer: 19 *)
PROCEDURE GetDrive (VAR ReturnDrives : INTEGER);
(* GEMDOS-Funktionsnummer: 25 *)
PROCEDURE SetDTA (VAR DTAPointer : DTAPointerType);
(* GEMDOS-Funktionsnummer: 26 *)
PROCEDURE SupervisorMode (VAR Stack : LONGINT);
(* GEMDOS-Funktionsnummer: 32 *)
PROCEDURE GetDate (VAR Today : INTEGER);
(* GEMDOS-Funktionsnummer: 42 *)
PROCEDURE SetDate (Today : INTEGER;
VAR TodayOkay : INTEGER);
(* GEMDOS-Funktionsnummer: 43 *)
PROCEDURE GetTime (VAR Now : INTEGER);
(* GEMDOS-Funktionsnummer: 44 *)
PROCEDURE SetTime (Now : INTEGER;
VAR NowOkay : INTEGER);
(* GEMDOS-Funktionsnummer: 45 *)
PROCEDURE GetDTA (VAR DTAPointer : DTAPointerType);
(* GEMDOS-Funktionsnummer: 47 *)
PROCEDURE GetVersion (VAR VersionNumber : INTEGER);
(* GEMDOS-Funktionsnummer: 48 *)
PROCEDURE TerminateResident (MemoryAmount : LONGINT;
ReturnState : INTEGER);
(* GEMDOS-Funktionsnummer: 49 *)
PROCEDURE GetDriveFreeSpace (VAR DiskInfo : DiskInfoType;
Drive : INTEGER;
VAR Return : INTEGER);
(* GEMDOS-Funktionsnummer: 54 *)
PROCEDURE DirectoryCreate (PathName : ARRAY OF CHAR;
VAR ReturnValue : INTEGER);
(* GEMDOS-Funktionsnummer: 57 *)
PROCEDURE DirectoryDelete (PathName : ARRAY OF CHAR;
VAR ReturnValue : INTEGER);
(* GEMDOS-Funktionsnummer: 58 *)
PROCEDURE SetPath (PathName : ARRAY OF CHAR;
VAR ReturnValue : INTEGER);
(* GEMDOS-Funktionsnummer: 59 *)
PROCEDURE FileCreate (PathName : ARRAY OF CHAR;
Attribute : BITSET;
VAR FileHandle : INTEGER);
(* GEMDOS-Funktionsnummer: 60 *)
PROCEDURE FileOpen (PathName : ARRAY OF CHAR;
Mode : INTEGER;
VAR FileHandle : INTEGER);
(* GEMDOS-Funktionsnummer: 61 *)
PROCEDURE FileClose (FileHandle : INTEGER;
VAR ReturnValue : INTEGER);
(* GEMDOS-Funktionsnummer: 62 *)
PROCEDURE FileRead (FileHandle : INTEGER;
Size : LONGINT;
BufferAddress : ADDRESS;
VAR ReturnValue : LONGINT);
(* GEMDOS-Funktionsnummer: 63 *)
PROCEDURE FileWrite (FileHandle : INTEGER;
Size : LONGINT;
BufferAddress : ADDRESS;
VAR ReturnValue : LONGINT);
(* GEMDOS-Funktionsnummer: 64 *)
PROCEDURE FileDelete (PathName : ARRAY OF CHAR;
VAR ReturnValue : INTEGER);
(* GEMDOS-Funktionsnummer: 65 *)
PROCEDURE FileSeek (FileHandle : INTEGER;
SeekMode : INTEGER;
Position : LONGINT;
VAR ReturnValue : INTEGER);
(* GEMDOS-Funktionsnummer: 66 *)
PROCEDURE FileAttributes (PathName : ARRAY OF CHAR;
Mode : INTEGER;
VAR Attribute : BITSET;
VAR ReturnValue : INTEGER);
(* GEMDOS-Funktionsnummer: 67 *)
PROCEDURE FileDuplicate (StandardFileHandle : INTEGER;
VAR ReturnHandle : INTEGER);
(* GEMDOS-Funktionsnummer: 69 *)
PROCEDURE FileForce (StandardFileHandle : INTEGER;
NonStandardHandle : INTEGER;
VAR ReturnValue : INTEGER);
(* GEMDOS-Funktionsnummer: 70 *)
PROCEDURE GetPath (VAR Path : ARRAY OF CHAR;
Drive : INTEGER;
VAR ReturnValue : INTEGER);
(* GEMDOS-Funktionsnummer: 71 *)
PROCEDURE MemoryAllocate (Amount : LONGINT;
VAR ReturnValue : ADDRESS);
(* GEMDOS-Funktionsnummer: 72 *)
PROCEDURE MemoryFree (BlockAddress : ADDRESS;
VAR ReturnValue : INTEGER);
(* GEMDOS-Funktionsnummer: 73 *)
PROCEDURE MemoryShrink (BlockAddress : ADDRESS;
Size : LONGINT;
VAR ReturnValue : INTEGER);
(* GEMDOS-Funktionsnummer: 74 *)
PROCEDURE Execute (LoadMode : INTEGER;
Path : ARRAY OF CHAR;
CmdLine : ARRAY OF CHAR;
Environment : ARRAY OF CHAR;
VAR ReturnValue : LONGINT);
(* GEMDOS-Funktionsnummer: 75 *)
PROCEDURE Terminate (Return : INTEGER);
(* GEMDOS-Funktionsnummer: 76 *)
PROCEDURE SearchFirst (Filename : ARRAY OF CHAR;
Attributes : BITSET;
VAR ReturnValue : INTEGER);
(* GEMDOS-Funktionsnummer: 78 *)
PROCEDURE SearchNext (VAR ReturnValue : INTEGER);
(* GEMDOS-Funktionsnummer: 79 *)
PROCEDURE FileRename (OldName : ARRAY OF CHAR;
NewName : ARRAY OF CHAR);
(* GEMDOS-Funktionsnummer: 86 *)
PROCEDURE FileDateTime (VAR DateTime : DOSTimePointer;
FileHandle : INTEGER;
Mode : INTEGER);
(* GEMDOS-Funktionsnummer: 87 *)
END OS.