ASMB,R,Q,C
* 
* 
* 
**************************************************************
* (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  ALL RIGHTS    *
* RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED, RE- *
* PRODUCED, OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITH-  *
* OUT THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.  *
**************************************************************
* 
* 
* 
*      NAME:    DVG06 -- 1350A DEVICE SUBROUTINE
*      SOURCE:  92840 - 18090 
*      RELOC:   92840 - 16008 
*      PGMR:    DJS 
* 
*               MODIFIED BY DJS  1/27/80
*               -  MOVED 1350 INITIALIZATION SEQUENCE  FROM 
*                  DCT06 TO DVG06 --- 
* 
************************************************************* 
* 
      NAM DVG06,7  92840-16008 REV.2013 800127
      EXT EXEC,GCBIM,BYTE 
      EXT EMULX 
      EXT INDCK 
      EXT DCTIM 
      EXT CONVT 
      EXT LNGTH,GIC,DCTAD 
      EXT GRSTS 
      EXT REIO
* 
      ENT DVG06     HP 1310 CRT 
      ENT DVG16     HP 1311 CRT 
      ENT DVG26     HP 1317 CRT 
      ENT DVG36     HP 1321 CRT 
* 
****************************************************************
*                                                              *
*          >>>>>> 1350A DEVICE SUBROUTINE <<<<<<<<             *
*                                                              *
*     THE 1350A IS CURRENTLY SUPPORTED WITH 4 DIFFERENT CRT'S. *
*     THE CRT'S AND THEIR DEVICE SUBROUTINE ENTRY POINT ARE:   *
*                                                              *
*                   HP 1310     DVG06                          *
*                   HP 1311     DVG16                          *
*                   HP 1317     DVG26                          *
*                   HP 1321     DVG36                          *
*                                                              *
****************************************************************
      HED 1350A DEVICE SUBROUTINE 
DVG06 NOP           HP 1310A CRT = CRT #0 
      CLA 
      JMP SVCRT 
* 
DVG16 NOP           HP 1311A CRT = CRT #1 
      LDA .1
      JMP SVCRT 
* 
DVG26 NOP           HP 1317A CRT = CRT #2 
      LDA .2
      JMP SVCRT 
* 
DVG36 NOP           HP 1321A CRT = CRT #3 
      LDA .3
* 
SVCRT STA CRT#      SAVE THE CRT #
      CLA 
      STA BUFLG     CLEAR THE BUFFER FLAG 
      STA NBYTE     SET # BYTES IN BUFFER TO 0
      JSB DCTIM     FILL UP GIC, LENGTH AND DEVICE COMMAND ADDR.(DCTAD) 
      LDA GIC       GET THE GIC 
      CPA .177      IS THIS THE ERROR CHECK GIC?
      JMP ERRCK     YEP! CHECK IT OUT 
* 
      JSB SETUP     NOPE! SET EVERYTHING UP 
      LDA DCTAD     SEE WHAT TYPE OF COMMAND THIS IS
      SSA           EMULATOR? 
      JMP EMULT     YES 
* 
      SZA,RSS       A NOP?
      JMP DV6RT     YEP! DO NOTHING AND RETURN
* 
      LDB DCTAD     A COMMAND ADDRESS 
      LDA B,I       B HAS THE # OF BYTES IN THE COMMAND STRING
      CMA,INA       SET BYTE COUNT POSITIVE 
* 
*  COMPUTE # OF WORDS IN THE COMMAND STRING 
* 
      STA NBYTE     SAVE # BYTES
      AND .1        COMPUTE NWORD = NBYTE/2 + REMAINDER 
      STA ODFLG     = 0 IF EVEN, AND 1 IF ODD 
      LDA NBYTE 
      CLE,ERA       NBYTE/2 
      ADA ODFLG     ADD ON THE EXTRA BYTE 
      CMA,INA       MAKE IT NEGATIVE
      STA NWORD     AND SAVE IT FOR THE TRANSFER COUNTER
* 
      INB 
      LDA B,I 
      LDA A,I       GET THE COMMAND STRING TERMINATOR 
      STA TERM      AND SAVE IT FOR LATER 
      INB 
      STB DCTAD     NOW POINT TO FIRST WORD OF COMMAND STRING 
* 
*  TRANSFER THE COMMAND STRING TO THE I/O BUFFER
* 
XFER  LDA DCTAD,I   GET THE NEXT WORD IN THE COMMAND STRING 
      STA ADCNT,I   STUFF IT IN THE I/O BUFFER
      ISZ NWORD     TRANSFERRED ALL OF THE WORDS? 
      JMP XFER1     NOT YET! GO UPDATE POINTERS 
* 
      JMP XEND      YEP!
* 
XFER1 ISZ DCTAD     INCREMENT COMMAND STRING POINTER
      ISZ ADCNT     INCREMENT I/O BUFFER POINTER
      JMP XFER      GO TRANSFER ANOTHER WORD
* 
* 
* 
XEND  LDA ODFLG     GET EXTRA BYTE FLAG 
      SZA,RSS       WAS THERE AN EXTRA BYTE?
      ISZ ADCNT     YEP! BUMP UP THE I/O BUFFER POINTER 
      LDA BUFLG     GET THE BUFFER FLAG 
      SZA,RSS       ARE WE CURRENTLY BUFFERING PLOT ABSOLUTES?
      JMP CONT0     NOPE! 
* 
      LDA BUFLN     GET THE PREVIOUS # OF BYTES IN THE BUFFER 
      ADA NBYTE     ADD IT TO THE # OF BYTES WE JUST PUT IN 
      STA NBYTE     AND SAVE IT 
CONT0 LDA LNGTH     GET LENGTH OF ANY INFO IN THE GICB(END POINTS)
      SZA,RSS       IS THERE ANY DATA FOR US IN THE GICB? 
      JMP CONT3     NOPE! MOVE ON 
* 
      INA           YEP! IT MUST BE ENDPOINTS 
      STA LNTH
      JSB GB1       GO TRANSFER THE GICB TO INTX1 THRU INTX1+LNTH 
      DLD INTX2     GET THE ENDPOINTS 
      DST PX        UPDATE THE PEN POSITION 
      JSB CONVT     GO CONVERT THE ENDPOINTS TO ASCII WITH A COMMA
      DEF CONT3       SEPERATING THEM 
      DEF INTX2     STARTING ADDRESS OF THE ENDPOINTS 
      DEF IOBUF,I   PUT THE ASCII RESULTS IN THE I/O BUFFER 
      DEF NBYTE        WITH THIS OFFSET 
      DEF LNGTH     # OF NUMBERS TO CONVERT (2) 
* 
CONT3 JSB TRBYT     STICK THE TERMINATOR IN THE I/O BUFFER
      LDA GIC       GET THE GIC 
      CPA .5        IS IT A HOME PEN? 
      JMP SAV00     YEP! SAVE THE ORIGIN
* 
      JMP CONT4     NOPE! MOVE ON 
* 
SAV00 CLA           SAVE (0,0)
      STA PX                 IN PX
      STA PY                     AND PY 
CONT4 LDA BUFLG     GET THE BUFFERING FLAG
      SZA,RSS       ARE WE BUFFERING THIS TIME (PLOT ABSOLUTE)? 
      JMP OUTIT     NOPE! DUMP THE BUFFER 
* 
      LDA LNGTH     GET THE LENGTH (PLOT ABSOLUTE FLAG) 
      SZA,RSS       IS THIS A PLOT ABSOLUTE 
      JMP CONT5     NOPE! MOVE ON 
* 
      LDA CR        YEP! GET THE PA TERMINATOR
      JSB PTBYT      AND STUFF IT IN THE I/O BUFFER 
* 
CONT5 LDA NBYTE     GET THE TOTAL # OF BYTES IN THE BUFFER
      STA BUFLN      AND SAVE IT SO IT CAN BE PUT IN THE SAVE AREA
      JMP DV6EX     GO WRITE OUT THE SAVE AREA
* 
OUTIT LDA NBYTE     GET THE # OF BYTES IN THE BUFFER
      JSB OUTPT     OUTPUT THE BUFFER TO THE 1350 
      JMP DV6EX     GO HOME BABY
      SKP 
************************************************************* 
*                                                           * 
*          SPECIAL INTERNAL UTILITY ROUTINES                * 
*                                                           * 
************************************************************* 
* 
* 
********************************************************
*   SETUP:  GET THE NECESSARY WORKING VARIABLES FOR    *
*            DEVICE SUBROUTINE.  IF BUFFERING IS BEING *
*            USED IT WILL BE HANDLED HERE.             *
********************************************************
* 
SETUP NOP 
      JSB GCBIM     GO GET THE DEVICE SAVE AREA 
      DEF CKBUF     RETURN
      DEF .32       DEVICE SAVE AREA POINTER IN THE GCB 
      DEF .1        1 POINTER 
      DEF BUFLN     STARTING ADDRESS OF THE SAVE AREA DESTINATION 
      DEF .7        WE ONLY WANT 7 WORDS OF THE SAVE AREA 
      DEF .1        READ IT 
* 
CKBUF LDA IOFLG     GET BUFFERING FLAG (0 = NO BUFFERING) 
      SZA           ARE WE BUFFERING (PLOTR(4))?
      JMP GOTSV     YEP!  GO GET THE ADDRESS OF THE USER'S BUFFER 
* 
      LDA ADBUF     NOPE! NEED THE ADDRESS OF THE LOCAL I/O BUFFER
      JMP BUFI      GO MAKE IT CLEAN
* 
GOTSV LDA IOBUF     GET THE  ADDRESS OF THE USER'S BUFFER 
BUFI  JSB INDCK     MAKE IT CLEAN 
      STA IOBUF     SHOVE IT BACK IN
      STA IOB       PUT IT HERE FOR OUTPT 
      STA ADCNT     INITIALIZE THE WORKING BUFFER ADDRESS POINTER 
* 
      JSB GRSTS     GO SEE IF WE'RE IN LABEL MODE 
      DEF *+4       RETURN
      DEF .1        READ STATUS WORD
      DEF BIT4      LABEL MODE MASK 
      DEF TEMP      MASKED STATUS WORD
* 
      LDA TEMP      GET THE MASKED STATUS WORD
      SZA,RSS       LABEL MODE? 
      JMP BUFCK     NOPE! GO SEE IF WE'RE BUFFERING 
* 
      LDA ETX       YEP! GET THE TEXT TERMINATOR
      STA ADCNT,I   STUFF IT IN THE I/O BUFFER
      LDA .1        WE ONLY HAVE 1 BYTE 
      JSB OUTPT     GO FEED IT TO THE 1350
      JSB GRSTS     RESET TEXT MODE BIT 
      DEF *+4       RETURN
      DEF .2        WRITE 
      DEF MASK4     LABEL MODE MASK 
      DEF .0        THIS TURNS THE BIT OFF
* 
* 
BUFCK LDA IOFLG     GET THE I/O FLAG
      SZA,RSS       BUFFERING OPTION? 
      JMP SETUP,I   NOPE! EXIT SETUP
* 
* 
*  THE FOLLOWING CODE IS ONLY EXECUTED IF THE BUFFERING 
*  OPTION IS BEING USED (PLOTR(4)). 
* 
* 
      LDA GIC       SEE IF CURRENT COMMAND QUALIFIES AS ONE FOR BUFFERING 
      CPA .33       PEN UP? 
      JMP BF2       YEP! BUFFER IT
* 
      CPA .34       PEN DOWN? 
      JMP BF2       YEP! BUFFER IT
* 
      CPA .35       PLOT ABSOLUTE?
      JMP BF2       YEP! BUFFER IT
* 
      JMP EMPCK     NONE OF THE ABOVE.  GO EMPTY BUFFER 
* 
BF2   ISZ BUFLG     SET THE BUFFERING IN PROGRESS FLAG
      LDB BUFLN     GET THE CURRENT BUFFER LENGTH 
* 
* CHECK FOR POSSIBLE BUFFER OVERFLOW
* 
      STB NBYTE     SAVE IT IN THE WORKING BYTE COUNTER 
      JSB UPDTE     GO UPDATE THE WORKING  ADDRESS COUNTER
      ADB .6        ADD ON MAXIMUM COMMAND LENGTH 
      LDA LNGTH     GET # ENDPOINTS (0 OR 2)
      SZA           ANY ENDPOINTS TO SEND 
      ADB .10       YEP! BETTER ADD ON MAX # CHARS POSSIBLE 
      CLE,ERB       CALCULATE CURRENT BUFFER LENGTH 
      CMB,INB 
      ADB IOBL      MAXIMUM BUFFER LENGTH - CURRENT BUFFER LENGTH 
      SSB           POSSIBLE OVERFLOW?
      JMP EMPCK     YEP! BE SAFE AND EMPTY THE BUFFER 
* 
      LDA NBYTE     GET # OF BYTES IN BUFFER
      AND .1        ON A FULL 
      SZA,RSS                WORD BOUNDARY? 
      JMP SETUP,I   YEP! GET BACK TO THE ACTION 
* 
      LDA CR        NOPE! STUFF AN
      JSB PTBYT                EXTRA CR INTO THE BUFFER 
      ISZ BUFLN       AND UPDATE THE BUFFER LENGTH
      JMP SETUP,I   GO SEE SOME ACTION
* 
*     EMPTY BUFFER
* 
EMPCK LDA BUFLN     GET THE BUFFER LENGTH 
      SZA,RSS       IS ANYTHING THERE?
      JMP SETUP,I   NOPE! NO NEED TO EMPTY IT 
* 
      JSB OUTPT     YEP! FEED IT TO THE 1350
      CLA           ZERO OUT
      STA BUFLN           THE BUFFER LENGTH 
      STA NBYTE                        AND THE # BYTES
      LDA DCTAD 
      SSA           IS THIS AN EMULATOR?
      JMP EMSAV     YEP! DUMP THE SAVE AREA TO THE GCB
* 
      SZA,RSS       IS IT A NOP?
      JMP EMSAV     YEP! DUMP THE SAVE AREA TO THE GCB
* 
      LDA IOBUF     INITIALIZE THE
      STA ADCNT         WORKING BUFFER ADDRESS COUNTER
      JMP SETUP,I   GET OUT OF HERE 
* 
EMSAV JSB SAVAR     SEND THE SAVE AREA BACK TO THE GCB FOR LATER
      JMP SETUP,I   GET OUT OF HERE 
      SKP 
******************************************************* 
*                                                     * 
* GB2: TRANSFER INTX1(1)... INTX1(LNGTH) TO THE GICB  * 
*                                                     * 
******************************************************* 
* 
GB2   NOP 
      JSB GCBIM     TRANSFER DATA TO THE GICB 
      DEF RTX       RETURN
      DEF .16       POINTER TO THE GICB 
      DEF .1        1 POINTER 
      DEF INTX1     STARTING ADDRESS OF DATA TO BE TRANSFERRED
      DEF LNGTH     # OF WORDS TO TRNASFER
      DEF .2        WRITE IT
RTX   JMP GB2,I     GO BACK TO WHERE WE WAS 
* 
******************************************************* 
*                                                     * 
*  GB1:  TRANSFER THE GICB TO INTX1(1)...INTX1(LNTH)  * 
*                                                     * 
******************************************************* 
GB1   NOP 
      JSB GCBIM     RETRIEVE INTEGER VALUES FROM GICB 
      DEF RTGB1     RETURN
      DEF .16       POINTER TO THE GICB 
      DEF .1        1 POINTER 
      DEF INTX1     PUT THE DATA HERE 
      DEF LNTH      # OF WORDS TO TRANSFER
      DEF .1        READ IT 
RTGB1 JMP GB1,I 
* 
* 
*********************************************************** 
*                                                         * 
*   SAVAR:  TRANSFER THE WORKING SAVE AREA TO THE DEVICE  * 
*            SAVE AREA IN THE GCB FOR SAFE KEEPING.       * 
*                                                         * 
*********************************************************** 
* 
* 
SAVAR NOP 
      JSB GCBIM     TRANSFER THE WORKING SAVE AREA TO THE GCB 
      DEF SAVED     RETURN
      DEF .32       POINTER TO THE DEVICE SAVE AREA 
      DEF .1        1 POINTER 
      DEF BUFLN     STARTING ADDRESS OF THE WORKING SAVE AREA 
      DEF .3        WE ONLY NEED TO SAVE THE 1ST 3 WORDS
      DEF .2        WRITE IT
SAVED JMP SAVAR,I 
* 
**************************************************************
*                                                            *
*  TRBYT:  INSERT THE COMMAND TERMINATOR INTO THE I/O BUFFER *
*                                                            *
**************************************************************
* 
* 
TRBYT NOP 
      LDA TERM      GET THE TERMINATOR
      AND .177      MAKE SURE WE HAVE ONE BYTE
      JSB PTBYT     STUFF IT IN THE I/O BUFFER
      JMP TRBYT,I 
* 
* 
********************************************************
*                                                      *
*  PTBYT:  PUT A BYTE INTO THE I/O BUFFER              *
*                                                      *
*      ON ENTRY: A CONTAINS THE BYTE TO BE INSERTED    *
*                                                      *
********************************************************
* 
* 
PTBYT NOP 
      STA BITE      SAVE THE BYTE 
      JSB UPDTE     UPDATE ADDRESS COUNTER (ADCNT)
      JSB BYTE      GO INSERT THE BYTE
      DEF RTBYT     RETURN
      DEF NBYTE     OFFSET OF WHERE TO PUT THE BYTE (L OR R)
      DEF BITE      THIS IS THE BYTE
      DEF ADCNT,I   BUFFER POINTER
* 
RTBYT ISZ NBYTE     UPDATE THE BYTE COUNT 
      JSB UPDTE     GO UPDATE THE BUFFER POINTER
      JMP PTBYT,I 
* 
BITE  NOP 
* 
********************************************************
*                                                      *
*   UPDTE: UPDATE THE WORKING I/O BUFFER POINTER       *
*                                                      *
********************************************************
* 
* 
UPDTE NOP 
      LDA NBYTE     GET THE # OF BYTES IN THE BUFFER
      CLE,ERA       DIVIDE BY 2 
      ADA IOBUF     ADD IT TO THE STARTING ADDRESS OF THE BUFFER
      STA ADCNT     STUFF IT IN THE WORKING BUFFER POINTER
      JMP UPDTE,I 
* 
************************************************* 
*                                               * 
*  OUTPT: OUTPUT THE I/O BUFFER TO THE 1350     * 
*                                               * 
*     ON ENTRY: A CONTAINS # OF BYTES TO OUTPUT * 
*                                               * 
************************************************* 
* 
* 
OUTPT NOP 
      CMA,INA       REIO NEEDS A
      STA IOCNT           NEGATIVE BYTE COUNT 
      JSB REIO      FEED THE BUFFER TO THE 1350 
      DEF RTOUT     RETURN
      DEF .2        WRITE IT
      DEF LUN       THE LU # OF THE 1350
IOB   NOP           THE BEGINNING BUFFER ADDRESS
      DEF IOCNT     # OF BYTES TO TRANSFER
RTOUT JMP OUTPT,I 
* 
****************************************
*  DEVICE SUBROUTINE EXIT POINTS       *
****************************************
* 
DV6EX JSB SAVAR     COME HERE IF THE SAVE AREA IS TO BE SAVED 
DV6RT LDA CRT#      EXIT DRIVER THROUGH CORRECT RETURN ADDRESS
      RAL             RETURN ADDRESS IS 
      ADA CRT#           IN DVG06 + CRT# * 3
      ADA ADVG6 
      LDA A,I 
      JMP A,I 
      SKP 
* 
* 
************************************************
*                                              *
*            ERROR CHECKING CODE               *
*                                              *
************************************************
* 
* 
ERRCK JSB GCBIM    GET THE FOLLOWING ITEMS FROM  THE GCB: 
      DEF ERRA           LUN
      DEF .2             BUFFER ADDRESS 
      DEF .2             BUFFER LENGTH (MAX)
      DEF LUN 
      DEF .0
      DEF .1
* 
ERRA  JSB EXEC      MAKE A STATUS REQUEST TO CHECK THINGS OUT 
      DEF *+6       RETURN
      DEF D13I      STATUS REQUEST CODE 
      DEF LUN       THE LU WE WANT THE INFO ABOUT 
      DEF YTEMP     EQT WORD 5 PLACED HERE
      DEF DTYPE     EQT WORD 4 PLACED HERE(NOT NEEDED)
      DEF ZTEMP     SUB CHANNEL IN LOWER 5 BIT HERE 
* 
      JMP ITSNT     IT AIN'T EVEN AN LU !!!!
* 
      LDA YTEMP     GET EQT WORD 5
      AND MEQT      KEEP ONLY THE EQT TYPE FIELD
      LDB A         AND SAVE IT 
      LDA ZTEMP 
      AND M37       GET THE SUBCHANNEL BITS 
      ADA B         CONFIGURE B REGISTER RETURN WORD
      CPB M1740     IF DVR 37 THEN
      JMP ERR1      SO FAR SO GOOD! 
* 
ITSNT LDA .5        GPS ERROR 5 
      JMP ERR3      WE DIDN'T FLY SO MOVE ON
* 
ERR1  JSB EMULX,I   NOW ASK DEVICE COMMAND TABLE ABOUT ITSELF 
      CPA .1350     IS IT THE 1350 DEVICE COMMAND TABLE?
      JMP ERR2      YEP ! WE'RE OKAY
* 
      CPA .5        GPS ERROR 5?
      JMP ERR3      YEP! GO LOG IT
* 
      LDA .3        SOMETHING IS WRONG SO 
      JMP ERR3         LOG A GPS ERROR 3
* 
ERR2  JSB GRSTS     SEE IF THIS IS A PLOTR(4) (BUFFERING) 
      DEF ERRB      RETURN
      DEF .1        READ THE STATUS WORD
      DEF .1000     MASK FOR BUFFERING BIT
      DEF IOFLG     RESULT OF CALL
* 
ERRB  LDA IOFLG     GET BUFFERING BIT 
      SZA           SUPPOSED TO BUFFER? 
      JMP ERRD      YEP! USE THE USER'S BUFFER
* 
      LDA ADBUF     NOPE! GET ADDRESS OF THE INTERNAL BUFFER
      STA IOBUF        AND   STUFF IT AWAY
      JMP CBUF      GET A CLEAN ADDRESS 
* 
ERRD  LDA IOBUF     GET THE ADDRESS OF THE USER'S BUFFER
CBUF  JSB INDCK     MAKE IT CLEAN 
      STA IOBUF     STUFF IT BACK IN
* 
*  TRANSFER THE INITIAL SAVE AREA INTO THE GCB
* 
      JSB GCBIM     TRANSFER THE WORKING SAVE AREA TO THE GCB 
      DEF GOINT     RETURN
      DEF .32       DEVICE SAVE AREA POINTER
      DEF .1        1 POINTER 
      DEF BUFLN     STARTING ADDRESS OF WORKING BUFFER
      DEF .10       10 WORDS IN SAVE AREA 
      DEF .2        WRITE IT
* 
*  SEND THE 1350 THE REQUIRED INITIALIZATION STRING           DS2013
*                                                             DS2013
GOINT LDA INITA     GET ADDRESS OF INITIALIZATION STRING      DS2013
      STA IOB       STUFF IT HERE FOR OUTPUT                  DS2013
      LDA .20       THERE'S 20 BYTES IN THE INIT SEQUENCE     DS2013
      JSB OUTPT     FEED THE INIT SEQUENCE TO THE 1350        DS2013
* 
      CLA           NO ERRORS !!!!
* 
ERR3  STA INTX1     INTX1 HAS THE ERROR CODE
      LDA .1        1 WORD TO 
      STA LNGTH        SEND BACK
      JSB GB2       GIVE THE ERROR CODE TO THE GICB 
      JMP DV6RT     LEAVE THE DRIVER
* 
* 
EMULT JSB EMULX,I 
      JMP DV6RT 
      SKP 
************************************************
*                                              *
*                 CONSTANTS                    *
*                                              *
************************************************
* 
A     EQU 0 
B     EQU 1 
* 
.0    DEC 0 
.1    DEC 1 
.3    DEC 3 
.5    DEC 5 
.6    DEC 6 
.7    DEC 7 
.10   DEC 10
.16   DEC 16
.20   DEC 20                      DS2013
.32   DEC 32
.33   DEC 33
.34   DEC 34
.35   DEC 35
.177  OCT 177      OCTAL
.1000 OCT 1000
.1350 DEC 1350
CR    OCT 15       CARRIGE RETURN 
ETX   OCT 1400     TEXT TERMINATOR
BIT4  OCT 20       MASK FOR READING LABEL MODE
MASK4 OCT 77757    MASK FOR SETTING LABEL MODE
D13I  OCT 100015   STATUS REQUEST CODE FOR EXEC 
M1740 OCT 17400    DVR37 CODE 
M37   OCT 37       MASK TO GET HP-IB SUBCHANNEL BITTS 
MEQT  OCT 37400    MASK TO GET HP-IB EQT
* 
* 
************************************
*                                  *
*           ADDRESSES              *
*                                  *
************************************
* 
ADVG6 DEF DVG06 
ADBUF DEF BUFR     INTERNAL BUFFER ADDRESS
* 
* 
* 
************************************************* 
*                                               * 
*              LOCAL VARIABLES                  * 
*                                               * 
************************************************* 
* 
* 
BUFR  BSS 15       INTERNAL I/O BUFFER
NBYTE NOP          # OF BYTES IN I/O BUFFER 
NWORD NOP          # OF WORDS IN A COMMAND SEQUENCE 
BUFLG NOP          CURRENT BUFFERING FLAG (0= NO CURRENT BUFFERING) 
IOCNT NOP          - NBYTE (USED BY REIO) 
DTYPE NOP          DRIVER TYPE
YTEMP NOP          EQT WORD 5 
ZTEMP NOP          LOWER 5 BITS IS SUBCHANNEL # 
TERM  NOP          COMMAND TERMINATOR 
TEMP  NOP          TEMPORARY VARIABLE 
ADCNT NOP          WORKING I/O BUFFER POINTER 
ODFLG NOP          0 IF ON AN EVEN WORD BOUNDARY
LNTH  NOP          # OF WORDS TO TRANSFER TO GCB
      SKP 
***************************************************************** 
*                                                               * 
*                       TABLE AREA                              * 
*                                                               * 
*    !!!! DO NOT CHANGE SEQUENCE OF INDIVIDUAL TABLES !!!!!     * 
*                                                               * 
***************************************************************** 
* 
***********************************                     DS2013  
*                                 *                     DS2013  
*  1350 INITIALIZATION SEQUENCE   *                     DS2013  
*                                 *                     DS2013  
***********************************                     DS2013  
*                                                       DS2013
*                                                       DS2013
*                                                       DS2013
*     3B    END OF TEXT                                 DS2013
*     20B   POWER CLEAR                                 DS2013
*     EM    ERASE MEMORY                                DS2013  
*     EN    ERASE FILE NAMES                            DS2013  
*     EX    ERASE AUXILARY DISPLAY INFO                 DS2013  
*     SN    STOP NAMING FILES                           DS2013  
*     SX    STOP SETTING AUXILARY BITS                  DS2013  
*     UM    UNBLANK MEMORY                              DS2013  
*                                                       DS2013
*                                                         DS2013  
INITA DEF *+1      STARTING ADDRESS OF THE INIT SEQUENCE  DS2013  
      OCT 1424                                            DS2013
      ASC 9,:EM:EN:EX:SN:SX:UM                            DS2013
* 
* 
**********************************
*                                *
*  GCBIM TABLE USED IN ERRCK     *
*   !! DO NOT CHNAGE ORDER !!    *
**********************************
* 
* 
.2    OCT 2        GCB POINTER FOR THE LUN
.4    OCT 4        GCB POINTER FOR THE BUFFER ADDRESS AND LENGTH
* 
* 
************************************* 
*                                   * 
*  WORKING DEVICE SAVE AREA TABLE   * 
*   !! DO NOT CHANGE ORDER !!       * 
************************************* 
* 
* 
BUFLN NOP          CURRENT BUFFER LENGTH
PX    NOP          X POSITION OF PEN
PY    NOP          Y POSITION OF PEN
IOFLG NOP          I/O FLAG (0=NO BUFFERING)
LUN   NOP          GRAPHICS LU #
IOBUF NOP          BUFFER STARTING ADDRESS
IOBL  NOP          MAXIMUM BUFFER LENGTH
TCSIZ NOP          1350 CSIZE(0,1,2,3)
LDIR  NOP          1350 LDIR (0,4)
CRT#  NOP          CRT # (0,1,2,3)
* 
* 
*********************************************** 
*                                             * 
*  WORKING VARIABLE TABLE FOR GCB TRANSFERS   * 
*      !! DO NOT CHANGE SEQUENCE !!           * 
*********************************************** 
* 
* 
INTX1 NOP 
INTX2 NOP 
INTX3 NOP 
INTX4 NOP 
      END 
                          