$CONTROL MAP,CODE,USLINIT                                               00010000
<<IOPLOT0 - MODULE 15>>                                                 00012000
<< HP32002C MPE SOURCE C.00.00 >>                                       00014000
<< COPYRIGHT     "(C) COPYRIGHT HEWLETT-PACKARD CO. 1980.           >>  00016000
<<     THIS PROGRAM MAY BE USED WITH ONE COMPUTER SYSTEM AT A       >>  00018000
<<     TIME AND SHALL NOT OTHERWISE BE RECORDED, TRANSMITTED OR     >>  00020000
<<     STORED IN A RETRIEVAL SYSTEM.  COPYING OR OTHER REPRODUCTION >>  00022000
<<     OF THIS PROGRAM EXCEPT FOR ARCHIVAL PURPOSES IS PROHIBITED   >>  00024000
<<     WITHOUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.>>  00026000
<< **** Note - Dollar Copyright cannot be used with this module *** >>  00028000
                                                                        00030000
                                                                        00032000
                                                                        00034000
                                                                        00036000
                                                                        00038000
$CONTROL PRIVILEGED,UNCALLABLE                                          00040000
$THIRTY                                                                 00042000
$TITLE "30226A PLOTTER INTERFACE DRIVER"                                00044000
                                                                        00046000
                                                                        00048000
                                                                        00050000
DRIVER REQUEST CODES:                                                   00052000
                                                                        00054000
    1 - WRITE                                                           00056000
    2 - OPEN FILE                                                       00058000
    3 - CLOSE FILE                                                      00060000
    4 - CLOSE DEVICE                                                    00062000
    5 - RETURN DEVICE SUBTYPE                                           00064000
                                                                        00066000
                                                                        00068000
                                                                        00070000
                                                                        00072000
