         << LINES .001/.009 ARE RESERVED FOR SYSTEMS INTEGRATION >>     00000001
COMMENT: Program fix history log                               <<09981>>00072000
================================                               <<09981>>00072003
                                                               <<09981>>00072004
The fixes F1206 and F0204 are merged into one fix for this     <<09981>>00072005
MPE version.                                                   <<09981>>00072006
                                                               <<09981>>00072010
12/06/84  Jesse Chin  SR#4700-134106                           <<09981>>00072020
          F1206 - change single byte command starting transfer <<09981>>00072030
                  from left byte.                              <<09981>>00072040
                                                                        00072050
02/04/85  Huong Ho  SR#4700-142141                             <<09981>>00072060
          F0204 - if the MARGINAL DATA error has a duplicate   <<09981>>00072070
                  entry in the DSCT then go to CHECK'FOR'MD.   <<09981>>00072080
                                                               <<09981>>00072090
06/11/85  Jesse Chin  SR#5000-07458, SR#4700-159632            <<01165>>00072100
          F0611 - handle error condition with bit 41 set       <<01165>>00072110
                  Unrecov'data and bit 50 Rel'req'internal     <<01165>>00072120
                  maintainence in revision 5.0 firmware        <<01165>>00072130
                  Also in this same revision, RPS enable       <<01165>>00072140
                  would cause reading wrong sector. The        <<01165>>00072150
                  revision code is hex 50 for ROM 4,5.         <<01165>>00072160
                                                               <<01165>>00072170
08/06/85  Jesse Chin                                           <<01318>>00072180
          Support Eagle and Eaglet                             <<01318>>00072190
                                                               <<01318>>00072200
08/20/85  Jesse Chin                                           <<01360>>00072210
          Don't report fatal error if it is marginal           <<01360>>00072220
                                                               <<01360>>00072230
08/22/85  Jesse Chin   SR#5000-81828, SR4700-171942            <<01384>>00072240
     (1)  Don't change RPS setting after Power Fail.           <<01384>>00072250
     (2)  For marginal data error, do not record the error     <<01384>>00072260
          into bad sector table because the block address in   <<01384>>00072270
          DIT is not valid, the driver will make good exit.    <<01384>>00072280
                                                               <<01384>>00072290
11/21/85  Jesse Chin                                           <<J1616>>00072300
          Driver performance enhancement. Upon completion of   <<J1616>>00072310
          good I/O, the channel program will wait for PPOLL,   <<J1616>>00072320
          this eliminate the need of SIODM to fire the idle    <<J1616>>00072330
          channel program, thus saving 50% disc request for    <<J1616>>00072340
          some fast disc which normally has queue length of    <<J1616>>00072350
          zero.                                                <<J1616>>00072360
                                                               <<J1616>>00072370
07/08/86  Jesse Chin                                           <<L2308>>00072380
          Special codes added per Linda Rodda of DMD request,  <<L2308>>00072390
          function 91 case 2 would accept parameter up to 4    <<L2308>>00072400
          words for Eagle disc drive.                          <<L2308>>00072410
