      HED S1 - SECTION 1
*     SECTION 1 
*      THIS SECTION TESTS MOST CONTROLLER FUNCTIONS USING SHORT 
*      READS AND WRITES.
* 
WRSP  EQU GLOB1    LOCATION FOR PCI AND DCI BITS
WRR   EQU GLOB2     TIMER 
S1    EQU * 
      CLB 
      STB SFLAG 
      STB SHTAS     WHAT STATUS SHOULD BE 
      STB DMRF      NO DMA ERRORS AT START
      STB STRF      NO INITIAL ERRORS 
      STB CYL 
      STB HEAD
      STB SECTR 
      LDA BPTR
      STA BUFAD    INITIALIZE BUFFER ADDRESS
      LDA BPTS     LOAD READ BUFFER ADDRESS 
      STA BUFAE    SET POINTER
* 
*     STEP 1
*      GET AND CHECK STATUS FOR 0 
* 
      LDA D1
      JSB COPR
      LDA B35       INITIAL STATUS
      STA COPRN 
      JSB STAT      GET STATUS
      JSB WEND      CHECK STATUS AND END STEP 
* 
*     STEP 2
*      SEEK TO CYLINDER 0 
* 
      LDA D2
      JSB COPR
      JSB FSEEK     SEEK
      JSB ENDST 
* 
*     SKIP TO STEP 21 IF BIT 4 IS CLEAR 
* 
      JSB SWR 
      AND BIT4
      SZA,RSS 
      JMP STP21 
* 
*     STEP 3
*      ASK OPERATOR TO SET OVERRIDE SWITCH
* 
      LDA D3
      JSB COPR
      JSB TTYCK     IS TTY AVAILABLE? 
      JMP WHLTA     NO
      LDA B66       YES 
      JSB PRINT 
WHLTA LDA B66       SET OVERRIDE SWITCH PUSH RUN
      HLT 2 
      JSB ENDST 
* 
*     STEP 4
*      PLACE WRITE LOCKOUT BIT ON CYLINDER ZERO,READ CYLINDER ZERO
*      (CHECKING FOR FLAGGED CYLINDER INDICATION) AND CYCLIC CHECK
*      CYLINDER ZERO (CHECKING FOR FLAGGED CYLINDER INDICATION).
* 
      LDA D4
      JSB COPR
      LDA WRILB    LOAD WRITE LOCKOUT BIT 
      JSB DGEN1     GENERATE BUFFER 
      JSB WADR     WRITE ADDRESSES ONTO DISK
      LDA FLBIT    FLAGGED TRACK BIT
      STA SHTAS    WHAT STATUS SHOULD BE
      LDA D128+SZREF    READ ONE
      STA WCNT           SECTOR 
      JSB FSEEH     READ
      JSB READ       BACK 
      JSB DCHK        AND CHECK 
      LDA D1        ONE SECTOR
      JSB FCYCK     ISSUE CYCLIC CHECK
      JSB SEND
* 
*     STEP 5
*      PLACE DEFECTIVE CYLINDER BIT ON CYLINDER ONE 
* 
      ISZ CYL       CYL = 1 
      LDA D5
      JSB COPR
      JSB FSEEK     SEEK IN S0
      LDA DFTB     LOAD DEFECTIVE TRACK INDICATOR 
      JSB DGEN1     GENERATE BUFFER 
      JSB WADR     WRITE ONTO DISK
      JSB ENDST 
* 
*     STEP 6
*      ASK OPERATOR TO CLEAR OVERRIDE SWITCH
* 
      LDA D6
      JSB COPR
      JSB TTYCK     IS TTY AVAILABLE? 
      JMP WHLTB     NO
      LDA B67       YES 
      JSB PRINT 
WHLTB LDA B67       CLEAR OVERRIDE SWITCH,PUSH RUN
      HLT 2 
      JSB ENDST 