BEGIN                                                                   00074000
    EQUATE                                                              00076000
         QDSTN        = 4,       <<INDEX INTO IOQ-DST#>>                00078000
         QFUNC        = 6,       <<INDEX INTO IOQ-FUNCT CODE>>          00080000
         QPAR1        = 8,       <<INDEX INTO IOQ-PARAM #1>>            00082000
         QPAR2        = 9,       <<INDEX INTO IOQ-PARAM #2>>            00084000
         QMISC        = 3,       <<INDEX INTO IOQ-INTERNAL FLAGS>>      00086000
         QWBCNT       = 7,       <<INDEX INTO IOQ-WORD/BYTE CNT>>       00088000
         QFLAG        = 0,       <<INDEX INTO IOQ-FLAGS>>               00090000
         QLDEV        = 2,       <<INDEX INTO IOQ-LOG DEV#>>            00092000
         QSTAT        =10,       <<INDEX INTO IOQ-STATUS>>              00094000
         DFLAG        = 0,       <<INDEX INTO DIT-FLAGS>>               00096000
         DLDEV        = 3,       <<INDEX INTO DIT-LOG DEV#>>            00098000
         DSTAT        = 6,       <<INDEX INTO DIT-STATUS>>              00100000
         DACCESS      = 8,       <<INDEX INTO DIT-ACCESS TYPE>>         00102000
         WRITE        = 1,       <<FUNCTION-WRITE>>                     00104000
         OPEN         = 2,       <<FUNCTION-FILE OPEN>>                 00106000
         CLOSE        = 3,       <<FUNCTION-FILE CLOSE>>                00108000
         DEVCLOSE     = 4,       <<FUNCTION-DEVICE CLOSE>>              00110000
         CNTRL        = %40000,  <<SIO CNTRL ORDER>>                    00112000
         JUMP         = 0,       <<SIO UNCOND JUMP>>                    00114000
         SETBANK      = %14000,  <<SIO SET BANK>>                       00116000
         SIOEND       = %34000,  <<SIO END ORDER>>                      00118000
         COMPLETION   = 3,       <<MONITOR STATE-COMPLETION>>           00120000
         ENDIO        = 5,       <<MONITOR STATE-END OF REQUEST>>       00122000
         REINIT       = %7,      <<MONITOR STATE-REINIT ON INTRP>>      00124000
         UNITFAIL     = %54,     <<STATUS RET-UNIT FAIL>>               00126000
         INVALID      = 4,       <<STATUS RET-INV FUNC>>                00128000
         XFERR        = %14,     <<STATUS RET=TRANSFERR ERR>>           00130000
         TIMEOUT      = %34,     <<STATUS RET=TIMEOUT>>                 00132000
         LIMITSW      = %143,    <<STATUS RET=LIMIT SW REACHED>>        00134000
         NTRDY        = %100,    <<STATUS RET=NOT RDY>>                 00136000
         SUCCESS      = 1,       <<STATUS RET=SUCCESSFUL  >>   <<02654>>00138000
         MACC         = %123,    <<STATUS RETURN-MULTIPLE ACCESS>>      00140000
         ABORTED      = %33,     <<STATUS RETURN-I/0 ABORTED>>          00142000
         PFABORT      = %63,     <<STATUS RETURN-PWR FAIL ABORT>>       00144000
         CLEAR        = %040000, <<CLEAR ALL INTERRUPTS>>               00146000
         MSTRCLEAR    = %100000, <<MASTER CLEAR>>                       00148000
         SYSDB        = %1000,   <<SYSTEM DB>>                          00150000
         SYSSBUF      = 6,       <<SYS BUF TABLE INDEX>>                00152000
         WNEW         = %7,      <<REINITIATE ON INTERRUPT>>            00154000
         CALLCMPLT    = %13,     <<CALL CMPLTR ON INTRPT>>              00156000
         BADCNTRL     = %3,      <<INVALID CONTROL FUNCTION>>           00158000
         BADFUNC      = %5,      <<INVALID FUNCTION CODE>>              00160000
         XFERERR      = %14,     <<TRANSFERR ERROR-STATUS>>             00162000
         SYSLPDT      = %10,     <<LPDT POINTER INDEX>>                 00164000
         DITSIZE      = 10,      <<DIT SIZE>>                           00166000
         SIOSIZE      =30,       <<SIO PGM SIZE>>                       00168000
         SIOSIZED2    =SIOSIZE/2,<<SIO PGM SIZE/2 FOR INITIAL>><<01300>>00170000
         SIOWR1       = %67777,  <<SIOWR 1 WORD>>                       00172000
         SIOWR2       = %60000,  <<SIOWR 0 CNT>>                        00174000
          TERMI       = 0;        <<TERMINATOR>>                        00176000
                                                                        00178000
  DEFINE                                                                00180000
       ABS            = ABSOLUTE#,                                      00182000
       DISABLE        = ASSEMBLE(SED 0)#,                               00184000
       ENABLE         = ASSEMBLE(SED 1)#,                               00186000
       PFAILB         = (11:1)#,                                        00188000
       IAK            = (8:1)#,                                         00190000
       EOF            = (8:2)#,   <<EOF FIELD IN LPDT>>                 00192000
       DEOF           =DITP(DACCESS).(12:1)#,                           00194000
       STATUS         =IOQP(QSTAT).(8:8)#,                              00196000
       DACCP          =DITP(DACCESS)#,                                  00198000
       MSGDONE        =IOQP(QFLAG)#,   <<MESSAGE DONE FLG>>             00200000
       SBUF           =IOQP(QFLAG).(3:1)#,  <<SYS BUFFER FLAG>>         00202000
       QMISCP         =IOQP(QMISC)#,                                    00204000
       TERMD          = 0#;                                             00206000
                                                                        00208000
                                                                        00210000
                                                                        00212000
                                                                        00214000
<< DIT DEFINITION AND DRIVER LINKAGE AREA >>                            00216000
                                                                        00218000
BYTE ARRAY CONFIG(0:7)=DB:=                                             00220000
DITSIZE,1,0,0,0,0,SIOSIZED2,0;                                 <<01300>>00222000
                                                                        00224000