;                                                              <<09981>>00072999
  PROCESSING'MD - Indicates state of the MARGINAL DATA flag             01106030
       0 - Do not perform a read of the Defective Sector Table          01106100
       1 - Perform a read of the Defective Sector Table to get          01106200
           the disc address when the MARGINAL DATA error is             01106300
           occurred.                                                    01106400
                                                                        01106500
    HP7936    =  9,                                            <<01318>>06366000
    HP7937    = 10,                                            <<01318>>06366100
    RPS50   = %(16)50,     << Bad RPS Firmware Date Code >>    <<01165>>06501000
    ICDP      = 11,  << ILT current DIT area >>                <<J1616>>06585100
    IFLAG     = 13,  << FLAG word of ILT     >>                <<J1616>>06585200
    FORCEIDLE     = 4,             << FORCE IDLE ENTRY    >>   <<J1616>>06796000
    FIRSTBRANCH   = FORCEIDLE+4,   << MAIN BRANCH TO SECTIONS>><<J1616>>06800000
    RSTAT         = DXFER+19,      << READ STATUS OFFSET >>    <<J1616>>06830000
    PON           = DIAG+12,       << POWER ON OFFSET >>       <<J1616>>06840000
    JMP'TO'WAIT   = IDLE'WAIT-FIRSTBRANCH, << JUMP TO WAIT >>  <<J1616>>06950100
    DXFER'TO'FORCEIDLE = FORCEIDLE-DXFER-19,                   <<J1616>>06950200
    DIAG'TO'FORCEIDLE  = FORCEIDLE-DIAG-12,                    <<J1616>>06950300
    IDENT'TO'FORCEIDLE = FORCEIDLE-IDENT-4,                    <<J1616>>06950400
    IDLE'TO'RSTAT      = RSTAT-IDLE'WAIT-19,                   <<J1616>>06950500
    DXFER'TO'PON       = PON-DXFER-19,                         <<J1616>>06950600
    RSTAT'TO'PON       = PON-RSTAT-19,                         <<J1616>>06950700
    DIAG'TO'RSTAT      = RSTAT-DIAG-12,                        <<J1616>>06950800
    PON'TO'RSTAT       = RSTAT-PON-9,                          <<J1616>>06950900
<< 3>>                          4,                             <<J1616>>08865000
                                                               <<J1616>>08870000
<< 0>>  << FORCEIDLE >>      %401,  << INTERRUPT NO WAIT  >>   <<J1616>>08875000
<< 1>>                          7,  << SET INTERRUPT CODE >>   <<J1616>>08875100
<< 2>>                          0,  << DROP THROUGH IDLE  >>   <<J1616>>08880000
<< 3>>                JMP'TO'WAIT,                             <<J1616>>08885000
<<17>>              IDLE'TO'RSTAT,  << HARD ERROR-REQ STATUS >><<J1616>>09080000
<<16>>         DXFER'TO'FORCEIDLE,  << NORMAL COMPLETION >>    <<J1616>>09260000
<<17>>                          0,  << HARD ERROR-REQ STATUS >><<J1616>>09265000
<<18>>               DXFER'TO'PON,  << POWER ON OCCURRED >>    <<J1616>>09270000
$EDIT VOID=9285000                                             <<J1616>>09280000
<< 3>>                      %2000,  << CMD BUFFER BANK >>      <<09981>>09345000
<<18>>               RSTAT'TO'PON,  << POWER ON OCCURRED >>    <<J1616>>09440000
<< 9>>          DIAG'TO'FORCEIDLE,  << NORMAL COMPLETION >>    <<J1616>>09570000
<<10>>              DIAG'TO'RSTAT,  << HARD ERROR-REQ STATUS >><<J1616>>09575000
<<11>>                          0,  << POWER ON OCCURRED >>    <<J1616>>09580000
$EDIT VOID=9595000                                             <<J1616>>09590000
<< 7>>               PON'TO'RSTAT,  << HARD ERROR-REQ STATUS >><<J1616>>09680000
<< 2>>                          0,  << JUMP TO FORCE IDLE >>   <<J1616>>09755000
<< 3>>         IDENT'TO'FORCEIDLE,  << TERMINATE WITH IDLE  >> <<J1616>>09760000
<<  0>> << STATUS'CDB >>[8/%15,8/0],<< CDB FOR REQ STATUS >>   <<09981>>09800000
       IF POWERFAIL <> 0 THEN   << BYPASS INIT ON POWERFAIL >> <<01384>>10356100
         RETURN;                                               <<01384>>10356200