* 
*     STEP 7
*     READ CYLINDER ONE (CHECKING FOR ADDRESS ERROR,FLAGGED CYLINDER
*     AND ANY ERROR INDICATIONS). 
* 
      LDA D7
      JSB COPR
      LDA D128+SZREF
      STA WCNT     SET WORD COUNT FOR ONE SECTOR
      JSB FSEEH     ADDRESS RECORD IN S0
      JSB READ
      LDA B31       FLBIT+NFBIT+AEBIT 000031
      STA SHTAS    WHAT STATUS SHOULD BE
      JSB DMRFC     OK IF TRANSFER IS INCOMPLETE
      JSB WEND      CHECK STATUS AND END STEP 
* 
*     STEP 8
*      WRITE CYLINDER ZERO (CHECKING FOR FLAGGED CYLINDER AND ANY 
*      ERROR INDICATIONS).
* 
      LDA D8
      JSB COPR
      CLA 
      STA CYL           SET TO CYLINDER ZERO
      JSB FSEEK     SEEK IN S0
      JSB WRITE 
      LDA B11       FLBIT+AEBIT 000011
      STA SHTAS 
      JSB DMRFC     OK IF TRANSFER IS INCOMPLETE
      JSB WEND      CHECK STATUS AND END STEP 
* 
*     STEP 9
*      WRITE ADDRESS ON CYLINDER ZERO (CHECKING FOR FLAGGED CYLINDER
*      AND ANY ERROR INDICATIONS).
* 
      LDA D9
      JSB COPR
      JSB FSEEK     SEEK
      CLA 
      JSB DGEN1     GENERATE BUFFER 
      LDA WPCYL     =6144 
      STA WCNT
      JSB WADRI,I 
      JSB DMRFC     OK IF TRANSFER IS INCOMPLETE
      JSB WEND      CHECK STATUS AND END STEP 
* 
*     STEP 10 
*      ASK OPERATOR TO SET OVERRIDE SWITCH
* 
      LDA D10 
      JSB COPR
      CLA 
      STA SHTAS    WHAT STATUS SHOULD NORMALLY BE 
      JSB TTYCK     IS TTY AVAILABLE? 
      JMP WHLTC     NO
      LDA B66       YES 
      JSB PRINT 
WHLTC LDA B66       SET OVERRIDE SWITCH,PUSH RUN
      HLT 2 
      JSB ENDST 
* 
*     STEP 11 
*      INITIALIZE ENTIRE PACK 
* 
      LDA D11 
      JSB COPR
      CLA 
WRCL  EQU * 
      STA CYL      SET NEW CYLINDER NUMBER
* 
*                  THE FOLLOWING OPERATION IS A SEEK THAT 
*                  CAUSES POSITIONER MOTION.
* 
      JSB SEEK
      CLA 
      JSB DGEN1     GENERATE BUFFER 
      JSB WAITS    WAIT FOR SEEK COMPLETION 
      JSB WADR     WRITE AND READ ADDRESSES 
      LDA D1024+SZREF    READ BACK EIGHT SECTORS
      STA WCNT
      JSB FSEEH     READ
      JSB READ       BACK 
      JSB DCHK        AND CHECK 
      CLA,INA      INCREMENT CYLINDER 
      ADA CYL      COUNT UP TO NEXT CYLINDER
      CPA CYPP     CHECK FOR END OF PACK
      RSS 
      JMP WRCL     NOT DONE, FINISH PACK
      JSB ENDST 
* 
*     STEP 12 
*      ASK OPERATOR TO CLEAR OVERRIDE SWITCH
* 
      LDA D12 
      JSB COPR
      JSB TTYCK     IS TTY AVAILABLE? 
      JMP WHLTD     NO
      LDA B67       YES 
      JSB PRINT 
WHLTD LDA B67       CLEAR OVERRIDE SWITCH,PUSH RUN
      HLT 2 
      JSB ENDST 
* 
*     STEP 13 
*      ASK OPERATOR TO UNLOCK DRIVE 
* 
      LDA D13 
      JSB COPR
      LDA UNIT      CONVERT 
      ADA B2060      UNIT NUMBER
      STA P070A,I     TO ASCII
      STA P040B,I 
      JSB TTYCK     IS TTY AVAILABLE? 
      JMP WHLTE     NO
H70   LDA B70       YES 
      JSB PRINT 
WHLTE LDA B70       UNLOCK UNIT X,PUSH RUN
      HLT 2 
      JSB ENDST 
