*COMDECK LIPIST 
          NAM  LIPSMAC
          NLS                                                            RN1
*CALL MUXMACROS 
          EQU    FRAME(A0WK1) 
          EQU   MABNSB(NCUOP1)     MORE BUFFER NEEDED FLAG
          EQU   MPF(NCUOP2)        PRIORITY FLAG
          EQU   MNS(NCUOP3)        NON STORE MODE FLAG
          EQU    BFRPP($4)    *   PRIORITY POSTED FLAG. 
          EQU    BFRPRFG($2)  *   RECEIVE PRIORITY FLAG.
          EQU    BFREBFG($1)  *   RECEIVE END-OF-BLOCK FLAG.
          EQU    BFABRT($10)  *   FRAME-ABORT FLAG. 
          EQU    BFIE($20)    *   INPUT ERROR.
          EQU    BFLBE($40)   *   LOW BUFFERS ENCOUNTERED.
          EQU  FCSE($80)      * CRC ERROR 
          EQU  DTO($40)       * DATA TRANSFER OVERRUN 
          EQU  ABORT($20)     * ABORT 
          EQU  LCT($8)        * LAST CHARACTER INPUT
          EQU     STATL($000F)    LAST CHAR. LENGTH = 8 
          EJT                                                            RN1
*                                                                        RN1
          ENT    LIPIST 
          EQU    LIPIST(*)    * LIP INPUT STATE ADDRESSES 
          ADC    LS0          * STATE 0 
          ADC    LS1          * STATE 1 
          ADC    LS2          * STATE 2 
          ADC    LS3          * STATE 3 
          EQU    AWAIT(*-LIPIST)
          ADC    LAWAIT       * AWAIT STATE 
          EQU    CWAIT(*-LIPIST)
          ADC    LCWAIT       * CWAIT STATE 
          EQU    LWAIT(*-LIPIST)
          ADC    LLWAIT       * LWAIT STATE 
          EQU    FWAIT(*-LIPIST)
          ADC    LFWAIT       * FWAIT STATE 
          EQU    SBINPUT(*-LIPIST)
          ADC    LSBINPUT     * SUBBLOCK INPUT STATE
          EJT 
* 
* 
*         S T A T E   0   -   C L A   S T A T U S   P R O C E S S I N G 
* 
* 
LS0       STATLS CWAIT,LS01  *         SKIP IF NO FIRST CHARACTER STORED
          TSTCLA FCSE+DTO+ABORT,LS02   NORMAL/ABNORMAL CRC END OR DTO 
          CMPCLA STATL,LS03  *         TEST LAST CHAR. NOT GOOD 
          DCC    1,LS04      *         IS MSG LENGTH CORRECT
          SKIP   IERROR      *         NO, REPORT ERROR 
LS01      SKIP   LS05 
LS02      SKIP   LS06 
LS03      TSTCLA LCT,LS06    *         NORMAL/ABNORMAL END
          NOPR   EXIT        *         IGNORE STATUS
LS04      STORE              *         STORE LAST CHAR
BWLEX     TIBWL  FRAME,,,,LIPWLCB      TERMINATE INPUT BUFFER, SEND WL
LS05      STATE  AWAIT,EXIT  *         START NEW FRAME STATE
LS06      TSTCLA ABORT,LS08  *         SKIP IF ABORT RECEIVED 
IERROR    SETFLG BFIE,FRST   *         SET INPUT ERROR FLAG 
          SKIP   BWLEX       *         GO TERMINATE INPUT 
LS08      SETFLG BFABRT+BFIE,FRST      SET ABORT FLAG 
          SKIP   BWLEX       *         GO TERMINATE INPUT 
* 
* 
*         S T A T E   1   -   D C D   D R O P P E D 
* 
* 
LS1       NOPR   EXIT        *    IGNORE DCD DROPPED
* 
* 
*         S T A T E   2   -   T O O   M A N Y   B U F F E R S   U S E D 
* 
* 
LS2       RESYNC 0           *    RESYNC CLA
          SKIP   IERROR      *    TREAT AS INPUT ERROR
* 
* 
*         S T A T E   3   -   M U X   B U F F E R   T H R E S H O L D 
* 
* 
LS3       RESYNC 0           *    RESYNC THE CLA
          STATLS CWAIT,LS32  *    SKIP IF NO BUFFER(S) USED 
          TIBWL  MMBUTCH     *    SEND BUFFER THR WL TO PMWOLP
LS32      STATE  AWAIT,EXIT  *         WAIT FOR NEXT FRAME
* 
* 
*         S T A T E   A W A I T   -   P R O C E S S   A - F I E L D 
* 
* 
LAWAIT    RSTMXF MPF         *    RESET PRIORITY BIT
          SETCC  1,1         *    CLEAR LENGTH COUNT
          STATE  CWAIT,STOREXIT   STORE A-FIELD, GET C-FIELD
* 
* 
*         S T A T E   C W A I T   -   P R O C E S S   C - F I E L D 
* 
* 
LCWAIT    STATE  LWAIT,STOREXIT   STORE C-FIELD, GET L-FIELD
* 
* 
*         S T A T E   L W A I T   -   P R O C E S S   L - F I E L D 
* 
* 
LLWAIT    SBLC   1           *    SET BLOCK COUNT FROM L FIELD
          STATE  FWAIT,EXIT  *    DROP L-FIELD, GET F-FIELD 
* 
* 
*         S T A T E   F W A I T   -   P R O C E S S   F - F I E L D 
* 
* 
LFWAIT    STATE  SBINPUT     *    PRESET FOR SUB-BLOCK INPUT
          DCC    1,LFWT01    *    DECR BLOCK COUNT
LFWT01    ALNBUF 8           *    ALOCATE NEW BUFFER FOR SUB-BLOCK
          SETFLG BFRPP,CURN  *    SET PRIORITY POSTED FLAG
          CHARLS $80,LFWT02  *    SKIP IF PRIORITY LOW
          SETFLG BFRPRFG,CURN     SET HIGH PRIORITY FLAG
          CHARNE $C0,LFWT04  *    SKIP IF NOT HIGH PRIORITY EOSB
          SETFLG BFREBFG,CURN,EXIT SET EOSB FLAG, EXIT
LFWT02    CHARNE $40,LFWT04  *    SKIP IF NOT LOW PRIORITY EOSB 
          SETFLG BFREBFG,CURN,EXIT SET EOSB FLAG, EXIT
LFWT04    NOPR   EXIT 
* 
* 
*         S T A T E   S B I N P U T   -   I N P U T   T E X T 
* 
* 
LSBINPUT  DCC    1,LSBIN2,STOREXIT STORE UNTIL COUNT EXHAUSTED
LSBIN2    STATE  LWAIT,STOREXIT   STORE LAST CHAR OF SUB-BLOCK
          SPC    3
          END 
