home *** CD-ROM | disk | FTP | other *** search
/ Global Amiga Experience / globalamigaexperience.iso / compressed / development / clusterdemo.dms / clusterdemo.adf / Modules.lha / modules / txt / Trackdisk.def < prev    next >
Text File  |  1994-05-25  |  6KB  |  188 lines

  1. |##########|
  2. |#MAGIC   #|CLABLLCG
  3. |#PROJECT #|"IMPORTALL"
  4. |#PATHS   #|"StdProject"
  5. |#FLAGS   #|xx-x-x--xx--x-x-----------------
  6. |#USERSW  #|--------------------------------
  7. |#USERMASK#|--------------------------------
  8. |#SWITCHES#|x-xx-x----------
  9. |##########|
  10. DEFINITION MODULE TrackDisk;
  11. (* $A- *)
  12.  
  13. |S. Herr, 30.09.92
  14.  
  15. FROM T_Exec     IMPORT IOCommand, nonstdVAL, IOStdReq, Unit, IOFlags,
  16.                        IOReturn;
  17. FROM System     IMPORT SHORTSET;
  18. FROM Resources  IMPORT ContextPtr;
  19.  
  20. CONST
  21.   motor           = IOCommand( nonstdVAL + 0 );
  22.   seek            = IOCommand( nonstdVAL + 1 );
  23.   format          = IOCommand( nonstdVAL + 2 );
  24.   remove          = IOCommand( nonstdVAL + 3 );
  25.   changeNum       = IOCommand( nonstdVAL + 4 );
  26.   changeState     = IOCommand( nonstdVAL + 5 );
  27.   protStatus      = IOCommand( nonstdVAL + 6 );
  28.   rawRead         = IOCommand( nonstdVAL + 7 );
  29.   rawWrite        = IOCommand( nonstdVAL + 8 );
  30.   getDriveType    = IOCommand( nonstdVAL + 9 );
  31.   getNumTracks    = IOCommand( nonstdVAL + 10 );
  32.   addChangeInt    = IOCommand( nonstdVAL + 11 );
  33.   remChangeInt    = IOCommand( nonstdVAL + 12 );
  34.   getGeometry     = IOCommand( nonstdVAL + 13 );
  35.   eject           = IOCommand( nonstdVAL + 14 );
  36.   lastComm        = IOCommand( nonstdVAL + 15 );
  37.  
  38.   extCom          = CARDINAL($8000);
  39.   extWrite        = IOCommand( extCom + CARDINAL(write) );
  40.   extRead         = IOCommand( extCom + CARDINAL(read) );
  41.   extMotor        = IOCommand( extCom + CARDINAL(motor) );
  42.   extSeek         = IOCommand( extCom + CARDINAL(seek) );
  43.   extFormat       = IOCommand( extCom + CARDINAL(format) );
  44.   extUpdate       = IOCommand( extCom + CARDINAL(update) );
  45.   extClear        = IOCommand( extCom + CARDINAL(IOCommand.clear) );
  46.   extRawRead      = IOCommand( extCom + CARDINAL(rawRead) );
  47.   extRawWrite     = IOCommand( extCom + CARDINAL(rawWrite) );
  48.  
  49.   numSecs         = 11;
  50.   numUnits        = 4;
  51.  
  52.   sector          = 512;
  53.   secShift        = 9;
  54.  
  55.   labelSize       = 16;
  56.  
  57.   | Flags für die IORequest Struktur
  58.   |
  59.   indexSync       = IO4;
  60.   wordSync        = IO5;
  61.  
  62. TYPE
  63.   | Flags für OpenDevice()
  64.   |
  65.   TDFlags         = (allowNon3_5,dummy=31);
  66.   TDFlagSet       = SET OF TDFlags;
  67.  
  68.   getDriveTypeFlags   = (drive3_5, drive5_25, drive3_5_150RPM);
  69.   getDriveTypeFlagSet = SET OF getDriveTypeFlags;
  70.  
  71. CONST
  72.   | Driver Errors
  73.   |
  74.   notSpecified    = IOReturn(20);
  75.   noSecHdr        = IOReturn(21);
  76.   badSecPreamble  = IOReturn(22);
  77.   badSecID        = IOReturn(23);
  78.   badHdrSum       = IOReturn(24);
  79.   badSecSum       = IOReturn(25);
  80.   tooFewSecs      = IOReturn(26);
  81.   badSecHdr       = IOReturn(27);
  82.   writeProt       = IOReturn(28);
  83.   diskChanged     = IOReturn(29);
  84.   seekError       = IOReturn(30);
  85.   noMem           = IOReturn(31);
  86.   badUnitNum      = IOReturn(32);
  87.   badDriveType    = IOReturn(33);
  88.   driveInUse      = IOReturn(34);
  89.   postReset       = IOReturn(35);
  90.  
  91.  
  92. TYPE
  93.   | Typen für das driveGeometry-Kommando
  94.   |
  95.   DeviceTypes      = (directAccess,sequentialAccess,printer,processor,worm,
  96.                       cdRom,scanner,opticalDisk,mediumChanger,
  97.                       communication,unknown=31);
  98.  
  99.   GeoFlags         = (removable);
  100.   GeoFlagSet       = SET OF GeoFlags;
  101.  
  102.   DriveGeometry    = RECORD
  103.                        sectorSize   : LONGCARD;
  104.                        totalSectors : LONGCARD;
  105.                        cylinders    : LONGCARD;
  106.                        cylSectors   : LONGCARD;
  107.                        heads        : LONGCARD;
  108.                        trackSectors : LONGCARD;
  109.                        bufMemType   : LONGCARD;
  110.                        deviceType   : DeviceTypes;
  111.                        flags        : GeoFlagSet;
  112.                        reserved     : CARDINAL;
  113.                      END;
  114.   DriveGeometryPtr = POINTER TO DriveGeometry;
  115.  
  116. TYPE
  117.   IOTrackDiskPtr = POINTER TO IOTrackDisk;
  118.   IOTrackDisk    = RECORD OF IOStdReq;
  119.                      count    : LONGCARD;
  120.                      secLabel : LONGCARD
  121.                    END;
  122.  
  123.  
  124.   DriveNum       = ( DF0, DF1, DF2, DF3);
  125.  
  126.  
  127.  
  128.   PubFlags         = (noClick);
  129.   PubFlagSet       = SET OF PubFlags;
  130.  
  131.   TDUPublicUnitPtr = POINTER TO TDUPublicUnit;
  132.   TDUPublicUnit    = RECORD OF Unit;
  133.                        comp01Track    : CARDINAL;
  134.                        comp10Track    : CARDINAL;
  135.                        comp11Track    : CARDINAL;
  136.                        stepDelay      : LONGCARD;
  137.                        settleDelay    : LONGCARD;
  138.                        retryCnt       : SHORTCARD;
  139.                        pubFlags       : PubFlagSet;
  140.                        currTrk        : CARDINAL;
  141.                        calibrateDelay : LONGCARD;
  142.                        counter        : LONGCARD;
  143.                      END;
  144.  
  145.  
  146. PROCEDURE OpenTrackDisk( drive   : DriveNum:=DF0;
  147.                          flags   :=TDFlagSet:{};
  148.                          context : ContextPtr:=NIL ): IOTrackDiskPtr;
  149.  
  150. PROCEDURE CloseTrackDisk( VAR request : IOTrackDiskPtr );
  151.  
  152.  
  153. GROUP
  154.  
  155.   CommandGrp = motor,seek,format,remove,changeNum,changeState,protStatus,
  156.                rawRead,rawWrite,getDriveType,getNumTracks,addChangeInt,
  157.                remChangeInt,getGeometry,eject,lastComm,extCom,extWrite,
  158.                extRead,extMotor,extSeek,extFormat,extUpdate,extClear,
  159.                extRawRead,extRawWrite;
  160.  
  161.   ConstGrp   = numSecs,numUnits,sector,secShift,labelSize,indexSync,
  162.                wordSync;
  163.  
  164.   MiscGrp    = TDFlags,TDFlagSet,getDriveTypeFlags,getDriveTypeFlagSet;
  165.  
  166.   ErrorGrp   = notSpecified,noSecHdr,badSecPreamble,badSecID,badHdrSum,
  167.                badSecSum,tooFewSecs,badSecHdr,writeProt,diskChanged,
  168.                seekError,noMem,badUnitNum,badDriveType,driveInUse,
  169.                postReset;
  170.  
  171.  
  172.   GeometryGrp= DeviceTypes,GeoFlags,GeoFlagSet,DriveGeometry,
  173.                DriveGeometryPtr;
  174.  
  175.   DeviceGrp  = IOTrackDiskPtr,IOTrackDisk,OpenTrackDisk,CloseTrackDisk,
  176.                DriveNum;
  177.  
  178.   UnitGrp    = PubFlags,PubFlagSet,TDUPublicUnitPtr,TDUPublicUnit;
  179.  
  180.  
  181.   All        = CommandGrp,ConstGrp,MiscGrp,ErrorGrp,GeometryGrp,DeviceGrp,
  182.                UnitGrp;
  183.  
  184.  
  185.  
  186.  
  187. END TrackDisk.
  188.