* 
*     STEP 14 
*      CHECK FOR NOT-READY AND ANY ERROR INDICATIONS. ISSUE A WRITE 
*      COMMAND AND CHECK STATUS. ISSUE A SEEK TO CHECK THAT THE 
*      CONTROLLER SETS THE COMMAND FLAG IMMEDIATELY IF THE DISC 
*      DRIVE IS NOT READY.
*      THIS STEP REPORTS A SEEK CHECK ERROR WHEN LOOPED.
* 
      LDA D14 
      JSB COPR
      JSB STAT
      LDA B105      NRBIT+PBBIT+AEBIT 000105
      STA SHTAS    SET WHAT STATUS SHOULD BE
      JSB WCHK
      LDA D128+SZREF
      STA WCNT
      JSB WRITE 
      JSB DMRFC     OK IF TRANSFER IS INCOMPLETE
      JSB WCHK     AND CHECK FOR ERRORS 
      JSB SEEK      SEEK
      JSB WAITS     WAIT FOR SEEK TO COMPLETE 
      JSB ENDST 
* 
*     STEP 15 
*      ASK OPERATOR TO SET DATA PROTECT SWITCH AND READY DRIVE. TEST
*      ATTENTION BITS WHEN HEADS LOAD.
* 
      LDA D15 
      JSB COPR
      LDA HDON
      LDB UPD 
      SZA           IF HDON = 0, UPPER DISC 
      LDB LRD       OTHERWISE, LOWER DISC 
      STB P040A,I   PREPARE 
      STB P041A,I    MESSAGES 
NRCB  EQU * 
      LDA MM10      PRINT EVERY 
      STA WRR        82 SECONDS 
      JSB TTYCK 
      JMP WHLTF 
H40   LDA B40       PROTECT X/D THEN READY UNIT X 
      JSB PRINT 
WHLTF LDA M7936 
      STA LCNT     SET MILLISECOND COUNTER
CC13  CLC CC        SET UP FOR
CC14  STC CC,C       FLAG ON HEAD-LOAD
NRCF  EQU * 
CC11  SFC CC        SKIP IF NOT READY 
      JMP CC12      FLAG IS SET 
      CLA,INA 
      JSB TMR,I     DELAY 1 MSEC
      ISZ LCNT
      JMP NRCF
      ISZ WRR       READY TO PRINT? 
      JMP WHLTF     NO
      JMP NRCB      YES 
CC12  LIB CC        ATTENTION BITS
      LDA B21 
      SZB,RSS 
      JSB FPRNT     MISSING ATTENTION BITS
      JSB ENDST 
* 
*     STEP 16 
*      PERFORM A SEEK OPERATION AND TEST FOR FIRST SEEK BIT.
*      THIS STEP REPORTS A FIRST SEEK ERROR WHEN LOOPED.
* 
      LDA D16 
      JSB COPR
      CLA 
      STA CYL 
      JSB SEEK
* 
*     TEST FIRST SEEK BIT 
* 
      LDA E2001     FSBIT+SPBIT+AEBIT 042001
      STA SHTAS 
      JSB WAITS 
      JSB WEND      CHECK STATUS AND END STEP 
* 
*     STEP 17 
*      ATTEMPT TO WRITE DATA ON THE DISC AND THEN VERIFY THAT NO
*      DATA TRANSFER TOOK PLACE. CHECK STATUS.
      LDA D17 
      JSB COPR
      JSB SEEK
      JSB STAT
      JSB DMW       INITIATE DMA
      LDB B45       SET UP CURRENT OPERATION
      LDA WRITC 
      JSB COMMD     WRITE ON PROTECTED SUBCHANNEL 
      LDA M175
      STA LCNT
WATE  EQU * 
      CLA,INA 
      JSB TMR,I     DELAY 1 MSEC
      ISZ LCNT
      JMP WATE      LOOP UNITL TIMEOUT
      JSB MC        TURN OFF DMA