ARRAY DITAB(1:DITSIZE)=DB:=                                             00226000
0,0,0,0,0,0,0,0,0,0;                                                    00228000
                                                                        00230000
ARRAY SIOA(1:SIOSIZE)=DB:=                                              00232000
0,0,0,0,0,0,0,0,0,0,                                                    00234000
0,0,0,0,0,0,0,0,0,0,                                                    00236000
0,0,0,0,0,0,0,0,0,0                                                     00238000
                                                                        00240000
;     <<TERMINATOR >>                                                   00242000
PROCEDURE EOFCHECK(IOQP,BUFR,CNT,HARDCHK);                              00244000
  VALUE IOQP,BUFR,CNT,HARDCHK;                                          00246000
  DOUBLE BUFR;                                                          00248000
  POINTER IOQP;                                                         00250000
  INTEGER CNT,HARDCHK;                                                  00252000
  OPTION EXTERNAL;                                                      00254000
                                                                        00256000
PROCEDURE GIP;                                                          00258000
  OPTION EXTERNAL;                                                      00260000
                                                                        00262000
PROCEDURE HELP;                                                         00264000
  OPTION EXTERNAL;                                                      00266000
                                                                        00268000
PROCEDURE LDEVNOTRDY(DITP);                                    <<0U.EB>>00270000
   VALUE DITP; POINTER DITP; OPTION EXTERNAL;                  <<0U.EB>>00272000
                                                                        00274000
PROCEDURE SIODM(DITP,FLAGS);                                            00276000
  VALUE DITP,FLAGS;                                                     00278000
  LOGICAL FLAGS;                                                        00280000
  POINTER DITP;                                                         00282000
  OPTION EXTERNAL;                                                      00284000
                                                                        00286000
                                                                        00288000
PROCEDURE MASTERCLEAR(DITP);                                            00290000
  ARRAY DITP;                                                           00292000
  OPTION EXTERNAL;                                                      00294000
                                                                        00296000
                                                                        00298000
                                                                        00300000
PROCEDURE CHECKINDEX(INDEX,TABLE);                                      00302000
  VALUE INDEX,TABLE;                                                    00304000
  INTEGER INDEX;                                                        00306000
  INTEGER POINTER TABLE;                                                00308000
  OPTION EXTERNAL;                                                      00310000
                                                                        00312000
                                                                        00314000
                                                                        00316000
PROCEDURE STARTIO(DITP,SIOP,QFLAG);                                     00318000
   VALUE DITP,SIOP,QFLAG;                                               00320000
   POINTER DITP,SIOP;                                                   00322000
   LOGICAL QFLAG;                                                       00324000
   OPTION EXTERNAL;                                                     00326000
                                                                        00328000
                                                                        00330000
                                                                        00332000
PROCEDURE IOFAILURE(DRTN,DITP);                                         00334000
   VALUE DRTN;                                                          00336000
   INTEGER DRTN;                                                        00338000
   ARRAY DITP;                                                          00340000
   OPTION EXTERNAL;                                                     00342000
                                                                        00344000
                                                                        00346000
PROCEDURE INITZ(IDITP);                                                 00348000
   INTEGER ARRAY IDITP;                                                 00350000
   BEGIN                                                                00352000
<<  DUMMY    >>                                                         00354000
   END;                                                                 00356000
