home *** CD-ROM | disk | FTP | other *** search
/ ftp.whtech.com / ftp.whtech.com.tar / ftp.whtech.com / Geneve / 9640news / CAT14 / FDCMC.ARK < prev    next >
Text File  |  2006-10-19  |  4KB  |  116 lines

  1. ?
  2. ******************************************
  3. ***                                    ***
  4. *** This program does a sector read    ***
  5. *** at the FDC level FD1771. This      ***
  6. *** tutorial is part of the continuing ***
  7. *** series for advanced programmers.   ***
  8. *** Will only work with TI card as     ***
  9. *** written. Must INV commands to work ***
  10. *** with CorComp. TI card is on an INV ***
  11. *** data bus. CorComp is not.          ***
  12. ***                                    ***
  13. ******************************************
  14.        DEF  SECTOR
  15.  
  16. WS     EQU  >83E0        LETS USE SOME HIGH SPEED RAM FOR OUR WS
  17.  
  18. ****************************************
  19. *       FD1771 DEFINITIONS             *
  20. ****************************************
  21. FDS    EQU  >5FF0        READ STATUS
  22. FDRT   EQU  >5FF2        READ TRACK REGISTER
  23. FDRD   EQU  >5FF6        READ DATA REGISTER
  24. FDC    EQU  >5FF8        COMMAND REGISTER
  25. FDWT   EQU  >5FFA        WRITE TRACK REGISTER
  26. FDWS   EQU  >5FFC        WRITE SECTOR REGISTER
  27. FDWD   EQU  >5FFE        WRITE DATA REGISTER
  28.  
  29. ****************************************
  30. *       REGISTER DEFINITIONS           *
  31. ****************************************
  32. VALUE  EQU  0            GENERAL
  33. VALUE1 EQU  1            GENERAL
  34. RAMPNT EQU  2            VDP RAM POINTER
  35. COUNT  EQU  6            GENERAL PURPOSE COUNTER
  36. TEMP   EQU  7            USED TO STORE RT ADDR
  37. TEMP1  EQU  8            USED TO STORE RT ADDR
  38. CRUBAS EQU  12           CONTAINS CRU ADDRESS
  39. VDP    EQU  15           CONTAINS ADDR OF VDPWA
  40.  
  41. ****************************************
  42. *            CRU DEFINITIONS           *
  43. ****************************************
  44. MOTBIT EQU  1            MOTOR ON BIT OFFSET
  45. WAIBIT EQU  2            WAIT LOGIC ENABLE
  46. HLTBIT EQU  3            HEAD LOAD TIMING BIT
  47. DS1BIT EQU  4            FIRST DRIVE SELECT BIT OFFSET
  48.  
  49. ****************************************
  50. *            VDP DEFINITIONS           *
  51. ****************************************
  52. VDPWA  EQU  >8C02        VDP WRITE ADDRESS
  53. VRD    EQU  >8800-VDPWA  READ DATA
  54. VWD    EQU  >8C00-VDPWA  WRITE DATA
  55. VRS    EQU  >8802-VDPWA  STATUS
  56.  
  57. ****************************************
  58. *          MISC DEFINITIONS            *
  59. ****************************************
  60. T75M   EQU  75*40        75 MILLISECONDS
  61. T1000M EQU  40000        ONE SECOND
  62. NSEC   EQU  9            # SECTORS PER TRACK
  63. SECLEN EQU  256          # BYTES PER SECTOR
  64. MEMSTA EQU  0            VDP LOCATION FOR DATA (SCREEN IMAGE TABLE HERE)
  65.  
  66. *-- PROGRAM STARTS HERE --*
  67.  
  68. SECTOR
  69.        LWPI WS
  70.        LI   CRUBAS,>1100 CRU BASE ADDRESS
  71.        LI   VDP,VDPWA    VDP WRITE ADDRESS IN R15
  72.        SBO  0            PAGE IN THE ROM SO WE CAN GET AT THE FDC
  73.  
  74. ****************************************
  75. *        SELECT THE DRIVE              *
  76. ****************************************
  77.        LI   RAMPNT,>0100 DRIVE 1, >02 DRV #2, >04 DRV #3.
  78.        AI   CRUBAS,2*DS1BIT   SET UP THE CRU ADDRESS FOR THE PROPER LINE
  79.        LDCR RAMPNT,3     SELECT THE DRIVE (BYTE ADDR SOURCE OPERAND)
  80.        AI   CRUBAS,-2*DS1BIT BACK OUT THE OFFSET
  81.        LI   VALUE,T75M   WAIT 75 ms
  82. DRIVE  SRC  TEMP,4       OK TO ROLL TEMP
  83.        SRC  TEMP,4       JUST WASTING THE PROPER TIME
  84.        DEC  VALUE
  85.        JNE  DRIVE
  86.  
  87. ****************************************
  88. *  SEEK SECTOR                         *
  89. * This routine calculates the track and*
  90. *  sector numbers from the logical     *
  91. *  sector number and seeks the proper  *
  92. *  track. Drive is restored to track 0.*
  93. ****************************************
  94.  
  95. *-- RESTORE THE DRIVE --*
  96.  
  97.        BL   @LCMD        ISSUE A RESTORE CMD
  98.        DATA >F500
  99.  
  100.        BL   @BUSY1       WAIT FOR RESTORE TO COMPLETE
  101.  
  102.        SETO VALUE        INVERT 0 BYTE
  103.        MOVB VALUE,@FDWT  OUTPUT THE CURRENT TRACK NUMBER (TRK 0)
  104.  
  105. *-- COMPUTE THE CORRECT TRACK NUMBER FROM THE LOGICAL SECTOR --*
  106.        LI   VALUE1,0     THE NUMBER HERE IS THE SECTOR YOU WANT TO READ
  107.        CLR  VALUE        DIVIDEND HIGH
  108.        LI   TEMP,NSEC    PUT NUMBER OF SECTORS IN TEMP
  109.        DIV  TEMP,VALUE
  110.        SWPB VALUE        QUOTIENT IS TRACK #
  111.        INV  VALUE        INV IT FOR FDC CHIP
  112.        MOVB VALUE,@FDWD  LOAD FD1771 DATA REGISTER
  113.        SWPB VALUE1       REMAINDER IS SECTOR #
  114.        INV  VALUE1       FDC CHIP LIKES INV VALUES
  115.        MOVB VALUE1,@FDWS LOAD FD1771 SECTOR REGISTER
  116.