DM2L  LIA DMAC
      ADA WCNT
      AND B7777 
      CPA D1        SHOULD BE ONLY 1 TRANSFERRED
      JMP PSTAT     IF SO, GO AHEAD AND CHECK STATUS
      LDB P013A     IF NOT, BOMB
      JSB DCIN2 
      CLA,INA 
      STA WCNT
      LDA BIT15 
      STA DMRF
      JSB PCOP
      JSB DMERQ 
      JSB ADDOI,I 
PSTAT LDA B2011     SPBIT+FLBIT+AEBIT 002011
      STA SHTAS 
      JSB STAT
      JSB WCHK      CHECK STATUS ON WRITE 
      JSB SEND
* 
*     STEP 18 
*      ASK OPERATOR TO CLEAR DATA PROTECT SWITCH
* 
      LDA D18 
      JSB COPR
      JSB TTYCK 
      JMP WHLTH 
      LDA B41 
H41   JSB PRINT     H41 CLEAR X/D PROTECT,LOAD,RUN
WHLTH LDA B41 
      HLT 2 
      JSB STAT      CLEAR FIRST STATUS
      JSB ENDST 
* 
*     STEP 19 
*      TEST POPIO LINE WITH PRESET SWITCH.
* 
      ISZ CYL 
      LDA D19 
      JSB COPR
      CLA 
      STA SHTAS 
      JSB FSEES     ADDRESS RECORD
* 
*     RAR NOW DIFFERS FROM POSITIONER.
*     A READ WILL SHOW A STATUS OF 21B. 
* 
      JSB DMR       SET UP DMA READ OPERATION 
      LDB B46       SET UP CURRENT OPERATION
      LDA READC     LOAD READ COMMAND 
      JSB COMMD     OUTPUT COMMAND
      JSB DMAT
      JSB TTYCK 
      JMP WHLTG 
      LDA B71 
H71   JSB PRINT     PRESS PRESET(S) THEN PRESS RUN
WHLTG LDA B71 
      HLT 2 
      JSB STAT
* 
*     THE FOLLWOING TEST VERIFIES THE POPIO LINE
* 
      JSB WEND      CHECK STATUS AND END STEP 
* 
*     STEP 21 
*      SEEK TO CYLINDER 0,THEN SEEK TO CYLINDER 1 AND CHECK STATUS
*      FOR BUSY 
* 
STP21 EQU * 
      LDA D21 
      JSB COPR
      CLA 
      STA CYL 
      JSB FSEEK     SEEK IN S1
      ISZ CYL 
* 
*                  THE FOLLOWING OPERATIONS ARE,
*                  A SEEK THAT CAUSES POSITIONER MOTION 
*                  AND A STATUS OPERATION IMMEDIATELY 
*                  FOLLOWING WHICH SHOULD SEE A 
*                  POSITIONER BUSY STATUS.
* 
      JSB SEEK
      LDA D5        PBBIT+AEBIT 000005
      STA SHTAS    WHAT STATUS SHOULD BE
      JSB STAT     GET STATUS WHILE BUSY
      JSB WCHK     CHECK FOR ERRORS 
      CLB          FOR WAITS TIME COUNTER 
      STB SHTAS    WHAT STATUS NORMALLY IS
      JSB WAITS    WAIT FOR SEEK TO FINISH
      JSB ENDST 
* 
*     STEP 22 
*      SEEK TO CYLINDER 203 AND CHECK STATUS FOR SEEK-CHECK AND ANY 
*      ERROR INDICATIONS. 
* 
      LDA D22 
      JSB COPR
      LDA CYPP     LOAD FIRST NON-EXISTANT CYLINDER NUMBER
      STA CYL 
      JSB SEEK      SEEK TO NON-EXISTANT CYLINDER 
      JSB WAITS    WAIT FOR SEEK
      LDA B401      SCBIT+AEBIT 000401
      STA SHTAS 
      JSB WEND      CHECK STATUS AND END STEP 
* 
*     STEP 23 
*      SEEK WHILE A SEEK IS IN PROGRESS,THEN CHECK STATUS FOR SEEK- 
*      CHECK AND ANY ERROR INDICATIONS. 
* 
      LDA D23 
      JSB COPR
      LDA FTR,I     GET FIRST CYLINDER THAT 
      STA CYL      WE ARE ALLOWED TO WRITE ON.
      JSB SEEK
      JSB SEEK      SEEK WITHIN A SEEK
      JSB WAITS     ALLOW COMPLETION
      JSB WEND      CHECK STATUS AND END STEP 