INTEGER PROCEDURE PLOTDRVR(IOQP,DITP,BANK,BUFADR,SIOP,DRTN);            00358000
  VALUE IOQP,DITP,BANK,BUFADR,SIOP,DRTN;                                00360000
  INTEGER BANK,DRTN,BUFADR;                                             00362000
  INTEGER POINTER IOQP,DITP,SIOP;                                       00364000
                                                                        00366000
                                                                        00368000
  BEGIN                                                                 00370000
                                                                        00372000
    DOUBLE UBUF=BANK;                                                   00374000
    INTEGER MSTATE=PLOTDRVR,                                            00376000
            S0=S-0,                                                     00378000
            S1=S-1,                                                     00380000
            S2=S-2,                                                     00382000
            S3=S-3,                                                     00384000
            S4=S-4,                                                     00386000
            S5=S-5,                                                     00388000
            X=X,                                                        00390000
            FUNC,                                                       00392000
            P1,                                                         00394000
            P2,                                                         00396000
            MODE,                                                       00398000
            I,K,J,L,M,N,CNT,IX,                                         00400000
            MAXBUFSIZE,                                                 00402000
            BNKNO,                                                      00404000
            TEMP,                                                       00406000
            FWORD,                                                      00408000
            WBCNT;                                                      00410000
    DEFINE LDEV   = IOQP(QLDEV).(8:8)#,                                 00412000
           STAT1    = DITP(DSTAT)#,                                     00414000
           SIOPBASE = @SIOP+SYSDB#;                                     00416000
                                                                        00418000
                                                                        00420000
                                                                        00422000
        INTEGER POINTER SBUFR=DB+SYSSBUF,BADR;                          00424000
        DOUBLE POINTER LPDTD = DB+SYSLPDT;                              00426000
        DOUBLE POINTER DSIOP = SIOP;                                    00428000
        LOGICAL ODDBYTE,ODDONE;                                         00430000
                                                                        00432000
                                                                        00434000
                                                                        00436000
SUBROUTINE DOSIO;                                                       00438000
  BEGIN  <<DO START IO>>                                                00440000
    STARTIO(DITP,SIOP,1);                                               00442000
    IF <> THEN                                                          00444000
    BEGIN                                                               00446000
      IOFAILURE(DRTN,DITP);   <<NON RESPONDING DEVICE>>                 00448000
    END;                                                                00450000
    TOS:=%10;                                                           00452000
    TOS:=CALLCMPLT;                                                     00454000
    GO TO BEND;                                                         00456000
  END;  <<START I/O>>                                                   00458000
                                                                        00460000
                                                                        00462000
                                                                        00464000
                                                                        00466000
                                                                        00468000
SUBROUTINE SETFLAGS;                                                    00470000
  BEGIN                                                                 00472000
    FUNC:=IOQP(QFUNC);     <<GET FUNCTION CODE>>                        00474000
    P1:=IOQP(QPAR1);       <<GET PARAMETER 1>>                          00476000
    P2:=IOQP(QPAR2);       <<GET PARAMETER 2>>                          00478000
    ODDBYTE:=FALSE;                                                     00480000
    TOS:=IOQP(QWBCNT);  <<GET WORD BYTE COUNT>>                         00482000
    ASSEMBLE(DUP,DUP);                                                  00484000
    IF TOS.(0:1)=1 THEN                                                 00486000
    BEGIN   <<NEGATIVE COUNT IS IN BYTES>>                              00488000
      IF TOS.(15:1)=1 THEN ODDBYTE:=TRUE                                00490000
      ELSE ODDBYTE:=FALSE;                                              00492000
      WBCNT:=(-TOS)/2;                                                  00494000
      IF ODDBYTE THEN                                                   00496000
      BEGIN                                                             00498000
        IF WBCNT=0 THEN                                                 00500000
        BEGIN                                                           00502000
          WBCNT:=1;                                                     00504000
          ODDONE:=TRUE;                                                 00506000
        END;                                                            00508000
      END;                                                              00510000
    END                                                                 00512000
    ELSE                                                                00514000
    BEGIN                                                               00516000
    WBCNT:=TOS;<<COUNT IS IN WORDS>>                                    00518000
    DEL;                                                                00520000
    END;                                                                00522000
  END;  <<SETFLAGS>>                                                    00524000
                                                                        00526000
                                                                        00528000
