home *** CD-ROM | disk | FTP | other *** search
/ Amiga ISO Collection / AmigaUtilCD2.iso / Programming / Misc / MODULAV2GERMAN.DMS / in.adf / Def.zoo / Dos.def < prev    next >
Encoding:
Modula Definition  |  1988-11-10  |  8.7 KB  |  372 lines

  1. DEFINITION MODULE Dos {"dos.library",33};
  2.  
  3. FROM SYSTEM IMPORT
  4.  ADDRESS,BPTR,BYTE,CAST,LONGSET,WORD;
  5. FROM Exec IMPORT
  6.  Library,Message,MessagePtr,MsgPort,MsgPortPtr,Task;
  7.  
  8. CONST
  9.  dosName="dos.library";
  10.   (*
  11.    * Mögliche Werte des Parameters accessMode
  12.    * der Prozedur Open
  13.    *)
  14.  readWrite=1004;
  15.  readOnly=1005;
  16.  oldFile=readOnly;
  17.  newFile=1006;
  18.   (* Mögliche Werte des Parameters mode der Prozedur Seek *)
  19.  beginning=-1;
  20.  current=0;
  21.  end=1;
  22.   (*
  23.    * Mögliche Werte des Parameters accessMode
  24.    * der Prozedur Lock
  25.    *)
  26.  sharedLock=-2;
  27.  exclusiveLock=-1;
  28.  accessRead=sharedLock;     (* synonym *)
  29.  accessWrite=exclusiveLock; (* synonym *)
  30.  
  31.  ticksPerSecond=50;
  32.  
  33. TYPE
  34.  BSTR=BPOINTER TO ARRAY [0..255] OF CHAR;
  35.  FileHandlePtr=BPOINTER TO FileHandle;
  36.  FileLockPtr=BPOINTER TO FileLock;
  37.  Date=RECORD
  38.   days:LONGINT;
  39.   minute:LONGINT;
  40.   tick:LONGINT;
  41.  END;
  42.  DatePtr=POINTER TO Date;
  43.  ProtectionFlags=(
  44.   delete,execute,writeProt,readProt,archive,script,pure,hidden,
  45.   pf8,pf9,pf10,pf11,pf12,pf13,pf14,pf15,pf16,pf17,pf18,pf19,pf20,
  46.   pf21,pf22,pf23,pf24,pf25,pf26,pf27,pf28,pf29,pf30,pf31
  47.  );
  48.  ProtectionFlagSet=SET OF ProtectionFlags;
  49.  FileInfoBlockPtr=POINTER TO FileInfoBlock;
  50.  FileInfoBlock=RECORD
  51.   diskKey:LONGINT;
  52.   dirEntryType:LONGINT;
  53.   fileName:ARRAY [0..107] OF CHAR;
  54.   protection:ProtectionFlagSet;
  55.   entryType:LONGINT;
  56.   size:LONGINT;
  57.   numBlocks:LONGINT;
  58.   date:Date;
  59.   comment:ARRAY [0..79] OF CHAR;
  60.   padding:ARRAY [0..35] OF CHAR;
  61.  END;
  62.  InfoDataPtr=POINTER TO InfoData;
  63.  InfoData=RECORD
  64.   numSoftErrors:LONGINT;
  65.   unitNumber:LONGINT;
  66.   diskState:LONGINT;
  67.   numBlocks:LONGINT;
  68.   numBlocksUsed:LONGINT;
  69.   bytesPerBlock:LONGINT;
  70.   diskType:LONGINT;
  71.   volumeNode:BPTR;
  72.   inUse:LONGINT;
  73.  END;
  74.  
  75. CONST
  76.   (* Mögliche Werte von InfoData.diskState *)
  77.  writeProtect=80;
  78.  validating=81;
  79.  validated=82;
  80.   (* Mögliche Werte von InfoData.diskType *)
  81.  noDiskPresent=-1;
  82.  unreadableDisk=CAST(LONGINT,"BAD ")-ORD(" ");
  83.  dosDisk=CAST(LONGINT,"DOS ")-ORD(" ");
  84.  notReallyDos=CAST(LONGINT,"NDOS");
  85.  kickstartDisk=CAST(LONGINT,"KICK");
  86.   (* Mögliche Rückgabewerte von IoErr() *)
  87.  noFreeStore=103;
  88.  taskTableFull=105;
  89.  lineTooLong=120;
  90.  fileNotObject=121;
  91.  invalidResidentLibrary=122;
  92.  noDefaultDir=201;
  93.  objectInUse=202;
  94.  objectExists=203;
  95.  dirNotFound=204;
  96.  objectNotFound=205;
  97.  badStreamName=206;
  98.  objectTooLarge=207;
  99.  actionNotKnown=209;
  100.  invalidComponentName=210;
  101.  invalidLock=211;
  102.  objectWrongType=212;
  103.  diskNotValidated=213;
  104.  diskWriteProtected=214;
  105.  renameAcrossDevices=215;
  106.  directoryNotEmpty=216;
  107.  tooManyLevels=217;
  108.  deviceNotMounted=218;
  109.  seekError=219;
  110.  commentTooBig=220;
  111.  diskFull=221;
  112.  deleteProtected=222;
  113.  writeProtected=223;
  114.  readProtected=224;
  115.  notADosDisk=225;
  116.  noDisk=226;
  117.  noMoreEntries=232;
  118.   (*
  119.    * Vordefinierte Werte für den Parameter returnCode
  120.    * der Prozedur Exit
  121.    *)
  122.  ok=0;
  123.  warn=5;
  124.  error=10;
  125.  fail=20;
  126.   (* break flags Exec.SetSignal, etc *)
  127.  ctrlC=12;
  128.  ctrlD=13;
  129.  ctrlE=14;
  130.  ctrlF=15;
  131.  
  132. TYPE
  133.  CommandLineInterfacePtr=BPOINTER TO CommandLineInterface;
  134.  ProcessId=MsgPortPtr;
  135.  ProcessPtr=POINTER TO Process;
  136.  Process=RECORD
  137.   task:Task;
  138.   msgPort:MsgPort;
  139.   pad:WORD;
  140.   segList:BPTR;
  141.   stackSize:LONGINT;
  142.   globVec:ADDRESS;
  143.   taskNum:LONGINT;
  144.   stackBase:BPTR;
  145.   result2:LONGINT;
  146.   currentDir:FileLockPtr;
  147.   cis:FileHandlePtr;
  148.   cos:FileHandlePtr;
  149.   consoleTask:ProcessId;
  150.   fileSystemTask:ProcessId;
  151.   cli:CommandLineInterfacePtr;
  152.   returnAddr:ADDRESS;
  153.   pktWait:ADDRESS;
  154.   windowPtr:ADDRESS;
  155.  END;
  156.  FileHandle=RECORD
  157.   link:MessagePtr;
  158.   port:MsgPortPtr;
  159.   type:MsgPortPtr;
  160.   buf:LONGINT;
  161.   pos:LONGINT;
  162.   end:LONGINT;
  163.   func1:LONGINT;
  164.   func2:LONGINT;
  165.   func3:LONGINT;
  166.   arg1:LONGINT;
  167.   arg2:LONGINT;
  168.  END;
  169.  DosPacket=RECORD
  170.   link:MessagePtr;
  171.   port:MsgPortPtr;
  172.   type:LONGINT; (* Action *)
  173.   res1:LONGINT; (* Status *)
  174.   res2:LONGINT; (* Status2 *)
  175.   arg1:LONGINT; (* BufAddr *)
  176.   arg2:LONGINT;
  177.   arg3:LONGINT;
  178.   arg4:LONGINT;
  179.   arg5:LONGINT;
  180.   arg6:LONGINT;
  181.   arg7:LONGINT;
  182.  END;
  183.  DosPacketPtr=POINTER TO DosPacket;
  184.  StandardPacket=RECORD
  185.   msg:Message;
  186.   pkt:DosPacket;
  187.  END;
  188.  
  189. CONST
  190.   (* Mögliche Werte für DosPacket.type *)
  191.  nil=0;
  192.  getBlock=2;
  193.  setMap=4;
  194.  die=5;
  195.  event=6;
  196.  currentVolume=7;
  197.  locateObject=8;
  198.  renameDisk=9;
  199.  write=ORD('W');
  200.  read=ORD('R');
  201.  freeLock=15;
  202.  deleteObject=16;
  203.  renameObject=17;
  204.  moreCache=18;
  205.  copyDir=19;
  206.  waitChar=20;
  207.  setProtect=21;
  208.  createDir=22;
  209.  examineObject=23;
  210.  examineNext=24;
  211.  diskInfo=25;
  212.  info=26;
  213.  flush=27;
  214.  setComment=28;
  215.  parent=29;
  216.  timer=30;
  217.  inhibit=31;
  218.  diskType=32;
  219.  diskChange=33;
  220.  setDate=34;
  221.  screenMode=994;
  222.  
  223. TYPE
  224.  RootNodePtr=POINTER TO RootNode;
  225.  DosLibrary=RECORD
  226.   lib:Library;
  227.   root:RootNodePtr;
  228.   gv:ADDRESS;
  229.   a2:LONGINT;
  230.   a5:LONGINT;
  231.   a6:LONGINT;
  232.  END;
  233.  DosLibraryPtr=POINTER TO DosLibrary;
  234.   (* dosLib:=ADR(Dos) *)
  235.  TaskArray=RECORD
  236.   maxCli:LONGINT;
  237.   cli:ARRAY [1..99] OF ProcessId;
  238.  END;
  239.  DeviceListPtr=BPOINTER TO DeviceList;
  240.  DosInfoPtr=BPOINTER TO DosInfo;
  241.  TaskArrayPtr=BPOINTER TO TaskArray;
  242.  RootNode=RECORD
  243.   taskArray:TaskArrayPtr;
  244.   consoleSegment:BPTR;
  245.   time:Date;
  246.   restartSeg:BPTR;
  247.   info:DosInfoPtr;
  248.   fileHandlerSegment:BPTR;
  249.  END;
  250.  DosInfo=RECORD
  251.   mcName:BSTR;
  252.   devInfo:DeviceListPtr;
  253.   devices:BPTR;
  254.   handlers:BPTR;
  255.   netHand:ADDRESS;
  256.  END;
  257.  CommandLineInterface=RECORD
  258.   result2:LONGINT;
  259.   setName:BSTR;
  260.   commandDir:BPTR; (* neuerdings command path ! *)
  261.   returnCode:LONGINT;
  262.   commandName:BSTR;
  263.   failLevel:LONGINT;
  264.   prompt:BSTR;
  265.   standardInput:FileHandlePtr;
  266.   currentInput:FileHandlePtr;
  267.   commandFile:BSTR;
  268.   interactive:LONGINT; (* LONGBOOLEAN *)
  269.   background:LONGINT; (* LONGBOOLEAN *)
  270.   currentOutput:FileHandlePtr;
  271.   defaultStack:LONGINT;
  272.   standardOutput:FileHandlePtr;
  273.   module:BPTR;
  274.  END;
  275.  DeviceListType=(device,directory,volume);
  276.  DeviceList=RECORD
  277.   next:DeviceListPtr;
  278.   pad1,pad2,pad3:BYTE;
  279.   type:DeviceListType;
  280.   task:ProcessId;
  281.   lock:FileLockPtr;
  282.   CASE :DeviceListType OF
  283.   | device,directory:
  284.    handler:BSTR;
  285.    stackSize:LONGINT;
  286.    priority:LONGINT;
  287.    startup:LONGINT;
  288.    segList:BPTR;
  289.    globVec:BPTR;
  290.   | volume:
  291.    volumeDate:Date;
  292.    lockList:FileLockPtr;
  293.    diskType:LONGINT;
  294.    unused:LONGINT
  295.   END;
  296.   name:BSTR;
  297.  END;
  298.  FileLock=RECORD
  299.   link:FileLockPtr;
  300.   key:LONGINT;
  301.   access:LONGINT;
  302.   task:ProcessId;
  303.   volume:DeviceListPtr;
  304.  END;
  305.  
  306. PROCEDURE Close(file{1}:FileHandlePtr); CODE -36;
  307. PROCEDURE CreateDir(name{1}:ADDRESS):FileLockPtr; CODE -120;
  308. PROCEDURE CreateProc(
  309.            name{1}:ADDRESS;
  310.            pri{2}:LONGINT;
  311.            segment{3}:BPTR;
  312.            stackSize{4}:LONGINT):ProcessId; CODE -138;
  313. PROCEDURE CurrentDir(
  314.            lock{1}:FileLockPtr):FileLockPtr; CODE -126;
  315. PROCEDURE DateStamp(v{1}:DatePtr); CODE -192;
  316. PROCEDURE Delay(ticks{1}:LONGINT); CODE -198;
  317. PROCEDURE DeleteFile(name{1}:ADDRESS):BOOLEAN; CODE -72;
  318. PROCEDURE DeviceProc(name{1}:ADDRESS):ProcessId; CODE -174;
  319. PROCEDURE DupLock(lock{1}:FileLockPtr):FileLockPtr; CODE -96;
  320. PROCEDURE Examine(
  321.            lock{1}:FileLockPtr;
  322.            infoBlock{2}:FileInfoBlockPtr):BOOLEAN; CODE -102;
  323. PROCEDURE Execute(
  324.            commandString{1}:ADDRESS;
  325.            input{2}:FileHandlePtr;
  326.            output{3}:FileHandlePtr):LONGINT; CODE -222;
  327. PROCEDURE Exit(returnCode{1}:LONGINT); CODE -144;
  328. PROCEDURE ExNext(
  329.            lock{1}:FileLockPtr;
  330.            infoBlock{2}:FileInfoBlockPtr):BOOLEAN; CODE -108;
  331. PROCEDURE IoErr():LONGINT; CODE -132;
  332. (* PRIVATE *)
  333. PROCEDURE GetPacket(wait{1}:LONGINT):DosPacketPtr; CODE -162;
  334. PROCEDURE Info(
  335.            lock{1}:FileLockPtr;
  336.            parameterBlock{2}:InfoDataPtr):BOOLEAN; CODE -114;
  337. PROCEDURE Input():FileHandlePtr; CODE -54;
  338. PROCEDURE IsInteractive(
  339.            file{1}:FileHandlePtr):BOOLEAN; CODE -216;
  340. PROCEDURE LoadSeg(name{1}:ADDRESS):BPTR; CODE -150;
  341. PROCEDURE Lock(name{1}:ADDRESS;
  342.                accessMode{2}:LONGINT):FileLockPtr; CODE -84;
  343. PROCEDURE Seek(file{1}:FileHandlePtr;
  344.                position{2}:LONGINT;
  345.                mode{3}:LONGINT):LONGINT; CODE -66;
  346. PROCEDURE SetComment(
  347.            name{1},comment{2}:ADDRESS):BOOLEAN; CODE -180;
  348. PROCEDURE SetProtection(name{1}:ADDRESS;
  349.                         mask{2}:ProtectionFlagSet):BOOLEAN; CODE -186;
  350. PROCEDURE Open(
  351.            name{1}:ADDRESS;
  352.            accessMode{2}:LONGINT):FileHandlePtr; CODE -30;
  353. PROCEDURE Output():FileHandlePtr; CODE -60;
  354. PROCEDURE ParentDir(
  355.            lock{1}:FileLockPtr):FileLockPtr; CODE -210;
  356. (*PRIVATE*)
  357. PROCEDURE QueuePacket(
  358.            packet{1}:DosPacketPtr):LONGINT; CODE -168;
  359. PROCEDURE Read(file{1}:FileHandlePtr;
  360.                buffer{2}:ADDRESS;
  361.                length{3}:LONGINT):LONGINT; CODE -42;
  362. PROCEDURE Rename(
  363.            oldName{1},newName{2}:ADDRESS):BOOLEAN; CODE -78;
  364. PROCEDURE UnLoadSeg(segment{1}:BPTR); CODE -156;
  365. PROCEDURE UnLock(lock{1}:FileLockPtr); CODE -90;
  366. PROCEDURE WaitForChar(file{1}:FileHandlePtr;
  367.                       timeout{2}:LONGINT):BOOLEAN; CODE -204;
  368. PROCEDURE Write(file{1}:FileHandlePtr;
  369.                 buffer{2}:ADDRESS;
  370.                 length{3}:LONGINT):LONGINT; CODE -48;
  371. END Dos.
  372.