* 
*     STEP 24 
*      SEEK TO FIRST CYLINDER IN CYLINDER TABLE AND WRITE ONE SECTOR
*      AT SECTOR ZERO 
* 
      LDA D24 
      JSB COPR
      CLA 
      STA SHTAS    STATUS IS NORMALLY ZERO
      JSB FSEEK     SEEK IN S1
      LDA D384+SZREF
      STA WCNT     SET WORD COUNT FOR THREE SECTORS 
      JSB DGEN     GENERATE NEW BUFFER
* 
*                  THE FOLLOWING OPERATION DOES THE FIRST 
*                  WRITE ON THE DISK ON HEAD ZERO, SECTOR ZERO
* 
      LDA D128+SZREF
      STA WCNT     SET WORD COUNT FOR ONE SECTOR
      JSB WRITE    WRITE ON FIRST SECTOR
      JSB WEND      CHECK STATUS AND END STEP 
* 
*     STEP 25 
*      WRITE TWO SECTORS AT SECTOR 7. 
* 
      LDA D25 
      JSB COPR
      LDA D7
      STA SECTR    OPERATION STARTS AT SECTOR 7 
      JSB SEES
      LDA BPTR1     = BPTR + 128
      STA BUFAD 
      LDA D256+SZREF
      STA WCNT     TWO SECTOR WORD COUNT
      JSB WAIS     WAIT FOR SECTOR SWITCHING
      JSB WRITE 
      JSB WEND      CHECK STATUS AND END STEP 
* 
*     STEP 26 
*      READ ONE SECTOR AT SECTOR ZERO AND CHECK AGAINST DATA THAT 
*      WAS WRITTEN
* 
      LDA D26 
      JSB COPR
      CLA 
      STA SECTR    NEXT OP STARTS AT SECTOR ZERO
      JSB SEES
      LDA D128+SZREF
      STA WCNT     SET WORD COUNT FOR ONE SECTOR
      LDA BPTR
      STA BUFAD    PUT BUFFER ADDRESS BACK
      JSB WAIS     WAIT FOR SECTOR SWITCHING
      JSB DEND
* 
*     STEP 27 
*      READ TWO SECTORS AT SECTOR 7 AND CHECK AGAINST DATA THAT WAS 
*      WRITTEN. 
* 
      LDA D27 
      JSB COPR
      LDA D7
      STA SECTR    OPERATION STARTS AT SECTOR 7 
      JSB SEES
      LDA BPTR1     = BPTR + 128
      STA BUFAD    SET TO SECOND READ/WRITE ADDRESS 
      LDA D256+SZREF TWO SECTOR 
      STA WCNT     SET WORD COUNT 
      JSB WAIS     WAIT FOR SECTOR SWITCHING
      JSB DEND
* 
*     STEP 28 
*      REFINE ONE SECTOR AT SECTOR SEVEN. READ AND VERIFY SECTOR 7. 
* 
      LDA D28 
      JSB COPR
      JSB FSEES     ADDRESS RECORD IN S1
      JSB RFNE      ISSUE REFINE COMMAND
      JSB WCHK      CHECK STATUS
      JSB FSEES     ADDRESS RECORD IN S1
      JSB DEND
* 
*     STEP 29 
*      WRITE FOUR SECTORS AT SECTOR 21,CAUSING A TRACK CHANGE.
* 
      LDA D29 
      JSB COPR
      LDA SCPT-3
      STA SECTR    SET SECTOR NUMBER
      JSB SEES
      LDA D512+SZREF
      STA WCNT     SET FOUR SECTOR WORD COUNT 
      LDA BPTR
      STA BUFAD 
      JSB DGEN     GENERATE BUFFER
      JSB WAIS     WAIT FOR SECTOR SWITCHING
      JSB WRITE 
      JSB WEND      CHECK STATUS AND END STEP 