SUBROUTINE SETSYSBUF;                                                   00530000
  BEGIN                                                                 00532000
    CHECKINDEX(@SBUFR+SYSDB-BUFADR,SBUFR);                              00534000
    IF WBCNT > 1024 THEN GO BF;                                         00536000
    CNT:=WBCNT;                                                         00538000
    WHILE CNT>0 DO                                                      00540000
    BEGIN                                                               00542000
      IF CNT >128 THEN                                                  00544000
      BEGIN                                                             00546000
        TOS:=%160000;   <<WR CHAINED>>                                  00548000
        TOS.(4:12):=-128;  <<SET FULL COUNT>>                           00550000
        TOS:=BUFADR;                                                    00552000
        DSIOP(I):=TOS;     <<STORE IN SIOPGM>>                          00554000
        I:=I+1;                                                         00556000
        CNT:=CNT-128;                                                   00558000
      END                                                               00560000
      ELSE                                                              00562000
      BEGIN  <<CNT IS 128 OR LESS>>                                     00564000
        TOS:=%60000;  <<WR UNCHAINED>>                                  00566000
        TOS.(4:12):=-CNT;  <<SET WR COUNT>>                             00568000
        TOS:=BUFADR;                                                    00570000
        DSIOP(I):=TOS;                                                  00572000
        I:=I+1;                                                         00574000
        CNT:=0;                                                         00576000
      END;                                                              00578000
       <<GET NEXT ADDRESS>>                                             00580000
      IF CNT > 0 THEN                                                   00582000
      BEGIN                                                             00584000
      CHECKINDEX(ABS(BUFADR-1),SBUFR);                                  00586000
      BUFADR:=ABS(X)+@SBUFR+SYSDB;                                      00588000
      END;                                                              00590000
    END;                                                                00592000
  END;  <<SETSYSBUF>>                                                   00594000
                                                                        00596000
                                                                        00598000
                                                                        00600000
                                                                        00602000
$PAGE                                                                   00604000
<<  I  N  I  T  I  A  T  O  R    >>                                     00606000
     DISABLE;     <<DISABLE INTERRUPTS>>                                00608000
     TOS:=IOQP;                                                         00610000
     DEL;                                                               00612000
     IF < THEN                                                          00614000
     BEGIN     <<I/O HAS BEEN ABORTED>>                                 00616000
       ENABLE;                                                          00618000
       IF MSTATE = COMPLETION THEN                                      00620000
       MASTERCLEAR(DITP);                                               00622000
       IF IOQP.PFAILB =1 THEN TOS:=PFABORT ELSE TOS:=ABORTED;           00624000
       TOS:=ENDIO;                                                      00626000
       GO TO BEND;                                                      00628000
     END;                                                               00630000
     ENABLE;                                                            00632000
     IF MSTATE = COMPLETION THEN GO COMPLETOR;                          00634000
     TOS:=DRTN;     <<ENABLE DEV STATUS,CLEAR INTERRUPTS>>              00636000
     TOS:=CLEAR;                                                        00638000
     ASSEMBLE (CIO 1; DEL);                                             00640000
     IF <> THEN                                                         00642000
     BEGIN                                                              00644000
UFAIL:                                                                  00646000
       IOFAILURE(DRTN,DITP);   <<NON RESPONDING DEVICE>>                00648000
      TOS:=UNITFAIL;                                                    00650000
      TOS:=ENDIO;                                                       00652000
FAIL:                                                                   00654000
      MASTERCLEAR(DITP);                                                00656000
      GO TO BEND;                                                       00658000
    END;                                                                00660000
    SETFLAGS;                                                           00662000
    IF P1.(0:1)=1 THEN HELP;                                            00664000
IF FUNC=WRITE THEN                                                      00666000
$PAGE                                                                   00668000
<<  I N I T I A T O R    W R I T E               >>                     00670000
    BEGIN                                                               00672000
                                                                        00674000
FORMSIOP:                                                               00676000
      I:=0;                                                             00678000
      TOS:=SETBANK;                                                     00680000
      TOS:=BANK;                                                        00682000
      DSIOP(I):=TOS;                                                    00684000
      I:=I+1;                                                           00686000
      IF SBUF =1 THEN SETSYSBUF                                         00688000
      ELSE                                                              00690000
      BEGIN     <<SET UP WRITE CMDS>>                                   00692000
        TOS:=WBCNT;     <<GET COUNT>>                                   00694000
        IF < THEN GO BF;     <<INVALID>>                                00696000
        IF = THEN GO DOCIO;                                             00698000
        K:=BUFADR;     <<BUFFER ADDRESS>>                               00700000
