home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_disks / 300-399 / ff312.lzh / TrackSalve / Source / ts.i < prev    next >
Text File  |  1990-02-12  |  9KB  |  152 lines

  1.                 INCLUDE "exec/types.i"
  2.                 INCLUDE "exec/memory.i"
  3.                 INCLUDE "exec/semaphores.i"
  4.                 INCLUDE "devices/trackdisk.i"
  5.                 INCLUDE "hardware/cia.i"
  6.                 INCLUDE "hardware/blit.i"
  7.  
  8. TD_VERSION1_2   equ     33
  9. TD_VERSION1_3   equ     34
  10. PUBCLR          equ     (MEMF_PUBLIC+MEMF_CLEAR)
  11.  
  12. *--     Secondary result codes
  13.  
  14. E_CMDLINE       equ     -41                     Some syntax error in the commandline is met
  15. E_ALLOCMEM      equ     -42                     No success with AllocMem()
  16. E_INTUITION     equ     -43                     No success with OpenLibrary
  17. E_RTAG          equ     -44                     No success with FindResident()
  18. E_TD_VERSION    equ     -45                     Not supported version of Trackdisk
  19. E_CATCHTD       equ     -46                     TD's pc is not at the expected position
  20.  
  21. *--     The findable TSHook structure.  We put it in the semaphore list.  Donot change!
  22.  
  23.               STRUCTURE TSH,SS_SIZE             Struct SignalSemaphore
  24.                 APTR    TSH_TSControl           Pointer to data and patch
  25.                 ULONG   TSH_Version             Value to check own compatibility
  26.                 LABEL   TSH_SIZE
  27.  
  28. *--     The UnitData structure contains data of interest for a particular Trackdisk unit task.
  29.  
  30.               STRUCTURE UD,0
  31.                 STRUCT  UD_TDReq,IOTD_SIZE      Used for OpenDevice() of all units
  32.                 APTR    UD_TSControl            Pointer to shared data area
  33.                 APTR    UD_ReturnTD             Value of PC when caught in ROM
  34.                 APTR    UD_Userdata             Original value of tc_UserData
  35.                 UBYTE   UD_Cmd0                 Field used for preparation of commands
  36.                 UBYTE   UD_Cmd1                 Command pattern to the trackdisk task
  37.                 UWORD   UD_SavedL               Bitflags of saved sector labels (good are cleared)
  38.                 UWORD   UD_SavedD               Bitflags of saved data blocks (good are cleared)
  39.                 LABEL   UD_SIZE
  40.  
  41. *--     The global control structure.  It contains data concerning shared items between all TD-tasks.
  42.  
  43.               STRUCTURE TSC,0
  44.                 APTR    TSC_TSHook              Semaphore to set for drastic TSC accesses
  45.                 STRUCT  TSC_UnitData,NUMUNITS*4 Pointers to UnitData structures
  46.                 STRUCT  TSC_UDAlloc,NUMUNITS*UD_SIZE  The UnitData structures itself
  47.                 APTR    TSC_TDTag               Pointer to Trackdisk romtag in ROM
  48.                 ULONG   TSC_TDCodeSize          Size of Trackdisk code
  49.                 APTR    TSC_TSTag               Pointer to Trackdisk romtag in RAM
  50.                 APTR    TSC_TSCode              Pointer to extension code
  51.                 ULONG   TSC_TSCodeSize          Size of extension code
  52.                 APTR    TSC_Buffer              Pointer to shared buffer
  53.                 UBYTE   TSC_InUse               Bit pattern of units which use the control structure
  54.                 UBYTE   TSC_Salve               Bit pattern of units which use the buffer for salvage
  55.                 UBYTE   TSC_Verify              Bit pattern of units which use the buffer for verify
  56.                 UBYTE   TSC_AvailUnits          Bit pattern of existing Trackdisk units
  57.                 STRUCT  TSC_OwnBuffer,SS_SIZE   Semaphore for usage of the buffer
  58.                 APTR    TSC_IntuBase            IntuitionBase for building requesters
  59.                 ULONG   TSC_Size                Size of control structure + extension code + TD code, one allocation
  60.                 LABEL   TSC_SIZE
  61.  
  62. *--     Bits of the UD_Cmd1, UD_Cmd0 and TDU_pad
  63.  
  64.                 BITDEF  ,READONLY,0
  65.                 BITDEF  ,NOCLICK,1
  66.                 BITDEF  ,SALVE,2
  67.                 BITDEF  ,VERIFY,3
  68.                 BITDEF  ,RAM,6
  69.                 BITDEF  ,TERM,7
  70.  
  71. FUNCTIONS       EQU     F_RAM+F_VERIFY+F_SALVE+F_NOCLICK+F_READONLY
  72.  
  73.  
  74. *--     Some NON-Public members of the Trackdisk unit and device structure
  75.  
  76. TDU_Flags       equ     $40                     Byte. Some statistics about the inserted disk
  77. TDU_CiabPb      equ     $41                     Byte. Memory to prepare commands to hardware
  78. TDU_Retries     equ     $42                     Byte. Number of performed retries
  79. TDU_UnitNr      equ     $43                     Byte. Identification number
  80. TDU_IOReq       equ     $44                     Long. IORequest currently processed
  81. TDU_IOSector    equ     $49                     Byte. Sector currently I/O'ed
  82. TDU_XTrack      equ     $4a                     Word. Desired track
  83. TDU_PTrack      equ     $4c                     Word. Present track
  84. TDU_DiskBuf     equ     $4e                     Long. Buffer used for disk i/o
  85. TDU_UnitBuf     equ     $52                     Long. Pointer to buffer allocated by the TD unit
  86. TDU_TCB         equ     $12e                    Begin of task control block
  87.  
  88. TDD_SysBase     equ     $34                     Long. Pointer to ExecBase
  89. TDD_GfxBase     equ     $38                     Long. Pointer to GfxBase
  90.  
  91. *--
  92.  
  93. _ciaa           equ     $BFE001
  94. _ciab           equ     $BFD000
  95. WaitRtnPC       equ     -20                     Offset of a task's PC to TC_SPUPPER during a Wait() in version 33 and 34
  96.                         ;09876543210
  97. BADTRACKBITS    equ     %11111111111            One bit for every sector/label
  98. DISKFORMAT      equ     -1                      First field in the sector address
  99. SYNC            equ     $4489                   Uniq pattern to recognise the beginning of data
  100. SYNCSYNC        equ     $44894489               idem
  101. GAPSIZE         equ     1660                    Size of first written non-data part of a track
  102. SPT             equ     11                      Sectors per track
  103.  
  104. *--     Structures used by Trackdisk or its patch
  105.  
  106.               STRUCTURE HE,0                    Sector Header structure
  107.                 BYTE    HE_Format               Contens: DISKFORMAT
  108.                 BYTE    HE_TrkNo                Tracknumber the formatter thought the head was on during format
  109.                 BYTE    HE_SecNo                Sectornumber from 0 to 10
  110.                 BYTE    HE_ToGap                Number of sectors until gap
  111.                 LABEL   HE_SIZE                 Warning: Maybe subtracted from the stackpointer
  112.  
  113.               STRUCTURE SE,0                    MFM encoded sector
  114.                 ULONG   SE_Start                Contens: $AAAAAAAA
  115.                 ULONG   SE_Sync                 Contens: SYNCSYNC
  116.                 STRUCT  SE_Header,HE_SIZE*2     HE_ structure
  117.                 STRUCT  SE_Label,TD_LABELSIZE*2
  118.                 STRUCT  SE_SumL,4*2             Checksum over SE_Header and SE_Label
  119.                 STRUCT  SE_SumD,4*2             Checksum over SE_Data
  120.                 STRUCT  SE_Data,TD_SECTOR*2
  121.                 LABEL   SE_SIZE
  122.  
  123. SSIZE           equ     SE_SIZE-SE_Label
  124. LSIZE           equ     SE_SumL-SE_Label
  125. DSIZE           equ     SE_SIZE-SE_SumD
  126.  
  127.               STRUCTURE TB,0                    Picture of trackbuffer as TD uses
  128.                 WORD    TB_TrkNo                Tracknumber of track in buffer, -1 if none or bad
  129.                 BYTE    TB_ChgFlag              Bit 0. 1 means that the buffer must be written to disk before...
  130.                 BYTE    TB_FirstSec             First sector present at position TB_Data
  131.                 STRUCT  TB_Gap,GAPSIZE          MFM-zeros. Written first to clear the area behind the last write.
  132.                 STRUCT  TB_Data,SPT*SE_SIZE     SPT SE_ structures
  133.                 LABEL   TB_SIZE
  134.  
  135.               STRUCTURE SB,0                    Salvebuffer
  136.                 STRUCT  SB_Header,HE_SIZE       Just some storage to ease access to the bytes of the header structure
  137.                 APTR    SB_Begin                Begin of data (EA of SB_Data)
  138.                 APTR    SB_End                  End of sync search area
  139.                 WORD    SB_CorrectTrk           Number of matching tracknumbers during buffer scan
  140.                 WORD    SB_WrongTrk             Number of non-matching tracknumbers during buffer scan
  141.                 STRUCT  SB_Data,2*SPT*SE_SIZE+GAPSIZE   Buffer in which data is read from disk
  142.                 LABEL   SB_SIZE
  143.  
  144.               STRUCTURE TSBN,bn_SIZEOF          Extended blit node, data area available during blitter fuctions
  145.                 APTR    TSBN_SceB               Source B
  146.                 APTR    TSBN_Dest               Destination
  147.                 APTR    TSBN_Unit               Td's unit pointer
  148.                 WORD    TSBN_C1                 Control 1
  149.                 LABEL   TSBN_SIZE
  150.  
  151.  
  152.