* 
*     STEP 30 
*      PERFORMS A CYCLIC CHECK ON GROUPS OF SECTORS STARTING AT HEAD
*      ZERO,SECTOR ZERO. (ONE SECTOR,THEN 2 SECTORS,THEN 4,8,16,32, 
*      48 AND 49 SECTORS.) THE LAST ONE RESULTS IN END OF CYLINDER
*      INDICATION.
* 
      LDA D30 
      JSB COPR
      CLA 
      STA SECTR     SET SECTOR ZERO 
      LDA MM6       CYCLIC CHECK
      STA WRR        1,2,4,8,16 AND 32 SECTORS
      LDA D1
STP30 EQU * 
      JSB FCYCK     ISSUE CYCLIC CHECK
      LDA WCNT
      ALS 
      ISZ WRR       DONE? 
      JMP STP30     NO
      LDA D48       48 SECTORS
      JSB FCYCK     ISSUE CYCLIC CHECK
      LDA B41       END-OF-CYLINDER AND ANY-ERROR 
      STA SHTAS 
      LDA D49       49 SECTORS
      JSB FCYCK     ISSUE CYCLIC CHECK
      JSB SEND
* 
*     STEP 31 
*      READ FOUR SECTORS AT SECTOR 21 AND VERIFY THE DATA AGAINST 
*      THAT WHICH WAS WRITTEN.
* 
      LDA D31 
      JSB COPR
      LDA D512
      STA WCNT      WORD COUNT = FOUR SECTORS 
      LDA SCPT-3
      STA SECTR    SET SECTOR 
      JSB FSEES     ADDRESS RECORD IN S1
      JSB DEND
* 
*     STEP 32 
*      AT SECTOR SEVEN,LOWER TRACK FORCE OVERRUN FOLLOWING WRITE OF 
*      TWO WORDS. 
* 
      LDA D32 
      JSB COPR
      LDA TRPC-1   LOAD LAST TRACK NUMBER 
      STA HEAD
      LDA D7
      STA SECTR    SET SECTR TO SEVEN 
      JSB SEEH     MOVE TO THE BOTTOM TRACK 
* 
*         THIS OPERATION OUTPUTS A PAIR OF WORDS TO THE 
*     DATA CHANNEL.  ABOUT 50 MICROSECONDS AFTER THE SECOND 
*     IS ACCEPTED, A THIRD WORD IS OUTPUT TO SET OVERRUN FLAG.
* 
      LDA BUFAD 
      CLB 
      STB A,I     SET TWO WORDS OF ZERO 
      INA 
      STB A,I 
      LDA D2
      STA WCNT     SET WORD COUNT 
      LDA OVIJS    JUMP TO SUBROUTINE 
      STA DMSP     SET DMA BREAK LOCATION 
      JSB WAIH     WAIT FOR HEAD SWITCHING
      JSB WRITE 
      JSB ST32I,I 
* 
*     STEP 33 
*      WRITE FOUR SECTORS AT SECTOR 21,LOWER TRACK. THE END-OF- 
*      CYLINDER AND ANY ERROR CONDITIONS ARE EXPECTED.
* 
      LDA D33 
      JSB COPR
      CLA 
      STA SHTAS 
      LDA SCPT-3
      STA SECTR    SET SECTOR 
      JSB SEEK
      LDA D512+SZREF
      STA WCNT     SET WORD COUNT FOR FOUR SECTORS
      JSB DGEN     GENERATE BUFFER
      JSB WAITS     WAIT FOR SEEK TO COMPLETE 
      JSB WRITE 
      JSB DMRFC     OK IF TRANSFER IS INCOMPLETE
      LDA B41       ECBIT+AEBIT 000041
      STA SHTAS    THIS IS WHAT STATUS SHOULD BE
      JSB WENDI,I 
* 
*     STEP 34 
*     TEST COMMAND BIT 14 
*     IF MISSING CYCHK BECOMES READC AND END OF CYLINDER WON'T OCCUR
* 
      LDA D34 
      JSB COPR
      JSB FSEEK     SEEK IN S1
      LDA D128+SZREF
      STA WCNT
      JSB DMR       SET UP DMA IN CASE IT IS READ 
      LDB B22       SET UP CURRENT OPERATION
      LDA B62       CHECK IS FOR 50 
      JSB DADO       SECTORS
      LDA CYCHK 
      JSB COMMD     OUTPUT COMMAND
      JSB DMAT
      JSB STAT      GET STATUS
      JSB WENDI,I 