AGAIN:                                                                  00702000
        IF S0 > %7777 THEN                                              00704000
        J:=%7777                                                        00706000
        ELSE                                                            00708000
        J:=S0;     <<J=WORD COUNT FOR THIS WRITE>>                      00710000
        TOS:=TOS-J;  <<# WORDS REMAINING>>                              00712000
        TOS:=%67777 LAND LOGICAL(-J);                                   00714000
        TOS:=K;                                                         00716000
        DSIOP(I):=TOS;                                                  00718000
        I:=I+1;                                                         00720000
        IF S0 > 0 THEN                                                  00722000
        BEGIN     <<MORE WORDS IN BUFFER>>                              00724000
          K:=K+J;  <<BUFFER ADDRESS>>                                   00726000
          GO AGAIN;                                                     00728000
        END;                                                            00730000
      END;                                                              00732000
      TOS:=SIOEND;                                                      00734000
      TOS:=-1;                                                          00736000
      DSIOP(I):=TOS;                                                    00738000
      I:=I+1;                                                           00740000
DOCIO:                                                                  00742000
      MASTERCLEAR(DITP);                                                00744000
      TOS:=DRTN;                                                        00746000
      ASSEMBLE(TIO 0);                                                  00748000
      IF <> THEN GO UFAIL;                                              00750000
      X:=I;                                                             00752000
      IF <= THEN                                                        00754000
      BEGIN     <<NO SIO PGM OR STAT REQ>>                              00756000
        IF < THEN                                                       00758000
        STAT1:=TOS;                                                     00760000
        GO WELLDONE;                                                    00762000
      END;                                                              00764000
      ASSEMBLE (DEL; TIO 0);                                            00766000
      IF <> THEN GO UFAIL;                                              00768000
      IF (TOS&LSR(6)) THEN                                              00770000
      BEGIN     <<PLOTTER NOT READY>>                                   00772000
        LDEVNOTRDY(DITP);                                      <<0U.EB>>00774000
        TOS:=%30;                                                       00776000
        TOS:=WNEW;                                                      00778000
        GO BEND;                                                        00780000
      END;                                                              00782000
    DOSIO;                                                              00784000
    END;     <<WRITE>>                                                  00786000
    IF FUNC = OPEN THEN                                                 00788000
$PAGE                                                                   00790000
<<  I N I T I A T O R    O P E N                  >>                    00792000
    BEGIN     <<FILE OPEN>>                                             00794000
      MASTERCLEAR(DITP);                                                00796000
      GO WELLDONE;                                                      00798000
    END;                                                                00800000
    IF FUNC = CLOSE THEN                                                00802000
$PAGE                                                                   00804000
<<  I N I T I A T O R    C L O S E                 >>                   00806000
    BEGIN     <<FILE CLOSE>>                                            00808000
    GO WELLDONE;                                                        00810000
    END;     <<FILE CLOSE>>                                             00812000
    IF FUNC = DEVCLOSE THEN                                             00814000
$PAGE                                                                   00816000
<<  I N I T I A T O R    D E V I C E   C L O S E   >>                   00818000
    BEGIN     <<DEVICE CLOSE>>                                          00820000
      GO TO WELLDONE;                                                   00822000
    END;    <<DEVICE CLOSE>>                                            00824000
    IF FUNC > 4 THEN                                                    00826000
$PAGE                                                                   00828000
<<  I N I T I A T O R    I N V A L I D                >>                00830000
    BEGIN                                                               00832000
      TOS:=INVALID;                                                     00834000
BF:                                                                     00836000
      TOS:=ENDIO;                                                       00838000
      GO BEND;                                                          00840000
WELLDONE:                                                               00842000
      TOS:=1;     <<ENDING STAT OK>>                                    00844000
      TOS:=ENDIO;                                                       00846000
