.
.         REENTRANT ADIT$ INTERFACE
.
.
.         (C)  Copyright 1972-1978  John Walker
.
.         This software is in the public domain
.
          AXR$
          DEFUNCT$
          A$DEF
          FANG
          PURE      CODE
.
.         ENTER EDIT MODE
.
.         LMJ       A1,RDITA$
.         <RETURN>
.
RDITA$*   BGET      33+EPKTL            ALLOCATE A PACKET AND LINE
          LA        A2,(1,CANNED)       GET POINTER TO CANNED PACKET
          LR,U      R1,EPKTL            LOAD LENGTH OF CANNED PACKET
          LA,U      A3,,A0              GET BUFFER ADDRESS
          LXI,U     A3,1                SET UP INCREMENT
          BT        A3,,*A2             MOVE CANNED PACKET TO BUFFER
          LA,U      A2,EPKTL,A0         LOAD LINE START ADDRESS
          SA,H2     A2,,A0              PUT INTO PACKET
          LX,U      X11,,A1             GET RETURN POINT
          J         ADIT$               ENTER EDITING MODE
.
.         PRINT AND TERMINATE
.
.         LA,U      A0,<SPACING>
.         LMJ       A1,RPRTXA$
.
RPRTXA$*  .
          if        overtype
          TZ        TYPOUTST            IS A TYPE AND READ OUTSTANDING ?
          AA,U      A0,2                YES.  DON'T OVERTYPE IT
          SZ        TYPOUTST            CLEAR TYPE AND READ OUTSTANDING
          endf
          LSSL      A0,18+6             SHIFT SPACING TO T1
          LXM,U     A0,EPKTL,X1         POINT TO IMAGE
          AA        A0,(33,0)           PUT LENGTH IN PRINT$ WORD
          TNZ       SHADUP              OUTPUT TURNED OFF ?
          if        fdonly
          lmj       x11,aprtf           translate to Fieldata and print
          else
          aprint$   .                   print if all ASCII
          endf
RDITXA$*  A$DITX    .                   TERMINATE EDITING MODE
          BRELP     A0                  RELEASE THE PACKET AND LINE
          J         0,A1                RETURN
.
.         PRINT AND STAY IN EDITING MODE
.
.         LA,U      A0,<SPACING>
.         LMJ       X11,RPRTA$
.         <RETURN>
.
RPRTA$*   LXI,U     X11,,X11            SAVE RETURN POINT
          if        overtype
          TZ        TYPOUTST            IS A TYPE AND READ OUTSTANDING ?
          AA,U      A0,2                YES.  DON'T OVERTYPE IT
          SZ        TYPOUTST            CLEAR TYPE AND READ OUTSTANDING
          endf
          LSSL      A0,18+6             SHIFT OVER SPACING
          LXM,U     A0,EPKTL,X1         GET LINE POINTER
          AA        A0,(33,0)           ADD IN LENGTH
          TNZ       SHADUP              OUTPUT TURNED OFF ?
          if        fdonly
          lmj       x11,aprtf           translate to Fieldata and print
          else
          aprint$   .                   print if ASCII is working today
          endf
          A$DITX    .                   TERMINATE EDIT MODE TO CLEAR LINE
          LA        A1,X11              GET RETURN POINT
          SSL       A1,18               SHIFT IT DOWN
          LX,U      X11,,A1             LOAD IT INTO X11
          J         ADIT$               SET UP EDIT MODE, RETURN TO CALL
.
.         TRANSLATE IMAGE TO FIELDATA AND PRINT IF SYSTEM DOES NOT
.         SUPPORT ASCII PRINT FILES.
.
          if        fdonly
APRTF     SSL       A0,24               SHIFT OFF LENGTH AND BUFFER
          SA,H1     A0,SVL,X1           SAVE SPACING IN BUFFER
          SX        X11,SVL+1,X1        SAVE RETURN POINT IN SAVE BUFFER
          DS        A1,SVL+2,X1         SAVE A1, A2
          DS        A3,SVL+4,X1         SAVE A3, A4
          SA        A5,SVL+6,X1         SAVE A5
          LA,U      A2,SVL+7,X1         LOAD START ADDRESS OF FIELDATA BUFFER
          LA,U      A0,33               LOAD ASCII BUFFER LENGTH
          LA,U      A1,EPKTL,X1         LOAD IMAGE BUFFER ADDRESS
          ascfd     .                   CONVERT ASCII TO FIELDATA
          LSSL      A0,18               MOVE LENGTH TO H1
          LXM,U     A0,SVL+7,X1         LOAD FIELDATA BUFFER ADDRESS
          LA,H1     A1,SVL,X1           LOAD SPACING
          LSSL      A1,24               MOVE TO T1 OF WORD
          AA        A0,A1               ADD TO CONTROL WORD
          PRINT$    .                   PRINT FIELDATA IMAGE
          DL        A1,SVL+2,X1         RELOAD A1, A2
          DL        A3,SVL+4,X1         RELOAD A3, A4
          LA        A5,SVL+6,X1         RELOAD A5
          LX        X11,SVL+1,X1        RELOAD RETURN POINT FROM BUFFER
          J         0,X11               RETURN TO CALLER
          endf
.
          PURE      DATA
CANNED    A$PKT     33,$-$
          if        fdonly
SVL       EQU       $-CANNED            START OF SAVE AREA
          endf
EPKTL     EQU       $-CANNED+(22+7)*(FDONLY>0)
          END