* 
*     STEP 35 
*      AT SECTOR SEVEN,LOWER HEAD;READ THIRTY WORDS AND FORCE 
*      OVERRUN. CHECK ZERO FILL AND VERIFY THAT THE WORD CAUSING
*      THE PREVIOUS OVERRUN WAS NOT WRITTEN ON THE DISC.
* 
      LDA D35 
      JSB COPR
      CLA 
      STA SHTAS    STATUS SHOULD NORMALLY BE ZERO 
      LDA D7
      STA SECTR    SET SECTR TO SEVEN 
      JSB SEEH     RETURN TO BOTTOM TRACK 
      LDA D30 
      STA WCNT     SET WORD COUNT FOR ONE SECTOR
      LDA OVIJS 
      STA DMSP     SET TO INTERRUPT DMA TRANSFER
      JSB WAIH     WAIT FOR HEAD SWITCHING
      JSB READ
      JSB ST35I,I 
* 
*     STEP 36 
*      READ FOUR SECTORS AT SECTOR 21,LOWER TRACK. THE END-OF-
*      CYLINDER AND ANY ERROR INDICATIONS ARE EXPECTED. THE THREE 
*      SECTORS READ ARE CHECKED AGAINST THOSE WRITTEN.
* 
      LDA D36 
      JSB COPR
      LDA SCPT-3
      STA SECTR    SET SECTOR 
      JSB FSEES 
      LDA D512+SZREF
      STA WCNT     SET WORD COUNT FOR FOUR SECTORS
      JSB READ     READ AND 
      JSB DMRFC     OK IF TRANSFER IS INCOMPLETE
      LDA D384+SZREF
      STA WCNT     SET WORD COUNT FOR THREE SECTORS 
      LDA B41       ECBIT+AEBIT 000041
      STA SHTAS    THIS IS WHAT STATUS SHOULD BE
      JSB DCHK     CHECK FOR ERRORS AND COMPARE BUFFERS 
      JSB ENDST 
* 
*     STEP 37 
*      SEEK TO LAST CYLINDER. READ ONE SECTOR AT CYLINDER 0. ADDRESS
*      ERROR AND ANY ERROR ARE EXPECTED. FORCES WORST CASE
*      RECALIBRATE. 
* 
      LDA D37 
      JSB COPR
      LDA D202
      STA CYL 
      JSB FSEEK     SEEK TO CYL 202 
      CLA 
      STA CYL 
      JSB FSEES     SET CYL TO 0
      LDA D128+SZREF
      STA WCNT     SET WORD COUNT FOR ONE SECTOR
      JSB READ
      LDA STAUS     MASK OUT BITS 10 AND 13 
      AND N5777     =155777 
      STA STAUS 
      LDA B21       NFBIT+AEBIT 000021
      STA SHTAS    WHAT STATUS SHOULD BE
      JSB WENDI,I 
* 
*     STEP 38 
*      SEEK TO CYLINDER 202(OR 0 IF FIRST ENTRY IS 202)AND THEN SEEK
*      TO FIRST ENTRY IN CYLINDER TABLE. AT HEAD 1,SECTOR 21 READ 
*      ONE SECTOR AND VERIFY CONTENTS. THE READ COMMAND IS ISSUED 
*      BEFORE THE SEEK IS COMPLETE. 
* 
      LDA D38 
      JSB COPR
      CLA 
      STA SHTAS    WHAT STATUS SHOULD NORMALLY BE 
      LDB D202
      LDA FTR,I     IS FIRST ENTRY IN TABLE 
      CPA D202       EQUAL TO 202 
      CLB           YES 
      STB CYL       CYL = 202 (OR 0)
      JSB FSEEK     PERFORM FULL SEEK 
      LDA FTR,I 
      STA CYL 
      JSB SEEK
      JSB DENDI,I 
      JMP SKIPI,I   EXIT S1 
                                                                        