BEND:                                                                   00848000
      MSTATE:=TOS;     <<SET MONITOR STATE>>                            00850000
      STATUS:=TOS;     <<SET STATUS>>                                   00852000
                                                                        00854000
      RETURN;                                                           00856000
    END;     <<INITIATOR>>                                              00858000
                                                                        00860000
                                                                        00862000
                                                                        00864000
$PAGE                                                                   00866000
<<        C  O  M  P  L  E  T  O  R        >>                           00868000
                                                                        00870000
                                                                        00872000
COMPLETOR:                                                              00874000
   <<TEST FOR LIMIT SW IGNORED>>                                        00876000
   IF STAT1.(14:1) =1 THEN                                              00878000
   BEGIN                                                                00880000
     TOS:=LOGICAL(STAT1) LAND %100100;                                  00882000
     IF = THEN                                                          00884000
     BEGIN  <<ONLY LIMIT SW>>                                           00886000
       TOS:=%10;                                                        00888000
       TOS:=CALLCMPLT;                                                  00890000
       GO TO BEND;                                                      00892000
     END;                                                               00894000
   END;                                                                 00896000
   TOS:=DRTN;                                                           00898000
   ASSEMBLE(TIO 0);                                                     00900000
   IF < THEN GO UFAIL;                                                  00902000
   TOS:=CLEAR ;  <<CLEAR INTERRUPTS>>                                   00904000
   ASSEMBLE(CIO 2);                                                     00906000
   IF <> THEN GO UFAIL;                                                 00908000
   STAT1:=TOS;                                                          00910000
   IF STAT1.(11:1) =1 THEN                                              00912000
   BEGIN     <<TRANSFER ERROR INTERRUPT>>                               00914000
     TOS:=XFERERR;                                                      00916000
     TOS:=ENDIO;                                                        00918000
     GO FAIL;                                                           00920000
   END;                                                                 00922000
   IF STAT1.(12:1) =1 THEN                                              00924000
   BEGIN     <<TIMEOUT>>                                                00926000
     TOS:=TIMEOUT;                                                      00928000
     TOS:=ENDIO;                                                        00930000
     GO FAIL;                                                           00932000
   END;                                                                 00934000
   TOS:=LOGICAL (STAT1) LAND %100100;                                   00936000
   IF < THEN GO WELLDONE ELSE                                           00938000
   BEGIN     <<NOT READY>>                                              00940000
NOTRDY:                                                                 00942000
     LDEVNOTRDY(DITP);                                         <<0U.EB>>00944000
     MASTERCLEAR(DITP);                                                 00946000
     TOS:=%30;                                                          00948000
     TOS:=REINIT;                                                       00950000
     GO BEND;                                                           00952000
   END;                                                                 00954000
   GO WELLDONE;                                                         00956000
                                                                        00958000
IF FUNC < 5 THEN GO WELLDONE;                                           00960000
$PAGE                                                                   00962000
<<  C O M P L E T O R  I N V A L I D  >>                                00964000
                                                                        00966000
<< IF YOU GET HERE FUNCTION IS INVALID.SHOULD NOT HAPPEN>>              00968000
INVFUNC:                                                                00970000
   TOS:=INVALID;                                                        00972000
   TOS:=ENDIO;                                                          00974000
   GO BEND;                                                             00976000
                                                                        00978000
END;     <<PLOTDRVR>>                                                   00980000
<< D R I V E R  L I N K A G E  A R E A >>                               00982000
                                                                        00984000
ASSEMBLE(                                                               00986000
         PCAL SIODM;          <<MONITOR>>                               00988000
         PCAL PLOTDRVR;       <<INITIATOR>>                             00990000
         PCAL PLOTDRVR;       <<COMPLETOR>>                             00992000
         CON 0;               <<NO I/O PROCESS>>                        00994000
         PCAL INITZ;          <<INITIALIZATION>>                        00996000
         CON 1;               <<1 INTERRUPT HANDLER>>                   00998000
         PCAL GIP);           <<INTERRUPT HANDLER>>                     01000000
end.                                                           <<02654>>01002000
