home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_progs / prog_oth / m2amiga.lzh / M2AMIGA / DEFS / DOS.DEF < prev    next >
Text File  |  1991-08-16  |  7KB  |  328 lines

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