home *** CD-ROM | disk | FTP | other *** search
Modula Definition | 1988-11-10 | 8.7 KB | 372 lines |
- DEFINITION MODULE Dos {"dos.library",33};
-
- FROM SYSTEM IMPORT
- ADDRESS,BPTR,BYTE,CAST,LONGSET,WORD;
- FROM Exec IMPORT
- Library,Message,MessagePtr,MsgPort,MsgPortPtr,Task;
-
- CONST
- dosName="dos.library";
- (*
- * Mögliche Werte des Parameters accessMode
- * der Prozedur Open
- *)
- readWrite=1004;
- readOnly=1005;
- oldFile=readOnly;
- newFile=1006;
- (* Mögliche Werte des Parameters mode der Prozedur Seek *)
- beginning=-1;
- current=0;
- end=1;
- (*
- * Mögliche Werte des Parameters accessMode
- * der Prozedur Lock
- *)
- sharedLock=-2;
- exclusiveLock=-1;
- accessRead=sharedLock; (* synonym *)
- accessWrite=exclusiveLock; (* synonym *)
-
- ticksPerSecond=50;
-
- TYPE
- BSTR=BPOINTER TO ARRAY [0..255] OF CHAR;
- FileHandlePtr=BPOINTER TO FileHandle;
- FileLockPtr=BPOINTER TO FileLock;
- Date=RECORD
- days:LONGINT;
- minute:LONGINT;
- tick:LONGINT;
- END;
- DatePtr=POINTER TO Date;
- ProtectionFlags=(
- delete,execute,writeProt,readProt,archive,script,pure,hidden,
- pf8,pf9,pf10,pf11,pf12,pf13,pf14,pf15,pf16,pf17,pf18,pf19,pf20,
- pf21,pf22,pf23,pf24,pf25,pf26,pf27,pf28,pf29,pf30,pf31
- );
- ProtectionFlagSet=SET OF ProtectionFlags;
- FileInfoBlockPtr=POINTER TO FileInfoBlock;
- FileInfoBlock=RECORD
- diskKey:LONGINT;
- dirEntryType:LONGINT;
- fileName:ARRAY [0..107] OF CHAR;
- protection:ProtectionFlagSet;
- entryType:LONGINT;
- size:LONGINT;
- numBlocks:LONGINT;
- date:Date;
- comment:ARRAY [0..79] OF CHAR;
- padding:ARRAY [0..35] OF CHAR;
- END;
- InfoDataPtr=POINTER TO InfoData;
- InfoData=RECORD
- numSoftErrors:LONGINT;
- unitNumber:LONGINT;
- diskState:LONGINT;
- numBlocks:LONGINT;
- numBlocksUsed:LONGINT;
- bytesPerBlock:LONGINT;
- diskType:LONGINT;
- volumeNode:BPTR;
- inUse:LONGINT;
- END;
-
- CONST
- (* Mögliche Werte von InfoData.diskState *)
- writeProtect=80;
- validating=81;
- validated=82;
- (* Mögliche Werte von InfoData.diskType *)
- noDiskPresent=-1;
- unreadableDisk=CAST(LONGINT,"BAD ")-ORD(" ");
- dosDisk=CAST(LONGINT,"DOS ")-ORD(" ");
- notReallyDos=CAST(LONGINT,"NDOS");
- kickstartDisk=CAST(LONGINT,"KICK");
- (* Mögliche Rückgabewerte von IoErr() *)
- noFreeStore=103;
- taskTableFull=105;
- lineTooLong=120;
- fileNotObject=121;
- invalidResidentLibrary=122;
- noDefaultDir=201;
- objectInUse=202;
- objectExists=203;
- dirNotFound=204;
- objectNotFound=205;
- badStreamName=206;
- objectTooLarge=207;
- actionNotKnown=209;
- invalidComponentName=210;
- invalidLock=211;
- objectWrongType=212;
- diskNotValidated=213;
- diskWriteProtected=214;
- renameAcrossDevices=215;
- directoryNotEmpty=216;
- tooManyLevels=217;
- deviceNotMounted=218;
- seekError=219;
- commentTooBig=220;
- diskFull=221;
- deleteProtected=222;
- writeProtected=223;
- readProtected=224;
- notADosDisk=225;
- noDisk=226;
- noMoreEntries=232;
- (*
- * Vordefinierte Werte für den Parameter returnCode
- * der Prozedur Exit
- *)
- ok=0;
- warn=5;
- error=10;
- fail=20;
- (* break flags Exec.SetSignal, etc *)
- ctrlC=12;
- ctrlD=13;
- ctrlE=14;
- ctrlF=15;
-
- TYPE
- CommandLineInterfacePtr=BPOINTER TO CommandLineInterface;
- ProcessId=MsgPortPtr;
- ProcessPtr=POINTER TO Process;
- Process=RECORD
- task:Task;
- msgPort:MsgPort;
- pad:WORD;
- segList:BPTR;
- stackSize:LONGINT;
- globVec:ADDRESS;
- taskNum:LONGINT;
- stackBase:BPTR;
- result2:LONGINT;
- currentDir:FileLockPtr;
- cis:FileHandlePtr;
- cos:FileHandlePtr;
- consoleTask:ProcessId;
- fileSystemTask:ProcessId;
- cli:CommandLineInterfacePtr;
- returnAddr:ADDRESS;
- pktWait:ADDRESS;
- windowPtr:ADDRESS;
- END;
- FileHandle=RECORD
- link:MessagePtr;
- port:MsgPortPtr;
- type:MsgPortPtr;
- buf:LONGINT;
- pos:LONGINT;
- end:LONGINT;
- func1:LONGINT;
- func2:LONGINT;
- func3:LONGINT;
- arg1:LONGINT;
- arg2:LONGINT;
- END;
- DosPacket=RECORD
- link:MessagePtr;
- port:MsgPortPtr;
- type:LONGINT; (* Action *)
- res1:LONGINT; (* Status *)
- res2:LONGINT; (* Status2 *)
- arg1:LONGINT; (* BufAddr *)
- arg2:LONGINT;
- arg3:LONGINT;
- arg4:LONGINT;
- arg5:LONGINT;
- arg6:LONGINT;
- arg7:LONGINT;
- END;
- DosPacketPtr=POINTER TO DosPacket;
- StandardPacket=RECORD
- msg:Message;
- pkt:DosPacket;
- END;
-
- CONST
- (* Mögliche Werte für DosPacket.type *)
- nil=0;
- getBlock=2;
- setMap=4;
- die=5;
- event=6;
- currentVolume=7;
- locateObject=8;
- renameDisk=9;
- write=ORD('W');
- read=ORD('R');
- freeLock=15;
- deleteObject=16;
- renameObject=17;
- moreCache=18;
- copyDir=19;
- waitChar=20;
- setProtect=21;
- createDir=22;
- examineObject=23;
- examineNext=24;
- diskInfo=25;
- info=26;
- flush=27;
- setComment=28;
- parent=29;
- timer=30;
- inhibit=31;
- diskType=32;
- diskChange=33;
- setDate=34;
- screenMode=994;
-
- TYPE
- RootNodePtr=POINTER TO RootNode;
- DosLibrary=RECORD
- lib:Library;
- root:RootNodePtr;
- gv:ADDRESS;
- a2:LONGINT;
- a5:LONGINT;
- a6:LONGINT;
- END;
- DosLibraryPtr=POINTER TO DosLibrary;
- (* dosLib:=ADR(Dos) *)
- TaskArray=RECORD
- maxCli:LONGINT;
- cli:ARRAY [1..99] OF ProcessId;
- END;
- DeviceListPtr=BPOINTER TO DeviceList;
- DosInfoPtr=BPOINTER TO DosInfo;
- TaskArrayPtr=BPOINTER TO TaskArray;
- RootNode=RECORD
- taskArray:TaskArrayPtr;
- consoleSegment:BPTR;
- time:Date;
- restartSeg:BPTR;
- info:DosInfoPtr;
- fileHandlerSegment:BPTR;
- END;
- DosInfo=RECORD
- mcName:BSTR;
- devInfo:DeviceListPtr;
- devices:BPTR;
- handlers:BPTR;
- netHand:ADDRESS;
- END;
- CommandLineInterface=RECORD
- result2:LONGINT;
- setName:BSTR;
- commandDir:BPTR; (* neuerdings command path ! *)
- returnCode:LONGINT;
- commandName:BSTR;
- failLevel:LONGINT;
- prompt:BSTR;
- standardInput:FileHandlePtr;
- currentInput:FileHandlePtr;
- commandFile:BSTR;
- interactive:LONGINT; (* LONGBOOLEAN *)
- background:LONGINT; (* LONGBOOLEAN *)
- currentOutput:FileHandlePtr;
- defaultStack:LONGINT;
- standardOutput:FileHandlePtr;
- module:BPTR;
- END;
- DeviceListType=(device,directory,volume);
- DeviceList=RECORD
- next:DeviceListPtr;
- pad1,pad2,pad3:BYTE;
- type:DeviceListType;
- task:ProcessId;
- lock:FileLockPtr;
- CASE :DeviceListType OF
- | device,directory:
- handler:BSTR;
- stackSize:LONGINT;
- priority:LONGINT;
- startup:LONGINT;
- segList:BPTR;
- globVec:BPTR;
- | volume:
- volumeDate:Date;
- lockList:FileLockPtr;
- diskType:LONGINT;
- unused:LONGINT
- END;
- name:BSTR;
- END;
- FileLock=RECORD
- link:FileLockPtr;
- key:LONGINT;
- access:LONGINT;
- task:ProcessId;
- volume:DeviceListPtr;
- END;
-
- PROCEDURE Close(file{1}:FileHandlePtr); CODE -36;
- PROCEDURE CreateDir(name{1}:ADDRESS):FileLockPtr; CODE -120;
- PROCEDURE CreateProc(
- name{1}:ADDRESS;
- pri{2}:LONGINT;
- segment{3}:BPTR;
- stackSize{4}:LONGINT):ProcessId; CODE -138;
- PROCEDURE CurrentDir(
- lock{1}:FileLockPtr):FileLockPtr; CODE -126;
- PROCEDURE DateStamp(v{1}:DatePtr); CODE -192;
- PROCEDURE Delay(ticks{1}:LONGINT); CODE -198;
- PROCEDURE DeleteFile(name{1}:ADDRESS):BOOLEAN; CODE -72;
- PROCEDURE DeviceProc(name{1}:ADDRESS):ProcessId; CODE -174;
- PROCEDURE DupLock(lock{1}:FileLockPtr):FileLockPtr; CODE -96;
- PROCEDURE Examine(
- lock{1}:FileLockPtr;
- infoBlock{2}:FileInfoBlockPtr):BOOLEAN; CODE -102;
- PROCEDURE Execute(
- commandString{1}:ADDRESS;
- input{2}:FileHandlePtr;
- output{3}:FileHandlePtr):LONGINT; CODE -222;
- PROCEDURE Exit(returnCode{1}:LONGINT); CODE -144;
- PROCEDURE ExNext(
- lock{1}:FileLockPtr;
- infoBlock{2}:FileInfoBlockPtr):BOOLEAN; CODE -108;
- PROCEDURE IoErr():LONGINT; CODE -132;
- (* PRIVATE *)
- PROCEDURE GetPacket(wait{1}:LONGINT):DosPacketPtr; CODE -162;
- PROCEDURE Info(
- lock{1}:FileLockPtr;
- parameterBlock{2}:InfoDataPtr):BOOLEAN; CODE -114;
- PROCEDURE Input():FileHandlePtr; CODE -54;
- PROCEDURE IsInteractive(
- file{1}:FileHandlePtr):BOOLEAN; CODE -216;
- PROCEDURE LoadSeg(name{1}:ADDRESS):BPTR; CODE -150;
- PROCEDURE Lock(name{1}:ADDRESS;
- accessMode{2}:LONGINT):FileLockPtr; CODE -84;
- PROCEDURE Seek(file{1}:FileHandlePtr;
- position{2}:LONGINT;
- mode{3}:LONGINT):LONGINT; CODE -66;
- PROCEDURE SetComment(
- name{1},comment{2}:ADDRESS):BOOLEAN; CODE -180;
- PROCEDURE SetProtection(name{1}:ADDRESS;
- mask{2}:ProtectionFlagSet):BOOLEAN; CODE -186;
- PROCEDURE Open(
- name{1}:ADDRESS;
- accessMode{2}:LONGINT):FileHandlePtr; CODE -30;
- PROCEDURE Output():FileHandlePtr; CODE -60;
- PROCEDURE ParentDir(
- lock{1}:FileLockPtr):FileLockPtr; CODE -210;
- (*PRIVATE*)
- PROCEDURE QueuePacket(
- packet{1}:DosPacketPtr):LONGINT; CODE -168;
- PROCEDURE Read(file{1}:FileHandlePtr;
- buffer{2}:ADDRESS;
- length{3}:LONGINT):LONGINT; CODE -42;
- PROCEDURE Rename(
- oldName{1},newName{2}:ADDRESS):BOOLEAN; CODE -78;
- PROCEDURE UnLoadSeg(segment{1}:BPTR); CODE -156;
- PROCEDURE UnLock(lock{1}:FileLockPtr); CODE -90;
- PROCEDURE WaitForChar(file{1}:FileHandlePtr;
- timeout{2}:LONGINT):BOOLEAN; CODE -204;
- PROCEDURE Write(file{1}:FileHandlePtr;
- buffer{2}:ADDRESS;
- length{3}:LONGINT):LONGINT; CODE -48;
- END Dos.
-