$EDIT VOID=10395000                                            <<01384>>10390000
<<     95    Retutn Status(not coded)         38           >>  <<01165>>13886000
<<     96    Read Date Code                   39           >>  <<01165>>13886100
<<     97    Set RPS Default Value            40           >>  <<01165>>13886200
<<     98    Disable RPS                      41           >>  <<01165>>13886300
<<     99    Read RPS'Enabled Bit             42           >>  <<01165>>13886400
       SIOP(IDENT3) := DIAG-IDENT-4; << DET CTRL HOOK UP >>    <<J1616>>15255000
       IF DITP(RPS'WORDONE).RPS'DATECODE = 0 THEN              <<01165>>18231000
       GOTO GOODXFER;                                          <<01165>>18231100
$edit void=19380000                                            <<L2308>>19375000
$edit                                                          <<L2308>>19470000
             SIOP(DXFER1) := 4+index;                          <<L2308>>19545000
             SIOP(DXFER11) := buffaddr+10;                     <<L2308>>19565000
     CPVAP(1) := 0;   << CLEAR CHANNEL STATUS WORD >>          <<J1616>>20420100
                 (SIOP(DESC'AREA).(8:8) >= PEP793X) or         <<01318>>20790000
                 subtype = hp7936 or                           <<01318>>20791000
                 subtype = hp7937                              <<01318>>20791100
             if (subtype = 8) and                              <<01165>>20816000
                ((siop(desc'area + 2).(0:8) = RPS50) or        <<01165>>20816010
                (siop(desc'area + 2).(8:8) = RPS50)) then      <<01165>>20816020
             begin                                             <<01165>>20816030
               ditp(rps'wordone).rps'desirable := 0;           <<01165>>20816040
               ditp(rps'wordone).rps'enabled := 0;             <<01165>>20816050
               ditp(rps'wordone).rps'datecode := 0;            <<01165>>20816060
             end;                                              <<01165>>20816070
              IF DITP(Access'Field).Dev'Not'Rdy and            <<01165>>21331000
              DRQ'ENTRY'INDEX > 0 and DRQ'MMREQ                <<01165>>21331100
              then goto DRIVE'NOT'READY;                       <<01165>>21331200
         IF DITP(INFOR'FIELD).MARGINAL'DATA THEN               <<01384>>21756000
         goto goodxfer;                                        <<01384>>21756100
save'in'dsct:                                                  <<01165>>21776000
$EDIT VOID=21791000                                            <<01165>>21791000
                 GOTO CHECK'FOR'MD;                            <<01360>>21840000
                 GOTO CHECK'FOR'MD;                            <<01360>>21865000
                   GOTO CHECK'FOR'MD;                          <<01165>>21910000
         IF DITP(INFOR'FIELD).MARGINAL'DATA THEN               <<01384>>22590100
         goto goodxfer;                                        <<01384>>22590200
         IF DITP(ACCESS'FIELD).UNRECOV'DATA'OV OR              <<01165>>22591000
            DITP(ACCESS'FIELD).UNRECOV'DATA or                 <<01165>>22591100
            ditp(infor'field).marginal'data then               <<01165>>22591200
            goto save'in'dsct;                                 <<01165>>22591300
             GOTO CHECK'FOR'MD;                                <<01165>>22710000
          << if Duplicate Entry, then go to CHECK'FOR'MD >>    <<09981>>22745000
          << for more checking >>                              <<09981>>22745100
          GOTO  CHECK'FOR'MD;                                  <<09981>>22745200
<< If the PROCESSING'MD bit of the DMISC word of the DITP   >> <<09981>>22911000
<< is set for the MARGINAL DATA error then turn it off and  >> <<09981>>22911100
<< return with clean status. >>                                <<09981>>22911200
CHECK'FOR'MD:                                                  <<09981>>22911300
     IF CPVAP(1).(12:4) = 7 THEN                               <<J1616>>23405100
     BEGIN                                                     <<J1616>>23405200
       ILTP(IFLAG).(1:1) := 1;      << IDLE IS RUNNING >>      <<J1616>>23405300
       ILTP(ICDP) := 0;             << Zero DIT pointer>>      <<J1616>>23405400
       CPVAP(1).(12:4) := 0;        << RESET >>                <<J1616>>23405500
     END;                                                      <<J1616>>23405600
