*DECK MF
          IDENT MF8K   MUX1502
          RELO
          ENT   MF8K
          CPR   1985
          CMP1
          ZMAP
          BOX 
          O U T P U T   D A T A   D E M A N D    P R O C E S S O R
          EBOX
***************************************************************************** 
*         FIRMWARE REVISION LEVEL TO BE PUT IN F1 FILE REGISTER FC          * 
***************************************************************************** 
 REV      EQU   21X                                    MF REVISION LEVEL
          BOX 
          FILE TWO CONSTANTS SHARED BY PFODDP AND PFIDP 
          INITIALIZED BY THE BASE SYSTEM SOFTWARE 
          EBOX
 F20001   EQU   15X         0001
 F20F00   EQU   16X         0F00
 F200FF   EQU   19X         00FF
******************************************************************************
*                                                                            *
*         F I L E - 1    R E G I S T E R    D E F I N I T I O N S            *
*                                                                            *
******************************************************************************
******************************************************************************
*         REGISTERS USED FOR BUFFER CONTROL BLOCKS                           *
******************************************************************************
 BCB8     EQU   00X         0000        8 WORD BUFFER CONTROL BLOCK 
 GETP8    EQU   01X         0000        GET POINTER 
 PUTP8    EQU   02X         0000        PUT POINTER 
 LCD8     EQU   03X         0D08        8 WORD LCD/FCD
 BCB16    EQU   04X         0000        16 WORD BUFFER CONTROL BLOCK
 GETP16   EQU   05X         0000        GET POINTER 
 PUTP16   EQU   06X         0000        PUT POINTER 
 LCD16    EQU   07X         1D08        16 WORD LCD/FCD 
 BCB32    EQU   08X         0000        32 WORD BUFFER CONTROL BLOCK
 GETP32   EQU   09X         0000        GET POINTER 
 PUTP32   EQU   0AX         0000        PUT POINTER 
 LCD32    EQU   0BX         3D08        32 WORD LCD/FCD 
 BCB64    EQU   0CX         0000        64 WORD BUFFER CONTROL BLOCK
 GETP64   EQU   0DX         0000        GET POINTER 
 PUTP64   EQU   0EX         0000        PUT POINTER 
 LCD64    EQU   0FX         7D08        64 WORD LCD/FCD 
******************************************************************************
*         REGISTERS USED FOR BUFFER MAINTENANCE                              *
******************************************************************************
 RELADDR  EQU   10X         0000        ADDR. OF CALLER FOR RELEASE BUFFER
 GETADDR  EQU   11X         0000        ADDR. OF CALLER FOR GET BUFFER
 BUFPTR   EQU   12X         0000        USERS ADDRESS OF BUFFER ADDRESS 
 BUFADR   EQU   13X         0000        LAST BUFFER RELEASED
 GETRTRN  EQU   14X         0000        SAVE FOR GET BUFFER RETURN ADDRESS
 RELRTRN  EQU   15X         0000        SAVE FOR RELEASE BUFFER RETURN ADDRESS
 STARTM   EQU   16X         FFFF        BIT MAP START ADDRESS 
 MAPADR   EQU   17X         0000        CURRENT MAP WORD ADDRESS
 MASK8    EQU   18X         FFFF        ADDRESS OF 8 WORD MASKS 
 MASK16   EQU   19X         FFFF        ADDRESS OF 16 WORD MASKS
 QTOPSK   EQU   1AX         FFFF        ADDTESS OF STACK, INTERRUPT COUNT 
 MULTIPL  EQU   1BX         0000        MULTIPLE RELEASE FLAG 
******************************************************************************
*         REGISTERS USED FOR LIST SERVICE                                    *
******************************************************************************
 NEWPUT   EQU   1CX         0000        NEW PUT POINTER 
 NEWGET   EQU   1DX         0000        NEW GET POINTER 
 OLDGET   EQU   1EX         0000        OLD GET POINTER 
 MACWLSV  EQU   1FX         0000        SAVE MACRO ENTRY - LIST SERVICE 
 WLBCB    EQU   1FX         0000        POINTER TO BUFFER CONTROL BLOCK 
 WLBSIZE  EQU   20X         0000        SIZE OF BUFFERS FOR LIST SERVICE
 WLCBSV   EQU   21X         0000        WORK LIST CONTROL BLOCK SAVE
 PUTSV    EQU   22X         0000        PUT POINTER SAVE
 FINK     EQU   23X         0000        FEINC AND INC 
 CNTSV    EQU   24X         0000        NUMBER OF ENTRIES COUNT 
 LISTRET  EQU   25X         0000        RETURN ADDRESS FOR LIST PUT 
 PICKRET  EQU   26X         0000        RETURN FORM PICKR3 ADDRESS
 INCMAC   EQU   27X         0000        MACRO CALL TEMP FOR FEINC AND INC 
 INCSV    EQU   28X         0000        TEMP SAVE FOR INC 
 FINKINC  EQU   29X         0000        CONTAINS FEINC AND INC
******************************************************************************
*         REGISTERS USED FOR ODD PROCESSOR                                   *
******************************************************************************
 ODDPP    EQU   2AX         0000        ODD P REGISTER SAVE 
 ODDPA    EQU   2BX         0000        ODD A REGISTER SAVE 
 ODDPQ    EQU   2CX         0000        ODD Q REQISTER SAVE 
 OLDLCB   EQU   2DX         0000        LCB ADDRESS FOR EVENT (WORK) CODE 02
 CODE02   EQU   2EX         0102        OUTPUT BUFFER TRANSMITTED WORK CODE 
 CODE04   EQU   2FX         0184        UNSOLICITED ODD WORK CODE 
 CODE05   EQU   30X         0185        CLA ADDRESS OUT OF RANGE
 RTRNO    EQU   31X         0000        RTJ SAVE FOR ODD EVENT CODE 
 SVEI     EQU   32X         0000        I REGISTER SAVE IN OBT
 PORTA    EQU   33X         0000        CURRENT PORT ADDRESS FOR ODD
 LTYPMSK  EQU   34X         07C0        LINE TYPE MASK IN NAPORT
 MLCBA    EQU   35X         0000        MUX LCB ADDRESS 
 CCNT     EQU   36X         0000        COUNT OF NUMBER OF CHAR. TO OUTPUT
 TEMP     EQU   37X         0000        TEMPORARY STORAGE 
 MLCBWD1  EQU   38X         0000        SAVE FOR MLCB WD 1
 TEMP1    EQU   39X         0000        TEMPORARY STORAGE 1 
 NLCDSV   EQU   3AX         0000        NEW BUFFER LCD SAVE 
 NFCDSV   EQU   3BX         0000        NEW BUFFER FCD SAVE 
 BSYNC    EQU   3CX         0032        BSC SYNC CHARACTER
 BETB     EQU   3DX         0026        BSC ETB CHARACTER 
 BETX     EQU   3EX         0003        BSC ETX CHARACTER 
 MSYNC    EQU   16X                     MODE 4 SYNC, NOT A REGISTER 
******************************************************************************
*         REGISTERS USED FOR IDP PROCESSOR                                   *
******************************************************************************
 CIB      EQU   3FX         0000        BASE ADDRESS OF CIRCULAR INPUT BUFFER 
 NFP      EQU   40X         0000        NEXT CIB FRAME POSITION 
 OLDLFP   EQU   41X         0000        MLIA OLD FRAME POSITION (CIB DISPL.)
 CIBEND   EQU   42X         0000        BOTTOM OF CIB + 1 
 STW1N2   EQU   43X         0000        STATUS WORD 1 AND 2 SAVE
 MSPTA    EQU   44X         0000        MODEM STATE POINTER TABLE ADDRESS 
 MODIX    EQU   45X         0000        MODEM STATE INDEX 
 LASTCIB  EQU   46X         0000        LAST INDEX TO CIB BUFFER
 IDPP     EQU   47X         0000        IDP P REGISTER SAVE 
 IOEXIT   EQU   48X         0000        I/O WRAP CELL ID
 PORTADR  EQU   49X         0000        CURRENT PORT ENTRY ADDRESS
 AREGSV   EQU   4AX         0000        A REGISTER SAVE FOR EVENT 07
 PORTWD0  EQU   4BX         0000        PORT WD 0 SAVE FOR IDP
 BZLTIMR  EQU   4CX         0000        TIME TABLE START ADDRESS
 SVTMR    EQU   4DX         0000        CURRENT TIMER ENTRY ADDRESS 
 RTRNI    EQU   4EX         0000        RTJ SAVE FOR IDP WORK CODE
 LC1SV    EQU   4FX         0000        LOOP CELL 1 SAVE
 LC2SV    EQU   50X         0000        LOOP CELL 2 SAVE
 LC3SV    EQU   51X         0000        LOOP CELL 3 SAVE
 LC4SV    EQU   52X         0000        LOOP CELL 4 SAVE
 EVNTCDI  EQU   53X         0000        IDP EVENT (WORK) CODE 
 PFWLFLG  EQU   54X         0000        FLAG FOR BUILDING WORK CODE 
 CODE5.1  EQU   55X         0085        CLA ADDRESS OUT OF RANGE IDP
 CODE06   EQU   56X         0086        ILLEGAL LINE FRAME FORMAT 
 CODE07   EQU   57X         0087        UNSOLICITED INPUT 
 CODE801  EQU   58X         0801        CLA STATUS OVERFLOW 
 IDPRET   EQU   59X         0000        RTJ SAVE FOR ODD INTERRUPT CHECK
 CIBOVF   EQU   5AX         0000        CIB OVERFLOW FLAG 
 F1BUFOV  EQU   5BX         0028        INPUT BUFFER OVERFLOW SYSTEM PARAM. 
 P1CKRET  EQU   5CX         0000        RETURN FOR INTERRUPT CHECK
 SAVCH    EQU   5DX         0000        TEMPORARY SAVE CHAR. FOR STORE
*               5EX - 62X               RTJ, A, I, X, Q, SAVE FOR BUFFER
*                                       HALTS. DIAGNOSTIC ONLY
******************************************************************************
*         REGISTERS USED FOR TEXT PROCESSOR                                  *
******************************************************************************
 TPFLG    EQU   63X         0000        TP RUNNING FLAG 
 TPPSV    EQU   64X         0000        P REGISTER SAVE FOR TP
 TPASV    EQU   65X         0000        A REGISTER SAVE FOR TP
 TPISV    EQU   66X         0000        I REGISTER SAVE FOR TP
 TPSVA    EQU   67X         0000        A REGISTER SAVE 
 TPSVP    EQU   68X         0000        P REGISTER SAVE 
 TPSBA    EQU   69X         0000        TP SOURCE BUFFER ADDRESS
 TPLFCD   EQU   6AX         0000        CURRENT SOURCE LCD/FCD
 MAXCHR   EQU   6BX         000A        MAX. NUMBER OF CHARACTERS TO PROCESS
 INTCNT   EQU   6CX         0000        INTERNAL TP INTERRUPT CHAR. COUNT 
 LEV2FLG  EQU   6DX         0000        FLAG FOR LEVEL 1 OR 2 IN TP 
 TP3LCB   EQU   6EX         0000        WORD 3 MLCB SAVE
 TPISPTA  EQU   6FX         0000        SAVE STATE POINTER TABLE ADDR.
 TPIST    EQU   70X         0000        SAVE STATE INDEX
 TPSTP    EQU   71X         0000        SAVE P REGISTER 
 TPTCAR   EQU   72X         0000        SAVE CURRENT CHARACTER
 SVD0     EQU   73X         0000        SAVE TPCB REGISTER 0 (DO) 
 SVD1     EQU   74X         0000        SAVE TPCB REGISTER 1 (D1) 
 ENDBUF   EQU   75X         0000        LCD + TOP OF BUFFER FOR TP SOURCE 
******************************************************************************
*         REGISTERS USED FOR TEXT PROCESSING SPECIAL MD4 INSTRUCTION         *
******************************************************************************
 F1CC1    EQU   76X         0000        MD4 SPECIAL CC1 
 F1CC2    EQU   77X         0000        MD4 SPECIAL CC2 
******************************************************************************
*         REGISTERS USED FOR STATE INSTRUCTIONS IN GENERAL                   *
******************************************************************************
 UCAR     EQU   7AX         0000        UNTRANSLATED CHARACTER
 TCAR     EQU   7BX         0000        TRANSLATED CHARACTER
 W3LCB    EQU   7CX         0000        TEMP STORE FOR WORD 3 OF MLCB 
 WD3PTR   EQU   7DX         0000        POINTER TO WORD 3 OF MLCB 
 ISPTA    EQU   7EX         0000        INPUT STATES POINTER TABLE ADDRESS
 ASAVE    EQU   7FX         0000        A REGISTER SAVE - STATE INSTRUCTIONS
 QSAVE    EQU   80X         0000        Q REGISTER SAVE - STATE INSTRUCTIONS
 ISAVE    EQU   81X         0000        I REGISTER SAVE - STATE INSTRUCTIONS
 SVX      EQU   82X         0000        X REGISTER SAVE - STATE INSTRUCTIONS
 RTJSV34  EQU   83X         0000        RTJ SAVE FOR OP CODES 3 AND 4 
 SM2FLG   EQU   84X         0000        FLAG TO FIRE P3 OR NOT
* NOT USED      85X                     NOT USED
 SVQ11    EQU   86X         0000        SAVE Q REGISTER FOR ADDC INSTRUCTION
 ADCAR    EQU   87X         0000        SAVE CHARACTER TO ADD 
 SPECA    EQU   88X         0000        SAVE A FOR SPECIAL CHAR. ADD
 SPECA1   EQU   89X         0000        SAVE A FOR SPECIAL CHAR. ADD
 SPECX1   EQU   8AX         0000        SAVE X FOR SPECIAL CHAR. ADD
 ACMRTJ   EQU   8BX         0000        SAVE RTJ IN ACCUMALATE CRC
 SAVCAR   EQU   8CX         0000        SAVE UCAR IN CHARACTER EXPANSION
 ADCAR1   EQU   8DX         0000        SAVE REGISTER IN CHARACTER STORE
 SUCAR    EQU   8EX                      SAVE LOCATION FOR UCAR 
 OP5TYPE  EQU   8FX         0000        OPCODE 5 STATE INSTRUCTION TYPE 
 FSCTEST  EQU   90X         0000        SET SCTEST SWITCH 
 FWRD15   EQU   91X         0000        WORD 15 OF MLCB 
 FSINDEX  EQU   92X         0000        MVCHXX SOURCE INDEX POINTER 
 SDCHARS  EQU   93X         0000        SOURCE CHARACTERS 
 WXLCB    EQU   94X         0000        WXLCB =LCB WORD BUT NOT 3 
 AIRFLG   EQU   95X         0000        FLAG FOR RELEASE BUFFER ON BACKUP 
 XSVXPN   EQU   96X         0000        SAVE COUNT IN CHARACTER EXPAND
 TPIBP    EQU   97X         0000        TEMPORARY IBP FOR TP
 RTJST    EQU   98X         0000        SAVE LOCATION FOR STORE CHAR RTJ
 LGLCD    EQU   0FX         0000        LCD FOR BACKSPACE 
******************************************************************************
*         REGISTERS USED FOR BUILDING WORK LISTS IDP/ODP                     *
******************************************************************************
 XLTSV    EQU   99X         0000        TRANSLATE RTJ SAVE
 PFWLCB   EQU   9AX         FFFF        WORK LIST CONTROL BLOCK IDP/ODP 
 XISV     EQU   9BX         0000        I REGISTER SAVE 
 OLDOBP   EQU   9CX         0000        OUTPUT BUFFER POINTER 
 EVNTCD   EQU   9DX         0000        EVENT CODE, COMMON
******************************************************************************
*         REGISTERS USED FOR CONSTANTS                                       *
******************************************************************************
 F10300   EQU   9EX         0300        CONSTANT
 F13000   EQU   9FX         3000        CONSTANT
 OUTDATA  EQU   A0X         0508        OUTPUT DATA TO MLIA - A/Q ADDRESS 
 ODDINP   EQU   A1X         0500        ODD INPUT - A/Q ADDRESS 
 DATAID+  EQU   A2X         CC00        DATA CELL ID + EOLF + EOLB
 DATAID   EQU   A3X         0C00        DATA CELL ID
 SENSLFP  EQU   A4X         0560        READ LFP - A/Q ADDRESS
 CLAID-   EQU   A5X         0F00        CLA ADDRESS LOOP CELL 
 SUPVID   EQU   A6X         0D00        SUPERVISION ID LOOP CELL
 F10001   EQU   A7X         0001        CONSTANT
 F10002   EQU   A8X         0002        CONSTANT
 F10003   EQU   A9X         0003        CONSTANT
 F10004   EQU   AAX         0004        CONSTANT
 F10005   EQU   ABX         0005        CONSTANT
 F10006   EQU   ACX         0006        CONSTANT
 F10007   EQU   ADX         0007        CONSTANT
 F10008   EQU   AEX         0008        CONSTANT
 F1000A   EQU   AFX         000A        CONSTANT
 F1000E   EQU   B0X         000E        CONSTANT
 F1000F   EQU   B1X         000F        CONSTANT
 F1001F   EQU   B2X         001F        CONSTANT
 F10037   EQU   B3X         0037        CONSTANT
 F1003F   EQU   B4X         003F        CONSTANT
 BIGBUF   EQU   B4X         003F        DATA BUFFER SIZE - 1
 F10050   EQU   B5X         0050        CONSTANT - MAX. # OF CHAR. TO EXPAND
 F1007F   EQU   B6X         007F        CONSTANT
 F10080   EQU   B7X         0080        CONSTANT
 F100C0   EQU   B8X         00C0        CONSTANT
 F100F0   EQU   B9X         00F0        CONSTANT
 F100FE   EQU   BAX         00FE        CONSTANT - LCD MASK 
 F100F8   EQU   BBX         00F8        CONSTANT
 F100FF   EQU   BCX         00FF        CONSTANT
 F18200   EQU   BDX         8200        CONSTANT
 F107E0   EQU   BEX         07E0        CONSTANT
 F10C00   EQU   BFX         0C00        CONSTANT
 F10F00   EQU   C0X         0F00        CONSTANT
 F12000   EQU   C1X         2000        CONSTANT - TRANSLATE BIT
 F12180   EQU   C2X         2180        CONSTANT
 F14000   EQU   C3X         4000        CONSTANT
 F1C000   EQU   C4X         C000        CONSTANT
 F1401F   EQU   C5X         401F        CONSTANT - RESET STATUS AND OON AT OBT
 F18000   EQU   C6X         8000        CONSTANT
 F1A180   EQU   C7X         A180        CONSTANT
 F1CD00   EQU   C8X         CD00        SUPV. LOOP CELL + EOLF + EOLB 
******************************************************************************
*         ADDITIONAL BUFFERS USED FOR BUFFER MAINTENANCE                     *
******************************************************************************
 G32RTRN  EQU   C9X         0000        RETURN SAVE FOR NO 32 WORD BUFFERS
 G16RTRN  EQU   CAX         0000        RETURN SAVE FOR NO 16 WORD BUFFERS
 G8RTRN   EQU   CBX         0000        RETURN SAVE FOR NO 8 WORD BUFFERS 
******************************************************************************
*         REGISTERS THAT MUST BE LOCATED WITH LOW ORDER DIGIT = 11XX         *
******************************************************************************
 F1F000   EQU   CCX         F000        CONSTANT
 F100E0   EQU   CDX         00E0        CONSTANT
 ODDCLA   EQU   CEX         0000        CLA ADDRESS 
 OLDIBP   EQU   CFX         0000        OLD INPUT BUFFER POINTER
******************************************************************************
*         REGISTERS USED FOR TEXT PROCESSING STORAGE OF THE USER TPCB        *
******************************************************************************
 CURCAR   EQU   D0X         0000        CURRENT SOURCE CHARACTER
 RITCAR   EQU   D1X         0000        RITE CHARACTER OF SOURCE
 SBA1ST   EQU   D2X         0000        FIRST SOURCE BUFFER ADDRESS 
 TPD3     EQU   D3X         0000        USER REGISTER 3 
 TPD4     EQU   D4X         0000        USER REGISTER 4 
 TPD5     EQU   D5X         0000        USER REGISTER 5 
 TPD6     EQU   D6X         0000        USER REGISTER 6 
 TPD7     EQU   D7X         0000        USER REGISTER 7 
 TPD8     EQU   D8X         0000        USER REGISTER 8 
 TPD9     EQU   D9X         0000        USER REGISTER 9 
 TPDA     EQU   DAX         0000        USER REGISTER A 
 TPDB     EQU   DBX         0000        USER REGISTER B 
 TPDC     EQU   DCX         0000        USER REGISTER C 
 TPDD     EQU   DDX         0000        USER REGISTER D 
 TPDE     EQU   DEX         0000        USER REGISTER E 
 TPDF     EQU   DFX         0000        USER REGISTER F 
 F1BCC    EQU   TPD8        0000        MD4 SPECIAL NBLANK COUNTER
 F1BLK    EQU   TPDD        002D        MD4 SPECIAL BLANK CHARACTER 
******************************************************************************
*         REGISTERS USED FOR TEXT PROCESSING STORAGE LEVEL 1 AND 2 MARK      *
******************************************************************************
 LEV1A    EQU   E0X         0000        LEVEL 1 SBA 
 LEV1B    EQU   E1X         0000        LEVEL 1 RITE CHARACTER
 LEV1C    EQU   E2X         0000        LEVEL 1 FLAGS 
 LEV1D    EQU   E3X         0000        LEVEL 1 DESTINATION BUFFER
 LEV1E    EQU   E4X         0000        LEVEL 1 CRC 
 SVLFCD1  EQU   E5X         0000        LEVEL 1 SAVE FOR LCD/FCD
 ENDBUF1  EQU   E6X         0000        LEVEL 1 SAVE FOR END OF BUFFER
 SVCARL1  EQU   E7X         0000        LEVEL 1 SAVE FOR CURRENT CHARACTER
 LEV2A    EQU   E8X         0000        LEVEL 2 SBA 
 LEV2B    EQU   E9X         0000        LEVEL 2 RITE CHARACTER
 LEV2C    EQU   EAX         0000        LEVEL 2 FLAGS 
 LEV2D    EQU   EBX         0000        LEVEL 2 DESTINATION BUFFER
 LEV2E    EQU   ECX         0000        LEVEL 2 CRC 
 SVLFCD2  EQU   EDX         0000        LEVEL 2 SAVE FOR LCD/FCD
 ENDBUF2  EQU   EEX         0000        LEVEL 2 SAVE FOR END OF BUFFER
 SVCARL2  EQU   EFX         0000        LEVEL 2 SAVE FOR CURRENT CHARACTER
******************************************************************************
*         REGISTERS FOR PBFCOPY                                              *
******************************************************************************
 BPTRS    EQU   E0X         0000        PBFCOPY POINTER TO SOURCE BUFFER
 SLFCD    EQU   E1X         0000        PBFCOPY FIRST ENTRY OF SOURCE LCD/FCD 
 BPTRD    EQU   E3X         0000        PBFCOPY POINTER TO DESTINATION BUFFER 
 DLFCD    EQU   E4X         0000        PBFCOPY FIRST ENTRY OF DEST. LCD/FCD
 PBFSVQ   EQU   E5X         0000        PBFCOPY SAVE Q FOR RETURN 
 SCHAR    EQU   E6X         0000        PBFCOPY TWO SOURCE CHARACTERS 
 SFCD     EQU   E7X         0000        PBFCOPY CURRENT SOURCE FCD
 SCKUL    EQU   E8X         0000        PBFCOPY CURRENT FCD POINTER 
 DFCD     EQU   E9X         0000        PBFCOPY CURRENT DEST. FCD POINTER 
******************************************************************************
*         REGISTERS USED FOR MISCELANEOUS FUNCTIONS                          *
******************************************************************************
 BITFLAG  EQU   F0X         0000        FLAGS FOR WHO IS CURRENTLY RUNNING
 PORT     EQU   F1X         0000        PORT TABLE START ADDRESS
 INTARRY  EQU   F2X         0000        ADDR. OF POINTER TO INTERMEDIATE ARRAY
 CLAMAX   EQU   F3X         0000        CLA ADDRESS UPPER BOUNDS + 1
 COLHLT   EQU   F4X         0000        PBSTOP MACRO ADDRESS
 OP5ACT   EQU   F5X         0000        OPCODE 5 STATE INSTRUCTION ACTION 
 FDINDEX  EQU   F6X         0000        MVCHXX DESTINATION INDEX POINTER
 ISTASV   EQU   F7X         0000        INPUT STATE TABLE SAVE
 CMD12    EQU   F8X         0000        SAVE COMMAND WORD 1 AND 2 
          BOX 
          THE FOLLOWING REGISTERS ARE RESERVED
          EBOX
 MFREVLV  EQU   FCX                                    MUX FIRM REV. LEVEL
 MMSIZE   EQU   FDX                     MICRO-MEMORY SIZE:  0=4K, 1=8K
 CCPLEVEL EQU   FEX                     CCP LEVEL 
 MCPSAVE  EQU   FFX                     M/C SAVE AREA FOR P REGISTER
$ 
          BOX 
          STATUS MODE ONE EQUATES 
          EBOX
 MLIABUSY EQU   15          SM115       MLIA OUTPUT 
          BOX 
          STATUS MODE TWO EQUATES 
          EBOX
 SSTB     EQU   5           SM201 
 PART     EQU   6           SM202 
 P3XINT   EQU   5           SM205 
          BOX 
          EQUATES FOR BIT GENERATOR 
          EBOX
 SUPCHN   EQU   0           SUPPRESS CHAINING OF BUFFERS FLAG 
 CHARPRES EQU   1           CHARACTER PRESENT IN LCB
 NCEOBL   EQU   0 
 NCBUFCLA EQU   1           BUFFERED CLA FLAG IN MLCB 
 NCEOS    EQU   2           END OF SOURCE FLAG IN MLCB
 NCNXCCA  EQU   3           LEFT/RIGHT CHAR. FLAG IN MLCB 
 NASTOUT  EQU   3           STOP OUTPUT FLAG
 SUPRESWL EQU   5           SUPPRESS EVENT WORK LIST (IN LCB) 
 SUPRESBF EQU   5           SUPPRESS EVENT WORK LIST (IN BUFFER FLAG WORD)
 EOLB     EQU   1           END OF LOOP BATCH 
 NAOON    EQU   1           OUTPUT ON 
 ISRBIT   EQU   4           STATUS REQUESTED BIT, WORD 0 OF PORT
 NCNA     EQU   11          NEXT CHAR NOT AVAILABLE, STATUS WORD TWO
 BIT1     EQU   1           SET OR RESET BIT 1
 BIT6     EQU   6           SET OR RESET BIT 6
 BIT7     EQU   7           TO SET OR RESET BIT  7
 BIT8     EQU   8           TO SET OR RESET BIT  8
 BIT9     EQU   9           TO SET OR RESET BIT  9
 LCTFLAG  EQU   2           LAST CHARACTER TO TRANSMIT FLAG 
 UINTRTN  EQU   3EX         EMMULATOR RETURN WHICH RESETS FILE ONE
          EJECT 
          ORG   0 
 PFMUX                                  ODDP     J
                                        STOP     J
          EJECT 
          EJECT 
          ORG   400X
******************************************************************************
*         START OF ODD PROCESSOR - ODD INTERRUPT RECEIVED                    *
******************************************************************************
******************************************************************************
*         SAVE REGISTERS A,Q,P, FOR 1700 EMULATOR                            *
******************************************************************************
+ODDP     A     A           F1          K=ODDPA   U    SAVE A REG.
-                                       INI.     J     STATE INST. EXIT 
+         B           Q     F1          K=ODDPQ        SAVE Q REG.
          A     P           F1          K=ODDPP        SAVE P REG.
******************************************************************************
*         GET CLA ADDRESS AND CHECK WHITHIN RANGE                            *
******************************************************************************
                                        K=ODDINP       INPUT ODD ADDRESS
          A     F1          Q     RTJ   M05INP   J       *
+         A     A           F1          K=ODDCLA       SAVE CLA ADDRESS 
                                        K=CLAMAX       TEST FOR CLA GT MAX
          SUB   A     F1                N=3       NU     *
+         ALOE                          K=PORT    U    COMPUTE PORT ADDR
-                                       EVNT05   J     BAD CLA, BUILD WL
******************************************************************************
*         SET UP REGISTERS AND F1 REGISTERS FOR ODD PROCESSING               *
*                                                                            *
*         X - ODD CRC STATE                                                  *
*         P - WORD 2 OF MLCB, ADDRESS OBP                                    *
*         I - MLCB WD0 CONTENTS - ODD STATE, CRC STATE, RITE CHAR            *
*                                                                            *
*               PORTA - NAPORT ADDRESS FOR THIS LINE                         *
*               MLCBA - MUX LCB ADDRESS                                      *
******************************************************************************
          ADD   A     F1    F1          K=PORTA        SAVE NAPORT ADDRESS
          ADD+  F     ZERO  P           K=ODDCLA       GET PORT ADDR. WD1 
          A     F1          Q     READ  N=F200FF       READ MLCBA FROM PORT 
          A     MEM         F1          K=MLCBA   ZL   SAVE MLCBA, TEST ZERO
+         ADD   F     BG    P     READ  14        U    READ MLCB WD0, GET WD2 
-         A                             ODDUNSL  J     UNSOLICITED ODD
          A     MEM         I           K=F10F00  NU   SAVE MLCB0, TEST EOB 
+         A.B   I     F1    X     L8EA  ODDEOB.0 J     MAY BE END OF OUTPUT 
-ODDP.1   A+B   I     F2    A           N=4            ODD STATE TO A 
          ALEA                          K=F1F000       SHIFT ODD STATE
          A     A           F           N=F200FF       ODD STATE TO F 
******************************************************************************
*         OUTPUT THE CLA ADDRESS                                             *
******************************************************************************
 ODDP.2   A+B   I     F1    X     L8EA  K=CLAID-       CRC STATE TO X 
          A+B   F1    Q     A           K=OUTDATA      SET OUT ADDR 
          A     F1          Q     RTJ   M05OUT   J     OUTPUT CLA ADDR
******************************************************************************
*         XFORM TO DETERMINE ODD CONTROL STATE -  BUF,EOS,RIGHT CHAR.        *
*         THE XFORM JUMP TABLE IS AT LOCATION 4F0X.                          *
******************************************************************************
+         B           F           PAGE10TMA/S2    U    DECODE ODDD CONTROL
******************************************************************************
*         PROCESS LEFT CHARACTER (NON BUFFERED, NOT EOS)   STATE 0           *
******************************************************************************
 ODDLFT.0                         RTJ   ODDGET   J     GO GET CHAR AND UPDATE 
+                                 RTJ   K=PORTA        SET RETURN, GET NAPORT 
-         B           X           PAGE8 TMA/S2    U    GO DO CRC ON CHAR. 
+                                       K=DATAID+      OUTPUT THE CHAR. 
          A+B   A     F1    A     RTJ   M05OUT.0 J       *
          A     X           X     L8EA  K=MLCBA        GET LCB ADDRESS
          A     F1          F           K=ODDPA          *
          A+B   P     X     X     WRITE ODDEXIT  J     WRITE MLCBA WD0
******************************************************************************
*         OUTPUT THE RIGHT CHARACTER (NON BUFFERED CLA)        STATE 1       *
******************************************************************************
+ODDRIT.0 A.B   P     F1    P     RTJ   K=PORTA        SET RTJ, GET NAPORT
          B           X           PAGE8 TMA/S2    U    GO XFORM TO CRC
+ODDRIT.1 A     X           X     L8EA  K=DATAID+      OUTPUT THE CHARACTER 
          A+B   A     F1    A     RTJ   M05OUT.0 J       *
          A     F1          F           K=ODDPA        K SET BY CRC PROCESS 
          A+B   P     X     X     WRITE ODDEXIT  J     WRITE MLCBA WD0
******************************************************************************
*         OUTPUT THE RIGHT CHARACTER (NON BUFFERED CLA,EOS)    STATE 3       *
******************************************************************************
 ODDRIS.0 A     X           Q           K=F1000F       MASK CRC STATE 
          A.B   X     F1    X           K=F18000  ZL   TEST CRC STATE=0, ST 2 
+         ZERO              F                     U    NOT ZERO, ZERO I 
-         A                             ODDLCT   J     GO OUTPUT LCT
+         A     F           I     RTJ   K=PORTA        SET RETURN, GET PORT 
-         B           Q           PAGE8 TMA/S2    U    GO CRC CHAR. 
+         A+B   P     BG    P           3              SET STATE FOR EOS, RITE
          A     P                                 NU   TEST EOB FROM CRC
+                                       ODDLCT   J     GO OUTPUT LAST CHAR. 
-                                       ODDRIT.1 J     GO OUTPUT CHARACTER
          EJECT 
          ORG   420X
*         TRANSFORM ADDRESS FOR REENTRY POINT F1=1
-                                       IDPEXIT  J     DISCARD CHAR 
******************************************************************************
*       GET NEXT CHARACTERS (LEFT AND RITE) FROM MEMORY AND UPDATE           *
*       THE OUTPUT BUFFER POINTER (OBP). THE OBP IS CHECKED TO SEE IF        *
*       THE END OF BUFFER IS REACHED AND CHAINS TO THE NEXT BUFFER.          *
*                                                                            *
* INPUTS  -  I = ODD STATE,CRC STATE,RITE CHARACTER 
*            P = MLCB ADDRESS + 2 (OBP ADDRESS)                              *
* OUTPUTS -  A = NEXT CHARACTER TO OUTPUT (LEFT CHARACTER)                   *
*            P = BITS 8-15 IS RIGHT CHARACTER OF THE WORD                    *
*            I = 0 IF THE LEFT CHARACTER IS THE LAST OF THE BLOCK            *
*            I = NON ZERO IF NOT THE LAST CHARACTER.                         *
*            P-EOS FLAG SET IF THE RITE CHARECTER IS THE LAST.               *
*            P-EOB FLAG SET IF THE FIRST CHARACTER OF THE NEXT BUFFER        *
*              IS IN THE RITE CHARACTER POSITION.                            *
*            P-EOB FLAG SET IF THE CRC STATE IS ZERO AND THE LEFT            *
*              CHARACTER IS THE LAST CHARACTER OF THE BLOCK.                 *
*            OBP UPDATED IN THE MUX LCB.                                     *
*            LCD UPDATED IN THE MUX LCB.                                     *
******************************************************************************
******************************************************************************
*         READ LCD,OBP, LEFT AND RITE CHARACTERS                             *
******************************************************************************
 ODDGET   A     I           F           K=PORTA        GET PORT ADDR. SAVE I
          A     F1          A                            *
          A     P           Q     READ                 READ PORT WD0,SAVE BUF 
          A     MEM               GATEI K=F14000       SAVE PORT WD0 IN I 
          A.B   I     BG          READ  NAOON     ZL   READ OBP, TEST OON 
+         A     MEM         I                     U    OBP TO I 
          A     MEM         A           ODDUN.1  J     SAVE OBP 
 ODDGET.4 A.B   F     F1    F1    READ  K=TEMP         READ CHARS, SAVE BUF C 
          A     MEM         A           K=F10001       OUTPUT CHARS TO A
          SUB   P     F1    P           K=TEMP         MLCB WD1 ADDRESS 
          A+B   F1    BG    F1    READ  NCNXCCA        READ MLCB WD1, SET RIT 
          A     MEM         F1          K=MLCBWD1      MLCB WD1 TO FILE 
          A.B   A     F2    P                          RIGHT CHAR. TO P 
          A.-B  A     F2    A     L8EA  K=TEMP         LEFT CHAR TO A 
          A+B   P     F1    P           K=MLCBWD1      NEXT STATE AND RITE CH.
******************************************************************************
*         TEST FOR END OF BUFFER  Q=OBP ADDR., I = OBP                       *
******************************************************************************
          A.B   F1    F2    F           RR0E           LCD/2 TO F 
          EOR   I     F     F           K=F1007F       COMPARE WORD CT
          A.B   F1    F                 K=BIGBUF  ZL   TEST END OF BUFFER 
+         B           Q     Q                     U    NOT END, UPDATE OBP
-         A+B   I     F1    F           K=MLCBWD1 L    LOCATE END OF BUFFER 
+         ADD+  I     ZERO  F     WRITE          RU    UPDATE OBP, EXIT 
******************************************************************************
*         CHAIN TO THE NEXT BUFFER                                           *
******************************************************************************
-ODDGET.1 A     F1                      K=F12000  NU   TEST SUPRESS CHAIN 
+         A+B   P     F1    P           ODDGET.3 J     MAY BE END OF BLOCK
-ODDGET.2                         READ                 READ CHAIN WORD
          A     MEM         I           K=F12000  ZL   TEST CHAIN = 0 
+         A                       READ            U    NOT 0, READ LCD/FCD
-         A+B   P     F1    P           ODDGET.3 J     CHAIN = 0, MAY BE EOB
+         A     MEM         F1          K=NFCDSV       SAVE LCD/FCD 
          A     F           Q                          SAVE AGAIN 
          -A.B  F2    Q     F1    L8EA  K=NLCDSV       SET NEW LCD
          A.B   F2    Q     Q                          GET NEW FCD
          SUB   F1    Q                 K=BIGBUF  NU   TEST EMPTY BUFFER
+         A+B   I     F1    F           ODDGET.2 J     EMPTY, GET NEXT
******************************************************************************
*         STORE NEW OBP  AND NEW LCD IN MLCB                                 *
******************************************************************************
-         A     A           F1          K=TEMP         SAVE A 
          B           Q     F           RROE           FCD/2
                                        K=MLCBA        GET MUX LCB ADDR 
          ADD   F1    BG    A           14             GET ADDRESS OF OBP 
          ADD   I     F     F     WRITE K=NLCDSV       STORE NEW OBP
          A.B   I     F2    F           RL0E           OBP TIMES 2
          ADD   F1    F     F           K=MLCBWD1      ADD LCD
          A.-B  F1    F2    Q                          GET MLCB WD 1 LEFT 
          SUB   A     BG    A           15             GET MLCB WD1 ADDRESS 
          A+B   F     Q     F     WRITE K=MLCBWD1      STORE NEW LCD
******************************************************************************
*         TEST FOR LAST = RITE,NEXT = RITE                                   *
******************************************************************************
          A.B   F1    BG                15        ZL   TEST LAST = LEFT/RITE
+         A                             K=TEMP    U    RITE, STATE = 1
-         ZERO              P           K=TEMP         LEFT, STATE = 0
          A     F1          A           K=NFCDSV       RESTORE A
          A.B   F1    BG                15        ZL   TEST LEFT/RITE FCD 
+         A+B   P     BG    P           NCEOBL         SET NEXT STATE= 8 OR 9 
-         A                                      RU    LEFT, STATE = 0
****************************************************************************
*         CONTINUE WITH CHAIN TO RITE CHAR. - OUTPUT THIS RITE FIRST       *
****************************************************************************
 ODDP.3   A.-B  P     BG    P           3              SET NEXT STATE = 1X00
          A     P           I           K=F100F0       CURRENT STATE = 0X01 
          ADD+  F1    ZERO  F           K=F1F000       SET NEEDED MASK
                                        ODDP.2   J     CONTINUE PROCESS 
          ORG   4F0X
******************************************************************************
*         CHAIN = 0, END OF BLOCK                                            *
******************************************************************************
 ODDGET.3 A     P           I           K=MLCBWD1      GET LCD, I=NON ZERO
          A.B   F1    BG                15        ZL   IS LAST CHAR RITE
+                                                RU    RITE, STATE 3, EXIT
-         ZERO              F           K=F1000F       LEFT, TEST CRC = 0 
          A.B   F1    X                           ZL     *
+         A     F           I                    RU    CRC, WAIT EOB, STATE 3 
-                                       ODDLCT   J     NO CRC, GO OUTPUT LCT
******************************************************************************
*         EOB SET, MAYBE END OF BLOCK IF EOS IS SET, ELSE NEW BUFFER RITE CH *
******************************************************************************
 ODDEOB.0 A.B   I     BG                NCEOS     ZL   TEST END OF SOURCE 
+         B           Q     A           EVNT02.0 J     EOS, PORT TO A REG.
-         A.B   I     BG                NCNXCCA   ZL   TEST LEFT/RITE FLAG
+         A     I           P           ODDP.3   J     RITE, CONTINUE PROCESS 
-         A                       RTJ   ODDGET   J     LEFT, GO READ RITE CHAR. 
******************************************************************************
*            INPUTS - P = NEXT STATE = 1 OR 9, IF NOT EOS                    *
*                         NEXT STATE = 3     , IF END IF SOURCE              *
*                     X = CRC STATE IN 12-15                                 *
*                     I = NOTHING OF VALUE                                   *
*                     A = LEFT CHARACTER, NOT NEEDED                         *
*             OUTPUTS F = CURRENT STATE = F1 IF NOT EOS, F3 IF EOS           *
*                     I = NEXT STATE IN MSB, CRC STATE,CUR C IN LSB          *
*                           0 = NEXT CHARACTER IS LEFT                       *
*                           3 = EOS AFTER THIS RITE CHARACTER                *
*                           8 = READ NEXT RITE AND OUTPUT                    *
*                           9 = OUTPUT RITE, GET NEXT RITE                   *
*                     F = CURRENT STATE TO EXECUTE = F1                      *
*                     P = DON'T CARE                                         *
*                     Q = CLA NUMBER                                         *
******************************************************************************
* 
+                                       K=ODDCLA       CLA ADDR 
-         A     F1          Q           K=F1000F         *
          A.B   X     F1    X     L8EA                 POSITION CRC IN 4-7
          A+B   P     X     P           K=F100F0       OR IN CRC STATE
          ADD+  F1    ZERO  F           K=F1F000       CURRENT STATE = F1 
          A.B   P     BG                2         ZL   TEST EOS 
+         A+B   F     BG    F           14             YES, SET IT
-         A     P           I           ODDP.2   J     NEXT STATE ETC. TO I 
******************************************************************************
*         CONTINUATION OF BUILD 02 WORK LIST                                 *
******************************************************************************
 EVNT02.6 ADD   I     BG    F           15             GET TO WD1 OF LCB
                                  READ  K=F10001       READ IT
          A     MEM         A 
          A.B   A     BG                2         ZL   RESET TIMMER 
+                                       EVNT02.1 J     YES
-                                       EVNT02.3 J     NO 
          BOX 
          EBOX
          ORG   440X
$         TRANSFORM ADDRESS FOR REENTRY POINT F1=2
-                                       STOREACT J     GO STORE CHARACTER 
          EJECT 
          BOX 
          M05  OUTPUT SUBROUTINE
                A  MUST HAVE DATA WORD
                Q MUST HAVE DEVICE ADDRESS = 0508 
          EBOX
 M05OUT.0                               K=OUTDATA      SELECT MLIA OUT
          A     F1          Q           K=MLCBA        SEND DEVICE ADDRESS
+M05OUT   A.-B  SM1   BG    SM1         MLIABUSY       RESET MLIABUSY- IF BUSY
-         A.B   SM1   BG                MLIABUSY  ZL   THE BUSY BIT STAYS SET 
+                                       M05OUT   J
 M05INP   B           Q     IOA                        SEND DEVICE ADDR 
          A     A           IOD         SETF/PART      SEND DATA-SET PORTLINE 
          ADD   X     X                 SETF/SSTB      DUMMY INST-WAIT 275 NS 
                                        CLRF/SSTB      CLEAR STROBE 
                                        SETF/SSTB      SET STROBE 
          B           INRD  A           CLRF/SSTB      CLEAR STROBE 
                                        CLRF/PARTRU    CLEAR PORTLINE 
          EJECT 
          BOX 
          BUILD WORKLIST ENTRY 02 ON OUTPUT BUFFER TRANSMITTED
                       1. SHUT OFF CLA
                       2. BUILD WORKLIST
                       3. EXIT
          EBOX
 EVNT02.0                               K=OUTDATA      OUTPUT CLA ADDRESS 
          A     F1          Q           K=CLAID-         *
          A+B   A     F1    A     RTJ   M05OUT   J         *
+                                       K=PORTA        GET PORT TABLE 
          ADD   F1    BG    F           14             READ PORT WORD 2 
          A                       READ                   *
          A     MEM               GATEI 
          ADD   F     BG    P           14             READ NFCCST
                                  READ  K=F18200         *
          A.B   I     BG                10        ZL   RTS CONSTANT?
+         A.B   MEM   F1    F                     U    YES SAVE RTS/ION 
          A.B   MEM   BG    F           6              NO SAVE ION
          A     P           P                          WRITE CMD1 BACK
          A+B   I     F     F           WRCH/0           *
          A.-B  F     F2    A     L8EA  K=F1CD00       CMD TO A 
          A+B   A     F1    A     RTJ   M05OUT   J     OUTPUT TO CLA
+                                       K=PORTA        GET WORD 0 
          A     F1          P           K=MLCBA          *
          A     F1          I     READ  K=F1401F       RESTORE I
          A.-B  MEM   F1    A           K=F18000       RESET STATUS COUNT 
          A     P           P                          WRITE WORD 0 BACK
          A.B   F     BG                6         ZL   IS ION IN CMD
+         A+B   A     F1    A     WRITE EVNT02.6 J     YES, SET IOON
-         A.-B  A     F1    A     WRITE EVNT02.6 J     NO, RESET IOON 
          BOX 
          EBOX
 EVNT02.3 A.B   A     BG                1         ZL    USER WANT WORKLIST
+         A     I           F1          K=OLDLCB  U      Y E S
-         ADD   I     F1    F           EVNT02.7 J      N O 
+         ADD   I     BG    F           14                 READ OBP 
          A     X           F1    READ  K=SVX          SAVE X 
          B           MEM   F1          K=OLDOBP       SAVE OBP 
                                        K=CODE02
          A     F1          F1          K=EVNTCD       SET EVENT CODE 
                                  RTJ   MAIN.1   J     PROCESS W/L
+                                       K=OLDOBP       SET P = OBP IN CASE WE 
          A     F1          P           K=OLDLCB       CONTINUE PROCESSING
          A     F1          I           K=SVX          RESTORE I AND X
 EVNT02.8 A.-B  F1    BG    X           0              CLEAR END OF BLK 
          A                             ODDEX.0  J     EXIT ODD 
          BOX 
          NO WORKLIST REQUIRED
          EBOX
 EVNT02.7 A     X           F1    READ  K=SVX           SAVE X
          A     MEM         P           EVNT02.8 J      GET OBP ADDR
          BOX 
          CHAR XPANSION COMES HERE TO CHECK FOR ODD INT.
                THIS ROUTINE CANNOT BE REMOVED FROM PAGE 4
          EBOX
-CHRXPAN  A     X           F1          K=XSVXPN         SAVE COUNT 
+                                 RTJ   P1CHECK  J      CK ODD INT
+                                       K=XSVXPN          RESTORE CNT 
          A     F1          X           SPECADD1 J       CONTINUE 
 ACCEXIT                                RTNWHR   J     SEE WHERE TO RETURN
          EJECT 
          EJECT 
          BOX 
          I N P U T   D A T A   P R O C E S S O R 
          EBOX
$ 
          BOX 
          ORIGINS, PAGE EQU FOR IDP 
          EBOX
 PAGE4    EQU   4           PAGE WITH REENTRY POINTS
 PAGE5    EQU   5           STATE PROCESS INSTRUCTIONS, ENTRY POINT 
 PAGE6    EQU   6 
 PAGE7    EQU   7 
 PAGE8    EQU   8 
 PAGE9    EQU   9 
 PAGE10   EQU   10
 PAGE11   EQU   11
 PAGE12   EQU   12
 PAGE13   EQU   13
 PAGE14   EQU   14
 PAGE15   EQU   15
 S2       EQU   7           TRANSFORM 7 
          BOX 
          BIT GENERATOR EQUATES 
          EBOX
 NAION    EQU   0           NAION, INPUT ON (NAPORT)
 NAISON   EQU   2           NAISON, INPUT SUPERVISION ON (NAPORT) 
 NCRINCH  EQU   0           NCRINCH, INPUT CHARACTER IN RIGHT BYTE
 NAISR    EQU   4                                      INPUT SUPV. REQUSTED 
 NCNQXL   EQU   4           TRANSLATE FLAG
 PARITY   EQU   5           PARITY FLAG FOR STRIPPING 
 IBUFSIZE EQU   2           INPUT BUFFER SIZE -- 0=SMALL -- 1=LARGE 
 CHRRCV   EQU   1           CHARACTER RECEIVED FLAG 
          EJECT 
$         TRANSFORM ADDRESS FOR REENTRY POINT F1=3
          ORG   460X
-                                 RTJ   ACCUMCRC J      ACCUMULATE CRC
+                                       STORECRC J     GO STORE WITH CRC
$         BEGIN INPUT DATA PROCESSOR
+IDP      A     P           F1          K=IDPP         SAVE P 
                                        K=SENSLFP      GET SENSE LFP COMMAND
          A     F1          Q     RTJ   M05INP   J     INPUT LFP FROM MLIA
+                                       IDP01    J     CK CIB OVER FLOW 
-IDPLOOP                          RTJ   NEXTNFP  J     GET 1ST LOOP CELL
          A.B   A     F2    F1          K=LC1SV         SAVE CLA ADDR 
          A     F           A           K=CLAMAX
          SUB   A     F1                N=3       NU     IS CLA LEGAL 
+         AL0E                          K=PORT    U     YES, SHIFT CLA 3
-                                       ERR05    J      NO, ILLEGAL 
+         ADD   A     F1    F1          K=PORTADR 
          ADD+  F     ZERO  X     READ
          A.B   MEM   BG          GATEI NAISON    ZL     TEST NAISON
+         A     I           F1          K=PORTWD0 U    ITS ON SAVE CONTENTS 
-                                       EVNT07   J     ISON=0, UNSOL INPUT
+                                 RTJ   NEXTNFP  J     GET NEXT LOOP CELL 
+                                       N=F20F00       MASK ID OF FRAME 
          A.B   A     F2    P           K=DATAID  L    MASK CELL ID 
-         EOR   P     F1                N=F200FF  ZL   IF ZERO DATA 
+                                       SUPER    J     NOT DATA 
          EJECT 
$         SECOND LOOP CELL WAS DATA 
-DATA     A     A           F1          K=LC2SV   NU   TEST EOLF.SAVE 2ND CELL
+         A     X           X           PROCHAR  J       YES. PROCESS CHAR
-                                 RTJ   NEXTNFP  J        NO. GET 3RD LOOP CELL 
+         A     A           F1          K=LC3SV   NU   TEST E0LF, SAVE 3RDCELL
+                                       EVNT06   J     YES, ERROR 
          A.-B  A     BG    F1          4              NO, CLEAR BIT 4 OF LC3 
+                                 RTJ   NEXTNFP  J     GET 4TH CELL 
+         A     A           F1          K=LC4SV   NU   TEST E0LF
+                                       EVNT01   J     OK, BUILD W/L
-                                       EVNT06   J     ILLEGAL LINE FRAME FRMT
          BOX 
          ACCUMULATE CRC ON UNTRANSLATED CHARACTER AND
                STORE IN NCCRCS OF LCB
                ENTRY POINTS   F1 = 3,4 
          EBOX
 ACCUMCRC -B          CRTJ  F1          K=ACMRTJ           SAVE CALLER
                                        K=TPFLG 
          A     F1                                ZL    IS TP RUNNING 
+                                 RTJ   TRSLAT   J      YES, GO XLATE 
-                                       K=0              NO, DUMMY INST 
+                                       K=F10006
          ADD   A     F1    F     GATEI K=TPFLG 
          A     F1                                ZL    IS TP RUNNING 
+                                 READ  K=TCAR    U     YES, GET TCAR 
-                                 READ  K=UCAR          NO, GET UCAR
                MEM         A*                         OUTPUT PARTIAL SUM 
          ADD   I     BG    X           13             ADD 4
          A     F1          A     READ  K=FX           READ NCCRCP
          A.B   MEM   K     X     L8EA                 MASK 
          A+B   A     X     X                          OUTPUT INCOMING CHAR 
                X           X*          N=8            AND POLYN TYPE CYC ENC 
          AL0E                                         WAIT AT LEAST 760 NSEC 
          A     I           A           K=ACMRTJ          RESTORE A 
          A     A*          Q 
          A     F           F           N=F200FF       WRITE NCCRCS 
          B           Q           WRITE ACCEXIT  J     WRITE NCCRCS 
          ORG   480X
-                                 RTJ   ACCUMCRC J     ACCUMULATE CRC 
+                                       IDPEXIT  J     AND DISCARD CHAR 
          EJECT 
          BOX 
          NEXTNFP SUBROUTINE
              1.INCREMENTS  NEXT FRAME POSITION POINTER 
              2.IF AT END OF CIB, RESETS TO TOP OF CIB
              3.READS UP THE CORRESPONDING LOOP CELL INTO REGISTER A
          EBOX
 NEXTNFP                                K=NFP          NEXT CIB READ ADDR.
          A     F1          F           K=F10001       SET CIB READ 
          ADD   F1    F     F     READ  N=F200FF       READ,THE BUMP NFP
          A     MEM         A           K=CIBEND       A = NEXT LOOP CELL 
          EOR   F1    F                 K=CIB     ZL   NFP= BOTTOM OF CIB 
+         A     F           F1          K=NFP     U    NO, RETURN 
-         A     F1          F1          K=NFP     L    YES, SET NFP=CIB 
+                                                RU    RETURN,TO CALLER 
-         ZERO              F                          CLEAR CIBOVF FLAG
          B           F     F1          K=CIBOVF  U 
+                                                RU    RETURN TO CALLER 
          EJECT 
          BOX 
          PROCESS INCOMING CHARACTER (ALL CONDITIONS ARE NORMAL)
                INPUT   X, POINTER TO WORD1 OF NAPORT 
          EBOX
 PROCHAR  A.B   I     BG                NAION     ZL   TEST ION BIT 
+PROCHAR.0                        READ            U       READ LCB FROM PORT
                                        EVNT07.1 J     I0N = 0 BUILD WORK LIST
          ADD+  MEM   BG    X           14             ADD 3
          A     F1          Q     READ  N=F200FF       READ WD 3 OF LCB 
          B     X     MEM   X     GATEI K=LC2SV        SAVE BOTH
          A.B   X     BG                PARITY    ZL   TEST PARITY BIT
+         A     F1          F           K=7FX     U    STRIP
-         A     F1          F           K=FFX          DONT STRIP 
+         A.B   F     K     A                          MASK CHARACTER 
          A     A           F1          K=TCAR         SAVE CHAR
 PROCHAR1 ADD   I     BG    P           14             READ NCISPTP 
          A     A           F1    READ  K=UCAR         SAVE UNTRANSLATED CHAR  *
          A     MEM         F1          K=ISPTA        SAVE POINTER AND PUT 
          A     F           P           K=3FX          PUT IN P REGISTER
          A.B   X     K     F1          K=ISTASV       SAVE INPUT STATE 
          ADD   P     F     A                          ISPTA + ISTA 
          A     X           F1    READ  K=W3LCB         SAVE WD3 OF LCB 
          A     MEM         P                          P GETS INSTR. PTR
          A     I           A           RNI.     J
******************************************************************************
*         OP CODE 1F, F2 = 0 RTRN                                            *
******************************************************************************
 OPCDE.10                         READ  K=F1003F       READ WORD 3
          A.B   MEM   F1    F1          K=ISTASV       SAVE NEW STATE 
                                        K=ISPTA        GET POINTER TABLE
          ADD   F1    F     X           K=W3LCB        ISPTA + ISTA 
          A     F1          X     READ                 GET WORD 3 LCB 
          A     MEM         P           K=F1003F       GET NEXT INST POINTER
          A.-B  X     F1    X                          RESET WORD 3 STATE 
          A+B   X     F     F1          K=W3LCB        RESTORE STATE
                                        RNI.     J     GET NEXT INSTRUCTION 
          EJECT 
******************************************************************************
*         ENTRY POINT FOR ACCUMULATE CRC AND EXECUTE NEXT INSTRUCTION        *
******************************************************************************
          ORG   4A0X
-                                 RTJ   ACCUMCRC J    CALCULATE CRC 
                                        INI.     J    GET NEXT INSTRUCTION
          BOX 
          EVENT CODE 05     CLA ADDRESS OUT OF RANGE - IDP
          EVENT CODE 06     ILLEGAL LINE FRAME FORMAT 
*         EVENT CODE 07     UNSOLICTED INPUT
          EBOX
+ERR05                                  K=CODE5.1 L    CLA OUT OF RANGE-IDP 
-EVNT06                                 K=CODE06  L    ILLEGAL LINE FRAME 
 EVNT07                                 K=CODE07       UNSOLICTED MESSAGE 
 EVNT7.1  A     F1          F1          K=EVNTCDI      COMMON EVENT CODE
+                                 RTJ   MAIN     J     PROCESS WORK CODE LIST 
*               I N S T R U C T I O N   N O T    U S E D
+EVCKLFP                                K=OLDLFP       INDEX TO CIB 
          A     F1          F           K=CIB          START ADDR OF CIB
          ADD   F1    F     F           K=NFP          NEXT CIB PT INPUT
          EOR   F1    F                           ZL   IS NFP = LFP 
+                                 RTJ   NEXTNFP  J     GET NEXT LOOP CELL 
-                                       IDPEXIT  J     CIB EMPTY, EXIT
+         A     A           F                     NU   END OF LOOP FRAME
*               I N S T R U C T I O N   N O T   U S E D 
+                                       IDPEXIT  J     YES, EXIT
                                        EVCKLFP  J     CK IF NFP = LFP
* 
-EVNT07.1 A     A           F           K=CODE07  NU   = END OF LOOP FRAME
          A     F1          F1          K=EVNTCDI L    COMMON EVENT CODE
                                        EVNT7.1  J     FIND NEX LOOP FRAME
-                                 RTJ   MAIN     J     BUILD WORK LIST
+                                       IDPEXIT  J     GET NEXT LOOP FRAME
          EJECT 
          BOX 
          ALL EVENT CODES WILL BE BUILT IN THIS ROUTINE 
                ENTRY POINTS
                      MAIN -  IDP EVENT CODES 
                      MAIN.1 -  ODD EVENT CODES 
                EXIT POINTS 
                      RETURN ON RTJ REG 
          EBOX
 MAIN     -B          CRTJ  F1          K=RTRNI        SAVE IDP RTJ REG 
                                  RTJ   P1CHECK  J       CHECK FOR ODD INT
+                                       K=EVNTCDI 
-         A     F1          F1          K=EVNTCD        COMMON W/L CODE 
+                                       K=RTRNI 
-         A     F1          F1          K=RTRNO        COMMON RTJ SAVE
+                                       K=LC1SV 
-         A     F1          X           N=F200FF
+         A.B   X     F2    F1          K=ODDCLA       COMMON CLA ADDR
-                                       K=OLDIBP
+         A     F1          F1          K=OLDOBP  U      COMMON WORD 3
-MAIN.1   -B          CRTJ  F1          K=RTRNO        SAVE ODD RTJ REG 
+         ONE               F1          K=PFWLFLG      SET FLAF FOR BUF STAMP 
-                                       K=PFWLCB
+         A     F1          X     RTJ 
-                                       PFLISTPT J     GET W/L ADDR 
+         ZERO              F1          K=PFWLFLG        ZERO BUF STMP FLG
          A     A           A           K=EVNTCD
          A     F1          F     WRITE K=ODDCLA       WRITE PROPER EVENT CODE
          A     F1          F     L8EA                   PUT CLA IN LEFT HALF 
          ADD+  A     ZERO  A                          BUMP W/L ADDR
          A     F           F     WRITE K=OLDOBP         WRITE CLA ADDR 
          ADD+  A     ZERO  A                            BUMP WRITE ADDR
          A     F1          F     WRITE K=RTRNO        WRITE PROPER WD3 
                                        RTNWHR   J     SEE WHERE TO RETURN
          EJECT 
          EJECT 
          BOX 
          CHECK FOR ODD INTERRUPT - P1CHECK 
          EBOX
          BOX 
          P1CHECK MAY BE CALLED ONLY BY PFIDP. DEPENDS O
          P2 INTERRUPT, PFIDP, REMAINING SET. 
          A,P AND Q ARE PRESERVED.
          F,I,K,N, AND X ARE DESTROYED. 
          P1CHECK SHOULD NOT BE CONSIDERED TO BE  PART OF 
                LIST SERVICE
          EBOX
 P1CHECK                                          INTU  TEST ANY INTERRUPTS 
+         -B          INTA  X                     ZL   TEST ODD INT.
-                                                RU    NONE 
+                                                RU    ". 
-P1CHEC1  -B          CRTJ  F1          K=IDPRET       SAVE CALLERS ADDR. 
                                        ODDP     J     SERVICE P1 INT 
$ 
$         AFTER SERVICING ODD, WE RETURN TO ALLEXIT IN PAGE 3 
$ 
          EJECT 
          BOX 
          STATE PROCESS INSTRUCTIONS WILL BE DECODED BY THE 
          OPCODE. THE OPCODE RESIDES IN THE LOW ORDER 5 BITS. 
          A MASK WILL BE USED TO TRANSFORM TO PAGE3 LOCATIONS 0-1F
          EBOX
          BOX 
          $ 
          I N P U T S 
                P     STATE INSTRUCTION POINTER 
                F1    (UCAR) UNTRANSLATED CHARACTER 
                F1    (TCAR) TRANSLATED CHARACTER 
                A     POINTS TO WORD 3 OF THE LCB 
          $ 
          O U T P U T S 
                I     STATE INSTRUCTION 
                Q     F1 FIELD OF INSTRUCTION 
                N     00FF MASK 
          EBOX
+INI.     ADD+  P     ZERO  F           K=F100E0  INTU INCRMENT TO NEXT INST. 
-RNI.     A     P           F           K=F100E0  INTU CHECK FOR ODD INT. 
+         -B          INTA  X           RNI2     J     MAYBE ODD INTERRUPT
-RNI.1    A     F           P     READ  N=F200FF       READ INST
$ 
$         THE NEXT INSTRUCTION THE ADD IS HERE ONLY TO MAKE THIS
$         A B TYPE INST.  THE GATEEIXT RECEIVES MEMORY TO USE FOR 
$         THE TMA/4 AND TK/4 LATE.
$ 
          ADD   MEM         I           GATEIXT        GATE INST. TO I
          A.B   I     F1    Q           8              8 MUST BE IN THE C 
                                  PAGE5 TMA/4     U    TRANSFORM INST.
 RNI2     A     X           X                     ZL   TEST ODD INTERRUPT 
+         A     F           P           RNI.1    J     NO, RETURN TO NORMAL 
-         A     F           P     RTJ   P1CHEC1  J     GO PROCESS ODD 
+                                       RNI.     J   START STATE INST. AGAIN
          EJECT 
          BOX 
          CHECK IF CHAR IS TO BE XLATED, IF YES- XLATE, IF NO- RETURN 
          ENTERED FROM STORECHAR AND STATE PROCESS 4
                      VIA AN RTJ
          EXIT VIA THE RTJ
          EBOX
 TRSLAT                                 K=W3LCB        GET WD 3 OF LCB
          A.B   F1    BG                NCNQXL    ZL   TEST TRANSLATION 
+                                       K=9       U 
-                                       TRSLAT2  J     NO, MOVE CHAR
+         ADD   A     K     F                          F = WD12 OF LCB
                                        K=UCAR
          A     F1          F     READ  RR0E           READ XLATE TABLE ADDR
          ADD   F     MEM   F           K=UCAR          ADD TO CHAR 
          A.B   F1    BG          READ  15        ZL    TEST WHICH CHAR 
+         A.B   MEM   F2    F1          K=TCAR    U       RITE
-         A.-B  MEM   F2    F1    L8EA  K=TCAR          LEFT
+TRSLAT1  -B          CRTJ  F1          K=XLTSV        SAVE RTJ REG 
                                        RTNWHR   J     SEE WHERE TO RETURN
 TRSLAT2                                K=UCAR
          A     F1          F1          K=TCAR          MOVE CHAR 
                                        TRSLAT1  J       EXIT 
          EJECT 
          BOX 
          SUBROUTINE TO ADJUST LCD OF CURRENT BIFFER
                INPUTS - X = CURRENT IBP
          EBOX
 ADJLCD                                 K=BIGBUF        GET BUFFER SIZE 
          A.B   F1    X     F     GATEI RL0E            F = LCD, I = BUF MASK 
                                        K=W3LCB 
          A.B   F1    BG                NCRINCH   ZL    LEFT OR RITE
+ADJLCD1  -A.B  I     X     X                     U     RITE
-         SUB   F     F2    F           ADJLCD1  J       LEFT, SUB 1
          A     F           F     L8EA  WRCH/0   RU    WRITE LCD AND RETURN 
******************************************************************************
*         UNSOLICITED ODD LOGIC                                              *
*                                                                            *
*         THE STATUS OVERFLOW COUNT IS INCREMENTED.  IF THE STATUS COUNTER   *
*         OVERFLOWS, THE CLA ISON,ION, OON BITS ARE TURNED OFF  AND AN       *
*         ODD WORK LIST IS BUILT.  IF THE COUNT DOES NOT OVERFLOW, OON IS    *
*         TURNED OFF AND NO WORK LIST IS BUILT.                              *
*                                                                            *
*         INPUTS   - F1 PORTA = ADDRESS OF NAPORT ENTRY                      *
*                  - F1 ODDCLA = CLA NUMBER                                  *
*         OUTPUTS  - CLA CMD WORDS 1 AND 2 OUTPUT TO THE CLA                 *
*                  - UNSOLICITED ODD WL BUILT IF COUNT OVERFLOW              *
*                                                                            *
******************************************************************************
 ODDUNSL                                K=ODDCLA       GET CLA ADDRESS
          A     F1          Q           K=CLAID-         *
          A+B   F1    Q     A     RTJ   M05OUT.0 J     CLAID TO A 
+ODDUN.0  ZERO              X           K=PORTA        GET PORT WD O ADDRESS
          A     F1          A 
                                  READ  K=F107E0       READ NAPORT WD 0 
          A.B   MEM   BG          GATEI 11        ZL   TEST OVERFLOW
+         A     F1          X                     U    YES, SKIP INCR.
-         ADD   I     BG    F     WRITE 15             INCR. OVERFLOW COUNT 
+         A+B   X     BG    X     RTJ   7              OUTPUT COMMANDS TO CLA 
-         A     F           I           OUTCLA   J       *
+         A.B   I     BG                11        ZL   DID OVERFLOW OCCUR 
+                                       EVNT04   J     GO BUILD UNSOL. ODD WL 
-                                       ODDEX.0  J     EXIT ODD 
          EJECT 
          BOX 
          SECOND CELL WAS SUPERVISION 
          EBOX
+SUPER    A.-B  A     F2    P           K=SUPVID       SVP ID -- 0D --
          EOR   P     F1                          ZL   ZERO = STATUS 1
                                        EVNT06   J     LINE FRAME ERROR 
          A     A           F1          K=LC3SV        SAVE STATUS ONE
          ZERO              F     RTJ   NEXTNFP  J     GET NXT LOOP CELL
+         A     A           F1          K=LC4SV   NU   SAVE IT, TEST EOLF 
+                                       EVNT01   J      OK, BUILD W/L 
-                                       EVNT06   J      ILLEGAL LINE FRAME
******************************************************************************
*         RESTORE A,Q,P REGISTERS AND EXIT ODD PROCESSING.  ****             *
******************************************************************************
 ODDEX.0                                K=ODDPA 
********* K=ODDPA MUST BE SET BEFORE ENTERING THIS POINT *********************
 ODDEXIT  A     F1          A           K=ODDPQ        RESTORE A
          A     F1          Q           K=ODDPP        RESTORE Q
          A     F1          P           ALLEXIT  J     RESTORE P
          EJECT 
          ORG   4E0X
* 
* 
          BOX 
          ENTRY TO EXTENDED OPCODE 7 STATE INSTRUCTIONS.
          EBOX
* 
* 
          BOX 
          F2 = 0  -  SPECIAL  TEST  CHARACTER EQ. STATE INSTRUCTION(F2=00)
          EBOX
+         ADD+  P     ZERO  X                          P - POINTS TO CHARS
                                        TESTEQ   J     GO TEST CHARACTERS 
* 
          BOX 
          F2 = 1  -  SPECIAL ECHOPLEX CHARACTER BACK TO TERMINAL (F2=01). 
          EBOX
* 
+         A     A           F1          K=ASAVE        SAVE A AND Q THEY ARE
          B           Q     F           ECHOCH   J       USED FOR OUTPUT
* 
          BOX 
          OPCODE - 7 -  F2 = 02   SPARE...
          EBOX
+                                       JUMPF3   J     FUTURE EXPANSION 
* 
          BOX 
          OPCODE - 7 -  F2 = 03   SPARE...
          EBOX
  
+JUMPF3                                 JUMPF4   J     FUTURE EXPANSION 
* 
          BOX 
          OPCODE - 7 -  F2 = 04   SPARE...
          EBOX
+JUMPF4                                 JUMPF5   J     FUTURE EXPANSION 
* 
          BOX 
          OPCODE - 7 -  F2 = 05   SPARE...
          EBOX
+JUMPF5                                 JUMPF6   J     FUTURE EXPANSION 
* 
          BOX 
          OPCODE - 7 -  F2 = 06   SPARE...
          EBOX
+JUMPF6                                 JUMPF7   J     FUTURE EXPANSION 
* 
          BOX 
          OPCODE - 7 -  F2 = 07   SPARE...
          EBOX
+JUMPF7                                 JUMPF8   J     FUTURE EXPANSION 
* 
          BOX 
          OPCODE - 7 -  F2 = 08   SPARE...
          EBOX
+JUMPF8                                 JUMPF9   J     FUTURE EXPANSION 
* 
          BOX 
          OPCODE - 7 -  F2 = 09   SPARE...
          EBOX
+JUMPF9                                 JUMPFA   J     FUTURE EXPANSION 
* 
          BOX 
          OPCODE - 7 -  F2 = 0A   SPARE...
          EBOX
+JUMPFA                                 JUMPFB   J     FUTURE EXPANSION 
* 
          BOX 
          OPCODE - 7 -  F2 = 0B   SPARE...
          EBOX
+JUMPFB                                 JUMPFC   J     FUTURE EXPANSION 
* 
          BOX 
          OPCODE - 7 -  F2 = 0C   SPARE...
          EBOX
+JUMPFC                                 JUMPFD   J     FUTURE EXPANSION 
* 
          BOX 
          OPCODE - 7 -  F2 = 0D   SPARE...
          EBOX
+JUMPFD                                 JUMPFE   J     FUTURE EXPANSION 
* 
          BOX 
          OPCODE - 7 -  F2 = 0E   SPARE...
          EBOX
+JUMPFE                                 JUMPFF   J     FUTURE EXPANSION 
* 
          BOX 
          OPCODE - 7 -  F2 = OF   SPARE...
          EBOX
+JUMPFF                                 JUMPFF   J     FUTURE EXPANSION 
          EJECT 
          BOX 
          LAST OF INPUT DATA PROCESSOR
                EXIT    IF  CIB   IS  EMPTY 
                EXIT   TO   ODDP  IF  P1  INTERRUPT 
                REPEAT  IDP  IF   CIB   NOT EMPTY 
          EBOX
          ORG   500X
 IDPEXIT                                K=TPFLG 
          A     F1                                ZL    IS TP RUNNING 
+                                       TPLOOP6  J      GO BACK TO TP 
-IDPEX.1                          RTJ   P1CHK.5  J    GO CHECK INTERRUPTS 
+                                       K=OLDLFP
-         A     F1          Q           K=CIB 
+         ADD   F1    Q     Q           K=NFP          ADD LFP TO CIB 
-         EOR   F1    Q                           ZL   TEST IF CIB EMPTY
+                                       IDPLOOP  J     NO PROCESS MORE
 XITIDP   ZERO              Q 
          B           Q     F1          K=IOEXIT       CLEAR I/O WORK CELL
                                        K=IDPP         RESTORE A P Q
          A     F1          P           N=6            F2 REG 6 IS A
          B           F2    A           N=5            F2 REG 5 IS Q
          B           F2    Q           UINTRTN  JL    RETURN TO EMULATOR 
 P1CHK.5                                P1CHECK  J    CHECK ODD INTERRUPTS
          BOX 
          LAST OF THE ODD PROCESSOR 
                CHECK IF IDP WAS INTERRUPTED
                IF YES, RETURN TO IDP AFTER CHECKING ODD INTERRUPT
                IF NO, RETURN TO EMMULATOR AFTER CHECKING ODD INTERRUPT 
          EBOX
 ALLEXIT                                K=IDPRET       GET CALLERS FROM IDP 
          A     F1                      N=F200FF  ZL   WAS IDP RUNNING
+                                                 INTU YES, TEST FOR INTERRUPTS 
-                                       UINTRTN  JL    NO, RETURN TO EMMULATOR
+         -B          INTA  X                     ZL   TEST P1 INT
                                        RTNWHR   J     NO INTS AT ALL 
                                        RTNWHR   J     NOT AN ODD INT 
-                                       ODDP     J     P1 INT, SERVICE IT 
          EJECT 
          BOX 
          LISTPUT PAREMETERS
                INPUTS
                      A = ADDRESS OF THE CONTROL BLOCK
                OUTPUTS 
                      A = OLD PUT POINTER 
                CALLING SEQUENCE
                      MACRO - EMS Q 
                      MICRO - RTJ PFLISTPT
          NOTE - UNDER NO CIRCUMSTANCES CAN THE P REG BE USED 
          EBOX
          EJECT 
***************************************************************************** 
* 
*         MACRO ENTRY TO LIST PUT 
*         X = WORK LIST CONTROL BLOCK ADDRESS 
* 
***************************************************************************** 
 LISTPUT1 ZERO              Q     RTJ   K=LISTRET      SET RETURN 
          -B          CRTJ  F1          LISTCOM  J     SAVE MACRO RETURN
+         ZERO              X           K=INTARRY 
          A     F1          F           K=FINK         GET FINC 
          B           F1          READ  TN/0           GET ARRAY ADDRESS
          A     MEM         F                           * 
 LPUTLP                           READ                 READ DATA
          A     MEM         I                           * 
          ADD   A     X     A           DECN           N-1 = N
          A     I                 WRITE           NZU  STORE DATA 
+                                       UINTRTN  JL    EXIT TO EMULATOR 
-         B           BG    X           15             PRIME X
          ADD   F     X     F           LPUTLP   J     LOOP TO NEXT DATA
******************************************************************************
*                                                                            *
*         MICRO ENTRY TO LIST PUT                                            *
*         X = WORK LIST CONTROL BLOCK ADDRESS                                *
*                                                                            *
******************************************************************************
 PFLISTPT -B          CRTJ  F1          K=LISTRET      SAVE RETURN
          ZERO              Q           K=SM2FLG       IS THIS MUX LCB
          A     F1                                NU     *
+         ZERO              F1          N=F200FF  U    NO, ZERO FLAG
-         A+B   SM2   BG    SM2         P3XINT         YES, FIRE INTERRUPT
******************************************************************************
*                                                                            *
*         COMMON LIST PUT ROUTINE                                            *
*         X = WORK LIST CONTROL BLOCK ADDRESS                                *
*         F1 LISTRET = RETURN ADDRESS                                        *
******************************************************************************
 LISTCOM  ADD+  X     BG    F           14             GET FEINC ADDRESS
          A     X           F1    READ  K=WLCBSV       READ FEINC, SAVE WLCB A
          A.B   MEM   F2    A     GATEI N=F20F00       SAVE FEINC + INC 
          A.B   I     F2    F1    L8EA  K=INCMAC       SAVE FEINC 
          ADD+  X     Q     F           N=F200FF       GET PUT ADDRESS
          A     A           F1    READ  K=FINK         READ PUT, SET INC
          A     MEM         F1    GATEI K=PUTSV   ZL   SAVE PUT, TEST ZERO
+         A     I           A           K=WLBSIZE U    NO, GET WLCB SIZE
-                                       LPUT.2   J     YES, GO GET BUFFER 
+         A.B   A     F1    F                          TEST END OF BUFFER 
-         EOR   F     F1                          ZL     *
+LPUT.1   A     X           X                     U    GET COUNT ADDRESS
-                                       LPUT.3   J     END OF BUFFER, GET ONE 
+                                 READ  K=F10001       READ COUNT 
          A     MEM               GATEI                *
          ADD   I     F1    F     WRITE N=F200FF       WRITE COUNT + 1
          ADD   X     F1    F           K=FINK         GET PUT ADDRESS
          ADD   A     F1    F     WRITE K=LISTRET      WRITE NEW PUT
                                        RTNWHR   J     EXIT 
******************************************************************************
*         PUT = ZERO GET NEW BUFFER                                          *
******************************************************************************
 LPUT.2                           RTJ   GET16.5  J     GO GET A BUFFER
+                                       K=WLCBSV       GET WLCB 
          ADD   F1    BG    F     GATEI 14             GET ADDRESS
                                        K=INCMAC       ADD FINC 
          ADD   A     F1    A     WRITE                STORE GET. 
          A     I           X           LPUT.1   J     GO STORE PUT.
******************************************************************************
*         PUT = END OF BUFFER, GET A NEW BUFFER                              *
******************************************************************************
 LPUT.3                           RTJ   GET16.5  J     GO GET A BUFFER
+         A                             K=PUTSV        LINK TO OLD PUT
          A     F1          F                            *
          A     A           A     WRITE K=INCMAC          * 
          ADD   A     F1    A           K=WLCBSV       ADD FEINC TO BUFFER
          A     F1          X           LPUT.1   J     GO STORE PUT 
          EJECT 
          BOX 
          P1CKR3 SUBROUTINE 
$ 
                CALLED BY ANY MICROSEQUENCE WHICH WAS  INITIATED
                      FROM MACRO LEVEL - VIA EMS  Q 
                CHECKS FOR  P1 INTERRUPT AND  BRANCH
$ 
                INPUT -NONE 
$ 
                OUTPUT-NONE. F,I,X,N,K   REGISTERS DESTROYED
$ 
                CALLING SEQUENCE- 
                                  RTJ   P1CKR3   J
          EBOX
 P1CKR3                                           INTU TEST FOR ANY INTERRUPTS
+         -B          INTA  X                     ZL   YES, TEST ODD INT. 
-                                                RU      NONE.
+                                                RU    NOT ODD INT
-PICKR4   -B          CRTJ  F1          K=P1CKRET      SAVE CALLER ADDRESS. 
+                                 RTJ                  SAVE Q, SO WHEN WE RET 
          -B          CRTJ  Q           N=F20001  L    TO EMMULATOR - EMS Q 
$                                                      WILL RETURN HERE 
$         O D D P   R E T U R N S   H E R E 
$ 
+                                       K=P1CKRET U    GET BACK CALLERS ADDR
          SUB   P     F2    P           ODDP     J     SERVICE ODD INT.  P=P-1
          A                             RTNWHR   J     RETURN TO CALLER 
          EJECT 
          EJECT 
          BOX 
          AN ERROR WAS DETECTED BY THE FIRMWARE TO GET TO PBHALT ROUTINE
                INPUTS
                      A  IS SET TO ONE OF THE FOLLOWING CODES 
          0 - NFP EXCEEDED THE LFP IN THE CIB 
          1 - NO BUFFERS AVAILABLE
          2 - DUPLICATE RELEASE 
          3 - CHAIN ERROR ON GET
          NOTE -- A REG = 0, SINGLE RELEASE - = 1, MULTIPLE RELEASE 
                FILE 1 REG 74X WILL CONTAIN AN ADDR THAT WILL BE USED AS AN 
                ENTRY POINT TO THE MACRO PBHALT ROUTINE 
          EBOX
 PBHALT                                 K=F1F000       CLR INTERRUPTS, SET P =
          A.B   M1    F1    M1          K=COLHLT       MACRO PBHALT ENTRY 
          A     F1          P           PBCLEAR  J
          EJECT 
          EJECT 
          BOX 
          EBOX
 RSTOR3                                 K=TPISV 
          A.B   F1    BG                7         ZL    JUST DEST 
+                                       K=LEV2FLG U      NO, SOURCE INVOLVED
-                                       RSTOR4   J     YES, GET READY TO EXIT 
+         A     F1                                ZL    WHAT LEVEL
+                                       K=SVCARL2 U      LEVEL 2
-                                       K=SVCARL1 L     LEVEL 1 
+         A     F1          F1          K=UCAR    U 
-         A     F1          F1          K=UCAR    L 
+                                       K=SVLFCD2 U     LEVEL 2 
-                                       K=SVLFCD1 L     LEVEL 1 
+         A     F1          F1          K=TPLFCD  U 
-         A     F1          F1          K=TPLFCD  L 
+                                       K=ENDBUF2 U 
-                                       K=ENDBUF1 
+         A     F1          F1          K=ENDBUF          END OF BUFFER 
 RSTOR4   ZERO              F1          K=LEV2FLG       ZERO LEVEL FLAG 
                                        K=AIRFLG
          A     F1                                ZL    MUST WE REL BUFF
+         ZERO              F1          TPGOAIR  J      YES, DO IT
-                                       K=TPPSV         NO RESTORE P REG
          A     F1          P           SVRST3   J        AND EXIT
          EJECT 
          BOX 
          RESET BZLTIMER
          EBOX
 EVNT02.1 A     I           F1          K=OLDLCB        SAVE I
                                        K=BZLTIMR 
          A     F1          Q           K=ODDCLA        GET BASE ADDR OF TIMER
          ADD   F1    Q     F1          K=SVTMR         ADD CLA TO IT 
 EVNT02.2                         READ                  READ COUNT
          A     MEM               GATEI N=F200FF        COUNT IN I
          A.-B  I     F2    F     L8EA  K=SVTMR         EXTRACT RESET VALUE 
          A.-B  I     F2    Q                           KEEP ON LEFT SIDE THO 
          A     F1          I                          GET BACK ADDR, WRITE NEW 
          A+B   F     Q     F     WRITE K=OLDLCB        VALUE AND UNLOCK
          A     F1          I           EVNT02.3 J      RESTORE I AND CONTINUE
          BOX 
          EVENT CODE 04 - UNSOLICITED ODD 
          EVENT CODE 05 - CLA OUT OF RANGE - ODD
          EBOX
+EVNT04                                 K=CODE04  U     UNSOLICITED ODD 
-EVNT05                                 K=CODE05       CLA OUT OF RANGE 
+EVNT0A   A     F1          F1    RTJ   K=EVNTCD       COMMON EVENT CODE
                                        MAIN.1   J     PROCESS WL 
+                                       ODDEX.0  J     EXIT ODD 
          EJECT 
          BOX 
          E V E N T   C O D E   0 1 
          CLA SUPERVISION WAS DETETECED WITH OR WITHOUT CHARACTER.
                INPUTS - X = ADDRESS OF WORD 1 OF NAPORT
                         A = STATUS WORD 2
                OUTPUTS- A = ADDRESS OF WORD 3 OF MUX LCB OR 0 IF NO LCB
                F1MSPTA= P = POINTER TO MODEM STATE PNTR TBL ADDRESS
                         F1ISPTA = INPUT STATES POINTER TABLE ADDRESS OR
                                   0 IF NO MUX LCB
                         F1STW1N2 = CURRENT CLA STATUS
                         F1MODIX  = MODEM STATE INDEX 
                X,F,I DESTROYED 
          EBOX
 EVNT01   A     X           X           K=PORTWD0      POINT TO WD1 OF PORT 
          A.B   F1    BG                11        ZL   CHECK OVERFLOW 
+                                       EVNT01.1 J     YES, GO TO EVNT01.1
-         A.B   A     F2    F     READ  K=LC3SV        NO READ WD1 OF PORT(LCBP)
+               MEM               GATEI                SAVE LCBP IN I 
-         A.B   F1    F2    Q     L8EA  K=F10005       GET STATUS WD1 
+         ADD   X     F1    A           N=F20001       POINT PORT+6 (MLSTABLE)
                                  READ                 READ OLD STATUS
          EOR   MEM   Q                           NU   DID CTS CHANGE 
+         A+B   F     Q     F1    WRITE K=STW1N2  U    YES, WRITE NEW 
-         A+B   F     Q     F1    WRITE K=STW1N2  L    NO , WRITE NEW 
+         SUB   X     F2    A           K=PORTWD0 L    GET WDO ADDRESS
-         SUB   X     F2    A           K=PORTWD0 U    GET WDO ADDRESS
+         A.B   F     BG                8         ZL   TEST PARITY IN STATUS
-         A.B   F1    BG                1         ZL   TEST OON 
+                                                 U    SET, DON'T BUMP COUNT
-         ADD+  F1    ZERO  F1    WRITE                BUMP OVERFLOW COUNT
+EVNT01.0 A     I                       K=F10003  ZL   IS LCB ASSIGNED
+         ADD   I     F1    F1          K=WD3PTR  U    YES,SAVE LCBP+3
-         A     I           F1          K=WD3PTR  L    NO, SAVE 0 AS LCBP+3 
+         ADD+  F     F2    Q                     U    POINT TO LCBP+5 (ISPTA)
-         ADD+  X     F2    X           EVNT01.2 J     POINT X TO WD3 PORT MSPTA
+         ADD+  X     F2    X     READ                 GET ISPTA FROM LCB 
-         A     MEM               GATEI K=ISPTA        PUT IT IN F1ISPTA
+EVNT01.2 A     I           F1    READ                 READ NAMSPTA 
-         A     MEM         F1          K=MSPTA        SAVE IN F1MSPTA
+                                 READ                 READ POINTER TO STATE
-         A     MEM               GATEI                AND SAVE IN I
+         SUB   X     F2    X                          POINT TO PORT+2
-         A     I           P     READ  K=F1000F       PUT STATE PNTR IN P AND
$                                                      READ MODEM STATE INDEX 
+         A.B   MEM   F1    F1          K=MODIX        SAVE IN MODIX
-                                       K=WD3PTR
          A     F1          A                           SET A = WD3 
                                  READ  K=F1003F         READ IT
          A.B   MEM   F1    F1    GATEI K=ISTASV        SAVE STATE INDEX
          A     I           F1          K=W3LCB         ALSO SAVE WD3 CONTENTS
                                        K=LC3SV 
          A.B   F1    BG                4         ZL     IS DATA WITH STATUS
+                                       EVNT01.3 J     NO 
-         A     A           A           K=PORTWD0        YES
+         A.B   F1    BG                NAION     ZL       CHECK IF ION SET 
+                                 READ  N=F200FF  U    YES, READ LCB+3
-                                       EVNT01.4 J     UNSOLICITED DATA 
+         A     MEM               GATEI K=LC2SV        SAVE LCB+3 IN I
-         A+B   I     BG    F     WRITE CHRRCV         SET CHAR.RCVD IN LCB+3 
+         A     F1          X           K=F1007F       GET CHARACTER
-         A.B   F     BG                PARITY    ZL   CHECK IF PARITY STRIP
+         A.B   X     F1    F1          K=UCAR    U    YES,MASK WITH 7F 
-         A.B   X     F2    F1          K=UCAR         NO ,MASK WITH FF 
+         A     F           F1          K=TCAR         SAVE IN UCAR AND TCAR
-                                       RNI.     J     EXIT 
+EVNT01.1                               N=F20001
-         A.B   F1    BG                15        ZL   CHECK IF SECOND OVERFLOW 
+                                       IDPEXIT  J     YES,EXIT TO IDP
-         SUB   X     F2    X           N=F200FF       NO,POINT TO WRD0 PORT
+         ADD+  F1    ZERO  F1    WRITE                BUMP OVERFLOW COUNT
-                                       K=F10004
+         ADD   X     F1    X                          POINT TO NACCST (WD4)
-                                 READ
+         A     MEM         X           K=OUTDATA      SAVE IT IN X 
-         A     F1          Q           K=LC1SV 
+         A     F1          F           K=CLAID-  U 
+         A+B   F     F1    A     RTJ 
-                                       M05OUT   J     OUTPUT CLA ADDRESS 
+         A.-B  X     F2    A     L8EA  K=SUPVID  U 
+         A+B   A     F1    A     RTJ 
-                                       M05OUT   J     OUTPUT WORD 1 SUP. 
+         A.B   X     F2    A           K=F1CD00
-         A+B   A     F1    A           K=CODE801 
+         A.-B  A     BG    A     RTJ   10
-                                       M05OUT   J     OUTPUT WD2 SUP. (ISON OFF
+         A     F1          F1    RTJ   K=EVNTCDI 
-                                       MAIN     J     GENERATE 801 WORKLIST
+                                       IDPEXIT  J     EXIT 
 EVNT01.3 A                             K=F100C0       RESET PES AND DTO
          A     F1          X           K=STW1N2         *
          A.-B  F1    X     F1          RNI.     J     GO TO MODEM STATES 
 EVNT01.4                               K=STW1N2       GET STATUS 
          A.B   F1    BG                10        ZL   TEST FRAMING ERROR 
+                                       EVNT01.3 J     YES, IGNOR CHAR. 
          ONE               A           EVNT07.1 J     NO, BUILD UNSOL  W/L 
          EJECT 
          BOX 
          THE LEFT BYTE OF WORD 14 OF THE MUX LINE CONTROL BLOCK IS A COUNT 
          FOR THE NUMBER OF BUFFERS THAT HAVE BEEN GOTTEN FOR THIS LINE.
          IF THE COUNT OVERFLOWS, STATE 2 IS EXECUTED 
                ENTERED VIA RTJ 
          EBOX
 BMPCNT                                 K=11
          ADD   A     K     Q                           GET TO WORD 14
                                  READ  N=F200FF        READ IT 
          A.-B  MEM   F2    F     L8EA  K=F1BUFOV       SHIFT TO RITE SIDE
          EOR   F     F1                N=F20001  ZL    HAS OVFL OCCURRED 
+         ADD   F     F2    F     L8EA            U     NO BUMP COUNT 
-         B           Q     Q           BMPCNT1  J      YES, SET UP WD 14 
+         B           Q     Q                          GET BACK WD 14 
-         A     F           F           WRCH/0   RU    WRITE BACK AND RETURN
 BMPCNT1  ZERO              F           WRCH/0           ZERO COUNT 
          ADD+  A     BG    F           15              GET TO WORD 5 
                                  READ                  READ ISPTA
          ADD   MEM   BG    Q           14              FORCE TO STATE 2
                                  READ                   READ 
          A     MEM         P           RNI.     J       GO EXECUTE STATE 2 
          BOX 
          NOP OR SKIP STATE INSTRUCTION 
          EBOX
 OPCODE0  A     X                                 ZL    IS THIS A NOP 
+         B           Q                           ZL   NO, SKIP FRONT OR BACK 
-                     Q           PAGE4 TMA/S2    L     YES, REENTER IDP
+         ADD   P     X     P           RNI.     J      FORWARD, ADD
-         SUB   P     X     P           RNI.     J      BACKWARD, SUBTRACT
          EJECT 
          BOX 
          THIS CODE IS TO AID MACRO STATE 
          INSTRUCTION $17 FOR SETTING,CLEARING
          OR CHANGING ANY BITS WITHIN THE LCB 
          AREA. 
          EBOX
+OPCOD171                               TK/2           GET INDEX POINTER
          ADD   X     K     X 
          SUB   A     X     F           K=W3LCB   ZL   IF ZERO F1=WRD 3 
+         B           X     X           OPC17B   J     F1 NOT WRD 3 
-OPC17A   ADD+  P     ZERO  P                          SET P TO P+1 
                                  READ                 READ P+1 WRD 
          A     MEM         Q           OPCOD172 J     SAVE P+1 IN Q
+OPC17B                           READ  K=WXLCB        READ IND WRD 
          A     MEM         F1          OPC17A   J     SAVE WXLCB WRD 
*         TEST FOR OUTPUT STOPPED CONDITION                                  *
 ODDUN.1  A.B   I     BG                NASTOUT   ZL   WAS OUTPUT STOPPED 
+         A     F                                 NU   TEST FOR RITE STATE
-         A                             ODDUN.0  J     NO,PROCESS UNSOLICITED 
+         A     A           I           ODDGET.4 J     DELAY OUT STOP, OBP-I
-         A                             K=PORTA        OK, TO STOP
          A     F1          A                          GET PORT ADDRESS 
          A.-B  I     BG    Q     WRITE NASTOUT   U    RESTORE NAPORT WD0 
+         B           BG    X     RTJ   7              TURN OUTPUT OFF AT CLA 
-         A     A           F           OUTCLA   J      * 
                                        K=F1000A       SET EVENT CODE A 
                                        EVNT0A   J     GO BUILD WL AND EXIT 
******************************************************************************
*         MICRO ENTRY FOR BUFFER GET ON PAGE 5                               *
******************************************************************************
 GET16.5  -B          CRTJ  F1          K=GETRTRN      SAVE RETURN
          A     F           F1          K=GETADDR      RETURN FOR STAMP 
                                        GET16    J     GET A 16 WORD BUFFER 
 GET64.5                                BUFGETS  J     GET BUF, STORE CHAR. 
******************************************************************************
*         STORE CHARACTER ROUTINE                                            *
*                                                                            *
*         SEPERATE STORE ROUTINES ARE USED FOR IDP AND TEXT PROCESSING       *
*         AFTER ENTRY.  TEXT PROCESSING MAINTAINS THE IBP IN A FILE 1        *
*         REGISTER AND ONLY STORES THE IBP WHEN EXITING TEXT PROCESSING.     *
*         THE IDP STORE ROUTINE MAINTAINS IBP IN THE MUX LCB IN MEMORY.      *
******************************************************************************
* 
******************************************************************************
*         ENTER STORE CHARACTER ROUTINE FROM ACTION CODE 3                   *
******************************************************************************
 STORECRC                               K=TPFLG        IS TP RUNNINNG 
          A     F1                      K=TCAR    ZL     *
+         A     F1          F     RTJ   STORTP.2 J     TP, GO TO STORE TP 
-         A     F1          F           K=W3LCB   L    IDP, GO TO STORE IDP 
*         RETURN AFTER STORE CHAR. FOR TP 
+                                       TPLOOP6  J     RETURN TO TEXT PROCESS 
-         A                       RTJ   STORIP.0 J     GO TO STORE IDP
*         RETURN AFTER STORE CHAR. FOR IDP
+         A                             IDPEX.1  J     IDP EXIT AFTER STORE 
******************************************************************************
*         ENTER STORE CHARACTER ROUTINE FROM ACTION CODE 2                   *
******************************************************************************
 STOREACT                               K=TPFLG        IS TP RUNNINNG 
          A     F1                      K=UCAR    ZL     *
+         A     F1          F     RTJ   STORETP  J     TP, GO TO STORE TP 
-         A     F1          F           K=W3LCB   L    IDP, GO TO STORE IDP 
*         RETURN AFTER STORE CHAR. FOR TP 
+                                       TPLOOP6  J     RETURN TO TEXT PROCESS 
-         A                       RTJ   STORIP.0 J     GO TO STORE IP 
*         RETURN AFTER STORE CHAR. FOR IDP
+         A                             IDPEX.1  J     IDP EXIT AFTER STORE 
******************************************************************************
*         ENTER STORE CHARACTER ROUTINE FROM STATE INSTRUCTIONS              *
******************************************************************************
 STOREST                                K=TPFLG        IS TP RUNNINNG 
          A     F1                      K=UCAR    ZL     *
+         A     F1          F           STORETP  J     TP, GO TO STORE TP 
-         A     F1          F           STOREIP  J     IDP, GO TO STORE IDP 
******************************************************************************
*         XLATE AND STORE CHARACTER FOR IDP                                  *
*         F CONTAINS CHARACTER TO STORE                                      *
******************************************************************************
 STOREIP                                K=W3LCB        GET WORD 3 
 STORIP.0 A.B   F1    BG                NCNQXL    ZL   TEST XLATE FLAG
+         ADD+  A     BG    X           12        U    YES, GET TO WORD C 
-                                       STORIP.1 J     N0, MOVE CHAR
+         A     F           X     READ  RROE           READ XLATE, CHAR * 2 
          ADD   MEM   X     X           N=F200FF       ADD CHAR * 2 + TABLE 
          A.B   F     BG          READ  15        ZL   READ XLATE WORD
+         A.B   MEM   F2    F1          K=TCAR    L    RITE CHAR TO TCAR
-         A.-B  MEM   F2    F1    L8EA  K=TCAR    L    LEFT CHAR TO TCAR
+STORIP.1 A     F           F1          K=TCAR         NO XLATE 
******************************************************************************
*         CONTINUE STORE CHARACTER AFTER TRANSLATE OR NOT TRANSLATE          *
*         F CONTAINS CHARACTER TO STORE                                      *
******************************************************************************
-STORIP.2 ADD+  A     BG    X           14             GET IBP ADDRESS
+         A     F           F1    READ  K=SAVCH        READ IBP 
-         A     MEM         X           K=W3LCB   ZL   TEST IBP = 0 
+         A     F1                      K=BIGBUF  NU   TEST LEFT OR RITE CHAR 
-                                       NOBUF    J     IBP = 0, 
+         A     F                       WRCH/1    U    STORE RITE CHAR
-         A.B   F1    X     F           STORIP.4 J     LEFT, TEST END OF BUFFER 
+         A     A           A           K=W3LCB        STORE RITE, EXIT 
-         A.-B  F1    BG    F1    WRITE NCRINCH        CHANGE LEFT/RITE, EXIT 
+         ADD+  A     BG    F           14             UPDATE IBP 
-         ADD+  X     ZERO  F     WRITE          RU      *
+STORIP.4 EOR   F1    F                           ZL   LEFT, TEST END OF BUFFER 
+STORIP.3 A     X           X           K=SAVCH   U    NO, STORE LEFT 
-         A                             GETBUF   J     YES, GET NEW BUFFER
+         A     F1                L8EA  WRCH/0         STORE LEFT 
          A     A           A           K=W3LCB        CHANGE LEFT/RITE FLAG
          A+B   F1    BG    F1    WRITE NCRINCH  RU    EXIT 
******************************************************************************
*         STORE CHARACTER ROUTINE FOR TEXT PROCESSOR                         *
*         F CONTAINS CHARACTER TO STORE                                      *
******************************************************************************
-STORETP  A                             K=W3LCB        TEST TRANSLATE FLAG
+         A.B   F1    BG                NCNQXL    ZL     *
+         ADD+  A     BG    X           12        U    YES, GET TO WORD C 
-         A                             STORTP.1 J     N0, MOVE CHAR
+         A     F           X     READ  RROE           READ XLATE, CHAR * 2 
          ADD   MEM   X     X                          ADD CHAR * 2 + TABLE 
          A.B   F     BG          READ  15        ZL   READ XLATE WORD
+         A.B   MEM   F2    F1          K=TCAR    L    RITE CHAR TO TCAR
-         A.-B  MEM   F2    F1    L8EA  K=TCAR    L    LEFT CHAR TO TCAR
+STORTP.1 A     F           F1          K=TCAR         NO XLATE 
******************************************************************************
*         CONTINUE STORE CHARACTER AFTER TRANSLATE OR NOT TRANSLATE          *
*         F CONTAINS CHARACTER TO STORE                                      *
******************************************************************************
-STORTP.2 A                             K=TPIBP        GET IBP ADDRESS
+         A     F1          X           K=W3LCB   ZL   TEST IBP = 0 
+         A     F1                      N=F20001  NU   TEST LEFT OR RITE CHAR 
-                                       STORTP.4 J     IBP = 0, 
+         A     F                       WRCH/1    L    STORE RITE CHAR
-         A     F           F1          K=SAVCH        SAVE CHAR. TO STORE
+                                       K=BIGBUF  L    GET MASK 
-         A.-B  F1    BG    F1          NCRINCH        CHANGE LEFT/RITE FLAG
+         ADD   X     F2    F1          K=TPIBP   L    UPDATE IBP 
-         A.B   F1    X     F                          LEFT, TEST END OF BUFFER 
+         EOR   F1    F                           ZL   TEST END OF BUFFER 
-                                                RU    EXIT RITE CHARACTER
+STORTP.3 A     X           X           K=SAVCH   U    NO, STORE LEFT 
-         A                             GETBUF   J     YES, GET NEW BUFFER
+         A     F1                L8EA  WRCH/0         STORE LEFT 
                                        K=W3LCB        CHANGE LEFT/RITE FLAG
          A+B   F1    BG    F1          NCRINCH  RU      * EXIT 
 STORTP.4 A     F           F1          K=SAVCH        SAVE CHAR. TO STORE
******************************************************************************
*         NO BUFFER - GO TO GET A BUFFER  IP AND TP                          *
******************************************************************************
 NOBUF    -B          CRTJ  F1          K=RTJST        SAVE RETURN
          A     A           F1          K=WD3PTR       SAVE A 
          A     I           F1          K=ADCAR1  U    SAVE I 
+                                 RTJ                  CHECK FOR ODD INTERRUPT
-                                       P1CHECK  J       *
+                                 RTJ   GET64.5  J     GET A BUFFER 
+                                       K=WD3PTR       GET WORD 3 POINTER 
          ADD+  F1    BG    X     GATEI 13             GET WORD 8 ADDRESS 
                                  READ  N=F200FF       READ FCD 
          A.B   MEM   F2    F                            *
          A     A           A                          STORE FCD IN NEW BUFFER
          A     F                       WRCH/1         WRITE FCD IN NEW BUFFER
          A     F           F           RROE           FCD / 2
          ADD+  I     BG    X           14             GET WORD 6 ADDRESS 
          ADD   A     F     F     WRITE K=F10007       STORE NEW IBP
          ADD   X     F1    X                          GET WORD 13 ADDRESS
          A     A                 WRITE                WRITE NCSCBA 
          A     I           A           K=ADCAR1       RESTORE A
*         COMMON EXIT FOR NOBUF AND GETBUF
*         F MUST CONTAIN IBP
 NOBUF.1  A     F1          I           K=BITFLAG        *
          A.B   F1    BG                14        ZL   CHAR. XPANSION CALL
+         A     F           X           GOTBUF   J     YES, RETURN
-         A     F           X           K=TPFLG        TP RUNNING 
          A     F1                      K=TPIBP   ZL     *
+         A     F           F1    RTJ   STORTP.3 J     TP, RETURN 
-         A                       RTJ   STORIP.3 J     IP, RETURN 
*         RETURN IS CHANGED TO HERE AFTER GETTING A BUFFER
* 
+                                       K=RTJST        GET ORIGINAL RETURN
-                                       RTNWHR   J     GO TO ORIGINAL RETURN
******************************************************************************
*         GET A BUFFER FOR IP AND TP AND CHAIN TO PREVIOUS                   *
******************************************************************************
 GETBUF   -B          CRTJ  F1          K=RTJST        SAVE RETURN
          A     X           F1          K=OLDIBP       SAVE OLD BUFFER POINTER
          A     A           F1          K=WD3PTR       SAVE A 
                                  RTJ   BMPCNT   J     INCREMENT BUFFER COUNT 
+                                 RTJ   GET64.5  J     GET A BUFFER 
+                                       K=OLDIBP       CHAIN TO OLD BUFFER
          A     F1          X                            *
          A     A           A     WRITE N=F200FF          * 
                                  READ  K=WD3PTR       READ FCD FROM BUFFER 
          A.B   MEM   F2    F           RROE           FCD / 2
          ADD+  F1    BG    X     GATEI 14             GET WORD 6 ADDRESS 
          ADD   A     F     F     WRITE K=ADCAR1       STORE NEW IBP
          A     I           A           NOBUF.1  J     EXIT TO COMMON 
******************************************************************************
*         PART OF THE RETURN TO SPECIAL CHARACTER ADD INSTRUSTION            *
******************************************************************************
 GOTBUF   A.-B  F1    BG    F1          14             RESET RETURN BIT 
          A     X           F           K=SPECA1       RESTORE A
          A     F1          A           K=SPECX1       RESTORE X
          A     F1          X           K=TPFLG 
          A     F1                                ZL   IS TP RUNNING
+         A     F           F1          K=TPIBP   U    YES, SET IBP 
-                                       SPCAD.1  J     NO, RETURN 
+         A     F           Q           SPCAD.2  J     RETURN 
******************************************************************************
*         CONTINUE STORE CHARACTER INSTRUCTION                               *
******************************************************************************
 STRCHAR  A.B   I     BG                10        ZL   CRC CHAR 
+                                                 L    YES, GO TO CRC 
-                                 RTJ   STOREST  J     NO, GO STORE CHAR
+                                       INI.     J     EXECUTE NEXT INST
-STRCH.1                          RTJ   CRC.4    J     GO DO CRC
+                                       K=TPFLG        IS TP RUNNING
-         A     F1                      K=TCAR    ZL     *
+         A     F1          F     RTJ   STORTP.2 J     YES, NO XLATE
-         A                       RTJ   K=UCAR    L    NO, XLATE
+                                       INI.     J     EXECUTE NEXT INST. 
-         A     F1          F           STOREIP  J     XLATE AND STORE
 CRC.4                                  ACCUMCRC J     GO DO CRC
********************************************************************************
*         CHECK  CIB - BUFFER  LINE FRAME OVERWRITE                            *
********************************************************************************
+IDP01                                  K=IOEXIT       I/OID CELL 
          B           BG    F1          15
+         A     A           F1          K=OLDLFP       CIB INDEX POINTER
-         B           F     X           K=CIB          X=INDEX, CIB=BUFFER
+         ADD   F1    F     F           K=NFP          WRITE ADDR,LAST READ 
-         EOR   F1    F                 K=CIBOVF  ZL   NFP = LFP
+         A     F1                      K=LASTCIB ZL   CHECK CIBOVF FLAG
-                                       XITIDP   J     CIB EMPTY, RETURN
* 
+         SUB   X     F1                          NU   IS LAST > LFP
-         SUB   X     F1                IDP02    J     YES,CONTINUE 
+         B           X     F1          IDPLOOP  J     NO,SET LAST=LFP
-         ZERO              A           PBHALT   J     CIB OVERWRITE,HALT 
* 
+IDP02                                            NU   CIBOVF=O, LAST > LFP 
*         I N S T R U C T I O N   N O T   U S E D 
+         B           X     F1                    U    SET LAST = LFP 
-         B           X     F1          IDPLOOP  J     LAST = LFP,CONTINUE
+         ADD+  X     X     F1          K=CIBOVF       SET CIBOVF FLAG
-                                       IDPLOOP  J     CONTINUE WITH CHAR 
          EJECT 
          BOX 
          STATE INSTRUCTION  O P C O D E  ( 0 7 ) . 
* 
          THIS OPCODE IS USED TO EXTEND STATE INSTRUCTION.
            USING BITS 11-8  (0 - F).  OPCODE 07 WILL BE
            TRANSFORMED TO MEMORY LOCATIONS (4E0 -- 4EF)
* 
          EBOX
 OPCD07   A.B   I     F2    X     L8EA  K=F100E0       EXTRACT CONTINUED OPCODE 
          A+B   X     F1    X           N=F200FF        TO LSB.  ADD A (E) IN 
          B           X           PAGE4 TMA/S2    U     BITS 7-4 = 4E0-4EF
          EJECT 
          ORG   5E0X
          BOX 
          S T A T E  P R O C E S S  I N S T R U C T I O N S 
          $ 
          ENTERED VIA RNI SEQUENCE OP CODE  DECODE
          EXIT TO ONE OF SEVEN RENTRY POINTS AS SPECIFIED BY
                THE F1 FIELD OF THE INSTRUCTION.    TMA/S2
          EBOX
          BOX 
          OPCODE = 0   IF OPERAND IS EQUAL TO ZERO, A NOP IS EXECUTED.
          IF OPERAND IS NON-ZERO, THE OPERAND IS USED AS A SKIP COUNT 
                F1 FIELD EQUALS ZERO - SKIP BACKWARD. 
                F1 FIELD NOT EQUAL TO ZERO - SKIP FORWARD 
  
          EBOX
+         A.-B  I     F2    X     L8EA                 X = OPERAND
-                                       OPCODE0  J     CHECK IF NOP 
          BOX 
          STORE CHAR FROM TP FILE ONE REG 
          EBOX
+                                       N=F20F00
-                                       OPCD01   J
          BOX 
$         OPCODE=2    REPLACE CHARACTER 
          EBOX
+         A.-B  I     F2    F     L8EA  K=UCAR           REPLACE CHAR 
-         A     F     Q     F1    PAGE4 TMA/S2    L 
          BOX 
$         OPCODE=3    BUILD EVENT WORK LIST 
          EBOX
+         A     A           F1          K=ASAVE        SAVE A REGISTER
-                                       OPCODE3  J     GO TO PROCESS CODE 3 
* 
******************************************************************************
*         OPCODE - 4 TERMINATE BUFFER, SAVE WORK CODE, OR BOTH. ALSO AN      *
*                    OPTION  TO RESET THE THE BUFFER COUNT IS AVAILABLE.     *
******************************************************************************
                                        K=F1000A       GET ADDR. OF WD E
          ADD+  A     F1    X           OPCOD4   J
          BOX 
            O C O D E  5   F O U R  T Y P E S ... 
              TYPES BITS 9 AND 8 OF STATE INST. 
                0 0  =  C R C E Q 
                0 1  =  S P C H E Q 
                1 0  =  A L N B U F 
                1 1  =  R S T I M E 
          EBOX
          A.-B  I     F2    X     L8EA  K=F10003       SET TYPE/SPEC.ACTION 
          A.B   X     F1    F           OPCD5TX  J     MASK OPCDE TYPE. 
******************************************************************************
*         OPCODE - 6 DEC CHARACTER COUNT OR INCREMENT ANY WORD OR CHARACTER  *
*                  IN THE MLCB EXCEPT WORD 3.                                *
******************************************************************************
                                        K=F10F00       DISPL MASK 
                                        OPCODE6  J     MASK DISPLACEMENT
          BOX 
*         OPCODE  7  WILL BE USED TO EXTEND STATE INSTRUCTIONS. 
          EBOX
+                                       N=F20F00       MASK FOR CONTINUED CODE
                                        OPCD07   J     GO DECODE F2 BITS 11-8 
          BOX 
$         OPCODE=8    SET INPUT STATE 
          EBOX
+         A.-B  I     F2    F     L8EA  K=W3LCB 
                                        OPCODE8  J
          BOX 
$         OPCODE=9    STORE BLOCK LENGTH CHARACTER
          EBOX
+         A.-B  I     F2    F     L8EA  K=UCAR
                                        OPCODE9  J
          BOX 
          OPCODE=A   SKIP IF CHAR IS LESS THAN OPERAND
          EBOX
          A.-B  I     F2    F     L8EA  K=UCAR
          B           F1    X           OPCODEAB J
          BOX 
          OPCODE=B   SKIP IF STATE IS LESS THAN OPERAND 
          IF HI ORDER BIT SET, SKIP IF MODEM STATE INDEX IS LESS
          EBOX
+         A.-B  I     F2    F     L8EA  K=MODIX          SHIFT VALUE TO RITE
-         A     A           A           OPCODEA  J
          BOX 
          SKIP  IF CHARACTER NOT EQUAL
          EBOX
+         A.-B  I     F2    F     L8EA  K=UCAR
-                                       OPCODEC  J
          BOX 
          $ 
            O P C D E   ( 0 D )  S P C 3 E Q . . O R
              S T O P O U T (STOP OUTPUT) 
             $
                COMPARE 3 SPECIAL CHARACTERS. 
             $
          $ 
  
          EBOX
                                        K=F10005       ADJ. FOR WORD 8 OF LCB.
          ADD   A     F1    X           SPC3EQ1  J     GO PROCESS SPC3EQ..
          BOX 
          MOVE FIELD - FOR TP ONLY
          EBOX
+         A     A           F1          K=WD3PTR
-         B           Q     F           MOVFLD   J        GO MOVE 
          BOX 
          $ 
             O P C O D E   ( 0 F )  X L A T E 
              $ 
                TRANSLATE  CURRENT CHARACTER
              $ 
          $ 
          EBOX
+         A                             K=UCAR         SET K TO UCAR
-         A     F1          Q           OPXLATE  J     X=UCAR TONQ
          BOX 
          MULTI PURPOSE STATE INST. - FOR TP ONLY 
          EBOX
+         A     A           F1          K=WD3PTR          SAVE A
-         B           Q     A           MLTPURP  J
          BOX 
          EBOX
          BOX 
          ADD THE CHARACTER SPECIFIED IN THE OPERAND FIELD, 
                THEN DECODE THE F1 FIELD
          EBOX
+         A.-B  I     F2    X     L8EA  K=F100C0        X IS CHAR TO BE ADDED 
-         A     F1          F           ADDCHAR  J
          BOX 
          STORE CURRENT CHARACTER - TCAR- RETURN TO STATE PROCESS 
                INSTRUCTION, THEN GO TO INI.
          EBOX
+                                       STRCHAR  J     STORE CHAR 
          BOX 
          SET FLAGS IN FLAG WORD OF FIRST OR CURRENT BUFFER 
          EBOX
+         A.-B  I     BG    X     L8EA  BIT7           CLR BIT 7, PUT IN RITE 
-         A.B   X     F2    X           SETFLGS  J      HALF AND MASK 
******************************************************************************
*         STORE WORD OR CHARACTER IN CURRENT SOURCE BUFFER -- OPCODE $14     *
******************************************************************************
          A     A           X           K=F10003       SAVE A REGISTER
          SUB   A     F1    F           OP14.0   J     GET ADDR. MLCB WD0 
          BOX 
          TEST STATUS - SKIP IF NON-ZERO
          EBOX
+         A                             K=STW1N2       GET STATUS 
-         A     F1          F           OPCODE15 J     SAVE IN F
          BOX 
          BUILD STATUS WORKLIST -- OPCODE 16
          EBOX
+         A.-B  I     F2    X           K=EVNTCDI      MASK STATUS INDICATOR
-                                       OPCODE16 J
          BOX 
          T E S T   A N D   S E T / R E S E T   F L A G S 
          EBOX
                                        K=F10003
          SUB   A     F1    X           OPCODE17 J     X = WRD 0 OF LCB 
          BOX 
          $ 
              O P C O D E   [ 1 8 ]   M V C H X X  . .
              $ 
                 MOVE CHARACTERS FROM  SD TO DD.. 
              $ 
          $ 
          EBOX
                                        K=F10003       SET LCB TO BASE ADR. 
          SUB   A     F1    A           MVCHXX   J     GO PROCESS MVCHXX. . 
          BOX 
          CHANGE  MODEM  STATE --  OPCODE  19 
          EBOX
+         A.-B  I     F2    F     L8EA  K=PORTADR 
-                                       OPCOD19  J
          BOX 
          $ 
             O P C O D E  [ 1 A ]  S E T B I T . .
             $
                 SET ANY BIT IN ANY LCB WORD. 
             $
          $ 
          EBOX
                                        K=F10003       ADJ LCB TO WORD ZERO 
          SUB   A     F1    X           SETBIT1  J     GO PROCESS SETBIT..
          BOX 
          $ 
              O P C O D E  [ 1 B ]   R S T B I T  . . 
              $ 
                  CLEAR ANY BIT IN ANY LCB WORD.
              $ 
          $ 
          EBOX
$ 
$ 
                                        K=F10003       ADJ LCB TO WORD ZERO 
          SUB   A     F1    X           RSTBIT1  J     GO PROCESS RSTBIT. 
          BOX 
          COMPARE OR INSERT CHARACTER COUNT  -  OPCODE - 1C 
          EBOX
+         ADD+  P     ZERO  P                          GET TO 2ND WORD
-                                       OPCOD1C  J      GO PROCESS
          BOX 
          BACKSPACE STATE INSTRUCTION - OPCODE 1D 
          EBOX
+         ADD+  A     BG    F           14               GET TO IBP 
-                                       BKSP     J      SERVICE BACKSPACE 
          BOX 
          OPCODE 1E - SAVE/RESTORE CURRENT TP CONDITIONS
                ON SAVE, SAVE ALL - RESTORE, DO WHAT USER WANTS 
                USED FO TP ONLY 
          EBOX
+         A     A           F1          K=WD3PTR         BETTER SAVE A
-                                       SVRST    J
          ORG   5FFX
          BOX 
          OPCODE 1F WILL BE USED FOR CONTINUATION OF STATE INST.
          EBOX
+                                       OPCD1F   J      DECODE F2 FIELD 
          EJECT 
          BOX 
          THE LOWER OF 5FF WILL ALWAYS BE RESERVED FOR THE CURRENT
                FIRMWARE VERSION NUMBER 
          EBOX
          ORG   5FFX
-         HEX   00001502
          EJECT 
          BOX 
          SPECIAL COMMUNICATION INSTRUCTIONS
          $ 
          THESE INSTRUCTIONS ARE EXECUTED VIA THE 
          EMS MACRO INSTRUCTION 
          EBOX
******************************************************************************
*                                                                            *
*         THIS ROUTINE OUTPUTS COMMANDS TO THE CLA                           *
*                                                                            *
*         INPUTS  - A REGISTER POINTS TO A FIVE WORD PACKET.                 *
*                                                                            *
*                   WORD 0 - PORT NUMBER IN LEFT BYTE                        *
*                            MUX. SUBSYSTEM COMMAND IN RITE BYTE             *
*                   WORD 1 - LINE TYPE IN LEFT BYTE                          *
*                            COMMAND COUNT IN RITE BYTE                      *
*                   WORD 2 - CLA COMMAND 1/2 SET VALUE                       *
*                   WORD 3 - CLA COMMAND 3/4                                 *
*                   WORD 4 - CLA COMMAND RESET VALUE FROM NBLTYT             *
*                   WORD 5 - CLA COMMAND LINE TYPE RESET VALUE               *
*                                                                            *
******************************************************************************
          ORG   600X
+         A     A           X           CLACMD   J     GET PACKET ADDRESS 
- 
          BOX 
          SET PRIORITY 3 EXTERNAL INTERRUPT 
          BY SETTING SM205 TO THE ONE STATE 
          $ 
          $ 
          EBOX
 SETP3INT A+B   SM2   BG    SM2         P3XINT         SET STATUS MODE REG
                                        UINTRTN  JL    EXIT 
$ 
$ 
          BOX 
          RESET PRIORITY 3 EXTERNAL INTERRUPT 
          BY SETTING SM205 TO THE ZERO STATE
          $ 
          $ 
          EBOX
 RSTP3INT A.-B  SM2   BG    SM2         P3XINT         RESET STATUS MODE REG. 
                                        UINTRTN  JL    EXIT 
$ 
$ 
          BOX 
          TRANSFER MEMORY TO FILE 1 REGS. 
          $ 
          INPUTS
          $ 
          A REG- STARTING MEMORY LOCATION 
          Q REG- RIGHT BYTE - FIRST REG ADDR MINUS 1
          Q REG - LEFT BYTE - COUNT OF WORDS TO BE MOVED
          OUTPUTS- NONE 
          EBOX
+TMF1     B           Q     X           TK/0           SET K TO REG ADDR
          A     X           X     L8EA  TMF1.1   J     SHIFT X
          BOX 
          TRANSFER FILE 1  REGS TO MEMORY 
          $ 
          $ 
          INPUTS
          $ 
          A REG -  STARTING MEMORY LOCATION 
          Q REG -  RIGHT BYTE. FIRST REG ADDR 
          Q REG - LEFT BYTE - COUNT OF WORDS TO BE MOVED
          OUTPUTS- NONE 
          EBOX
+TF1M     B           Q     X           TK/0           SET K TO REG ADDR
          A     X           X     L8EA  TF1M.1   J     SHIFT X
          BOX 
          EBOX
+BUFG                                   K=F10005       SET X = P-5, CALLER
          SUB   P     F1    X           BUFGET   J      GO GET BUFFER 
          BOX 
          EBOX
                                        K=F10006       P - 6
          SUB   P     F1    F           BUFREL   J     GO RELEASE BUFFER
          BOX 
          EBOX
+LISTGET  A     A           A           K=MACWLSV      A = ADDR OF CONTROL BLK
-                                       LISTGET1 J     DO IT
          BOX 
          EBOX
+LISTPUT  A     A           X           N=F200FF       X = WLCB ADDRESS 
-                                       LISTPUT1 J     DO IT
******************************************************************************
*         CONTINUATION OF PBHALT                                             *
******************************************************************************
 PBCLEAR  A.-B  SM1   BG    SM1         6              INHIBIT MACRO INTERRUPT
                                        UINTRTN  JL    RETURN TO 1700 EMULATOR
          ORG   60AX
          BOX 
          SPECIAL COMMUNICATIONS INST TO DECREMENT BZLTIMER BY ONE
                INPUTS - A REG - MEM ADDR OF BZLTIMER TO DECREMENT
                OUTPUTS - NONE
          EBOX
+         A     A           A           DECBZTMR J     SET UP ADR BUF 
          BOX 
          SUBROUTINE TO RESET HI RESOLUTION CLOCK  -  BIT 0 
                WHICH RESETS THE DEAD MAN TIMER 
          INPUTS - A REG - BITS 15 - 8 CANNOT BE DESTROYED
          OUTPUTS - NONE
                N O T E --  THIS ROUTINE CANNOT BE REMOVED FROM 060B
          EBOX
+RESHRC   A+B   A     BG    A           15              SET LOW ORDER BIT 
-         A     A           Q*                    L    XFER OUTPUT TO Q* REG
+SETHRC1  A     Q*          Q                           Q GETS CLK VALUE
-                                       UINTRTN  JL     AND EXIT
          BOX 
          SUBROUTINE TO SET HI RESOLUTION CLOCK AND READ CLK VALUE
                INPUTS - A REG, BITS 15-8 CANNOT BE DESTROYED 
                OUTPUTS - Q REG, CLOCK VALUE
          EBOX
+SETHRC   A.-B  A     BG    A           15             RESET LOW ORDER BIT, XFER
          A     A           Q*          SETHRC1  J     TO Q*, GO FINISH 
          BOX 
          SET/RESET BITS IN SM2 REGISTER
            INPUTS: A = MASK TO SET OR RESET IN SM2, MSB=1=SET, MSB=0=RESET 
            OUTPUT SM2 WITH PROPER BITS SET OR RESET
          EBOX
+SRSM2    A     A           F           SRSM2.1  J     SAVE MASK IN F 
          EJECT 
          BOX 
          ENTRY POINT TO TEXT CHARACTER PROCESSOR 
                A = START ADDRESS OF TP LINE CONTROL BLOCK
                ITS 32 WORDS LONG, WITH THE LAST 16 BEING 
                MOVED TO F1 REGS D0 - DF. 
          EBOX
+TP       A     A           F1          K=TPSVA          SAVE START ADDR
-                                       TXTPROC  J      DO IT 
          ORG   610X
          BOX 
          RETURN TO TP AFTER GOING UP FOR AIR 
          EBOX
+TPRTN                                  K=INTCNT       GET INTERNAL COUNT 
          A     F1          A           TPRTN1   J
          EJECT 
          ORG   611X
          BOX 
          START OF TEXT CHARACTER PROCESSOR 
          EBOX
 TXTPROC  ADD+  A     BG    X           13               GET TO WD 5
          A     P           F1    READ  K=TPSVP        READ ISPTA, SAVE P 
          A     MEM         F1          K=ISPTA          SAVE IT
          ADD   X     BG    X           15             GET WORD 6 ADDRESS 
          A     F           P     READ                 READ IBP 
          A     MEM         F1          K=TPIBP        SET IBP POINTER
          ADD+  A     BG    A           14             GET TO WORD 3
                                  READ                 READ WORD 3
          A     MEM         X           K=3FX 
          A.B   X     K     F1          K=ISTASV        SAVE STATE INDEX
          ADD   P     F     Q           N=F200FF       ADD ISPTA TO INDEX 
          A     X           F1    READ  K=W3LCB         SAVE FLAGS
          A     MEM         P                                STATE TO XCUTE 
                                        K=MAXCHR          SET UP MAX
          A     F1          F1          K=INTCNT        CHARS TO DO 
          ONE               F1          K=TPFLG        SET TP RUNNUNG FLAG
          SUB   A     BG    X           15              GET TO SBA
          SUB   X     BG    F     READ  14             READ IT, GET TO WD 0 
          A     MEM               GATEI K=F12180  ZL      IS IT ZERO
+         A     I           F1    READ  K=TPSBA   U      NO, READ LCD-FCD 
-         A     F1          F           TPLOOP2  J      YES, GET 1ST SBA
+         A     MEM         F1          K=TPLFCD        SAVE LCD - FCD
          A     I           X           TPLOOP24 J       ADJ LCD
$ 
$         TPLOOP HAS TO HAVE I = SBA, A = WD3 OF LCB
$ 
 TPLOOP                                 K=W3LCB 
          A.B   F1    BG                8         ZL    SOURCE TO SOURCE DONE 
+                                       TPCHN    J      YES, SEE IF WERE DONR 
-         A.B   F1    BG                2         ZL    LEFT OR RITE
+                                       TPRITE   J       RITE 
-         A+B   F1    BG    F1          2                SET RITE 
          A     I           Q           N=F200FF          LEFT SIDE 
                                  READ                  READ CHARS
          A.B   MEM   F2    F1    GATEI K=RITCAR        SAVE RITE CHAR
          A.-B  I     F2    F1    L8EA  K=CURCAR        SAVE CURRENT CHAR 
          A     F           F1          K=UCAR          ALSO PUT IN UCAR
                                        K=ENDBUF
          EOR   F1    Q                 K=TPLFCD  ZL      SBA = LCD 
+                                       TPLOOP1  J      NO, PROC CHAR 
-         A.B   F1    BG                7         ZL    YES, HOW BOUT LO BIT
+                                       K=W3LCB   U      YES
-                                       K=W3LCB   L      NO, GET WD3
+         A+B   F1    BG    F1          7         U      SET LAST CHAR FLAG 
 TPLOOP4  A+B   F1    BG    F1          8         L      SET DONR FLAG
+         A+B   F     BG    F1          2               SET RITE FLAG 
-TPLOOP1                                K=UCAR
+         A     F1          F           K=W3LCB         GET BACK CHAR 
-         A.B   F1    BG                PARITY    ZL      DO WE STRIP 
+                                       K=F1007F  U     YES, TAKE IT OFF
-                                       K=F100FF        NO, LEAVE IT ON 
+         A.B   F     F1    F1          K=UCAR          PUT CHAR BACK 
-                                       K=INTCNT
          SUB   F1    BG    F1          15        NU   TEST FOR MODE4 
+         A                             TPMD4    J     YES, PROCESS 
-         A     F                       K=MAXCHR  ZL   TEST FOR COUNT ZERO
+         A                             RNI.     J     NO, GET NEX INST.
-         A     F1          F1          K=INTCNT  INTU TEST ANY INTERRUPTS
+TPGOA1   ZERO              A                     U    YES GO FOR AIR 
-                                       RNI.     J     NONE, GET NEXT INST
+TPGOAIR                                K=W3LCB        SAVE WORD 3
          A     F1          F1          K=TP3LCB       SAVE WD 3 LCB
                                        K=ISPTA 
          A     F1          F1          K=TPISPTA       STATE PTR ADDR
                                        K=ISTASV
          A     F1          F1          K=TPIST         SAVE STATE INDEX
          A     P           F1          K=TPSTP          SAVE P REG 
                                        K=UCAR
          A     F1          F1          K=TPTCAR        SAVE CURRENT CHAR 
          ZERO              F1          K=TPFLG        ZERO TP RUNNING FLAG 
                                        K=D0X 
          A     F1          F1          K=SVD0          SAVE D0 AND D1
                                        K=D1X 
          A     F1          F1          K=SVD1
          ONE               Q           K=TPSVP         Q NONZERO FOR AIR 
          A     F1          P           UINTRTN  JL     GO UP FOR AIR 
 TPMD4    A.-B  F     BG                0         ZL   MD4, TEST CHAR. COUNT
+         A                             MD4SPC.1 J     NOT ZERO, RTN TO MD4 
-                                       K=MAXCHR  INTU TEST ANY INTERRUPTS
+                                       TPGOA1   J     GO PROCESS INTERRUPT 
-         A+B   F1    F     F1          K=INTCNT       NONE CONTINUE
                                        MD4SPC.1 J     CONTINUE 
-                                       MD4SPC.1 J     GO PROCESS MD4 
          BOX 
          THERE ARE THREE CONDITIONS UPON EXIT OF TEXT PROCESSOR
                Q = ZERO - USER SAYS EXIT 
                A = ZERO - MAX CHARS EXCEEDED - JUST GO FOR AIR 
                A = NON-ZERO - RELEASE BUFFER IN A REG
          EBOX
          EJECT 
          BOX 
          PROCESS RITE  CHAR
          EBOX
 TPRITE                                 K=RITCAR
          A     F1          F1          K=CURCAR       MOVE RITE CHAR 
          A     F           F1          K=UCAR          ALSO TO UCAR
                                        K=W3LCB 
          A.-B  F1    BG    F1          2               RESET RITE FLAG 
                                        K=ENDBUF
          A     F1          F           K=TPSBA         GET END OF BUFFER 
          EOR   F     F1                          ZL    ARE WE DONE 
+         ADD+  F1    ZERO  F1                    U      NO, BUMP SBA 
-                                       K=W3LCB   L     Y E S 
+                                       TPLOOP1  J     GO EXECUTE STATE 
-                                       TPLOOP4  J     GO SET DONR FLAG 
          EJECT 
          BOX 
          SOURCE BUFFER ADDR IS ZERO, THEREFORE GET 1ST SBA 
          EBOX
 TPLOOP2                                K=W3LCB         RESET RITE CHAR, SOURCE 
          A.-B  F1    F     F1                          DONE, AND SOURCE CHAR 
                                        K=SBA1ST
          A     F1          I                     ZL   IS THAT ZERO ALSO
+TPLOOP21                         READ  N=F200FF  U    NO, READ LCD-FCD 
-                                       TPLOOP22 J     YES, WE MUST EXIT
+         A     MEM         F1          K=TPLFCD        SAVE IT 
          A.-B  F     F2    X     L8EA                  GET LCD ONLY
          A.B   F     F2    Q                           NOW JUST FCD
          SUB   X     Q                 K=W3LCB   NU   FCD GTR THAN LCD 
+                                       TPCHN    J      YES, CKECK CHAINING 
          A.B   F     F2    X           RR0E           MAKE WD ADR FROM FCD 
          A.B   F     BG                15        ZL    LO BIT SET
+         ADD   I     X     F1          K=TPSBA   U     YES, ADD FCD TO TOP OF
-         ADD   I     X     F1          K=TPSBA   L     NO, ADD BUF TO FCD
+         A     F           X     READ            U     READ SBA
-         A     F           X           TPLOOP23 J      GO PREPARE LCD
+         A.B   MEM   F2    F1          K=RITCAR        SAVE RITE CHAR
                                        K=W3LCB 
          A+B   F1    BG    F1          2               SET RITE FLAG 
 TPLOOP23                               K=TPLFCD
          A.-B  F1    F2    F     L8EA                   EXTRACT LCD ONLY 
          A     F           F           RR0E            MAKE WORD ADDR
          ADD   I     F     F1          K=ENDBUF       ADD IT TO START OF BUFF
          A     X           I           TPLOOP   J      GO START EM UP
$ 
$ 
 TPLOOP24                               K=BIGBUF
          A.-B  I     F1    F                           GET TO TOP OF BIFFER
          A     F           I           TPLOOP23 J        CONTINUE
$ 
$         FIRST SBA WAS ZERO, WE MUST EXIT
$ 
 TPLOOP22 ZERO              F1          K=TPFLG        ZERO TP FLAG 
                                        K=TPSVP         RESTORE P REG 
          A     F1          P           UINTRTN  JL     E X I T 
          BOX 
          BUFFER EXHAUST FLAG WAS SET TO GET HERE, MEANING END OF 
          PREVIOUS WAS REACHED. CHECK FOR CHAIN OF BUFFERS, IF YES, DO IT.
          OTHERWISE PUT USER TO STATE 0.
                I HAS TO EQUAL SBA
          EBOX
 TPCHN    A.B   F1    BG                6         ZL    SUPPRESS CHAINING SET 
+                                       TPCHN1   J      YES, GO TO STATE 0
-                                       K=BIGBUF          NO
          A+B   I     F1    X                           GET TO CHAIN ADDR 
          A     I           Q     READ                  READ IT 
          A     MEM               GATEI K=F12180  ZL    IS IT EQUAL TO ZERO 
+         A     F1          F           TPCHN2   J      NO, CLEAR FLAGS 
-TPCHN1                                 K=ISPTA          YES
          A     F1          X           K=INTCNT       GET STATE PTR
          A     F1                READ            NU   READ STATE 0, TEST MD4 
+         A     MEM         P           MD4EX    J     EXIT MD4 INST. 
-         A     MEM         P           RNI.     J     GO EXECUTE STATE 0 
 TPCHN2                                 K=W3LCB         CLEAR DONE, LAST CHAR 
          A.-B  F1    F     F1                           AND RITE FLAGS 
          A                             K=TPSBA        UPDATE SBA 
          A     I           F1          TPLOOP21 J     PROCESS FCD/LCD
          EJECT 
          BOX 
          RETURN TO TP AFTER GOING UP FOR AIR 
          EBOX
 TPRTN1   A     A                       K=MAXCHR  NU   TEST FOR MODE 4
+                                       TPRTNM4  J     YES, SET UP MD4
-         A     F1          F1          K=INTCNT       FOR NORMAL 
 TPRTN2                                 K=TP3LCB       RESTORE WD3 LCB
          A     F1          F1          K=W3LCB         CONTENTS OF WD3 
                                        K=TPISPTA 
          A     F1          F1          K=ISPTA         STATE PTR TBL 
                                        K=TPIST 
          A     F1          F1          K=ISTASV        STATE INDEX 
                                        K=TPSTP 
          A     F1          P           K=TPTCAR         P REG
          A     F1          F1          K=UCAR          CURRENT CHAR
                                        K=TPSVA 
          ADD+  F1    BG    A           14              SET A = TO WD3 ADR
          ONE               F1          K=TPFLG        SET TP RUNNING FLAG
                                        K=SVD0
          A     F1          F1          K=D0X           RESTORE D0 AND D1 
                                        K=SVD1
          A     F1          F1          K=D1X 
                                        TPLOOP1  J      GO GET STARTED
 TPRTNM4  A+B   A     F1    F1          K=INTCNT       RESET INTERRUPT CNT. 
          A                             N=F200FF       RESTORE F2 
                                        TPRTN2   J     CONTINUE 
          BOX 
          EBOX
 TPLOOP6                                K=TPSBA         RESET SBA 
          A     F1          I           K=ISPTA 
          A     F1          F           K=ISTASV        GET STATE + INDEX 
          ADD   F1    F     F 
                                  READ                  READ EM UP
          A     MEM         P           TPLOOP   J      GET NEXT CHAR 
          EJECT 
          BOX 
          EBOX
 TMF1.1   A     A     X     A           TN/0           N=CNT, A=MEM ADDR
 TMF1.2   ZERO              X     READ  DECN           DECR COUNT 
          A     MEM         F1          INCK      NZU  INCR REG ADDR, CNT = ZERO
+         A                             MXREVLV  J     GO TO SET MF REV 
          ADD+  A     X     A           TMF1.2   J     NO, DO IT AGAIN
          BOX 
          EBOX
 TF1M.1   A     A     X     A           TN/0           N=CNT, A= MEM ADDR 
 TF1M.2   A     F1                WRITE DECN           DECR COUNT 
          ZERO              X           INCK      NZU  TEST FOR ZERO COUNT
+                                       UINTRTN  JL    YES, EXIT
          ADD+  A     X     A           TF1M.2   J     NO, DO IT AGAIN
          BOX 
          EBOX
 DECBZTMR                         READ
          A     MEM               GATEI N=F200FF        SAVE COUNT SET N
+         A     A           A                           RESET AB
-         A.B   I     F2                N=F20001  ZL     CNT = 0
+         SUB   I     F2    X     WRITE           U    NO, SUB 1, UNLOCK
-         A     I                 WRITE                 YES, JUST UNLOCK
+                                       UINTRTN  JL     RETURN
          EJECT 
          BOX 
          S T A T E   P R O C E S S   I N S T R U C T I O N S 
          EBOX
          BOX 
          EBOX
 OPCOD4   A.B   I     BG                1         ZL   TEST CBC OPTION
+                                                 U    DONT CLEAR COUNT 
-         ZERO              F           WRCH/0         CLEAR BUFF COUNT 
+         A     I           F     L8EA  K=F1003F       GET WORK CODE
          A.B   F     F1    F                     ZL   TEST WC = 0
+         A     X           X                     U    NO, STORE W
-                                       OP04.1   J     YES, DONT SAVE WC
+         A     F           F           WRCH/1         STORE WC 
******************************************************************************
*         TEST FOR TERMINATE INPUT BUFFER OPTION                             *
******************************************************************************
 OP04.1   A     I                       K=F10003  NU   TEST FOR TERM BUFFER 
+         ADD   A     F1    F           K=TPFLG   U    YES, GET IBP 
-         B           Q           PAGE4 TMA/S2    L    NO EXIT
+         A     F1                READ  K=TPIBP   ZL   IS TP RUNNING
+         A     F1          X           N=F20001  ZL   IS IBP ZERO
-         A     MEM         X           N=F20001  ZL   IS IBP ZERO
+         A     I           F1          K=ISAVE   U    NO, SAVE I 
-         B           Q           PAGE4 TMA/S2    L    YES, EXIT
+                                 RTJ   K=W3LCB        GO ADJUST LCD
-                                       ADJLCD   J       *
+         A.-B  F1    BG    F1          NCRINCH        ZERO LEFT/RITE FLAG
-                                       K=TPFLG        IS TP RUNNING
+         A     F1                                ZL     *
+         ZERO              F1          K=TPIBP   L    YES, ZERO IBP, EXIT
-         ADD+  A     BG    F           14             NO, GET IBP ADDRESS
+         ZERO              X     WRITE                ZERO IBP 
-         B           Q           PAGE4 TMA/S2    L    EXIT 
          BOX 
          EBOX
 OPCODE6  A.B   I     BG                1         ZL    INC OR DEC
+                                       OP.6.5   J       INC
-         A     I           X     L8EA  K=7       NU   DEC, WHICH COUNT 
+         ADD   A     K     F                     U    CNT2. FIND CNT2. 
-         ADD+  A     ZERO  F                     L    CNT1.
+               X           I     READ            U    READ CNT2
-               X           I     READ  N=F200FF  L    READ CNT1. 
+         A     MEM         X                     U 
-         A.B   MEM   F2    X                     L 
+         SUB   X     BG    X           15        U    DECREMENT
-         SUB   X     BG    X           15        L 
+         A     F           F           K=7FX     U 
-         A     F           F           K=7FX     L 
+         A     X                 WRITE OP.6.3   JZL   STORE NCCNT2  TEST=0 
                                        OP.6.2   J
 OP.6.4   ADD+  P     F     P           RNI.     J     NEXT INST. 
 OP.6.2   A     X                       WRCH/1    ZL   STORE NCCNT1. TEST=0 
+OP.6.3               Q           PAGE4 TMA/S2    L    NOT EQUAL 0, GO TO IDP 
-         A.B   I     K     F                          EQUALS 0 
                                        OP.6.4   J     SKIP TO
***************************************************************************** 
*         INCR WORD OR CHARACTER IN MLCB                                    * 
***************************************************************************** 
 OP.6.5   A.B   I     F1    F     L8EA  K=F10003       MASK MLCB DISPLACEMENT 
          SUB   A     F1    X           K=F10001       GET MLCB WD 0 ADDR 
          ADD   X     F     F                          GET MLCB ADDR
          A     I     BG          READ  2         ZL   READ MLCB WD, TEST WORD
+         ADD   MEM   F1    X           OP.6.6   J     INCR. FULL WORD
-         A     MEM         X                          CHAR., SAVE WORD 
          A     F           F                          SET WRITE ADDR.
          A.B   I     BG                3         ZL   TEST LEFT OR RITE CHAR.
+         ADD   X     F1    X           WRCH/1    U    RITE, INCR RITE, STORE 
-         ADD   X     BG    X           7         L    LEFT, INCR LEFT, STORE 
+         B           Q           PAGE4 TMA/S2    L    DECODE F2
-         A     X           X           WRCH/0         STORE LEFT 
 OP.6.7   B           Q           PAGE4 TMA/S2    L    DECODE F2
 OP.6.6   A     F           F                          GET MLCB ADDRESS 
          A     X           X     WRITE OP.6.7   J     STORE FULL WORD
          BOX 
          EBOX
 OPCODE8  A.B   F     BG                9         ZL    XCUTE GIVEN STATE&
+                                       OPCODE83 J        YES 
-         A.-B  F     BG    F           BIT8      ZL    NO, STATE EQUAL ZERO
+         A     F1          X           K=F1003F  U    NO, MOVE ISTA IN LCB 
-                                       OPCODE81 J     YES
+OPCODE84 A.-B  X     F1    X 
          A     A           A                          LCB PTR
          A+B   X     F     F1    WRITE K=W3LCB        WRITE ISTA 
                                        K=F1003F
          A.B   F     F1    F1          K=ISTASV       SAVE ISTA
 OPCODE81 A     I                       K=ISPTA   NU   LI ORDER BIT SET 
+         A     F1          F           K=ISTASV  U    YES
-         B           Q           PAGE4 TMA/S2    L    NO, REENTER IDP
          ADD   F1    F     X                          ISTA + ISTPA 
 OPCODE82                         READ                    READ INST PTR TBL 
          A     MEM         P           RNI.     J      GO EXECUTE STATE
$ 
$         EXECUTE STATE GIVEN, DO NOT CHANGE STATE
$ 
 OPCODE83 A.-B  F     BG    F           9               RESET BIT 
                                        K=ISPTA        GET ISPTA AND ADD TO 
          ADD   F1    F     F           OPCODE82 J     GIVEN STATE, GO XCUTE
          BOX 
          EBOX
 OPCODE9  ADD+  A     ZERO  X                          STORE BLOCK LENGTH 
          SUB   F1    F     F           WRCH/1         MINUS ADJ CNT IN CNT1
                      Q           PAGE4 TMA/S2    L    REENTER IDP
          BOX 
          EBOX
 OPCODEA  A.B   F     BG                8         ZL    REG STATE, OR MODEM 
+         A.-B  F     BG    F           8         U     MODEM, RESET BIT
-                                 READ  K=3FX     L    REG, READ WD3
+         A     F1          X                     U      GET MODEM STATE INDEX
-         A.B   MEM   K     X                           GET ISTA
 OPCODEAB SUB   X     F                           NU   SUBTRACT VALUE 
+                                       OPCD174  J     NEG. PUT F1 IN K 
-                                       INI.     J     POS. READ NEXT INST
          BOX 
          EBOX
 OPCODEC  EOR   F     F1                          ZL   COMPARE CHAR 
+                                       OPCD174  J     NE.ADD F1 FIELD TO P 
-                                       INI.     J     EQ. EXEC  NEXT INST. 
          BOX 
          EBOX
 OPCODE11 B           Q     F1          K=QSAVE        SAVE  Q
                                        K=LC1SV        GET CLA =
          A.B   F1    F2    A           K=OUTDATA      PUT INTO REG A 
          A     F1          Q           K=CLAID-
+         A+B   A     F1    A     RTJ   K=LC1SV 
-                                       M05OUT   J
+                                       K=PORTADR 
          A     F1          X           K=F10004        GET ADDR OF PORT
          ADD   X     F1    X                          INDEX TO NFCCST
                                  READ  K=F1CD00       AND READ IT
          A.-B  MEM   F2    A     L8EA                 SHIFT CMD WD 1 
          A+B   A     BG    A           BIT9      U    SET BIT 9
+         A+B   A     F1    A     RTJ   K=ASAVE        A= CDXX   RESYNC 
-                                       M05OUT   J     OUTPUT IT
+         A     F1          A           K=QSAVE        RESTORE A, AND DECODE
          B           F1          PAGE4 TMA/S2    L    F1 FIELD, REENTER IDP
          BOX 
          EBOX
 OPCOD13  A     I                                 NU   CHECK HI ORDER BIT 
+         -B          F2    F                     U    SET, MAKE FF00 
-         ZERO              F                          NOT SET, MAKE ZERO 
+         ADD   A     K     X                          X = WD 9 OF LCB
          A     F           F     WRITE                WRITE IT 
                      Q           PAGE4 TMA/S2    L    REENTER IDP
          BOX 
          EBOX
 OPCODE1F A     A           A           K=W3LCB        A= WD3 PTR OF LCB
          A     I                                 NU
+         A+B   F1    X     F1    WRITE           U    SET
-         A.-B  F1    X     F1    WRITE                RESET
+                     Q           PAGE4 TMA/S2    L    REENTER IDP
          BOX 
          EBOX
 ADDCHAR  A.B   F1    Q     F                          MASK F1 FIELD
          EOR   F     F1                          ZL   TEST SPECIAL ADD 
+         B           Q     F1          K=SVQ11   U    NO, SAVE Q 
-                                       SPECADD  J     YES
+                                 RTJ   ADCH.1   J     GO TO STORE
*         ABOVE RTJ WILL RETURN HERE
* 
+                                       K=SVQ11        RESTORE Q
-         B           F1          PAGE4 TMA/S2    L    EXIT, F1 FIELD 
+ADCH.1                                 K=TPFLG        IS TP RUNING 
-         A     F1                                ZL     *
+         A     X           F           STORTP.2 J     GO TO STORE TP 
-         A     X           F           STORIP.2 J     GO TO STORE IP 
          BOX 
          EBOX
          BOX 
          EBOX
 OP14.0                                 K=F10F00       MASK 
          A.B   I     F1    A     L8EA                 GET DISPL. TO MLCB WD
          ADD   A     F     A                          DISPL + MLCB START 
          A     I           A     READ  N=4            READ MLCB WD, MASK BUF D 
          A     MEM         F1          K=TEMP         SAVE MLCB WORD 
          ALEA                          K=F1000A       SHIFT BUF DISPLACEMENT 
          ADD   X     F1    F           K=F10003       GET NCSCBA ADDR. 
          A.B   A     F1    A     READ                 READ NCSCBA
          ADD+  A     MEM   A           K=TEMP         ADD BUFF ADDR. + DISPL.
          A     I                       N=F200FF  NU   TEST FOR WORD STORE
+         A     F1          F     WRITE OP14.1   J     STORE ENTIRE WD IN BUFF
-         A.B   I     BG                1         ZL   TEST CHAR. LEFT/RITE 
+         A.B   F1    F2    F     WRITE OP14.1   J     RITE - STORE IT
-         A.-B  F1    F2    F     L8EA                 LEFT - GET LEFT
          A     F           F     WRITE                STORE LEFT 
 OP14.1   A     X           A                          RESTORE A
          B           Q           PAGE4 TMA/S2    L    DECODE F2 FIELD
          BOX 
          EBOX
 OPCODE15 A.B   I     BG                1         ZL   TEST CMD OR STATUS 
+                                       K=PORTADR U    COMMAND, GET PORT
-                                       OPCD15.1 J     STATUS 
+         ADD   F1    BG    F           13             GET PORT + 4 
          A                       READ                 READ CMD1/CMD2 
          A     MEM         F                          SAVE, CONTINUE 
 OPCD15.1 ADD+  P     ZERO  P                          GET MASK ADDR
          A     I                 READ            NU   READ MASK, TEST OR COMP
+         A.B   MEM   F     F                     L    TEST, RESULT = 0 
-         A.B   MEM   F     F     GATEI                COMPARE
+         EOR   I     F     F                     ZL     *
-         A     F                                 ZL   TEST FOR ZERO
+                                       OPCD174  J     NO,SKIP ON F1 FIELD
-                                       INI.     J     YES, GET NXT INST
          BOX 
          EBOX
+OPCODE16 A+B   X     BG    F1          15             MAKE ENTRY AN 01 
-                                       K=STW1N2       GET STATUS WORD ONE AND
+         A     F1          F1          K=OLDIBP       TWO AND STORE IT 
-         A     A           F1          K=WD3PTR       SAVE A AND Q 
+         B           Q     F1    RTJ   K=QSAVE 
-                                       MAIN     J      GO BUILD 01 W/L 
+                                       K=WD3PTR
          A     F1          A           K=QSAVE         RESTORE A AND Q 
                      F1          PAGE4 TMA/S2    L     DECODE F1 FIELD 
          EJECT 
 OPCD1F                                 N=F20F00       EXTRACT CONTINUED
          A.B   I     F2    X     L8EA  K=F100F0       OPCODE, MAKE IT 6F0-6FF
          A+B   X     F1    X           N=F200FF       ALL NEW ONES ARE FROM
          B           X           PAGE6 TMA/S2    U     6E0 - 6EF 
          EJECT 
          BOX 
          RESTORE TP CONDITIONS 
          EBOX
 RSTOR    A     I           F1          K=TPISV         SAVE I AND P
          A     P           F1          K=TPPSV 
                                        K=LEV2FLG 
          A     F1                                ZL    LEVEL1 OR LEVEL2
+                                       K=LEV2A   U    LEVEL 2
-                                       K=LEV1A        LEVEL 1
+         A     F1          F           INCK            SBA 
          A     F1          X           INCK            RITE CHAR 
          A     F1          Q           INCK            FLAGS 
          A     F1          I           INCK            DBA 
          A     F1          A           K=TPISV         CRC 
          A.B   F1    BG                6         ZL    SOURCE OR DEST
+                                       DESTRST  J       DEST OR BOTH 
-         ONE               P                           SET SOURCE ONLY FLAG
          A     F           F1          K=TPSBA          SBA
          A     X           F1          K=RITCAR          RITE CHAR 
                                        K=F12180
 RSTOR1   A     F1          X                           GET MASK
          A.B   X     Q     Q           K=W3LCB         SAVE MASK BITS ONLY 
          A.-B  F1    X     F                           RESET CURRENT FLAGS 
          A+B   F     Q     F1                         CONCAT AND STORE BACK
          A     P                       K=WD3PTR  ZL      SOURCE ONLY 
+                                       RSTOR3   J      YES, EXIT 
-         ADD   F1    BG    X           14             GET LCB WORD 5 ADDRESS 
          A     I           F1          K=TPIBP        RESTORE DEST. BUFFER 
          ADD   X     BG    X           13             GET LCB WORD 9 ADDRESS 
          A     A                 WRITE K=BIGBUF        WRITE CRC 
          A+B   I     F1    X                           GET TO CHAIN OF DBA 
          ONE               Q     READ                  READ IT , SET FLAG
          A     MEM               GATEI           ZL     IS IT ZERO 
+         A     X           X                     U      NO 
-                                       RSTOR3   J      YES, EXIT 
          ZERO              F     WRITE K=TPPSV         ZERO CHAIN
          ADD   F1    BG    P           15             P = P + 1
          A     I           A           K=AIRFLG        SET FLAG
          ONE               F1          RSTOR3   J      GO REL BUF
$ 
$         Q IS NON-ZERO SO MACRO WILL RELEASE BUFFER
$ 
          EJECT 
 DESTRST  A.B   F1    BG                7         ZL   DEST OR BOTH 
+         ZERO              P                     U    BOTH 
-         ZERO              P           K=F18000  L    JUST DESTINATION 
+         A     F           F1          K=TPSBA   U    RESTORE SBA
-                                       RSTOR1   J     JUST DEST
          A     X           F1          K=RITCAR       RESTORE RITE CHAR
                                        K=F1A180       GET MASK 
                                        RSTOR1   J     DO IT
******************************************************************************
*        OUTPUT CLA CMD1 AND CMD2 SUBROUTINE                                 *
*        INPUTS   A = NAPORT WD 0 ADDRESS 
*                 X = COMPLEMENT OF MASK TO BE APPLIED TO CMD1 AND CMD2      *
*                     FROM NFCCST IN NAPORT WD4.                             *
*        OUTPUTS      CMD1 AND CMD2 OUTPUT TO THE CLA.                       *
*                     NFCCST UPDATED IN NAPORT.                              *
******************************************************************************
 OUTCLA   -B          CRTJ  F1          K=TEMP
          ADD   A     BG    Q           13             GET NFCCST ADDRESS 
                                  READ                 READ NFCCST, SET OON M 
          A.-B  MEM   X     X                          MASK CMD 1 AND 2 
          B           Q     F                          GET NFCCST ADDRESS 
          A     X           X     WRITE K=SUPVID       WRITE NFCCST BACK
          A.-B  X     F2    A     L8EA            U    OUTPUT CLA CMD WD1 
+         A+B   A     F1    A     RTJ                    *
-                                       M05OUT.0 J         *
+         A.B   X     F2    A           K=F1CD00  U    OUTPUT CLA CMD WD2 
+         A+B   A     F1    A     RTJ                    *
-                                       M05OUT.0 J         *
+                                       K=TEMP         EXIT WITH SAVED RTJ
                                        RTNWHR   J       *
          ORG   6F0X
          EJECT 
******************************************************************************
*         F2 = 0 - SPECIAL RTRN INSTRUCTION                                  *
******************************************************************************
+         A     A           I           OPCDE.10 J     SAVE A REG 
******************************************************************************
*         F2 = 1 - RESYNC                                                    *
******************************************************************************
+         A     A           F1          K=ASAVE        SAVE A REG 
-                                       OPCODE11 J     PROCESS RESYNC 
******************************************************************************
*         F2 = 2 - HASP 1 SPECIAL TEXT PROCESSING INSTRUCTION                *
******************************************************************************
+         A                             K=UCAR         GET UCAR 
-         A                             TPHSP1   J       *
******************************************************************************
*         F2 = 3 - INSERT TEXT PROCESSING CHARACTER                          *
******************************************************************************
+         A                             OPCD13   J     JUMP TO INSERT CHAR. 
******************************************************************************
*         F2 = 4 - MODE 4 SPECIAL TEXT PROCESS INSTRUCTION                   *
******************************************************************************
+         B           F2    X           K=F10007       GET STATE
-         ADD   A     F1    F           MD4SPC   J     GO PROCESS 
******************************************************************************
*         F2 = 5 - HASP SPECIAL TEXT PROCESS INSTRUCTION 2                  * 
******************************************************************************
+         ZERO              F           K=TPDD         GET TP FILE D
-         ADD+  F1    F     F1          TPHSP2   J     GO PROCESS HASP 2
******************************************************************************
*         F2 = 6 - TP CC1/CC2  ADD/SUB FILE REG., IF SUB TEST RESULT        * 
******************************************************************************
+         A     A           X           TPCCFR   J         SAVE A 
******************************************************************************
*         F2 = 7 - ASYNC SPECIAL INSTRUCTION 1
******************************************************************************
+         A                             K=UCAR         GET UCAR 
-                                       TPASY1   J     GO PROCESS 
******************************************************************************
*         F2 = 8 - ASYNC SPECIAL INSTRUCTION 2
******************************************************************************
+         A                             K=UCAR         GET UCAR 
-         A     F1          F           TPASY2   J     GO PROCESS 
******************************************************************************* 
*         F2 = 9 - SPECIAL INSTRUCTION SAVE UCAR                              * 
******************************************************************************* 
+                                       K=UCAR        GET UNTRANSLATED CHAR 
-                                       SAVUTC   J    GO PROCESS
******************************************************************************* 
*         F2 = A - SPECIAL INSTRUCTION RESTORE UCAR FROM SAVED VALUE          * 
******************************************************************************* 
+                                       K=SUCAR       GET UNTRANSLATED CHAR 
-                                       RSTUTC   J    GO PROCESS
******************************************************************************* 
*         F2 = B - SPECIAL INSTRUCTION COMPARE CHARNE USING EXTERNAL CHAR    *
******************************************************************************* 
+         ADD+  P     ZERO  P                         GET NEXT WORD 
-         A                             XCHRNE   J    GO PROCESS
******************************************************************************* 
*         F2 = C - SPECIAL INSTRUCTION SAVE CURRENT STATE INDEX IN WORD 9     * 
******************************************************************************* 
+                                       K=F1003F      GET STATE INDEX MASK
-         A     F1          Q           SAVCST   J    GO PROCESS
******************************************************************************* 
*         F2 = D - SPECIAL INSTRUCTION RESTORE STATE INDEX FORM SAVED VALUE   * 
******************************************************************************* 
+                                       K=F10006      GET WORD 9
-         ADD   A     F1    X           RSTCST   J    READ SAVED INDEX
********************************************************************************
*         F2 = E - SPECIAL INSTRUCTION  TURN INPUT-SUPERVISION OFF             *
********************************************************************************
+         A     A           F           K=LC1SV        SAVE A SO A CAN BE USED. 
          A     F1          A           RSTISO   J     RESET INPUT SUPERVISION
          EJECT 
******************************************************************************
*         F2 = F - SPECIAL INSTRUCTION TO GENERATE CHARACTER PARITY           * 
*         TP REG. A = 0  ODD PARITY, A = 1 DO NOTHING, A = 2  EVEN PARITY     * 
******************************************************************************
+         A                             K=DAX          GET PARITY TYPE
-         A                             X25PAR   J       *
          ORG   700X
          BOX 
          LOCATIONS 700 - 706 ARE RESERVED FOR TRANSRORM ON F1
          FIELD FOR STATE INST MOVE FIELD 
          EBOX
          BOX 
          F1 FIELD = 0
          EBOX
+         ADD   I     K     Q                           GET TO F1 SOURCE
-                                       FIELD0   J
          BOX 
          F1 FIELD = 1
          EBOX
+         ADD   I     K     Q                           GET TO F1 SOURCE
-                                       FIELD1   J
          BOX 
          F1 FIELD = 2
          EBOX
+         ADD   I     K     Q                           GET TO F1 SOURCE
-         ZERO              A           FIELD2   J        SET FLAG
          BOX 
          F1 FIELD = 3
          EBOX
+         ADD   I     K     Q                           GET TO F1 SOURCE
-         ONE               A           FIELD2   J        SET FLAG
          BOX 
          F1 FIELD = 4
          EBOX
+         ADD   X     K     Q 
-                                       FIELD4   J
          BOX 
          F1 FIELD = 5
          EBOX
+         ADD   X     K     Q 
-         ZERO              X           FIELD5   J
          BOX 
          F1 FIELD = 6
          EBOX
+         ADD   X     K     Q 
-         ONE               X           FIELD5   J
          EJECT 
          BOX 
          EBOX
+OPCODE17 B           Q     F1          K=QSAVE         Q = ACTION FIELD
                                        OPCOD171 J      GO READ LCB/PRAM
-OPCOD172 A.B   I     BG                01        ZL   CHECK FOR SETWRD.
          B           Q     F1          OPCOD173 J
-         A.B   I     BG                02        ZL   CHECK FOR TSTMXF 
                                        TEST1    J     YES,GP PROCESS SKIP
-         A.B   I     BG                03        ZL   CHECK FOR RSTMXF.
          A.-B  F1    Q     F1                    U    MASK =SETMXF1BITS
-         A+B   F1    Q     F1                         SET FLAG FOR RSTMXF. 
 OPCOD173 A     X           X                          X = LCB/WRD BASE +INXD.
-         A     F1                WRITE K=QSAVE        WRITE RESULTS BACK 
                      F1          PAGE4 TMA/S2    L    DECODE F1 FLIED. 
$ 
$         TEST OPTION WAS SELECTED
$ 
 TEST1    A.B   F1    Q                           ZL
+                                       OPCD174  J     YES,ADD F1 FIELD 
-                                       INI.     J     NO, READ NEXT INST.
+OPCD174                                TK/4           GET SKIP COUNT 
          ADD+  P     K     P                          SET P TO NEXT/INST.. 
                                        RNI.     J     GET NEXT STATE/INST. 
          BOX 
          EBOX
 OPCOD19  A.-B  F     BG    F           8         ZL     MODEM STATE = 0
+         ADD   F1    BG    X           14        U    NO, GET NAPORT = 2 
-                                       OPCOD191 J      Y E S 
+                                 READ  K=F1000F       READ MODEM INDEX 
          A.-B  MEM   F1    X                           SAVE LEFT 12 BITS 
          A+B   X     F     X                           CONCAT WITH NEW INDEX 
          A     F           F1          K=MODIX         SAVE NEW INDEX
                                        K=PORTADR 
          ADD   F1    BG    F           14           GET BACK NAPORT = 2
          A     X           X     WRITE                WRITE NEW VALUE
 OPCOD191 A     I                       K=MSPTA   NU    HI ORDER BIT SET
+         A     F1          F           K=MODIX   U      YES
-                     Q           PAGE4 TMA/S2    L    NO, REENTER IDP
+         ADD   F1    F     F                          ADD MSPTA = MODIX
                                  READ                   READ POINTER TABLE 
          A     MEM         P           RNI.     J      P GETS POINTER
          BOX 
          EBOX
+OPCODE3  B           Q     F1          K=QSAVE        SAVE Q 
-         A.B   I     BG                0         ZL   WK CODE FROM STAT.INST.
+                                       OPCD3.2  J     NO,FROM LCB,GO TO CODE3.2
-                                       K=TPFLG        IS TP RUNNING
+         A     F1                      K=TPIBP   ZL     *
+         A     F1                      OPCD.15  J     GET IBP FROM REG.
-         ADD+  A     BG    X           14             GET ADDRESS OF IBP 
+                                 READ                 READ IBP 
-         A     MEM         F1          K=OLDIBP  L      *
+OPCD.15  A     F1          F1          K=OLDIBP       SET OLD IBP
-         A     I           F1          K=ISAVE        SAVE I 
+OPCD3.1                          RTJ                  PRIME RTJ
-                                       BLD34    J     GO BUILD W/L 
+                                       K=ASAVE        RESTORE A
          A     F1          A           K=ISAVE        RESTORE Q
          A     F1          I           K=QSAVE        RESTORE I
          B           F1          PAGE4 TMA/S2    L    REENTER IDP
 OPCD3.2                                K=10
          ADD   A     K     X                          POINT TO 1ST BFR 
                                  READ                 GET IT 
          A     MEM         F1          K=OLDIBP       PUT IT IN F1OLDIBP 
          A     I           F1          K=ISAVE        SAVE I 
          A     X           X                           BETTER ZERO OUT 
          ZERO              F     WRITE                 1ST BUFFER ADDR 
          ADD+  X     ZERO  X                          POINT TO SAVED WORKCODE
                                  READ  K=F100FF       GET IT 
          A.B   MEM   F1    F     L8EA                 ISOLATE AND POSITION 
          A     F           I           OPCD3.1  J     PUT NEW WKCODE IN I
          BOX 
          EBOX
          EJECT 
          BOX 
 BLD34-COMMON EVENT WORKLIST BUILD SUBROUTINE.
  
 THIS SUPROUTINE WILL BUILD AN ENTRY IN EITHER THE MUX2 EVENT WORKLIST Q OR 
 THE USER WORKLIST DEPENDING ON THE VALUE OF WORD 2 OF THE STATE PROCESS
 INTRUCTION. THE NUMBER OF WORDS PER ENTRY WILL CONFORM TO THE ENTRY SIZE OF
 THE PARTICULAR WORKLIST WHERE THE ENTRY IS BEING PUT.
  
   CALLED BY STATE PROCESS SUBROUTINE OPCODE3 AND OPCODE4 AND ANY OTHER 
   SUBROUTINE WHICH REQUIRES PUTTING A 1 2 OR 3 WORD ENTRY. 
   INPUTS: OLDIBP IN FILE REGISTER 1 IS THE PARAMETER TO PUT IN WORD 3 ALL
   OTHER REGISTERS SAME AS FOR ALL STATE PROCESS INSTRUCTIONS.
   OUTPUT: ENTRY IN EITHER AN OPS LEVEL WORKLIST OR IN THE EWLQ 
   THE P REGISTER IS BUMPED BY 1
          EBOX
 BLD34    A     I           F1          K=XISV         SAVE I 
          -B          CRTJ  F1          K=RTJSV34        SAVE RTJ REG 
          ADD+  P     ZERO  P                          BUMP P TO POINT TO STAT+1
          ONE               F1    READ  K=PFWLFLG      READ WLCB ADR, SET FLAG
          A     MEM         X           K=SM2FLG  ZL   STORE IN X. IS WLCB=0
+         ONE               F1          GOON     J     NO,SET OPS ENTRY FLAG
-                                       K=PFWLCB       YES, PUT MUX2 WLCB IN X
+         A     F1          X                     U 
+GOON                             RTJ                  SET UP RETURN
-         A     X           X           PFLISTPT J      GO TO LISTPUT 
+         ZERO              F1          K=PFWLFLG      CLEAR W/L FLAG 
          A     A           A           K=XISV         GET PUT POINT IN AB
          A     F1          F     L8EA  WRCH/1         WRITE WORK CODE
                                        K=FINK         GET FINK/INC 
          SUB   F1    BG    F           15
          A.B   F     F2    F           K=LC1SV   ZL    ISOL INC, MORE TO PUT 
+         ADD+  A     ZERO  A                     U    YES,BUMP PUT POINTER 
-                                       EXIT     J     NO GO TO CLEANUP 
+         A.B   F1    F2          L8EA  WRHW0          GET LINO AND PUT IT
-         SUB   F     BG    F           15        ZL   DEC INC, MORE PUT
+         ADD+  A     ZERO  A           K=OLDIBP  U    YES,BUMP PUT POINTER 
-EXIT                                   K=RTJSV34 L     GET CALLERS ADDR
+         A     F1          F     WRITE EXIT     J       WRITE WORD 3 
          B           F1          PAGE7 TMA/S2    U    RETURN TO CALLER 
          BOX 
          EBOX
******************************************************************************
*         MICRO ENTRY FOR RELEASE 16 WORD BUFFER ON PAGE 7                   *
******************************************************************************
 REL16.7  -B          CRTJ  F1          K=RELRTRN       SAVE RETURN 
          A     F           F1          K=RELADDR       RETURN FOR STAMP
                                        REL16M   J      GO RELEASE 16 
          EJECT 
          BOX 
          INSERT TEXT PROCESSING CHARACTER
          EBOX
+OPCD13   A     A           F1          K=ASAVE        SAVE A 
-         A     I                       K=LEV1C   NU   LEVEL 1
+                                       K=LEV2C        LEVEL 2
-         A     F1                      INCK      NU   BUMP K +1
+         A     F1          X           RL1E      U    IF RIGHT ADD 1 SHIFT 1 
-         A     F1          X           RL0E           IF LEFT JUST SHIFT 1 
+         A     F1          A           K=F1007F       DBA IN A 
-         A.B   X     F1    X           K=F1003F       GET MASK,X EQ-DBAFCD 
+         A.-B  A     F1    A                          GET TO BUFFER TOP
-         A     X           Q     READ                 DBATOP IN A DBAFCD IN Q
+         A.-B  MEM   F2    X     L8EA                 LCD IN X 
-         ADD+  P     ZERO  P                          BUMP INSTR ADDRESS 
+         SUB   X     Q     F     READ                 F EQ. CHARS,A EQ DBATOP
-         A.-B  MEM   F2    X     L8EA                 X EQ. INDEX,Q EQ DBAFCD
+DBALOOP  ADD+  F     ZERO  F                          BUMP CHAR 1
-         SUB   X     F     F           N=1       NU   INDEX GT CHARS 
+         A     A           F           DETRDBA  J     CHARS GT INDEX GET DBA 
-         A+B   A     F1    A                          GET END OF BUFFER
+         A     F           X     READ                 UPDATE INDEX 
-         A     MEM         A           K=ASAVE   ZL   NEWDBA TOP OF BUFFER 
+                                 READ            U    READ LCDFCD NEXT BUFFER
-                                       OPEXIT   J     CHAIN EQ. ZERO EXIT
+         A     MEM         F           N=F200FF       F EQ. LCDFCD A EQ BUFTOP 
-         A.B   F     F2    Q           K=F1003F       Q EQ  FCD
+         A.-B  F     F2    F     L8EA                 F EQ  LCD
-         SUB   F     Q     F           DBALOOP  J     F EQ. CHARS,A EQ BUFF TOP
+DETRDBA  ADD   X     Q     A           K=UCAR         Q EQ. FCD,X EQ. DBALCD 
-         A.B   I     BG                3         ZL   TEST FOR SUP OR SOURCE 
+         A     F1          Q           CHARPOS  J     Q EQ. SOURCE CHAR
-         A     P     ZERO  P                          GET  SUPPLIED CHAR.
+                                 READ  N=F200FF       READ IT
-         A.B   MEM   F2    Q           N=1            Q EQ. SUPPLIED CHAR
+CHARPOS  AREA                          K=ASAVE        RIGHT SHIFT END AROUND 
-         A     A           A           N=F200FF  NU   NEGATIVE SAYS RIGHT CHAR 
+         A.B   A     F2    A                     U    RIGHT CHAR MASK HI BIT 
-         ADD   A     F     A           LFTCHR   J     LEFT CHAR DBA
+         ADD   A     F     A                          RIGHT CHAR DBA 
-         B           Q     Q           WRCH/1    L    WRITE RIGHT CHAR.
+LFTCHR   B           Q     Q     L8EA  WRCH/0         WRITE LEFT CHAR. 
-OPEXIT   A     F1          A           INI.     J     EXIT TO NEXT INSTR.
          EJECT 
          BOX 
          EBOX
-SRSM2.1  A.B   A     BG                0         ZL   IF MSB SET 
+         A+B   SM2   F     SM2                   U    THEN OR IN MASK INTO SM2 
-         A.-B  SM2   F     SM2                        ELSE AND COMP. OF MASK 
+                                       UINTRTN  JL    EXIT 
          EJECT 
          BOX 
          ADD CHAR N TIMES, WHERE N = CHAR CNT1 
                F1 = 6 - USE OPERAND FIELD FOR CHAR 
                F1 = 7 - USE TCAR FOR CHAR
                      EXIT - ALWAYS XCUTE NEXT INST.
          EBOX
 SPECADD  A     A           F1          K=SPECA          SAVE A 
                                        K=UCAR
          A     F1          F1          K=SAVCAR        SAVE ORIG CHAR
          ADD+  A     ZERO  F                            GET CNT 1
          B           Q     F     READ                    READ IT 
          A.B   MEM   F2    X           K=F10050  ZL    CNT 1 ZERO
+         SUB   F1    X                           NU    IS COUNT LEGAL
-                                       INI.     J     CNT = ZERO, INI
+                                       INI.     J     CNT NOT LEGAL, INI 
-         A.B   F     BG                10        ZL    WHAT CHAR 
+                                       K=UCAR    U      GET CURRENT CHAR 
-         A.-B  I     F2    F     L8EA            L      USE OPERAND
+         A     F1          F 
-         A     F           F1          K=UCAR         PROPER CHAR TO UCAR
+                                 RTJ 
-                                       TRSLAT   J      CHECK XLATION 
+                                       K=TCAR          GET BACK CHAR 
          A     F1          A     L8EA                   PUT IN LEFT SIDE 
          A+B   A     F1    A           K=TPFLG        A = DBL CHAR.
          A     F1                      K=TPIBP   ZL   IS TP RUNNING
+         A     F1          Q           SPCAD.2  J     YES, GET FROM REG. 
-SPCAD.1  A                             K=SPECA        NO, GET IBP ADDRESS
+         ADD+  F1    BG    F           14               *
-         A                       READ                 READ IBP 
+         A     MEM         Q           K=W3LCB   ZL   IS IBP ZERO
-SPCAD.2  B           Q                 K=W3LCB   ZL   IS IBP ZERO
+         A     F1                                NU   NO, LEFT OR RITE 
-                                       NOBUF1   J
+                                       RTSIDE   J      RITE SIDE 
-SPECADD1 A     X                       K=SPECA   ZL    LEFT, IS CNT = ZERO 
+         A     X                                 NU    IS CNT NEG
-         A     F1          A           SPECADD3 J      CNT = ZERO
+         A     F1          A           SPECADD2 J      CNT IS NEG- 
-                                       K=BIGBUF
+         A.B   F1    Q     F                           MASK BUFSIZE
-         EOR   F1    F                 K=BITFLAG ZL    TEST END OF BUFFER
+         B           Q     Q           N=F20001  U     NO, NOT THERE YET 
-                                       NUBUF1   J     YES, GET NEW BUFFER
+         A     A           A     WRITE K=F10002        WRITE TWO CHARS 
          ADD   F2    Q     Q                           BUMP IBP BY ONE 
          SUB   X     F1    X           CHRXPAN  J     CNT - 2, CK ODD INT
$ 
$         COUNT IS NEG, SET RITE FLAG AND DEC IBP 
$ 
 SPECADD2 A     A           A           K=W3LCB         SET RITE FLAG 
          A+B   F1    BG    F1          0                IN WD 3
          B           Q     F                          GET IBP ADDR 
          SUB   F     BG    Q           15              DEC BY ONE
 SPECADD3 A     A           A           K=W3LCB 
          A     F1                WRITE K=TPFLG        WRITE WORD 3 BACK
          A     F1                                ZL   IS TP RUNNING
+         B           Q     F1          K=TPIBP   L    YES, RESTORE IBP 
-         ADD+  A     BG    F           14             NO, GET IBP ADDRESS
+         B           Q     Q     WRITE K=SAVCAR  U    WRITE IBP
-                                       K=SAVCAR       GET SAVED CHARACTER
          A     F1          F1          K=UCAR          RESTORE ORIG CHAR 
                                        INI.     J     XCURE NXT INST 
$ 
$         STORE FIRST CHAR IN RITE SIDE OF BUFFER 
$ 
 RTSIDE   B           Q     Q           N=F20001
          A     A           A           WRCH/1         CHAR TO RITE SIDE
          ADD   F2    Q     Q           K=W3LCB         BUMP IBP BY ONE 
          A.-B  F1    BG    F1          0               RESET RITE FLAG 
          SUB   X     F2    X           SPECADD1 J     COUNT - 1, CONTINUE
$ 
$         IBP WAS EQUAL TO ZERO 
$ 
 NOBUF1                                 K=BITFLAG 
          A+B   F1    BG    F1          14               SET RETURN BIT 
          A     A           F1          K=SPECA1         SAVE CHAR
          A     X           F1          K=SPECX1        SAVE COUNT
                                        K=SPECA         RESTORE A 
          A     F1          A           NOBUF    J      GET BUFFER
$ 
$         END OF BUFFER HAS BEEN REACHED, GET NEW ONE 
$ 
 NUBUF1   A+B   F1    BG    F1          14              SET RETURN BIT
          A     A           F1          K=SPECA1
          A     X           F1          K=SPECX1        SAVE A AND X
          B           Q     X           K=SPECA        X MUST = IBP 
          A     F1          A           GETBUF   J     RESTORE A, GET NEW BUF 
          EJECT 
          BOX 
          EBOX
 SETFLGS  A.B   I     BG                BIT7      ZL    THIS BUF, OR 1ST BUF
+         ADD+  A     BG    F           14        U     CURRENT BUFFER
-                                       SETFLGS2 J      FIRST BUFFER
+                                       K=TPFLG        IS TP RUNNING
-         A     F1                      K=TPIBP   ZL    * 
+         A     F1          F           K=BIGBUF  L    YES, GET IBP FROM REG. 
-                                 READ  K=BIGBUF
+         A.-B  MEM   F1    F                     U    GET TOP OF IBP 
-         A.-B  F     F1    F                          GET TOP OF TPIBP 
 SETFLGS1 ADD+  F     ZERO  F                           GET TO FLAG WORD
                                  READ                   READ IT
          A+B   X     MEM   X                          CONCAT WITH USER BITS
          A     F           F 
          A     X           X     WRITE                WRITE BACK RESULT
                      Q           PAGE4 TMA/S2    L    DECODE F1 FIELD
$ 
$         SET FLAGS IN FIRST BUFFER 
$ 
 SETFLGS2                               K=10
          ADD   A     K     F                           GET TO WD 13
                                  READ                 READ 1ST BUFFER ADDR 
          A     MEM         F           SETFLGS1 J     GO FINISH UP 
          EJECT 
          BOX 
          EBOX
 OPCOD1C  A     A           F1    READ  K=WD3PTR        READ VALUE
          A     MEM         X                           STORE IN X
          A     I                       K=7       NU   CNT1 OR CNT2 
+         ADD   A     K     F                     U       CNT2
-         ADD+  A     ZERO  F                     L      CNT1 
+                                 READ            U 
-                                 READ            L 
+         A     MEM         Q           K=F10008  U 
-         A.B   MEM   F2    Q           K=F10008        RESULT TO Q REG 
+         A.B   I     BG                1         ZL    F3 = 1
+         ADD   A     F1    F           OPCOD1C2 J     YES, 1ST FLAG HIT
-         A.B   I     BG                2         ZL   NO, F4 = 1 
+                                       OPCOD1C3 J     YES, INSERT VALUE
-         A.B   I     BG                3         ZL    NO, F5 = 1
+                                       OPCOD1C4 J      YES 
-         A.B   I     BG                4         ZL    NO, DOES F6 = 1 
+OPCOD1C1 EOR   X     Q                           ZL   YES, COMPARE CNT WITH VAL
-         B           Q     F           OPCOD1C6 J      NO DO MOD TEST
+                                       OPCD174  J     NOT =, SKIP PER F1 
-OPCOD1C5                               INI.     J     ARE = ,XCUTE NXT INST
$ 
$         COMPARE COUNT TO BLOCK LENGTH 
$ 
 OPCOD1C2                         READ                  READ BLK LENGTH 
          A     MEM         X           OPCOD1C1 J      GO COMPARE
$ 
$         INSERT VALUE TO CHARACTER COUNT 
$ 
 OPCOD1C3 A     I                       K=7       NU   CNT1 OR CNT2 
+         ADD   A     K     F                     U     CNT2
-         ADD+  A     ZERO  F                     L       CNT1
+         A     X           X     WRITE           U    WRITE VALUE AT CNT2
-         A     X           X           WRCH/1          NEW VALUE TO CNT1 
+                                       INI.     J     XCUTE NXT INST.
$ 
$         MASK UCAR WITH VALUE, RESULT IN PROPER COUNT
$ 
 OPCOD1C4                               K=UCAR         GET UNTRANSLATED CHAR
          A.B   X     F1    X           OPCOD1C3 J      MASK, GO STORE
$ 
$         TEST WITH VALUE UNTIL NEG, THEN ADD COUNT TO RESULT,
$                 AND STORE IN COUNT SELECTED 
$ 
 OPCOD1C6 SUB   F     X     F                     NU     COUNT NEG
+         ADD   F     X     X           OPCOD1C3 J     YES, ADD CNT TO RESULT 
-                                       OPCOD1C6 J     NO, LOOP UNTIL NEG 
          EJECT 
          EJECT 
********************************************************************************
*         GET ENTRIES FROM A WORKLIST BUFFER, PUT THEM INTO                    *
*           THE INTERMEDIATE WORK BUFFER.                                      *
*         --                                                                   *
*           CHECK WORKLIST BUFFER EMPTY                                        *
*         --                                                                   *
*           RELEASE OR RESET PUT AND GET POINTERS                              *
*           DEPENDING ON THE FEINC [F1-F2] SETTINGS                            *
********************************************************************************
$ 
 LISTGET1 A     A           F1    READ                 READ WL COUNT
          A     MEM         F1          K=CNTSV        SAVE COUNT - CNTSV - 
          ADD   A     BG    F           14             PTR TO GET ADDR
          ADD+  A     BG    X     READ  14             READ GET,PTR TO FEINC
          A     MEM               GATEI N=F200FF       GET PTR IN I 
          A     I           F1    READ  K=OLDGET       SAVE GET, RD FEINC 
          A     MEM         F1          K=FINKINC      SAVE FEINC/INC 
                      F                 TN/0           N=WL ENTRIES SIZE
$ 
********************************************************************************
*         TRANSFER  DATA  FROM  WLBUFFER                                       *
*           TO INTERMEDIATE WORK AREA BUFFER                                   *
********************************************************************************
$ 
          ZERO              X           K=INTARRY      X = 0
          A     F1          F           K=OLDGET       F = PTR INTERMEDIATE 
          B           F1    Q     READ                 Q = OLDGET PTR.
          A     MEM         F                     L    F = DATA STORE AREA
+LGLOOP   B           BG    X           15             X=1 INCREAMENTER 
          ADD   X     Q     Q           DECN           Q = CURRENT GET PTR
          ADD   F     X     F     READ                 READ WL DATA 
          A     MEM               GATEI           NZU  STAY IN LOOP IF N=/=0
+         A     I                 WRITE N=F20001  U    LAST WL DATA STORED
          A     I                 WRITE LGLOOP   J     WRITE, GET MORE DATA 
$ 
+         ADD   F2    Q     Q                          CURRENT GET PTR
          A     A           A           K=CNTSV        A = WLBCB WRD0 
          SUB   F1    F2    X     WRITE K=WLBSIZE ZL   IF CNT 0 CHECK REL 
+         A.B   F1    Q     X           LISTNO   J     CK END OF BUF WRT NGET 
          EJECT 
********************************************************************************
*                                                                              *
*         CHECK FEINC -- F1 -- F2 --  FOR BUFFER ACTION                       **
*           --                                                                **
*             F1 = 1  BUFFER NOT RELEASED, GET/PUT RESET TO TOP               **
*           --                                                                **
*             F2 = 1  RELEASE BUFFER,CLEAR PUT POINTER                        **
*           --                                                                **
*             F1 F2 = 0  IF BUFFER EMPTY RELEASE BUFFER                       **
*                        OTHER WISE RESET GET POINTER                         **
*                        AND LEAVE BUFFER ALONE                               **
*                                                                              *
********************************************************************************
$ 
          A.B   F1    Q     X                          SV WL BUFF COUNT 
          EOR   F1    X     X                          IF X = 0 BUFFER EMPTY
          A     X           I                          STORE X IN I 
          -A.B  F1    Q     X           K=FINKINC      F1 = FEINC/INC 
          A     F1          F           N=F20F00  NU   IF NEG F1=1
+         A.B   F2    F     F     L8EA  LISTTP   J     RESET PTRS TO TOP
          A.B   F     BG    F           1         ZL   CHECK F2 IF SET
+         ZERO              X           LIST1    J     CLR PUT  REL BUFF
$ 
          A     I           X                     ZL   IF BUFFER EMPTY RELEASE
+         ADD   A     BG    X           14        U    NOT EMPTY RESET GET
 LIST1    ADD+  A     X     X           LISTRL   J     GO RELEASE BUFFER
          B           Q           WRITE LISTEX   J     EXIT 
$ 
********************************************************************************
*                                                                              *
*         CHECK  FOR  END  OF  STRINGED  BUFFER                                *
*           WRITE NEW GET POINTER                                              *
*                                                                              *
********************************************************************************
$ 
 LISTNO   EOR   F1    X                 N=F20F00  ZL   0 = BUFFER EMPTY 
+         ADD   A     BG    X           14        U    NO, WRT NEW GET
          B           Q     Q           K=FINKINC L    PTR TO CHAINED ADDR
+         B           Q           WRITE LISTEX   J     WRT GET AND EXIT 
                                  READ                 READ CHAINED PTR 
          A     MEM         Q 
          A.B   F1    F2    F     L8EA                 FCD FOR NEW PTR
          ADD   A     BG    X           14             X = WLBCB + 2
          ADD   F     Q     Q     WRITE K=OLDGET  L    CURRENR GET PTR
$ 
********************************************************************************
*                                                                              *
*         CLEAR PUT POINTER  --  AND RELEASE  WORK LIST BUFFER                 *
*                                                                              *
********************************************************************************
$ 
+LISTRL   ZERO                    WRITE K=OLDGET       ZERO PUT POINTER 
          B           F1    A     RTJ   REL16.7  J     GO RELEASE BUFFER
+LISTEX                                 UINTRTN  JL    EXIT 
$ 
$$
$ 
********************************************************************************
*                                                                              *
*         FEINC  F1 = 1    RESET GET AND PUT POINTERS TO TOP OF BUFFER         *
*                                                                              *
********************************************************************************
$ 
 LISTTP   ADD   A     BG    A           15             X = WLBCB WRD 2 PUT
          ADD   F     X     Q     WRITE N=F200FF       WRITE PUT POINTER
          ADD+  A     ZERO  A                          GET POINTER
          B           Q           WRITE LISTEX   J     WRT GET PTR AND XEIT 
          EJECT 
          BOX 
          EBOX
 OPCD01   A.B   I     F2    X     L8EA  K=D0X           SELECT OPERAND
          ADD   X     K     X                            ADD TP START 
                                        N=F200FF        OF TP F1 REGS 
          A     I     X                 TK/0      NU     LEFT OR RITE 
+         A.B   F1    F2    F1          K=UCAR    U    RITE CHARACTER 
-         A.-B  F1    F2    F1    L8EA  K=UCAR         LEFT CHARACTER 
          B           Q     X                     ZL   FI FIELD ZERO
+         A.B   X     BG                10        ZL   F1 FIELD = 3 
-         A                             INI.     J     YES, GET NEXT INST.
+         A                             STRCH.1  J     F1 = 3, DO CRC 
-         A                       RTJ   STORE.7  J     F1 = 2, XLATE AND STORE
+                                       INI.     J     EXIT 
 STORE.7                                STORETP  J     GO TO STORE
          BOX 
          EBOX
 MOVFLD   A.-B  I     F2    Q     L8EA  K=F1000F
          A.B   F1    Q     X                            X = DEST 
          B           Q     A           N=4            MOVE Q TO A, SO WE CAN 
          AR0E                                          SHIFT RITE 4
          A     A           I           K=WD3PTR        I EQUALS SOURCE 
          A     F           A           N=5             GET F1 FIELD
          AR0E                                         SET UP FOR XFORM 
          A     A           Q           N=F200FF           IN Q REG 
          A     F1          F           K=F10003        MAKE SURE F REG 
          SUB   F     F1    F           K=D0X          PTS TO WD0 OF LCB
                      Q           PAGE7 TMA/S2    U     GO TO 700 - 706 
 MOVFLD1                                K=WD3PTR        RESTORE A 
          A     F1          A           INI.     J     XCUTE NEXT INST
          BOX 
          EBOX
 FIELD0               Q                 TK/0
          A     F1          I           K=D0X           GET CONTENTS OF SOURCE
          ADD   X     K     Q                           GET DEST F1 REG 
                      Q                 TK/0           MOVE SOURCE TO DEST
          A     I           F1          MOVFLD1  J
          BOX 
          EBOX
 FIELD1               Q                 TK/0
          A     F1          I                           GET SOURCE CONTENTS 
          ADD   F     X     X                            GET LCB ADDR 
          A     I                 WRITE MOVFLD1  J     WRITE SOURCE AT DEST 
          BOX 
          EBOX
 FIELD2               Q                 TK/0            ONLY RITE HALF
          A.B   F1    F2    Q                             OF DOURCE 
          ADD   F     X     X                           GET LCB ADDR
          A     A                                 NU     WHICH SIDE 
+         B           Q     Q     L8EA  WRCH/0    U        LEFT 
-         B           Q     Q           WRCH/1          RITE
+                                       MOVFLD1  J
          BOX 
          EBOX
 FIELD4               Q                 TK/0               SET UP F1
          ADD   I     F     X                           ADD SOURCE
                                  READ                 READ IT AND SAVE 
          A     MEM         F1          MOVFLD1  J      IN DEST F1
          BOX 
          EBOX
 FIELD5               Q                 TK/0            SET UP F1 DEST
          ADD   I     F     F                            GET TO LCB ADDR
          A     X                 READ            NU    WHICH SIDE
+         -A.B  F2    MEM   X     L8EA            U       LEFT
-         A.B   F2    MEM   X                           RITE
+         A.-B  F1    F2    F1                          CLR RITE SIDE OF F1 
          A+B   F     X     F1          MOVFLD1  J       SET PROPER BITS
          EJECT 
          BOX 
          EBOX
 MLTPURP  A.-B  I     F2    Q     L8EA  N=5              GET OP1, OP2 
          AR0E                          K=F1000F        SHIFT A RITE 5
          A.B   F1    Q     X           K=F1F000         X = OPERAND 2
          A.B   I     F1    F     L8EA                  F = OPERAND 1 
          A     A           Q           K=F100F8
          A     F           A           N=4               OP1 TO A
          AR0E                                           SHIFT RITE 4 
          A+B   F1    Q     Q           K=D0X           SET UP Q FOR XFORM
                      Q           PAGE7 TMA/S2    U    GO TO 7F8 - 7FB
 MLTXIT                                 K=WD3PTR         RESTORE A
          A     F1          A           INI.     J      GET NEXT INST 
          BOX 
          F1 FIELD = 0
          EBOX
 MLT0                 Q                 TK/0            GET CONTENTS OF F1
          A.-B  A     BG    X           12              RESET TEST BIT
          A     I                                 NU    INC OR DEC
+         SUB   F1    X     F1          MLTXIT   J       DEC
-         ADD   F1    X     F1          MLTXIT   J      INC 
          BOX 
          F1 FIELD = 1 FOR ADD, F1 FIELD = 2 FOR SUBTRACT 
          EBOX
 MLT1                 Q                 TK/0            GET OPERAND 1 
          A     F1          Q           K=D0X 
          ADD   X     K     X                           GET OP2 INDEX 
                      X                 TK/0            GET CONTENTS OF OP2 
          A     F                                 NU    ADD OR SUB
+         SUB   F1    Q     F1          MLTXIT   J       SUB
-         ADD   F1    Q     F1          MLTXIT   J      ADD 
          BOX 
          F1 FIELD = 3 - COMPARE
          EBOX
 MLT3                 Q                 TK/0
          A     F1          A           K=D0X          A = CONTENTS OF OP1
          ADD   X     K     Q 
                      Q                 TK/0
          A     F1          X                          X = CONTENTS OF OP2
          SUB   A     X     F                     NU   OP2 GREATER THAN OP1 
+                                       MLTXIT   J     YES, GET NEXT INST 
-         EOR   A     X                           ZL    NO, ARE THEY EQUAL
+         ADD   P     BG    P           14        U     NOT EQUAL BUMP BY 2 
-         ADD   P     BG    P           15              ARE EQUAL, BUMP BY 1
+                                       MLTXIT   J      EXIT
          EJECT 
          BOX 
          EBOX
 SVRST    B           Q                 K=LEV2FLG ZL    IS THIS AN EXIT 
+         ZERO              Q           SVRSTXIT J       YES, DO IT 
-         A.B   I     BG                5         ZL   NO, LEV1 OR LEV2 
+         ONE               F1          K=LEV2FLG       LEV2, SET FLAG
-         A     I                                 NU    SAVE OR RESTORE 
+                                       RSTOR    J      RESTORE 
-         A     F1                      K=TPLFCD  ZL     WHICH LEVEL
+         A     F1          F1          K=SVLFCD2 U       LEV2
-         A     F1          F1          K=SVLFCD1 L       LEV1
+                                       K=ENDBUF  U 
-                                       K=ENDBUF  L 
+         A     F1          F1          K=ENDBUF2 U      LEV2 
-         A     F1          F1          K=ENDBUF1 L 
+                                       K=UCAR    U 
-                                       K=UCAR    L 
+         A     F1          F1          K=SVCARL2 U 
-         A     F1          F1          K=SVCARL1 
                                        SVRST1   J
$ 
$ 
$ 
 SVRST2                           READ
          A     MEM         A           K=LEV2FLG       A HAS CRC 
          A     F1                                ZL     WHICH LEVEL
+                                       K=LEV2A   U    LEVEL 2
-                                       K=LEV1A        LEVEL 1
+         A     F           F1                         SBA
          A     X           F1          INCK            RITE CHAR 
          B           Q     F1          INCK            FLAGS 
          A     I           F1          INCK            DBA 
          A     A           F1          INCK            CRC 
 SVRST3   ZERO              F1          K=LEV2FLG       ZERO FLAF 
                                        K=WD3PTR        RESTORE A REG 
          A     F1          A           INI.     J      GET NEXT INST 
          BOX 
          CHARACTER TIMEOUT OCCURED AT MUX LEVEL, ESCAPE HERE TO TELL 
          INPUT STATES. 
          THIS CODE CANNOT MOVE UNLESS PASCAL LEVEL IS CHANGED. 
          THIS CODE FORCES THE INPUT STATE PROGRAM TO STATE 4 
          EBOX
          ORG   7E2X
+CHARTO   A                             N=F200FF       SET MASK 
          A.-B  A     F2    F1    L8EA  K=LC1SV        SAVE LINE NUMBER 
          A     F           A           N=3            RESET A FOR SHIFT
          ALOE                          K=PORT           *
          ADD   A     F1    F1          K=PORTADR         * 
          ADD   F     BG    X     READ  15             POINTER TO PORT TBL
          A     MEM         F1          K=PORTWD0      SAVE PORT TABLE PTR
          B           X     X                          RESET S3 FOR A READ
          A     P           F1    READ  K=IDPP         SAVE P 
          ADD+  MEM   BG    A           14             GET LCB WD3 ADDR 
                                  READ                 READ WD3 
          A     MEM         F1          K=W3LCB        SAVE CONTENTS WD3
          ADD   A     BG    X           14             GET NCISPTA
          A     F           X     READ  N=F200FF         *
          ADD   MEM   BG    P     GATEI 13             NCISPTA +4 
          A     I           F1    READ  K=ISPTA        SAVE ISPTA 
          A     MEM         P           K=F1003F       STATE INST ADDR
          A.B   X     F1    F1          K=ISTASV       SAVE CURR STATE
                                        RNI.     J     EXECUTE INP STATE
          ORG   7ECX
          A     A                       N=3            SET S1 WITH A REGISTER 
          ALOE                          K=PORT         SHIFT A 3 NAPORT OFFSET
          ADD   A     F1    A           K=F18000       ADD NAPORT BASE ADDRESS
          ADD   A     BG    X           13             ADDRESS OF COMMAND WORD
+                                 READ                 READ COMMAND WORD S1 
-         A.B   MEM   BG    F           6         ZL   CHECK ION OFF
+                                       UINTRTN  JL    NO, EXIT 
-         A     A           A                          YES, FWA NAPORT ENTRY
                                  READ                 READ NAPORT ENTRY WD 0 
          A.-B  MEM   F1    X                          CLEAR NAION (BIT 0)
          A     A           A                          ADDR NAPORT ENTRY WD 0 
          B           X     X     WRITE                WRITE WD 0 NAPORT ENT
                                        UINTRTN  JL    EXIT TO EMULATOR 
          EJECT 
          ORG   7F8X
          BOX 
          7F8 - 7FB ARE RESERVED FOR MULTI PURPOSE STATE INST 
                USED FOR  TEXT PROC ONLY
          EBOX
+         ADD   X     K     Q 
-                                       MLT0     J
          BOX 
          EBOX
+         ADD   A     K     Q 
          ZERO              F           MLT1     J
          BOX 
          EBOX
+         ADD   A     K     Q 
-         ONE               F           MLT1     J
          BOX 
          EBOX
+         ADD   A     K     Q 
-                                       MLT3     J
          EJECT 
          BOX 
          EBOX
 SVRST1                                 K=TPSBA         SBA TO F
          A     F1          F           K=RITCAR
          A     F1          X           K=W3LCB         RITE CHAR TO X
          A     F1          Q           K=TPIBP        GET WORD 3 LCB 
          A     F1          I           K=F10006       GET DEST BUFFER ADDRESS
          ADD   A     F1    A           SVRST2   J     GET WORD 9 LCB ADDRESS 
          BOX 
          EBOX
          EJECT 
          ORG   800X
          BOX 
          THE FOLLOWING JUMP TABLE IS USED TO HANDLE THE SENDING OF 
          THE LAST CHARACTER TRANSMITTED (LCT) COMMAND TO THE BUFFERED
          CLA.  THE COMMAND HAS A DIFFERENT FORMAT FOR EACH OF THE
          3 TYPES OF BUFFERED CLAS (SYNC, ASYNC AND HDLC).  THE FIRMWARE
          DOES A TRANSFORM (TMA/S2) ON THE LINE TYPE FIELD IN THE 
          PORT TABLE. 
          EBOX
+LCTLTYP0                               LCTLTYP1 J     RESERVED, TREAT LIKE 1 
+LCTLTYP1                               LCT2560  J     2560 
+LCTLTYP2                               LCT2560  J     2560 
+LCTLTYP3                               LCT2560  J     2560 
+LCTLTYP4                               LCT2561  J         2561 
+LCTLTYP5                               LCT2561  J         2561 
+LCTLTYP6                               LCT2561  J         2561 
+LCTLTYP7                               LCT2561  J         2561 
+LCTLTYP8                               LCT2561  J         2561 
+LCTLTYP9                               LCTLTYP1 J     SPARE, TREAT LIKE 1
+LCTLTYPA                               LCT2563  J             2563 
+LCTLTYPB                               LCTLTYP1 J     SPARE, TREAT LIKE 1
+LCTLTYPC                               LCT2560  J     SPARE, TREAT LIKE 2560 
+LCTLTYPD                               LCT2560  J     2560 
* 
* 
******************************************************************************
*         LAST OUTPUT CHARACTER TO SEND - TEST LINE TYPE                     *
*                                                                            *
*         INPUTS - A = LAST CHARACTER TO OUTPUT                              *
*                  F1  PORTA - NAPORT ADDRESS                                *
*                  F1  MLCBA - MXLCB ADDRESS                                 *
*                  CLA ADDRESS ALREADY OUTPUT                                *
*         OUTPUTS  MLCB WDO 0 ODD STATE SET TO FOOO                          *
*                  IF BUFFERED CLA, CMD 1 IN P, CMD 2 IN X                   *
*                  A = LAST CHARACTER TO OUTPUT                              *
*                  XFORM ON LINE TYPE TO TABLE AT 800                        *
*                                                                            *
******************************************************************************
 ODDLCT   A     A           X           K=PORTA        SAVE A, GET PORT ADDR. 
          A     F1          F                          GET PORT ADDRESS 
                                  READ  K=LTYPMSK      READ PORT WD0
          A.B   MEM   F1    A           N=6            LINE TYPE TO A 
          AROE                          K=MLCBA        SHIFT LINE TYPE
          A     F1          F           K=F1A180       MLCBA TO F 
          A     F1          Q     WRITE N=F200FF       STORE ODD EOB STATE
          A     A           Q           K=PORTA   ZL   TEST LINE TYPE ZERO
+ODDLCT.2 A.B   P     BG                NCBUFCLA  ZL   NO, CONTINUE 
-         A                             ODDLCT.3 J     YES, GET REAL LINE TYPE
+ODDLCT.0 ADD   F1    BG    F           13        U    GET CMD WD ADDRESS 
-         A     X           A           ODDLCT.1 J     NOT BUFFERED 
          A     X           A     READ                 READ CMD 1 AND 2 
          A.B   MEM   F2    X     GATEI                CMD WD2 TO X 
          A.-B  I     F2    P     L8EA  K=DATAID       CMD WD1 TO P 
          B           Q           PAGE8 TMA/S2    U    XFORM ON LINE TYPE 
 ODDLCT.1 A                             K=F1000A       TEST FOR LINE TYPE A 
          EOR   F1    Q                 K=PORTA   ZL     *
+                                       K=DATAID+ U    NOT LINE TYPE A
-                                       ODDLCT.0 J     LINE TYPE A, READ CMDS 
+         A+B   A     F1    A     RTJ   K=OUTDATA      OUTPUT THE CHAR. 
          A     F1          Q           M05OUT   J      * 
+                                       ODDEX.0  J     EXIT ODD 
******************************************************************************
*         LINE TYPE 0, DETERMINE REAL LINE TYPE FROM WORD 15 OF MLCB         *
******************************************************************************
 ODDLCT.3                               K=F1000F        CONSTANT 15 
          ADD   F1    F     F                          MLCBA + 15 
          A                       READ  K=PORTA        READ REAL LINE TYPE
          A     MEM         Q           ODDLCT.2 J     RETURN TO NORMAL PATH
******************************************************************************
*         2563 CLA LAST CHARACTER OUTPUT LOGIC                               *
*         SEND LAST CHARACTER PLUS CMD 1 AND CMD2                            *
******************************************************************************
-LCT2563                                K=DATAID+      OUTPUT LAST CHARACTER' 
+         A+B   A     F1    A     RTJ   K=F10008         *
-         A+B   X     F1    X           M05OUT.0 J     SET LCT IN X 
+                                       K=ODDCLA  U    GET CLA ADDRESS
+         A     F1          A     RTJ   K=CLAID-       OUTPUT CLA ADDRESAS
-         A+B   A     F1    A           M05OUT.0 J       *
+         A                       RTJ   K=SUPVID       OUTPUT CMD1
-         A+B   P     F1    A           M05OUT.0 J       *
+         A                       RTJ   K=F1CD00       OUTPUT CMD2 + EOLF 
-         A+B   X     F1    A           M05OUT.0 J       *
+                                       ODDEX.0  J     EXIT ODD 
******************************************************************************
*         2560 BUFFERED CLA LAST CHARACTER LOGIC                             *
*         SEND LAST CHARACTER PLUS CMD 1                                     *
******************************************************************************
+LCT2560  A+B   A     F1    A     RTJ   K=F10004       OUTPUT LAST CHAR.
-         A+B   P     F1    P           M05OUT.0 J     SET LCT BIT
+         A                       RTJ   K=F1CD00       OUTPUT CMD1 + EOLF 
-         A+B   P     F1    A           M05OUT.0 J       *
+                                       ODDEX.0  J     EXIT ODD 
******************************************************************************
*         2563 CLA LAST CHARACTER OUTPUT LOGIC                               *
*         SEND LAST CHARACTER PLUS CMD 1 AND CMD2                            *
******************************************************************************
+LCT2561  A+B   A     F1    A     RTJ   K=OUTDATA      OUTPUT LAST CHAR.
-         A     F1          Q           M05OUT   J       *
+         A                       RTJ   K=SUPVID       OUTPUT CMD1
-         A+B   P     F1    A           M05OUT.0 J       *
+         A                       RTJ   K=SUPVID       OUTPUT CMD2
-         A+B   X     F1    A           M05OUT.0 J       *
+                                       K=PORTA        GET CMD3 ADDRESS 
          ADD+  F1    BG    F           13               *
                                  READ                    * 
          A.-B  MEM   F2    A     L8EA  K=F1CD00       GET LEFT CMD 
+         A+B   A     BG    A     RTJ   5              SET LCT BIT
-         A+B   A     F1    A           M05OUT.0 J     OUTPUT CMD3 + EOLF 
+                                       ODDEX.0  J     EXIT ODD 
******************************************************************************
*         ODD PROCESS FOR BUFFERED CLA.                                      *
*         FOUR CHARACTERS WILL BE OUTPUT STARTING WITH THE LEFT.             *
*         IF AN ABNORMAL ODD STATE OCCURS, BUFFER CHAINING OR                *
*         END OF SOURCE, OUTPUT TO THE CLA WILL BE TERMINATED                *
*         AND THE CONDITION PROCESSED THE NEXT ODD TIME AS A SINGLE          *
*         CHARACTER.                                                         *
******************************************************************************
+ODDBUF   A     P           Q     RTJ   K=TEMP1        GET NEX CHARACTERS 
-         A     P           F1          ODDGET   J     SAVE OBP ADDR
+ODDBUF.1                         RTJ   K=PORTA        GO CRC THE CHARACTER 
-         B           X           PAGE8 TMA/S2           *
+         A     P           F     L8EA  K=50X          TEST NORMAL ODD STATE
          EOR   F     K     F                             * 
                                        K=F100F0
          A.B   F     F1                          ZL        * 
+                                       ODDBUF.3 J     NO, STOP OUTPUT
-         A+B   X     F1    X                          YES, CONTINUE
+                                 RTJ   K=DATAID       OUTPUT THE LEFT
-         A+B   A     F1    A           M05OUT.0 J       *
+         A.B   P     F2    A     RTJ   K=PORTA        GET RITE CHARACTER 
-         B           X           PAGE8 TMA/S2         CRC THE RITE CHAR. 
+         A                             K=CCNT         TEST 2ND PASS
          A     F1                      K=F100F0  NU     *
+         A                             ODDBUF.2 J     YES, EXIT
-         A+B   X     F1    X           K=DATAID       NO, SET SECOND PASS
+         A+B   A     F1    A     RTJ   K=CCNT         OUTPUT THE RITE
-         ONE               F1          M05OUT.0 J       *
+                                       K=TEMP1   U    RESTORE OBP
+         A     P           Q     RTJ                  GO GET NEXT CHARACTERS 
-         A     F1          P           ODDGET   J     RESTORE OBP ADDRESS
+                                       ODDBUF.1 J     GO GET NEXT CHARACTERS 
 ODDBUF.2 B           BG    P           1              SET NEXT STATE LEFT
+ODDBUF.3                         RTJ   K=DATAID+      OUTPUT THE LAST CHARACTER
          A+B   A     F1    A           M05OUT.0 J       *
          A     X           X     L8EA  K=MLCBA        STORE ODD/CRC STATES 
          A     F1          F                            *
          A+B   P     X     P     WRITE K=CCNT            * 
          ZERO              F1          ODDEX.0  J     EXIT ODD 
          EJECT 
          BOX 
          THIS SUBROUTINE DETERMINES WHICH PAGE TO RETURN TO IN THE 
          CASE OF MULTIPLE RTJS.  BEFORE ENTERING THIS SUBROUTINE 
          THE K REGISTER MUST BE SET UP TO THE SAVED RTJ F1 REGISTER
          YOU WISH TO RETURN TO.
          EBOX
 RTNWHR   A.B   F1    BG                4         ZL   RETURN TO PAGE4,5,6OR7 
+         A.B   F1    BG                BIT6      ZL   TEST PAGE 10 
-                                       PAGE6OR7 J     PAGE 6 OR 7
+         ZERO        F1    F1    PAGE10TMA/S2    U    GO TO PAGE 10
-         A.B   F1    BG                BIT7      ZL   TEST 8 0R 9
+         ZERO        F1    F1    PAGE9 TMA/S2    U    RETURN TO PAGE (9) 
-         ZERO        F1    F1    PAGE8 TMA/S2    U    RETURN TO PAGE (8) 
-PAGE6OR7 A.B   F1    BG                BIT6      ZL   RETURN TO PAGE 6 OR 7
+         A.B   F1    BG                BIT7      ZL   YES, WHICH ONE 
-                                       PAGE4OR5 J     NO, MUST BE 4 OR 5 
+         ZERO        F1    F1    PAGE7 TMA/S2    U    PAGE 7 
-         ZERO        F1    F1    PAGE6 TMA/S2    U    PAGE 6 
+PAGE4OR5 A.B   F1    BG                BIT7      ZL   TEST WHICH PAGE
+         ZERO        F1    F1    PAGE5 TMA/S2    U    PAGE 5 
-         ZERO        F1    F1    PAGE4 TMA/S2    U    PAGE 4 
          BOX 
          EBOX
******************************************************************************
*         MODE 4 STATE 1 - PROCESS TEXT - TEST FOR SYNC                      *
******************************************************************************
 MD4S1                            READ  K=MSYNC        CRC THE CHARACTER
          A     MEM         Q                          SAVE PARTIAL CRC.
          EOR   A     K                           ZL   TEST SYNC CHAR.
+         EOR   A     Q     Q                          NOT SYNC, CRC THE CHAR.
-         A     F           F                          GET NAPORT WD 7 ADDR.
          B           Q     Q     WRITE                STORE CRC BACK 
          A     I                       K=BX      ZL   TEST EOS 
+         B           BG    X           15       RU    NOT EOS, EXIT
-         B           K     X                    RU    EOS, SET STATE B, EXIT 
******************************************************************************
*         BSC STATE 2 - FIRST CHAR. AFTER INTER. CRC, TEST DLE               *
******************************************************************************
 BSCS2    A     I                       K=BSYNC   ZL   TEST EOS 
+         EOR   A     F1                K=F10004  ZL   TEST SYNC CHAR.
-         ADD+  X     X     X           PADSD    J     SET STATE D - PAD1 
+         EOR   A     BG                11        ZL   TEST DLE 
-         B           BG    X           14       RU    SYNC, STATE 2, EXIT
+         A     F1          X           ODDCRC.0 J     SET STATE 4, CRCEXIT 
-                                       ODDCRC.0 J     DLE, STATE 6, CRCEXIT
******************************************************************************
*         BSC STATE 3 - FIRST CHAR. OF BLOCK- TEST FOR DLE OR SOH            *
******************************************************************************
-BSCS3    A     I                                 ZL   TEST EOS 
+         EOR   A     BG                11        ZL   TEST FOR DLE 
-         ADD+  X     BG    X           12       RU    EOS, SET STATE C, EXIT 
+         EOR   A     BG                15        ZL   TEST FOR SOH 
-         ADD   X     BG    X           14       RU    DLE, STATE 5 EXIT
+         EOR   A     BG                14        ZL   TEST STX 
-         ADD   X     BG    X           15       RU    SOH, STATE 4 EXIT
+                                                RU    N0 DLE, SOH OR STX 
-         ADD   X     BG    X           15       RU    STX, STATE 4 EXIT
******************************************************************************
*         BSC STATE 4 - PROCESS NON-XPARENT TEXT - TEST FOR SYN,ETB,ETX      *
******************************************************************************
 BSCS4                                  K=BSYNC        GET SYNC CHARACTER 
          EOR   A     F1                K=BETB    ZL   TEST FOR SYNC
+         EOR   A     F1                K=BETX    ZL   TEST FOR ETB 
-                                                RU    SYNC, EXIT 
+         EOR   A     F1                K=F1001F  ZL   TEST FOR ETX 
-                                       BSC4.1   J     ETB, STATE A, CRC
+         EOR   A     F1                K=F10008  ZL   TEST FOR US
-BSC4.1   A                             K=F1000A  L    ETX, STATE A, CRC
+         A     I                       K=F1000A  ZL   TEST FOR EOS 
-         A     F1          X           ODDCRC.0 J     US, STATE A, CRC 
+         A                             ODDCRC.0 J     NORMAL CHAR. CRC EXIT
-         A     F1          X           ODDCRC.0 J     EOS, STATE A, CRC
***************************************************************************** 
*         BSC STATE 5 - FIRST CHARACTER AFTER FIRST DLE                     * 
***************************************************************************** 
 BSCS5    A     I                                 ZL   TEST END OF SOURCE 
+                                                RU    NO, EXIT 
-         ADD   X     X     X                    RU    YES, STATE C EXIT
******************************************************************************
*         BSC STATE 6 - PROCESS XPARENT TEXT - TEST FOR EOS, DLE             *
******************************************************************************
 BSCS6    EOR   A     BG                11        ZL   TEST FOR DLE 
+         A     I                       K=F10006  ZL   TEST EOS 
-         ADD+  X     ZERO  X                    RU    DLE, STATE 7, EXIT 
+         A                             ODDCRC.0 J     CRC AND EXIT 
-         ADD   X     F1    X                    RU    EOS, STATE C,  EXIT
******************************************************************************
*         BSC STATE 7 - PROCESS XPARENT AFTER DLE, TEST FOR  SYN,ETB,ETX     *
******************************************************************************
 BSCS7    ZERO              Q           K=BSYNC        GET SYNC. CHAR 
          EOR   A     F1                K=BETB    ZL   TEST FOR SYNC
+         EOR   A     F1                K=BETX    ZL   TEST FOR ETB 
-         SUB   X     BG    X           15       RU    SYNC, STATE 7 EXIT 
+         EOR   A     F1                K=F1001F  ZL   TEST FOR ETX 
-                                       ODDCRC.0 J     ETB, STATE 8,CRC 
+         EOR   A     F1                K=F10002  ZL   TEST FOR US
-                                       ODDCRC.0 J     ETX, STATE 8, CRC
+         A     I                                 ZL   TEST EOS 
-                                       ODDCRC.0 J     US, STATE 8 CRC
+         SUB   X     F1    X           ODDCRC.0 J     NORMAL, STATE 6, CRC 
-                                       ODDCRC.0 J     EOS, STATE 8, CRC
******************************************************************************
*         BSC STATE D - SEND PAD 2 - END BLOCK                               *
******************************************************************************
 PADSD    A+B   P     BG    P           2              SET EOS
          A+B   P     BG    P           3              SET RITE CHAR
          A     F2          A                    RU    RETURN 
******************************************************************************
*         COMPUTES CRC ON CHARACTER IN A AND PUTS PARTIAL SUM IN NAPORT WD 7 *
******************************************************************************
 ODDCRC.0 A                             K=PORTA        GET PORT ADDRESS 
          A     F1          F           K=F10007       GET PORT WD 7 ADDRESS
          ADD   F     F1    F                            *
          A     A           Q     READ                 READ PARTIAL CRC 
          A     MEM         A*          N=5            PARTIAL TO CRC BOARD 
********** POLYNOMIAL IS ZERO FOR BSC ****************************************
          A     A           X*                         CHARACTER TO CRC BOARD 
          ALOE                                         DELAY FOR CRC
          B           Q     A                          RESTORE A
          A     A*          Q 
          A     F           F           N=F200FF       WRITE CRC BACK TO PORT 7 
          B           Q     F     WRITE          RU    RETURN TO ODDP 
******************************************************************************
*         READ CRC CHARACTER FROM THE PORT WD 7 AND OUTPUT LEFT OR RITE HALF *
******************************************************************************
+ODDCRCL  ZERO              A           K=PORTA   U    SET FLAG FOR CRC LEFT
-ODDCRCR  ONE               A           K=PORTA        SET FLAG FOR RIGHT CRC 
          A     F1          F           K=F10007       GET PORT + 7 ADDRESS 
          ADD   F     F1    F                             * 
          A     A                 READ            NU   READ CRC,TEST LEFT/RITE
+         A.B   MEM   F2    A                     U    RITE, ZERO CRC 
-         A.-B  MEM   F2    A     L8EA           RU    LEFT, EXIT 
+         A     F           F                          CRC ADDRESS
-         ZERO              F     WRITE          RU    ZERO CRC, EXIT 
******************************************************************************
*         USER HAS CHOSEN TO EXIT TP COMPLETELY, Q CANNOT BE DESTROYED       *
******************************************************************************
 SVRSTXIT ZERO              F1          K=TPFLG        TURN OFF TP RUN FLAG 
          A     A           A           K=W3LCB 
          A     F1                WRITE K=TPIBP        WRITE MLCB WORD 3
          ADD+  A     BG    A           14             GET ADDRES OF WORD 6 
          A     F1                WRITE K=TPSVA        WRITE IBP BACK 
          A     F1          A           K=TPLFCD       WRITE BACK LCD/FCD 
          A     F1                WRITE K=TPSBA 
          ADD   A     BG    A           14             GET TO SBA ADDRESS 
          A     F1                WRITE K=TPSVP        WRITE SBA
          A     F1          P           UINTRTN  JL    RETURN TO 1700 EMUL. 
******************************************************************************
*         ASYNC SPECIAL INSTRUCTION 1                                        *
*         XLATE AND STORE, DECREMENT FILE REG. A AND TEST FOR ZERO           *
******************************************************************************
 TPASY1   A     F1          I           K=F1007F
          ADD+  A     BG    X           12             GET XLATE TABLE ADDR.
          A.B   I     F1    F     READ  RROE           READ XLATE 
          A     MEM         X                     ZL   GET TABLE, TEST ZERO 
+         ADD   X     F     X                     U    GET DISPL TO CHAR. 
-         A.B   I     F1    F           TPASY2   J     ZERO TABLE, SKIP XLATE 
          A.B   I     BG          READ  15        ZL   TEST LEFT OR RITE
+         A.B   MEM   F2    F1          K=UCAR    U    RITE 
-         A.-B  MEM   F2    F1    L8EA  K=UCAR         LEFT 
 TPASY2   A     F           F1          K=TCAR         SET TCAR TO XLATED 
          B           Q     F1          K=QSAVE        SAVE Q 
                                  RTJ   STORE.8  J     GO STORE CHARACTER 
+         A                             K=TPDA         DECR. TP FILE A
          SUB   F1    BG    F1          15        ZL   TEST ZERO RESULT 
+         A     F                       K=QSAVE   NU   NO, TEST NEGITIVE
-         A                             INI.     J     ZERO, NEXT INST. 
+         A                             INI.     J     NEGITIVE, NEXT INST. 
-         B           F1          PAGE4 TMA/S2    L    POSITIVE, ACTION 
 STORE.8                                K=TCAR         GET CHAR TO STORE
          A     F1          F           STORTP.2 J     GO STORE CHARACTER 
******************************************************************************
*         CONTINUE LOAD FILE 1, SET MX REVISION AFTER COMPLETE               *
******************************************************************************
 MXREVLV  A                             K=REV          SET MF REVISION
          B           K     X 
          A     X           F1          K=MFREVLV      SET REVISION LEVEL 
          A                             UINTRTN  JL    GO TO EMULATOR 
******************************************************************************
*         BACKSPACE INSTRUCTION                                              *
******************************************************************************
 BKSP     A                             K=TPFLG        IS TP RUNNING
          A     F1                      K=TPIBP   ZL    * 
+         A     F1          X                     L    YES, GO GET TPIBP
-                                 READ                 NO, READ IBP 
+         A     MEM         X     GATEI           ZL   TEST IBP ZERO
-         A     F1          X     GATEI           ZL   TEST IBP ZERO
+         A     A           F1          K=WD3PTR  U    NO, SAVE A 
-BKSP1    A                             INI.     J     YES,EXIT 
+                                       K=BIGBUF       NO, CONTINUE 
-         A.-B  X     F1    X           N=F200FF       GET TO TOP OF BUFFER 
+         A.B   I     F1    Q     READ                 READ FCD 
-         A.B   MEM   F2    F           RR0E           SHIFT RITE ONE 
+         EOR   F     Q                 K=W3LCB   ZL   IBP = FCD
+         A     F1                      N=F20001  NU   NO, LEFT OR RITE CHAR. 
-         A     A           A           BKSP2    J     YES
+         A.-B  F1    BG    F1          NCRINCH   U    RESET RITE FLAG
-         A     A           A           K=W3LCB   L    GET WORD 3 BACK
+         A     A           A           BKSP1A   J     EXIT RITE SIDE 
-         A+B   F1    BG    F1    WRITE NCRINCH        SET RITE FLAG
                                        K=TPFLG        IS TP RUNNING
          A     F1                      K=TPIBP   ZL     *
+         SUB   I     F2    F1          BKSP1    J     YES, IBP - 1 
-         ADD+  A     BG    X           14             NO, GET IBP ADDRESS
+         SUB   I     F2    F     WRITE BKSP1    J     IBP - 1, THEN EXIT 
* 
*         POSSIBLE CROSSING OF BUFFER BOUNDRIES 
*         X = TOP OF BUFFER 
* 
 BKSP2    A.-B  F1    BG    F1    WRITE NCRINCH        RESET THE RITE FLAG
                                        K=10
          ADD   A     K     F                          GET FIRST BUFFER 
                                  READ
          EOR   MEM   X           GATEI           ZL   TOP OF BUFFER = FIRST
+BKSP3                                  K=BIGBUF  U    NO, GET MASK 
-                                       INI.     J     YES, EXIT
+         A+B   I     F1    F                          GET CHAIN
          A     F           A     READ  N=F20001       READ CHAIN 
          EOR   MEM   X           GATEI K=WD3PTR  ZL   NEW BUFFER = ORIGINAL
+                                       BKSP3    J     NO, GET NEXT ONE 
-         ZERO              F     WRITE K=BIGBUF       YES, ZERO CHAIN
          A.-B  A     F1    A           K=WD3PTR       GET BACK TO TOP
                                  READ  N=F200FF       READ LCD/FCD 
          A.-B  MEM   F2    X     L8EA                 GET LCD
          A     X           F           RR0E           SHIFT RITE ONE 
          ADD   A     F     F           K=W3LCB        ADJ IBP
          A     F           Q 
          A.B   X     BG                15        ZL   LCD LOW BIT SET
+         ADD   F     BG    Q           15        U    YES, BUMP IBP
-         A+B   F1    BG    F1          NCRINCH   L    NO, SET RITE FLAG
+         A.-B  F1    BG    F1          NCRINCH        RESET RITE FLAG
-         A     A           A           K=LGLCD        GET TOP OF BUFFER
          A     F1          F           WRCH/0         WRITE NEW LCD
                                        K=TPFLG        IS TP RUNNING
          A     F1                      K=WD3PTR  ZL     *
+         B           Q     F1          K=TPIBP   L    YES, STORE IBP 
-         ADD+  F1    BG    A           14             N0 GET IBP ADDRESS 
+         B           Q     Q     WRITE                WRITE IBP
-         A     I           A     RTJ   REL64.8  J     RELEASE BUFFER 
+         A                             K=WD3PTR       GET WORD 3 ADDRESS 
          A     F1          A           K=W3LCB        WRITE WORD 3 BACK
 BKSP1A   A     F1                WRITE                  *
                                        INI.     J     EXIT 
 REL64.8  -B          CRTJ  F1          K=RELRTRN      SAVE RETURN
          A     F           F1          K=RELADDR      RETURN FOR STAMP 
                                        REL64M   J     GO RELEASE 64
***************************************************************************** 
*         CONTINUATION OF OUTPUT COMMANDS TO THE CLA FROM THE COMMAND       * 
*         DRIVER THROUGH PMCOIN.  SEE LOCATION 600X FOR BEGINING.           * 
***************************************************************************** 
 CLACMD                           READ  N=F200FF       READ PORT ADDRESS
          A.-B  MEM   F2    F1    L8EA  K=TEMP         GET PORT NUMBER
          A     F           A           N=3            PORT NUMBER TO A 
          ALOE                          K=PORT         GET BASE PORT ADDRESS
          ADD   A     F1    A           N=F200FF       COMPUTE PORT ADDR. 
          ADD   A     BG    F           13             GET TO WORD 4
          ADD   X     BG    X     READ  15             READ PORT + 4
          A     MEM               GATEI                OLD CMD12 TO I 
                                  READ                 READ PACKET WORD 1 
          A.B   MEM   F2    F1          K=TEMP1        COUNT TO TEMP1 
          ADD   X     BG    X           15             READ PACKET WORD 2 
                                  READ                   *
          A+B   I     MEM   F1          K=CMD12        SET CMD12 BITS 
          ADD   X     BG    X           14             READ PACKET WORD 4 
                                  READ  K=CMD12          *
          A.B   MEM   F1    F1                         RESET CMD12 BITS 
          ADD   X     BG    X           15             PACKET ADDR. +5
                                  READ                 READ LINE TYPE RESET 
          A.B   MEM   F     F                          RESET BITS BY LINE TYPE
          ADD   A     BG    A     GATEI 13             WRITE PORT CMD12 
          A     F           F     WRITE K=TEMP    U      *
+         A     F1          Q     RTJ   K=CLAID-       GET PORT NUMBER
-         A+B   F1    Q     A           M05OUT.0 J     CLA ADDRESS TO DATA
+                                       K=CMD12        GET CMD12
          A.-B  F1    F2    A     L8EA  K=SUPVID       CMD1 TO DATA 
          A+B   A     F1    A           K=TEMP1        CHAR READY TO OUTPUT 
          SUB   F1    BG    F           15        ZL   TEST FOR LAST CMD
+                                 RTJ   CLACMD.2 J     NO, OUTPUT CMD1
-                                       CLACMD.1 J     YES, OUTPUT LAST 
+                                       K=CMD12        GET CMD 2
          A.B   F1    F2    A           K=SUPVID       CMD2 TO SUPV 
          SUB   F     BG    F           15        ZL   TEST COUNT = 2 
+         A+B   A     F1    A     RTJ   CLACMD.2 J     OUTPUT CMD 2 
-                                       CLACMD.1 J     LAST COMMAND 
+         SUB   X     BG    X           14             READ PACKET WORD 3 
                                  READ                   *
          A     MEM         X                          SAVE CMD 3 AND 4 
          A.-B  X     F2    A     L8EA  K=F10001       GET CMD 3
          SUB   F     F1                K=SUPVID  ZL   TEST COUNT = 3 
+         A+B   A     F1    A     RTJ   CLACMD.2 J     OUTPUT CMD 3 
-CLACMD.1                               K=F1CD00  L    LAST COMMAND 
+         A.B   X     F2    A           K=F1CD00       OUTPUT CMD 4 
          A+B   A     F1    A     RTJ   CLACMD.2 J     OUTPUT LAST CMD
+         A     I           F           K=CMD12        TEST FOR ISR IN CMD
          A.B   F1    BG          READ  9         ZL   READ PORT WORD 0 
+         A+B   MEM   BG    A           NAISR     U    SET NAISR IN PORT 0
-         A     MEM         A                          SAVE PORT WORD 0 
          A     F1          X           K=F1001F       GET CMD12
          A.B   X     BG                10        ZL   TEST ISON
+         A.-B  A     F1    A                          RESET NASPILL
-         A.B   X     BG                6         ZL   IS ION IN CMD
+         A+B   A     BG    A           0              YES, SET NAION BIT 
          A     I           F                          WRITE WRD 0 (PORT) 
          A     A           A     WRITE                WRITE PORT WORD 0
                                        UINTRTN  JL    EXIT 
 CLACMD.2                               M05OUT   J     GO TO OUTPUT 
******************************************************************************* 
*         CONTINUE SPECIAL INSTRUCTION SAVE UCAR                              * 
******************************************************************************* 
 SAVUTC   A     F1          F1          K=SUCAR       SAVE UCAR 
          B           Q           PAGE4 TMA/S2    L   EXIT
******************************************************************************* 
*         CONTINUE SPECIAL INSTRUCTION RESTORE UCAR FROM SAVED VALUE          * 
******************************************************************************* 
 RSTUTC   A     F1          F1          K=UCAR        RESTORE UCAR
          B           Q           PAGE4 TMA/S2    L   EXIT
******************************************************************************* 
*         CONTINUE SPECIAL INSTRUCTION COMPARE CHAR NE USING EXTERNAL CHAR    * 
******************************************************************************* 
 XCHRNE                           READ  K=UCAR        READ CHAR 
          EOR   F1    MEM                         ZL  TEST CHARACTER NE 
+                                       OPCD174  J    SKIP COUNT
-         A                             INI.     J    EXIT P + 1
******************************************************************************* 
*         CONTINUE SPECIAL INSTRUCTION SAVE CURRENT STATE INDEX IN WORD 9     * 
******************************************************************************* 
 SAVCST                                 K=F10006      GET CURRENT STATE 
          ADD   A     F1    F           K=W3LCB         * 
          A.B   F1    Q     F     WRITE               SAVE STATE IN WORD 9
                                        INI.     J    EXIT P + 1
******************************************************************************* 
*         CONTINUE SPECIAL INSTRUCTION RESTORE STATE INDEX FORM WORD 9        * 
******************************************************************************* 
 RSTCST                                 K=W3LCB       READ SAVED STATE
          A     F1          X     READ  K=F1003F      WORD 3 TO X 
          A     MEM         F           OPCODE84 J    NEW INDEX TO X
          EJECT 
          BOX 
          TEST CHARACTERS FOR EQUAL ... 
       ***
            WHEN CHARACTER IS EQUAL 
              POSTION THE P/REGISTER WITH 
              LABEL  ( P = -*-2+LABEL ).
       ***
            NOT EQUAL READ NEXT STATE 
                  INSTRUCTION...
          EBOX
* 
* 
+TESTEQ   A     I           F1          K=TEMP         SAVE OLD I INTR
          A     X           X 
                                  READ  K=UCAR         READ WRD FOR CHARS 
          A     MEM         X     GATEI                SAVE ALSO IN I REG 
          A     F1          F           K=F1007F       MASK FOR PARITY
          A.B   F1    F     F1          K=TEMP1        SAVE UCAR CHAR 
          A.B   X     F2    X                          GET LOWER CHAR 
          EOR   F1    X     X                     ZL   COMPARE WITH UCAR
          A.-B  I     F2    X     L8EA  K=TEMP1   U    UCAR NOT EQUAL 
 TECH01   B           Q                 OPCD174  J     EQUAL SKIP WITH LABEL. 
          EOR   F1    X     X           K=TEMP         COMPARE CH2 IF REQUESTED 
          A     F1          F           K=F10001  NU   TEST IF 2ND CHAR VALID 
          B           X     X           K=F10001  ZL   CHAR = SKIP WITH LABEL 
 TECH02   ADD+  P     F1    P           RNI.     J     READ NEXT STATE INSTR
                                        TECH02   J     JUMP TO READ NEXT ST/INS 
                                        TECH01   J     UCAR EQ SKIP WITH LB 
          EJECT 
          BOX 
          ECHOCH  -  ECHOPLEX ACTIVE CHARACTER
            BACK TO TERMINAL
        **
          RETURN ACTIVE IN F - REGISTER 
            OUTPUT CHARACTER TO TERMINAL. 
            RESTORE A - REGISTER
            RETURN WITH ACTION ( F - REGISTER ).
             IN SOURCE 2, (S2).   TO EXECUTE A
             PAGE4 TMA/S2 INSTRUCTION.
          EBOX
* 
* 
+ECHOCH                                 K=OUTDATA      A/Q OUTPUT DATA ADDR.
          A     F1          Q           K=CLAID-       K = CLA LOOP ADDRESS 
          A     F1          A           K=LC1SV   U 
*** I N S T R U C T I O N   N O T   U S E D            ***
+         A+B   A     F1    A     RTJ   K=DATAID+      A = FUNCTION TO MLIA 
-                                       M05OUT   J     GO EXECUTE MLIA FUNCTION 
+         A     F1          A           K=UCAR    U    A=CODE FOR DATA, K=CHAR
*** I N S T R U C T I O N   N O T   U S E D            ***
+         A+B   A     F1    A     RTJ   K=ASAVE        COMBINE CHAR WITH CODE 
-                                       M05OUT   J     GO ECHO CHARACTER
+         A     F1          A           K=F10001       RESTORE A REGISTER 
          B           F     Q                          TRANSFORM Q REGISTER 
          B           Q           PAGE4 TMA/S2    L    READ NEXT STATE INST 
          EJECT 
          EJECT 
********************************************************************************
*                                                                              *
*   F1 = ( 1F )  * * *   T U R N      I N P U T   * * *       F2 = (  E  )     *
*                                                                              *
*           * * *    S U P E R V I S I O N    O F F .    * * *                 *
********************************************************************************
* 
+RSTISO                                 K=CLAID-       CLA LINE IDENT 
          A+B   A     F1    A                          CLA ADDR/LOOP CELL CODE. 
+         A     F           F1    RTJ   K=WD3PTR       SET RETURN ADDRESS.
                                        M05OUT.0 J     SELECT MLIA OUT. 
+         A                             K=PORTADR      GET PORT WD 0
-         A     F1          A                            *
+         B           BG    X     RTJ   10             SET X COM/INP/S/BIT. 
-         A                             OUTCLA   J     CLEAR INP/SUPER. BIT 
+         ADD+  P     ZERO  P           K=WD3PTR       GET NEXT STATE INST. 
-         A     F1          A           RNI.     J     RESTORE A
******************************************************************************
*         CONTINUATION OF OP CODE 1F$ F2=F$                                  *
******************************************************************************
 X25PAR   A.B   F1    BG                15        ZL   TYPE = 0 
+         B           Q           PAGE4 TMA/S2    L    YES, EXIT
-         A     F1                      K=TCAR    ZL   NO, TEST ODD 
+         A     F1          F           K=TPSVA   U    EVEN 
-         A+B   F1    BG    F           K=TPSVA        ODD, CHANGE PARITY 
          A     F1          X                          TPCB ADDRESS 
          A     F                 WRITE                WRITE CHAR.
          A                             K=TCAR         WAIT ONE 
          A                             12        BTU  TEST PARITY
+         A.-B  F1    BG    F1          8         U    EVEN 
-         A+B   F1    BG    F1          8              ODD
+         A     F           F1          K=UCAR         SET UCAR ALSO
          B           Q           PAGE4 TMA/S2    L    EXIT 
          EJECT 
          ORG   8F0X
******************************************************************************
*         JUMP TABLE FOR CRC PROCESSING                                      *
* INPUTS  I = 0 IF THIS IS THE LAST CHARACTER OF THE BLOCK                   *
*         A = CHARACTER TO BE OUTPUT                                         *
*         X = CURRENT CRC STATE                                              *
*         P = MLCB WD0, CANNOT BE USED                                       *
*         F1= ADDRESS OF NAPORT WD0                                          *
*                                                                            *
* OUTPUTS CRC STORED IN NAPORT WD 7                                          *
*         CRC STATE UPDATED IN X LSB 4 BITS, X MSB CLEARED                   *
******************************************************************************
********** STATE 0 - NO CRC PROCESSING REQUIRED ******************************
+         ZERO              X                    RU     NO CRC, RETURN
- 
********** STATE 1 - MODE4 PROCESS TEXT **************************************
+         A     F1          F           K=F10007       GET PORT ADDRES
-         ADD   F     F1    F           MD4S1    J     GET ADDRESS
********** STATE 2 - BSC FIRST STATE AFTER INTERMEDIATE CRC ******************
+         A                             K=F10006       SET STATE 6
-         A     F1          X           BSCS2    J     PROCESS STATE 2
********** STATE 3 - BSC INITIAL STATE ***************************************
+                                       K=F10003       BSC STATE 3 - INITIAL
-         A     F1          X           BSCS3    J     SET STATE 3 AGAIN
********** STATE 4 - BSC NON TRASPARENT TEXT *********************************
+         B           BG    X           13             BSC STATE 4 - NON XPARE
-                                       BSCS4    J     TEXT PROCESS 
********** STATE 5 - BSC PROCESS STX AFTER FIRST DLE - XPARENT BLOCK *********
+         A                             K=F10006       SET STATE 6
-         A     F1          X           BSCS5    J      * 
********** STATE 6 - BSC PROCESS XPARENT TEXT ********************************
+         A                             K=F10006       BSC STATE 6
-         A     F1          X           BSCS6    J     SET STATE 6
********** STATE 7 - BSC PROCESS XPARENT TEXT AFTER DLE **********************
          A                             K=F10008       SET NEXT STATE 8 
          A     F1          X           BSCS7    J     GO TO PROCESS
********** STATE 8 - BSC SEND CRC LEFT AFTER US ******************************
+         ZERO              X           K=F10008       SET STATE 9
-         ADD+  X     F1    X           ODDCRCL  J     SEND CRC LEFT
********** STATE 9 - BSC SEND CRC RIGHT AFTER US *****************************
+         B           BG    X           14             SET STATE 2
-                                       ODDCRCR  J     SEND CRC RITE
********** STATE A - BSC SEND CRC LEFT ***************************************
+         ZERO              X           K=F1000A       SET STATE B, CRC LEFT
-         ADD+  F1    X     X           ODDCRCL  J     SEND CRC LEFT
********** STATE B - MODE4/BSC SEND CRC RITE**********************************
+                                       K=F10006       SET STATE C
-         ADD   F1    F1    X           ODDCRCR  J     SEND CRC RITE
*********** STATE C - SEND PAD 1 *********************************************
+                                       K=F10006       SET STATE D - PAD1 
-         ADD+  F1    F1    X           PADSD    J       *
*********** STATE D - SEND PAD 2**********************************************
+         B           BG    P           NCEOBL         SET EOB     - PAD2 
-         ZERO              X           PADSD    J     SET PAD CHAR 
          EJECT 
          EJECT 
          ORG   900X
+                           NOP 
                            NOP 
+                           NOP 
                            NOP 
+                           NOP 
                            NOP 
+                           NOP 
                            NOP 
$ 
          BOX 
$ 
         OPCODE 05  TMA/S2 ENTRY POINTS 
         TYPES (00) (01)  (10)  (11)..
          00 =  CRCEQ 
          01 =  SPCHEQ
          10 =  ALNBUF
          11 =  RSTIME
          EBOX
$ 
$ 
+OPCD5T0                                K=UCAR         OPCODE 05 TYPE 00
                                        OPC5T01  J     PROCESS CRCEQ
+OPCD5T1                                K=5            OPCODE 05 TYPE 10
                                        OPC5T11  J     GET ADDR SPCCHR
+OPCD5T2                                K=OP5ACT       RESET MSB OF FCD 
-                                       OPC5T21  J     GO PROCESS 
+OPCD5T3  A     F           X           K=BZLTIMR      OPCODE 05 TYPE 11
          A     F1          F           OPC5T31  J     PROCESS RSTIME 
$ 
$ 
          BOX 
          O P C O D E   0 5  W I T H  F O U R  O P T I O N S
  
            TYPES ARE BITS 9 AND 8 OF STATE INSTRUCTION 
  
            00 = CRCEQ   SKIP IF CRC EQUAL. 
            01 = SPCHEQ  SKIP IF CHARACTER EQUAL. 
            10 = ALNBUF  ALLOCATE A NEW BUFFER. 
            11 = RSTIME  RESET TIMER. 
$ 
            ENTRY FOR OPCODE 05 FROM STATE INSTRUCTION. 
$ 
          EBOX
$ 
$ 
+OPCD5TX  ADD   F     BG    F           13             ADD BIT 13 FOR TMA/S2
          B           F     F1          K=OP5TYPE      SAVE TMA/S2 FOR LATER
          A     A           X           K=OP5ACT       FREE A FOR A/SHIFT 
          A     I           A           N=2            STATE INST. IN A/REG.
          AROE                                         SHIFT A/REG 2 POSITIONS
                                        N=F200FF       SET MASK IN F2 
          A.-B  A     F2    F1    L8EA                 SAVE ACTION
                                        K=OP5TYPE      SAVE RESULTS IN F/REG
          B           X     A                          RESTORE A/REGISTER.
          B           F1          PAGE9 TMA/S2         DO TMA/S2 JUMP.
$ 
$ 
          BOX 
          E N T R Y   T O   O P C O D E  0 5  T Y P E  0 0 .. 
        $ 
          STATE PROCESSING INST.TO  C R C E Q ..
        $ 
            IF EQ, USE SKIP CNT + P FOR NEXT
            STATE INSTRUCTION TO PROCESS. 
        $ 
            NOT EQ, PROCESS NEXT STATE INSTRUCTION. 
          EBOX
$ 
$ 
+OPC5T01  A.B   F1    F2    F     L8EA  K=6            PUT UCAR IN LEFT HALF
-         ADD   A     K     X           K=OP5ACT       X= WD 9 OF LCB 
+                                 READ                 READ NCCRCS
-         EOR   MEM   F     X                     ZL   UCAR = NCCRCS
+         A     I                                 NU   NO, HI ORDER BIT SET 
-                                       OPC5T02  J     YES, 
+         A.-B  X     BG    X           0         ZL   BIT SET, CLR IT NCCRCS 
                                        INI.     J     NOT SET, ERROR 
+                                       INI.     J     BAD 7 BIT CRC
-OPC5T02  B           F1    X           K=F1001F       SKIP CNT WITH HI-BIT 
          A.B   X     F1    F           OPC5T12  J     GO PROCESS SKIP COUNT
$ 
$ 
          BOX 
          E N T R Y   T O   O P C O D E  0 5  T Y P E  01 ..
        $ 
          STATE PROCESSING INST. TO   S P C H E Q 
        $ 
            IF EQ, USE SKIP CNT. + P FOR NEXT 
            STATE INSTRUCTION TO PROCESS. 
        $ 
            NOT EQ, PROCESS NEXT STATE INST.
          EBOX
$ 
$ 
 OPC5T11  ADD   A     K     X                          GET ADDR SPEC. CHAR
                                  READ  K=UCAR         READ NCSCHR
          A.-B  MEM   F2    X     L8EA
          EOR   X     F1                          ZL   DO CHARS COMPARE 
+                     Q           PAGE4 TMA/S2    L    NO, REENTER IDP
-OPC5T12  ADD+  P     F     P           RNI.     J     YES, ADD SKIP COUNT
$ 
$ 
          BOX 
          E N T R Y   T O  O P C O D E  0 5  T Y P E   1 0..
          STATE PROCESS INST. TO ALLOCATE NEW BUFFER
          EBOX
$ 
$ 
$ 
 OPC5T21  A.-B  F1    BG    F1          10             RESET MSB OF FCD 
          ADD+  A     BG    F           14             GET WORD 6 ADDRESS 
                                        K=TPFLG        IS TP RUNNING
          A     F1                      K=TPIBP   ZL     *
+         A                             OPC5T24  J     YES, GET IBP FROM REG. 
-                                 READ
+         A     MEM         F1          K=OLDIBP  ZL   IS IBP ZERO
-OPC5T24  A     F1          F1          K=OLDIBP  ZL   IS IBP ZERO
+         A     F           X           OPC5T23  J      NO, GO ADJUST LCD 
-         -A.B  I     BG                0         ZL    YES, IS THIS GET BUFF 
+         B           Q           PAGE4 TMA/S2    L     ALNBUF, IBP=0 EXIT
********************************************************************************
*         GETBUF/ALNBUF - GET NEW BUFFER                                       *
********************************************************************************
-OPC5T22  B           Q     F1          K=QSAVE        BETTER SAVE Q
          A     A           F1          K=WD3PTR  U    BETTER SAVE A
+                                 RTJ   N=F200FF       GO BUMP BUFFER COUNT 
-                                       BMPCNT   J        * 
                                  RTJ   GET64.9  J     GET A BUFFER 
+                                       K=OLDIBP       GET OLD BUF, TEST GETBUF 
-         A     F1          X           K=BIGBUF  ZL   GET BUFFER ADDR, IBP=0 
+         A+B   X     F1    F                     U    NO, FIND END OF BUFFER 
          A     A           Q           K=OP5ACT  L    YES, SKIP CHAINING 
+         A     A           Q     WRITE K=OP5ACT       CHAIN IN NEW BUFFER
          A     F1          F           WRCH/1         WRITE NEW FCD
          A     F           F     GATEI RR0E           MAKE FCD A WORD BOUNDRY
                                        K=WD3PTR
          A     F1          A           K=TPFLG        IS TP RUNNING
          A     F1                      K=TPIBP   ZL     *
+         ADD   F     Q     F1                    L 
-         ADD+  A     BG    X           14             GET IBP ADDRESS
+         ADD   F     Q     F     WRITE K=W3LCB   U    STROE NEW IBP
-                                       K=W3LCB 
          A.B   I     BG                15        ZL   TEST FCD LEFT/RITE 
+         A+B   F1    BG    F1          NCRINCH   U    RITE, SET NCRINCH
-         A.-B  F1    BG    F1          NCRINCH        LEFT, RESET NCRINCH
+         A     A           A                          GET WD3 ADDR.
          A     F           F     WRITE                WRITE WD3 BACK 
                                        K=F1000A       GET NCSCBA 
          ADD   A     F1    F                          GET NCSCBA ADDRESS 
                                  READ                 GET NCSCBA 
          A     MEM                               ZL   TEST FOR ZERO
+                                       K=QSAVE   U    NON ZERO, DONT STORE 
-         B           Q     Q     WRITE K=QSAVE        STORE NEW BUFFER ADDR. 
          B           F1          PAGE4 TMA/S2    L    EXIT 
********************************************************************************
*         IBP NON ZERO - ADJUCT LCD                                            *
********************************************************************************
+OPC5T23                          RTJ   N=F20001        SET RETURN
-                                       ADJLCD   J      GO ADJUST LCD 
+                                       OPC5T22  J      CONTINUE GET BUFFER 
$ 
          BOX 
           E N T R Y   O P C O D E   0 5   T Y P E  1 1 ..
         $
            STATE PROCESSING INST. TO   R S T I M 
         $
          EBOX
$ 
$ 
 OPC5T31                                K=LC1SV        ADD CLA ADDR 
          ADD   F     F1    F1          K=SVTMR        TO BZLTIMER BASE 
                                  READ                  READ TIMER
          A.-B  MEM   F2    F                          SAVE LEFT SIDE 
          A+B   X     F     X                           CONCATENATE BOTH
          A     F1          F                           GET BACK ADDR 
          A     X           X     WRITE                AND WRITE NEW VALUE
                      Q           PAGE4 TMA/S2    L     DECODE F1 FIELD 
          EJECT 
          BOX 
          $ 
           O P C O D E  ( 0 D )   S P C 3 E Q . . . 
          $ 
              COMPARE FOR 3 SPECIAL CHARACTERS. 
              $ 
                CHECK 1,  WRD 8 UPPER 8-BITS. 
                   IF EQ,  RETURN P+1.
              $ 
                CHECK 2,  WRD 15 UPPER 8-BITS.
                   IF EQ,  RETURN P+2.
              $ 
                CHECK 3,  WRD 15 LOWER 8-BITS.
                   IF EQ,  RETURN P+3.
              $ 
                NOT EQUAL, RETURN P+4.
          EBOX
$ 
$ 
+SPC3EQ1  A.-B  I     F2          READ  K=PORTADR ZL   TEST SPEC. EQ/TERM. OUT
+         A     F1          X           STPOUT.0 J     STOP PUTPUT
-         A.-B  MEM   F2    X     L8EA  K=UCAR         LOWER 8- BITS OF X-REG.
          EOR   X     F1    X           K=12      ZL   UCAR = CHK1 EXIT P+1 
+         ADD   A     K     X                     U    GO CHECK 2 IF EQ.
-                                       INI.     J     CHECK 1 EQ, EXIT.
+SPC3EQ2                          READ  K=FWRD15       READLCB WRD15. 
          A     MEM         F1                         SAVE SPECIAL CHAR. 
          A.-B  F     F2    X     L8EA  K=UCAR         SHIFT TO LOWER 8 BITS
-         EOR   X     F1    X           K=FWRD15  ZL   CHECK 2 EQ, P+2. 
+         A.B   F1    F2    X           K=UCAR    U    JUMP TO NEXT UPPER.
-                                       SPC3EQ4  J     CHECK 2 EQ, EXIT.
+         EOR   X     F1    X           K=2       ZL   CHECK 3 EQ, P+3 RTN. 
+         ADD+  P     ZERO  P                          NO MATCH,EXIT P+4. 
-         ADD+  P     K     P                          CHECK 3 EQ, EXIT P+3.
                                        RNI.     J     CHECK 3 EQ,EXIT
 SPC3EQ4  ADD+  P     ZERO  P                          CHECK 2 EQ,EXIT P+2
                                        INI.     J
 SPC3EQ5              Q           PAGE4 TMA/2     L    DECODE F1 FIELD
 STPOUT.0 A                             K=PORTWD0      GET PORT WD0 
          A.B   F1    BG                NAOON     ZL   TEST OUTPUT ON 
+         SUB   A     BG    F           14        U    GET MLCB WD1 ADDR
-         B           Q           PAGE4 TMA/S2    L    OUTPUT NOT ON, EXIT
+                                 READ  K=PORTWD0      READ MLCB WD1
-         A     MEM                               NU   TEST SUPRESS CHAIN 
+         B           Q           PAGE4 TMA/S2    L    EXIT CANNED MESSAGE
-         A+B   F1    BG    F1          NASTOUT        SET STOP OUTPUT
          A     X           X                          GET PORT WD0 ADDR. 
          A.-B  F1    BG    F1    WRITE NAOON          RESET NAOON TO STOP OUT
          B           Q           PAGE4 TMA/S2    L    DECODE ACTION
          BOX 
          $ OP CODE  [OF]  XLATE
               $ TRANSLATE CURRENT CHARACTER
                 1. AND UCAR WITH STATE INSTRUCTION MASK. 
                 2. IF NCCXLTA NOT EQUAL NIL, THEN
                    USE UCAR/2 AS THE INDEX FROM NCCXLTA POINTER, 
                    IF THE LSB OF UCAR = 0 THE LEFT CHARACTER IS
                    USED FORM THE TRANSLATE TABLE, IF LSB = 1 USE 
                    THE RIGHT CHAR. FROM THE TABLE. THE TRANSLATED
                    CHARACTER REPLACES UCAR FOR ALL SUBSEQUENT
                    INSTRUCTIONS. 
                    IF NCCXLTA = 0, THEN THE MASKED CHARACTER 
                    REPLACES UCAR.
                 3. TEST FOR OPTION TO CRC THE UNTRANSLATED CHAR. 
                    IF CRC IS TO BE PERFORMED AND THE OPTION IS 2 
                    AN EXCLUSIVE OR WITH THE PARTIAL CRC IS USED. 
                    IF THE CRC OPTION IS 1, THE CRC BOARD AND CRC 
                    POLYNOMIAL IS USED TO COMPUTE A NEW CRC.  THE 
                    NEW PARTIAL IS STORED IN WORD 9 OF THE MXLCB. 
               $
          $ 
          EBOX
          EJECT 
******************************************************************************
*         TEST FOR CRC OPTION ON UNXLATED CHARACTER                          *
******************************************************************************
 OPXLATE  A                             K=F100F0       MASK CRC OPTION
          A.B   I     F1                K=6       ZL   TEST CRC OPTION
+         ADD   A     K     F                     U    GET ADDR. OF PARTIAL CRC 
-         A                             OPX.2    J     EXIT NO CRC
+         A     I     BG          READ  9         ZL   READ PARTIAL, TEST EOR 
+         EOR   MEM   Q     X           OPX.1    J     EOR CHAR. AND CRC
-         A     MEM         A*                         USE CRC BOARD
          A     X           X*          N=3            CHARACTER TO CRC BOARD 
          A     A           X                          SAVE A 
          ALOE                                         DELAY FOR CRC
          A     X           A                          RESTORE A
          A     A*          X                          CRC TO Q 
 OPX.1    A     F           F                          PARTIAL CRC ADDR 
          A     X           X     WRITE                STORE PARITIAL CRC 
****************************************************************************
*         MASK AND XLATE THE CHARACTER                                     *
****************************************************************************
 OPX.2    A.-B  I     F2    X     L8EA                 GET MASK 
          A.B   X     Q     F1          K=UCAR         MASK UCAR
          A     F           X           K=9            A+K = MUX WORD 12
          ADD   A     K     F                          MUXLCB NCCXLATE WRD. 
          A                       READ                 READ NCCXLATE,SAVE UCAR
          A     MEM         Q           K=TCAR    ZL   TEST NCCXLATE ZERO 
+         A     X           F           RROE      U    SHIFT OFF CHAR. BIT
-         A     X           F1          INI.     J     NO XLATE, EXIT 
          ADD   F     Q     F                          INDEX TO XLATE CHAR. 
          A.B   X     BG          READ  15        ZL   READ XLATE, TEST UP/LO 
+         A.B   MEM   F2    F1          K=TCAR    U    LOWER TO TCAR
-         A.-B  MEM   F2    F1    L8EA  K=TCAR         UPPER TO TCAR
          A     F           F1          K=UCAR         REPLACE UCAR 
                                        INI.     J     EXIT 
          EJECT 
          BOX 
  
             $
  
               P R O G R A M   N A M E  . . . . . 
  
                             P B F C O P Y .... 
  
               E N T R Y   P O I N T . . . . .
  
                             FROM MARCO LEVEL - VIA EMS  Q  . . . . 
  
               P A R A M E T E R S   . . . . .
  
                             THE A REGISTER POINTERS TO A POINTER TO
                             SOURCE (S) BUFFER.  A + 1  POINTS TO A 
                             POINTER TO THE DESTINATION BUFFER (D). 
  
               F U N C T I O N  . . . . . . . 
  
                             COPY CHARACTERS FROM (S) BUFFERS TO (D)
                             BUFFERS.  REQUEST NEW (D) BUFFERS, LINK
                             TO OLD (D) BUFFER,IF REQIURED. 
  
               F I L E   R E G I S T E R S   U S E D  . . . . 
  
                             BPTRS   E0=PTR TO (S) BUFFER.
                             SLFCD   E1=LCD/FCD/ (S) BUFFER 
                             BPTRD   E2=PTR TO (D) BUFFER.
                             DLFCD   E3=LCD/FCD (D) BUFFER
                             PBFSVQ  E4= SAVE Q FOR RETURN
                             SCHAR   E5=TWO (S) CHARACTERS
                             SFCD    E6=CURRENT (S) FCD.
                             SCKUL   E7=CURRENT(S) LCD/PTR
                             DFCD    E8=CURRENT(D) LCD/PTR
  
               S U B R O U T I N E   C A L L E R  . . . . 
  
                             PICKR4   TO SERVICE ODD/INT
  
                             GETBUF.1 REQUEST NEW (D) BUFFER. 
  
               E X I T  . . . 
  
                             ALL REGISTERS DESTROYED EXCEPT (Q).
  
             $
          EBOX
* 
*** 
* 
          BOX 
               P B F C O P Y   SAVE PARMETERS POINTERS. 
          EBOX
          ORG   95AX
 PBFCOPY  A     A           I                          I = PTR. TO PARAMETERS.
                                  READ                 PTR. TO (S) BUFFER.
          A     MEM         X 
                                  READ                 SAVE PTR TO (S) BUFF.. 
          B           MEM   F1          K=BPTRS 
                                  READ  K=SLFCD        READ 1ST ENTRY OF (S). 
          A     MEM         F1          N=F200FF
          ADD+  A     ZERO  X                          X=PTR TO PTR OF (D). 
                                  READ                 READ PTR. TO (D) BUFF. 
          A     MEM         X 
                                  READ  K=BPTRD        BPTRS = (D) BUFF PTR.
          B           MEM   F1                         SAVE (D)/BUFF PTR. 
                                  READ  K=DLFCD        READ 1ST ENTRY OF (D). 
          A     MEM         F1
          A.B   F     F2    F1          K=DFCD         (D) FCD POINTER. 
                                        K=SLFCD        (S) LCD/FCD PTRS.
          A.B   F1    F2    X                          A = (S) FCD POINTER. 
          A.-B  F1    F2    A     L8EA                 X= (S) LCD POINTER.
          SUB   A     X     A           K=DFCD    NU   COMPARE (S) FCD/LCD. 
+         A     F1          X           PBFCY13  J     PERPARE TO EXIT. 
-         B           Q     F1          K=PBFSVQ       SAVE Q-REG FOR EXIT. 
* 
**
* 
          BOX 
                             READ (S) CHARACTERS. 
          EBOX
+PBFCY06                                K=BPTRS        POINTER TO (S)-BUF.
          A     X           A           RROE           X= FCD OF (S) -LSB 
          ADD   A     F1    A                          X=CURRENT (S) ADDR.
                                  READ  K=SCHAR        READ (S) CHARACTER 
          B           MEM   F1          N=F200FF
                                        K=SCKUL 
          A     X           F1                         UPDATE (S) FCD PTR.
          A.B   X     BG    A           15
                                        K=DFCD
          A.B   F1    BG    Q           15             CHECK IF (S) AND (D) 
          EOR   A     Q                 K=SCHAR   ZL   FCD/LSB ARE EQUAL FOR
+         A     F1          F1    L8EA                 FOR WRCH/0/1 INSTR.
 PBFCY08                                K=DFCD
          A     F1          X           K=7EX 
          EOR   X     K     A 
          A     A                       K=DFCD    ZL   (D) BUFFER IS FULL.
+         A     F1          X           K=BPTRD   U 
          BOX 
                             GO GET NEW (D) BUFFER. 
          EBOX
-                                       PBFCY19  J     GO GET NEW BUFFER. 
          BOX 
                             COPY (S) CHARACTERS TO DEST/BUFFER.
          EBOX
+         B           X     A           RROE           A = DFCD PTR - LSB.
          A.B   X     BG    X           15             TEST U/L STORE AREA. 
          B           X     X           N=F200FF  ZL   IF ZERO STORE UPPER
+         ADD   A     F1    X           K=SCHAR   L    CURRENT CHAR TO STORE
-         ADD   A     F1    X           K=SCHAR        CURRENT(S) CHAR. 
+         A     F1          F1          WRCH/0    U    STORE CURRENT CHARACTER. 
-         A     F1          F1          WRCH/1         STORE LOWER CHARACTER. 
+                                       K=DFCD
          ADD+  F1    ZERO  A                          ADD ONE TO (D)/FCD.
                                        K=SLFCD        (S) LFCD ADDR. 
          A.-B  F1    F2    X     L8EA  K=SCKUL        CHECK IF (S) COMP. 
          EOR   F1    X     X           K=DLFCD   ZL   IF ZERO COPY COMPLETED.
+         A     A           F1          K=DFCD    U    MORE (S) CONTINUE. 
-                                       PBFCY10  J     (S) COMPLETE, EXIT.
          BOX 
                             CHECK POSITION OF (S) CHARACTERS.
          EBOX
+                                       K=SCKUL        CHECK (S) NEXT CHAR. 
          ADD+  F1    ZERO  F1                         UPDATE, (S) POSITION.
          A     F           X 
          B           X     A           RROE           A = (S) FCD PTR. 
          A.B   X     BG    F           15        ZL   IF ZERO NEXT CHAR UPP. 
+                                       PBFCY08  J     STORE NEXT CHAR
******************************************************************************
*         TEST FOR ODD INTERRUPTS                                            *
******************************************************************************
-                                                 INTU TEST INTERRUPTS
+         -B          INTA  A                     ZL   TEST FOR ONLY ODD
-                                       PBFCY06  J     NONE, READ NEXT CHAR.
+                                       PBFCY06  J     NOT ODD, READ NEXT CHAR
-         A     X           F1    RTJ   K=SFCD    L    ODD, SAVE X
*         RETURN HERE AFTER ODD INTERRUPT                                    *
+                                       K=SFCD    U    RESTORE X
-                                       P1CHEC1  J     GO SERVICE ODD 
+         A     F1          X           PBFCY06  J     CONTINUE, READ NEXT CHAR 
          BOX 
                             STORE NEW (D) LCD/FCD/PTRS.
          EBOX
 PBFCY10                                K=BPTRD        DEST  BUFFER/ADDR. 
          A     F1          I           K=DFCD         READ (D) LCD/FCD 
                                  READ
          A     MEM         X                          X=(D) LCD/FCD
          A.B   X     F2    X     L8EA                 X = (D) FCD HIGH/8 
          ADD   F1    X     X     L8EA  K=BPTRD        ADD (D) LCD/PTR. 
          A     F1          I 
          B           X           WRITE K=PBFSVQ       WRITE (D) LCD/FCD. 
          B           F1    Q                          RESTORE Q, FOR EXIT. 
                                        UINTRTN  JL    RETURN TO EMM. 
          BOX 
            ENTER PBFCOPY WITH SOURCE EMPTY.. 
          EBOX
 PBFCY13  SUB   X     BG    X           15             SOURCE BUF EMPTY/EXIT. 
          A     X           F1          K=DFCD         SAVE,LDC/PTR 
                                        K=DLFCD 
                                        PBFCY10  J     GO STORE NEW D/LCD/PTR.
          BOX 
                             SETUP NEW DEST/BUFFER. 
          EBOX
 PBFCY19                                K=F10001       GET PTR TO LAST ENTRY
          SUB   X     F1    X     L8EA  K=DLFCD        X = (D) LCD PTR. 
          A.B   F1    F2    A                          I = (D)/FCD/PTR. 
          ADD   A     X     X           K=BPTRD        X = (D)/LCD/FCD/PTRS.
          A     F1          I                          I = PTR TO (D) LCD/FCD 
          B           X           WRITE K=BIGBUF       WRITE (D)/LCD/FCD/PTRS.
          ADD   I     F1    A                          LAST ENTRY IN (D) BUFF.
                                  READ  N=F200FF       READ LINK PTR ADDRESS. 
          B           MEM   X                     ZL
+PBFCY20                          READ  K=DLFCD   U    READ NEW (D) LCD/FCD.
-                                       PBFCY25  J     GO REQUEST NEW BUFFER. 
+         A     MEM         F1                         SAVE LCD/FCD/PTRS. 
          A.B   F     F2    F1          K=DFCD         SAVE NEW (D) FCD PTR.
          B           X     F1          K=BPTRD        SAVE NEW (D) PTR.
                                        K=SCKUL 
          A.B   F1    BG    X           15        ZL
+                                       K=DFCD    U 
          A     F1          X           PBFCY06  J     READ NEXT CHAR. WORD 
+         A.B   F1    BG    X           15
          A     X                       K=SCHAR   ZL
+         A     F1          F1    L8EA  PBFCY08  J     ONE MORE WORD TO STORE 
                                        PBFCY08  J     CONTINUE STORE CHAR
 PBFCY25                          RTJ   GET64.9A J      GET A BUFFER
+                                       K=BPTRD        PTR TO OLD DST BUFFER
          A     F1          X           K=BIGBUF       LENGTH OF BUFFER.
          ADD   F1    X     X                          PTR TO (D) LAST ENTRY
          A     A           X     WRITE N=F200FF       LINK OLD TO NEW (D). 
                                        PBFCY20  J
******************************************************************************
*         EXIT TO RNI AT P+2, P+3, P+4, P+5, P+6                             *
*                                                                            *
******************************************************************************
+RNI.2                                  K=F10002  U    SET CONST. 2 
-RNI.3                                  K=F10003       SET CONST. 3 
+         ADD   P     F1    P           RNI.     J     ADD TO P 
-RNI.4                                  K=F10004  L    SET CONST. 4 
+RNI.5                                  K=F10005       SET CONST. 5 
-         ADD   P     F1    P           RNI.     J     ADD TO P 
+RNI.6                                  K=F10006       SET CONST. 6 
-         ADD   P     F1    P           RNI.     J     ADD TO P 
******************************************************************************* 
*                                                                             * 
*            O P C O D E ( 1 A ) S E T B I T . .                              * 
*            $                                                                * 
*                SET ANY BIT IN ANY WORD OF THE LCB.                          * 
*            $                                                                * 
******************************************************************************* 
$ 
$ 
******************************************************************************* 
*                                                                             * 
*            O P C O D E  ( 1 B )  R S T B I T . .                            * 
*                                                                             * 
*                CLEAR ANY BIT IN ANY WORD OF THE LCB.                        * 
*            $                                                                * 
******************************************************************************* 
$ 
$ 
******************************************************************************* 
*                                                                             * 
*             THIS CODE IS  COMMON TO OPCODES 1A 1B.                          * 
*             THERE IS A TEST  TO SEE IF THE BIT IS TO                        * 
*             BE SET OR CLEAR.  BOTH OPCODES 1A AND 1B                        * 
*             ENTER THIS CODE. AND BOTH RETURN THROUGH                        * 
*             DECODEING FI FIELD (ACTION FIELD).                              * 
*         $                                                                   * 
******************************************************************************* 
$ 
$ 
+SETBIT1  B           F1    F1          K=FSCTEST U    ZERO = SET BIT 
-RSTBIT1  ZERO              F1          K=FSCTEST      NON-ZERO = RST BIT 
+                                       TK/2           INDEX TO LCB COMP. 
-                                       TN/7           GET BIT NUMBER 
+                                       SETF/2         SET SM1/BIT2 
-         ADD   X     K     X                          POINTER TO LCB WRD 
+         SUB   A     X     F           K=FSCTEST ZL   0=W3LCB/NON-0=WXLCB
-CLRSET1                          READ  CLRSET2  J     READ LCB WORD
+         A     X           X           CLRSET1  J     NOT LCB/WRD3 
-                                       CLRSET5  J
+CLRSET2  A     MEM         F1          K=WXLCB        NOT WORD 3 OF LCB
-                                       K=FSCTEST      GET TEST F1/REG. 
+         A     F1                      K=WXLCB   ZL   RST BIT IN WORD
-                                                      INST NOT USED. 
+CLRSET3  A+B   F1    BG    F1                    U    SET BIT IN WORD
-CLRSET4  A.-B  F1    BG    F1                         RST BIT IN WORD
+         A     X           X           N=F200FF       S3 = LCB POINTER 
-         A     F1                WRITE CLRF/2         WRITE LCB WORD BACK
+         B           Q           PAGE4 TMA/S2    L    DECODEF1 FIELD.
$ 
-CLRSET5  A     F1                      K=W3LCB   ZL   USE WRD3 OF LCB
+                                       CLRSET3  J     SET BIT IN WORD
-                                       CLRSET4  J     RST BIT
          EJECT 
$ 
$ 
          BOX 
             $
                  E N T R Y   F O R  O P C O D E  [ 1 8 ] . . 
                   $
                    THIS PART OF OPCODE 18 WILL SET THE 
                    SD/WRD AND DD/WRD, THEN SET THE TYPE
                    IN THE LOWER 3-BITS OF Q. 
                    WHEN A TRANSFORM WITH TMA/9 COMPLETS
                    CONTROL WILL BE AT 9B0 FOR TYPE 00
                    AND 9B7 FOR TYPE 07.
                  $ 
                    THE CODE BELOW STARTING AT 9B0 WILL 
                    SET THE Q AND F REGISTER TO THE MOVE. 
                  $ 
                    THEN WILL RETURN TO, MVSTORE TO REWRITE 
                    THE DD/WDR BACK.
             $
          EBOX
$ 
$ 
$ 
+MVCHXX                                 TK/7           SOURCE INDEX (COMP). 
          B           K     F                          SOURCE TO F
                                        K=F1000F
          -A.B  F     F1    F1          K=FSINDEX 
                                        TK/2           DEST.INDEX.
          B           K     F1          K=FDINDEX      DESTINATION INDEX. 
          ADD   A     F     X                          DEST/LUB/WRD/PTR.
                                  READ                 READ DEST.LCB WORD.
          B           MEM   X           K=FSINDEX      F=DD/CHARACTERS. 
          ADD   A     F1    F                          SD/LCB/WRD/PTR.
                                  READ  K=SDCHARS      READ SD CHARACTERS.
          B           MEM   F1          N=F200FF       F1=SOURCE CHARACTERS.
          B           Q           PAGE9 TMA/9     U    TRANSFORM F1 TYPE
          BOX 
             $
                  TRANSFORM RETURN FROM 9B0-9B7.
             $
          EBOX
-MVSTORE  A+B   F     Q     F           K=FDINDEX      LCB  DD/WRD/PTR. 
+         ADD   A     F1    X           K=F10003       X=DD LCB WRD PTR.
-         A     F                 WRITE                WRITE S1 DD/CHARACTERS.
          ADD   A     F1    A           INI.     J     RESTORE,A = LCB/WRD 3
          BOX 
          $ 
             O P C O D E  ( 1 8 )  M V C H X X .. 
          $ 
              MOVE CHARACTERS FROM  SD TO DD
              $ 
                TYPE = 0  MOVE SD/R TO DD/R 
                TYPE = 1  MOVE SD/R TO DD/L 
                TYPE = 2  MOVE SD/L TO DD/R 
                TYPE = 3  MOVE SD/L T0 DD/L 
                TYPE = 4  MOVE SD/WRD TO DD/WRD.
                TYPE = 5  CLEAR DD WORD.
                TYPE = 6  CLEAR DD/R CHAR.
                TYPE = 7  CLEAR DD/L CHAR.
     $
          EBOX
$ 
          ORG   9B0X
+         A.B   F1    F2    Q                          CHAR SD/R IN DD/R
          A.-B  X     F2    F           MVSTORE  J     GO STORE LCB WORD. 
+         A.B   F1    F2    Q     L8EA                 CHAR SD/R IN DD/L. 
          A.B   X     F2    F           MVSTORE  J     GO STORE LCB WORD. 
+         A.-B  F1    F2    Q     L8EA                 CHAR SD/L IN DD/R. 
          A.-B  X     F2    F           MVSTORE  J     G0 STORE LCB WORD. 
+         A.-B  F1    F2    Q                          CHAR SD/L IN DD/L. 
          A.B   X     F2    F           MVSTORE  J     GO STORE LCB WORD. 
          B           ZERO  F                          MOVE SD/WRD IN DD/WDR. 
          A     F1          Q           MVSTORE  J     GO WRITE LCB WORD. 
+         ZERO              Q                          CLEAR DD/WRD.
          ZERO              F           MVSTORE  J     GO WRITE LCB WORD. 
+         B           ZERO  Q                          CLEAR DD/R-CHAR. 
          A.-B  X     F2    F           MVSTORE  J     GO WRITE LCB DD WORD.
+         B           ZERO  Q                          CLEAR DD/L-CHAR. 
          A.B   X     F2    F           MVSTORE  J     GO WRITE LCB DD WORD.
******************************************************************************
*         JUMP TO STORE CHARACTER FROM PAGE 9                                *
******************************************************************************
 STORE.9                                STORTP.2 J     GO STORE CHARACTER 
******************************************************************************
*         MODE4 SPECIAL TEXT PROCESSING INSTRUCTION                          *
*                                                                            *
*         THE TEXT PROCESSES EACH CHARACTER, TESTING FOR BLANK AND EOL       *
*         CHARACTERS AND DECREMENTING THE LINE (CC1) AND XMISSION BLOCK      *
*         (CC2) COUNTERS.  EACH CHARACTER IS STORED IN THE DESTINATION       *
*         BUFFERS AFTER CODE XLATE.                                          *
*                                                                            *
*         EXIT CONDITIONS: 3 BLANKS - EXIT P+1                               *
*                          EOL CHAR - EXIT P+2                               *
*                           CC1 = 0 - EXIT P+3                               *
*                           CC2 = 0 - EXIT P+4                               *
******************************************************************************
* 
 MD4SPC   ADD   A     BG    F     READ  15             READ CC2 
          A     MEM               GATEI                CC2 TO I 
          A     I           F1    READ  K=F1CC2        READ CC1 
          A.B   MEM   F2    F1          K=F1CC1        SAVE CC1 
                                        K=INTCNT       GET INTERRRUPT CT. 
          A+B   F1    BG    F1          0              SET MD4 SPC. FLAG
******************************************************************************
*         TEST FOR BLANK, EOL, BCC = 0                                       *
******************************************************************************
 MD4SPC.1 B           BG    Q           15             SET Q TO 1 
                                        K=UCAR         GET UCAR 
          A     F1          X           K=F1BLK        CURRENT CHAR. TO X 
          EOR   X     F1                K=F1CC1   ZL   TEST FOR BLANK 
+         EOR   X     F2                K=F1BCC   ZL   TEST FOR END OF LINE 
-         SUB   F1    Q     F1          MD4BLK   J     CHAR = BLANK 
+         A     F1          F           K=TPDE    ZL   TEST BCC = ZERO
-         ADD+  P     Q     P           MD4EX    J     CHAR = EOL, EXIT P + 2 
+                                       MD4SPC.5 J     BCC NON ZERO, STORE
******************************************************************************
*         TRANSLATE THE CHARACTER                                            *
******************************************************************************
 MD4SPC.2 A     X           F           RROE           CHAR. /2 
          ADD   F1    F     F                          TABLE ADDR. + CHAR/2 
          A.B   X     BG          READ  15        ZL   TEST LEFT OR RITE
+         A.B   MEM   F2    F1          K=UCAR    U    RITE, SET UCAR 
-         A.-B  MEM   F2    F1    L8EA  K=UCAR         LEFT, SET UCAR 
          A     F           F1          K=TCAR    U    SET TCAR 
******************************************************************************
*         STORE THE CHARACTER                                                *
******************************************************************************
+                                 RTJ   STORE.9  J     GO STORE CHARACTER 
+         B           BG    Q           15             SET CONST. IN Q
                                        K=F1CC1        DECR. CC1
          SUB   F1    Q     F1                    ZL   TEST CC1 = 0 
+                                       K=F1CC2   U    NON-ZERO, DECR CC2 
-                                       MD4EX.3  J     CC1 = 0, EXIT P + 3
+         SUB   F1    Q     F1                    ZL   TEST CC2 = 0 
******************************************************************************
*         TEST FOR ODD INTERRUPT                                             *
******************************************************************************
+MD4SPC.3                               N=F200FF  INTU TEST FOR INTERRUPT 
-         ADD   P     Q     P           MD4EX.4  J     CC2 = 0, EXIT P   5
+                                                 U    INTERUPT, GO PROCESS 
-         A                             MD4SPC.4 J     CONTINUE,
+MD4INT   A                       RTJ                  GO PROCESS ODD INT.
                                        P1CHECK  J        * 
+MD4SPC.4                               K=TPSBA        GO GET THE NEXT CHAR.
-         A     F1          I           TPLOOP   J       *
******************************************************************************
*         BCC NON ZERO, RESTORE BLANKS                                       *
******************************************************************************
 MD4SPC.5                               K=F10003     TEST BCC LT. 3 
          SUB   F     F1                K=F1BLK   NU     *
+         A     F1          X           K=TPDE    U    GET BLANK CHAR.
-         ADD   P     Q     P           MD4EX    J     NO, EXIT P + 1 
+         A     X           F           RROE           CHAR. /2 
          ADD   F1    F     F                          TABLE ADDR. + CHAR/2 
          A.B   X     BG          READ  15        ZL   TEST LEFT OR RITE
+         A.B   MEM   F2    F1          K=TCAR    U    RITE, SET UCAR 
-         A.-B  MEM   F2    F1    L8EA  K=TCAR         LEFT, SET UCAR 
+MD4SPC.6                         RTJ   STORE.9  J     GO STORE CHARACTER 
+         B           BG    Q           15             SET Q = 1
                                        K=F1CC2        DECR. CC2
          SUB   F1    Q     F1          N=F200FF  ZL   TEST CC2 = ZERO
+                                       K=F1BCC   U    DECR BCC 
-         ADD   P     Q     P           MD4EX.4  J     CC2 = 0. EXIT P + 5
+         SUB   F1    Q     F1                    ZL   TEST BCC = 0 
+                                       MD4SPC.7 J     NON ZERO, STORE BLANK
-         A                             K=UCAR         RESTORE CURRENT CHAR.
          A     F1          X           K=TPDE         CHAR. TO X 
                                        MD4SPC.2 J     GO STORE CURRENT 
 MD4SPC.7                               K=TCAR         GET BLANK
          A     F1          F           MD4SPC.6 J     GO STORE BLANK 
******************************************************************************
*         BLANK CHAR. - INCREMENT BCC                                        *
******************************************************************************
 MD4BLK   A     F                       K=F1BCC   ZL   TEST CC1 = 0 
+         ADD   F1    Q     F                     U    INCR. BCC
-         ADD   P     Q     P           MD4EX.3  J     CC1 = 0, EXIT P + 4
+         A     F           F1          MD4SPC.3 J     GO GET NEX CHAR. 
******************************************************************************
*         EXIT SPECIAL MODE 4 INST. P + 1,2,3,4 OR 5                         *
******************************************************************************
+MD4EX.4  ADD   P     BG    P           13        U    SET P + 4
-MD4EX.3  ADD+  P     BG    P           14             SET P + 3
+MD4EX    B           BG    Q           15             SET Q = 1
          ADD   A     Q     F           K=F1CC1        STORE CC1
          A     F1          F           WRCH/1           *
                                        K=F10007       STORE CC2
          ADD   A     F1    F           K=F1CC2          *
          A     F1          F     WRITE                   * 
                                        K=INTCNT       RESET INTR. CT.
          A.-B  F1    BG    F           0             * 
          A     F           F           RR0E           DIV. BY 2
          A+B   F     BG    F1          15                * 
          A                             RNI.     J     RETURN TO RNI
******************************************************************************
*         HASP SPECIAL STATE INSTRUCTION FOR TEXT PROCESSING                 *
*         OF AN UNCOMPRESSED STRING OF CHARACTERS.  THE INSTRUSTION          *
*         IS REPEATED UNTIL ONE OF THE FOLLOWING CONDITIONS OCCUR.           *
*            CC1 = 0, EXIT P+1                                               *
*            CC2 = 0, EXIT P+2                                               *
*            CHARACTER = SPECIAL CHAR., EXIT P+3                             *
*            CHARACTER = FF, EXIT P+6                                        *
*            CHARACTER = BLANK, EXIT P+4                                     *
*            FILE REGISTER D = FF,  EXIT P+5                                 *
*                                                                            *
******************************************************************************
* 
 TPHSP1   EOR   F1    F2          GATEI K=F1007F  ZL   TEST FOR EOL 
+         ADD+  A     BG    X           12        U    GET XLATE TABLE ADDR 
-                                       RNI.4    J     EOL, EXIT P+4
          A.B   I     F1    F     READ  RROE           READ XLATE, MASK SHIFT 
          ADD   F     MEM   F           K=UCAR         DISPL. TO CHAR.
          A.B   F1    BG          READ  15        ZL   READ CHAR, TEST L/R
+         A.B   MEM   F2    F1                    U    RITE, REPLACE UCAR 
-         A.-B  MEM   F2    F1    L8EA                 LEFT, REPLACE UCAR 
          EOR   F     BG                9         ZL   TEST CHAR. = BLANK 
+         SUB   X     BG    F           14        U    GET CC2 ADDRESS
-         A                             RNI.6    J     BLANK, EXIT P+6
          A                       READ  K=F10001       READ CC2 
          SUB   MEM   F1    X                          DECR CC2 
          A     F           F 
          A     X           X     WRITE           ZL   TEST CC2 ZERO
+         ADD   A     F1    F           K=UCAR    U    GET ADDRESS CC1
-         A                             INI.     J     CC1 = 0, EXIT P+1
          A     F1          Q     READ  K=F10001       READ CC1, X CHAR. TO Q 
          SUB   MEM   F1    X                          DECR CC1 
          A     F           F 
          A.B   X     F2    X           WRCH/1    ZL   TEST CC1 = 0 
+         ADD+  A     BG    F           13        U    GET ADDRESS SPEC. CHAR 
-         A                             RNI.2    J     CC1 = 0, EXIT P+2
+                                 READ  K=CURCAR       READ SPEC. CHAR
          A.-B  MEM   F2    X     L8EA                 GET SPEC. CHARACTER
          EOR   F1    X           GATEI K=TPDD    ZL   TEST SPEC. CHAR. EQUAL 
+         A     F           F                     U    GET ADDRESS SPECIAL CH.
-         A                             RNI.3    J     SPEC. CHAR, EXIT P+3 
+         A     I           X     L8EA  WRCH/0         WRITE CURRENT AS SPEC
          ADD+  F1    ZERO  F1                         INCR. REG. D 
          A.B   F     F2    F                          MASK COUNT IN D
          EOR   F     F2                K=TCAR    ZL   TEST REG. D=FF 
+         B           Q     F1    RTJ   STORE.9  J     GO STORE CHARACTER 
-         B           Q     F1          RNI.5    J     D=FF, EXIT P+5 
                                        TPLOOP6  J     GET NEXT CHARACTER 
******************************************************************************
*         HASP SPECIAL TEXTPROCESSING INST. NUMBER 2                         *
*                                                                            *
*         THIS INST. INCREMENTS FILE REGISTER D AND TESTS FOR EQUAL          *
*         TO $3F. IF EQUAL, IT ADDS THE SKIP COUNT TO P, ELSE IT             *
*         EXITS P+1.                                                         *
******************************************************************************
* 
 TPHSP2                                 K=F1003F       MASK COUNT 
          A.B   F     F1    F                           * 
          EOR   F1    F                 TK/4      ZL   TEST = 3F
+         A                             INI.     J     EXIT P + 1 
-         ADD+  P     K     P                          ADD SKIP COUNT 
                                        RNI.     J     GO TO RNI
******************************************************************************
*         MICRO ENTRY FOR RELEASE 64 WORD BUFFER ON PAGE 9                   *
******************************************************************************
 GET64.9                                BUFGETS  J     GET A 64 WORD BUFFER 
 GET64.9A -B          CRTJ  F1          K=GETRTRN      GET A 64 WORD BUFFER 
          A     F           F1          K=GETADDR      SET RETURN FOR STAMP 
                                        GET64    J
  
          ORG   A00X
******************************************************************************
*                                                                            *
*         BUFFER RELEASE JUMP LOCATIONS FOR BUFFER SIZE                      *
*                                                                            *
******************************************************************************
+BSIZE8                                 REL8     J     RELEASE 8 WORD 
+BSIZE16                                REL16    J     RELEASE 16 WORD
+BSIZE32                                REL32    J     RELEASE 32 WORD
+BSIZE64                                REL64    J     RELEASE 64 WORD
+BGSIZE8                                GET8     J     GET 8 WORD BUFFER
+BGSIZE16                               GET16    J     GET 16 WORD BUFFER 
+BGSIZE32                               GET32    J     GET 32 WORD BUFFER 
+BGSIZE64                               GET64    J     GET 64 WORD BUFFER 
******************************************************************************
*                                                                            *
*         B U F F E R   M A I N T E N A N C E                                *
*                                                                            *
******************************************************************************
*                                                                            *
*         MACRO CALL FOR BUFFER RELEASE                                      *
*                                                                            *
*         INPUTS  - P= ADDRESS + 6 OF CALLERS RETURN ADDRESS                 *
*                                                                            *
*         OUTPUTS   BUFFER RELEASED AND CHAIN OF LAST BUFFER PLACED          *
*                   IN USERS CALLING ADDRESS                                 *
*                   I = BUFFER ADDRESS                                       *
*                   A = BUFFER ADDRESS                                       *
*                   Q = CALLERS RETURN ADDRESS                               *
*                   F1 RELADDR = USERS RETURN ADDRESS FOR STAMP              *
*                   F1 BUFPTR = USERS ADDRESS OF BUFFER                      *
******************************************************************************
 BUFREL   A     A           F1    READ  K=MULTIPL      READ CALLERS ADDRESS 
          A     MEM         F1          K=RELADDR      SAVE FOR STAMP 
          ADD   F     BG    X     READ  15             READ BUFFER POINTER
          A     MEM         F1          K=BUFPTR         *
          A     X           X     READ                 READ BUFFER ADDRESS
          A     MEM               GATEI                  *
          A                       READ  N=F200FF       READ CALLER + 1
          A     MEM         F                            *
          A     I           F1    READ  K=BUFADR       READ ADDRESS OF SIZE 
          A     MEM         F           K=RELADDR        *
          ADD   F1    BG    F1    READ  14             READ SIZE
          A     MEM         Q                            *
          A                       RTJ   GETMAP   J     GET MAP WORD 
+         A     I           A     RTJ   K=RELRTRN      SAVE RETURN
-         -B          CRTJ  F1          BUFR.1   J     SAVE RETURN
*         RETURN HERE AFTER BUFFER RELEASE
+                                       K=BUFPTR       GET POINTER TO BUFFER
          A     F1          F                          CALLERS ADDRESS
          A     I           Q     WRITE K=QTOPSK       STORE CHAIN IN CALLER
          A     F1          F           K=RELADDR      READ INTERRUPT LOCKOUT 
          A     F1          Q     READ                   *
          A     MEM                     K=F10001  ZL   LOCKOUT ZERO 
+         ADD   P     F1    P           UINTRTN  JL    SKIP UNLOCK
-                                       UINTRTN  JL    RETURN TO EMULATOR 
 BUFR.1   B           Q           PAGE10TMA/S2    U    TRANSFORM ON SIZE
******************************************************************************
*         RELEASE 64 WORD BUFFER                                             *
*                                                                            *
*         INPUTS -   F1 MAPADR = BIT MAP WORD ADDRESS                        *
*                    X = BIT MAP WORD                                        *
*                    A = BUFFER ADDRESS                                      *
******************************************************************************
 REL64M   ZERO              F1          K=MULTIPL      ZERO MULTIPLE RELEASE
+REL64A   A     A           I     RTJ   GETMAP   J     GET MAP WORD 
+REL64    A.-B  X     F2    F     L8EA                 TEST BUFFER RELEASED 
-         EOR   F2    F                           ZL     *
+                                       RELDUP   J     DUPLICATE RELEASE
-REL64B   A.B   X     F2    X           K=F1003F       RESET BIT MAP BITS 
+         A+B   I     F1    A           K=RELADDR      GET BUFFFER CHAIN
-         SUB   A     BG    Q           14             GET BUFFER CHAIN -2
          A     F1                WRITE K=BCB64        STORE CALLERS ADDRESS
                                  RTJ   RELCOM   J     DO COMMON RELEASE
+         A     I                       K=MULTIPL ZL   WAS CHAIN ZERO 
+         A     F1                      K=RELRTRN ZL   NO, TEST MULTIPLE
-         A                             K=RELRTRN L    YES, EXIT RELEASE
+         A     I           A                     INTU MULTIPLE RELEASE, ODD
-         A                             RTNWHR   J     EXIT RELEASE 
******************************************************************************
*         MULTIPLE RELEASE TEST ODD INTERUPTS                                *
*                A = BUFFER ADDRESS                                          *
******************************************************************************
+         -B          INTA                        ZL   YES, IS IT ODD 
-                                       REL64A   J     NO, CONTINUE 
+                                       REL64A   J     NOT ODD, CONTINUE
-                                 RTJ             L    ODD, GO PROCESS
+         A                             REL64A   J     RELEASE NEXT BUFFER
-                                       P1CHEC1  J
******************************************************************************
*         RELEASE 32 WORD BUFFER                                             *
*                                                                            *
*         INPUTS -   F1 MAPADR = BIT MAP WORD ADDRESS                        *
*                    X = BIT MAP WORD                                        *
*                    I = BUFFER ADDRESS                                      *
******************************************************************************
 REL32    A.B   I     BG                10        ZL   TEST BIT 10
+                                       K=F1000F  U    MASK HIGHER ADDRESS
-                                       K=F100F0       MASK LOWER ADDRESS 
+         A     F1          Q     L8EA  N=F200FF       MASK TO Q
          A.B   X     Q     F                          TEST BUFFER RELEASED 
          EOR   F     Q                           ZL     *
+                                       RELDUP   J     DUPLICATE RELEASE
-         -A.-B F2    Q     F           K=F1001F       NO, COMPLEMENT MASK
+         A+B   I     F1    A                          GET CHAIN ADDRESS
-         A.B   F     X                 K=BCB32   ZL   BUDDY FREE 
+         A.-B  X     Q     X     RTJ   RELCOM   J     NO, RESET MAP BITS 
-         EOR   A     BG    A           10        L    YES, GET BUDDY 
+                                       K=RELRTRN L    EXIT RELEASE 
-         A+B   X     F     X     RTJ   GETBUDY  J     SET MAP, GET BUDDY 
+         A     A           I           REL64B   J     GO RELEASE 64
-                                       RTNWHR   J     EXIT RELEASE 
******************************************************************************
*         RELEASE 16 WORD BUFFER                                             *
*                                                                            *
*         INPUTS -   A = BUFFER ADDRESS                                      *
*                    X = BIT MAP WORD                                        *
*                    F1 MAPADR = BIT MAP WORD ADDRESS                        *
******************************************************************************
 REL16M   A     A           I     RTJ   GETMAP   J
+         ZERO              F1          K=MULTIPL     ZERO MULTIPLE FLAG
 REL16    A     A           Q           N=3X           SHIFT COUNT
          AROE                          K=F10006       SHIFT ADDRESS
          A.B   A     F1    A           K=MASK16       MASK TABLE 
          ADD   A     F1    F                          GET MASK ADDRESS 
          ADD+  A     F1    F     READ                 READ MASK
          A     MEM               GATEI K=F1000F       SAVE IN I
          A+B   F1    Q     A     READ                 READ COMPL. MASK 
          A     MEM         Q                           * 
          A.B   I     X     F                          TEST DUPLICATE RELEASE 
          EOR   I     F                           ZL     *
+                                       RELDUP   J     DUPLICATE RELEASE
-         A.B   X     Q                 K=BCB16   ZL   TEST BUDDY FREE
+         -A.B  I     X     X     RTJ   RELCOM   J     NO, FINISH UP
-         EOR   A     BG    A           11        L    YES, GET BUDDY 
+                                       K=RELRTRN L    EXIT RELEASE BUFFER
-         A+B   X     Q     X     RTJ   GETBUDY  J     SET MAP, GET BUDDY 
+         A     A           I           REL32    J     GO RELEASE 32
-                                       RTNWHR   J     EXIT RELEASE 
******************************************************************************
*         RELEASE 8 WORD BUFFER                                              *
*                                                                            *
*         INPUTS  -  A = BUFFER ADDRESS                                      *
*                    X = BIT MAP WORD                                        *
*                    F1 MAPADR = BIT MAP WORD ADDRESS                        *
******************************************************************************
 REL8     A     A           Q           N=2X           SHIFT COUNT
          AROE                          K=F1000E       SHIFT ADDRESS
          A.B   A     F1    A           K=MASK8        MASK TABLE 
          ADD   A     F1    F                          GET MASK ADDRESS 
          ADD+  A     F1    F     READ                 READ MASK
          A     MEM               GATEI K=F10007       MASK TO I
          A+B   F1    Q     A     READ                 READ COMPL. MASK 
          A     MEM         Q                          COMPL. MASK TO F 
          A.B   I     X                           ZL   TEST BUFFER RELEASED 
+         A.B   X     Q                 K=BCB8    ZL   NO, TEST BUDDY FREE
-                                       RELDUP   J     YES, DUPLICATE 
+         -A.B  I     X     X     RTJ   RELCOM   J     NO, FINISH UP
-         EOR   A     BG    A           12        L    YES, GET BUDDY 
+                                       K=RELRTRN L    EXIT RELEASE BUFFER
-         A+B   X     Q     X     RTJ   GETBUDY  J     SET MAP, GET BUDY
+         A     A           I           REL16    J     GO RELEASE 16
-                                       RTNWHR   J     EXIT RELEASE 
******************************************************************************
*         RELEASE COMMON EXIT CODE                                           *
*                                                                            *
*         INPUTS -   X = BIT MAP WORD                                        *
*                    K = BUFFER CONTROL BLOCK ADDRESS                        *
*                    A = BUFFER CHAIN ADDRESS                                *
*                                                                            *
*         OUTPUTS -  I = BUFFER CHAIN                                        *
*                    A = ORIGINAL BUFFER CHAIN ADDRESS                       *
*                    BCB UPDATED FOR RELEASE                                 *
*                    MAP WORD STORED                                         *
*                    K = BCB LCD/FCD                                         *
******************************************************************************
 RELCOM   ADD+  F1    ZERO  F1                         COUNT + 1
          A                             INCK           GET "GET" POINTER
          A     F1                                ZL   TEST GET = 0 
+         A                             INCK      L    NO, GET PUT POINTER
-         A     A           F1                         STORE BUFADR IN GET
+         A                             INCK           GET PUT POINTER
-         A     F1          Q                     ZL   OLD PUT = ZERO 
+         A     A           A     WRITE                STORE NEW BUFFER IN CHAIN
-         A     A           F1                         STORE BUFADR IN PUT
          A                       READ  INCK           READ NEW CHAIN 
          B     MEM               GATEI                CHAIN TO I 
          SUB   A     BG    F           15             GET CHAIN - 1
          B           Q           WRITE                STORE PUT IN CHAIN -1
******************************************************************************
*         SUBROUTINE TO STORE MAP WORD FROM BUFFER ADDRESS                   *
*                                                                            *
*         INPUTS  -  A = BUFFER ADDRESS                                      *
*                    X = BIT MAP WORD                                        *
*                    F1 MAPADR = BIT MAP WORD ADDRESS                        *
*         OUTPUTS -  MAP WORD STORED                                         *
*                    X = BIT MAP WORD                                        *
******************************************************************************
+PUTMAP   A.B   A     BG                9         ZL   TEST LEFT/RIGHT
+         A     X           Q     L8EA  K=MAPADR  U    GET WORD ADDRESS 
-         A     X           Q           K=MAPADR         *
+         A     F1          F                             * 
-         B           Q           WRITE          RU    STORE WORD, EXIT 
******************************************************************************
*         SUBROUTINE TO GET MAP WORD FROM BUFFER ADDRESS                     *
*                                                                            *
*         INPUTS  -  I = BUFFER ADDRESS                                      *
*                                                                            *
*         OUTPUTS    X = BIT MAP WORD (ROTATED L8 IF BIT 9 ONE)              *
*                    F1 MAPADR = BIT MAP WORD ADDRESS                        *
*                    I = BUFFER ADDRESS                                      *
******************************************************************************
 GETMAP   A     I           A           N=7X           GET LEFT 9 BITS
          AR0E                          K=STARTM       OF ADDRESS 
          ADD   A     F1    F1          K=MAPADR       ADD MAP START TO ADDR. 
          A.B   I     BG          READ  9         ZL   READ MAP WORD
+         A     MEM         X     L8EA  N=F200FF  U    1, RIGHT HALF MAP
-         A     MEM         X           N=F200FF       0, LEFT HALF MAP 
+         A     I           A                    RU    EXIT 
******************************************************************************
*         SUBROUTINE TO GET A BUFFER FROM MIDDLE OF RELEASED BUFFER CHAIN    *
*                                                                            *
*         INPUTS  -  A = BUFFER CHAIN ADDRESS                                *
*                    K = BCB ADDRESS OF CURRENT SIZE                         *
*                                                                            *
*         OUTPUTS -  A = BUFFER CHAIN ADDRESS                                *
*                    BCB UPDATED                                             *
*                    BUFFER CHAIN RESTORED                                   *
******************************************************************************
 GETBUDY  A     A           A                          READ FORWARD CHAIN 
          SUB   A     BG    Q     READ  15               *
          A     MEM               GATEI                FORWARD CHAIN TO I 
                                  READ                 READ BACKWARD CHAIN
          A     MEM         Q                          BACKWARD CHAIN TO Q
          A     A           A                          ZERO FORWARD CHAIN 
          ZERO                    WRITE                  *
          SUB   F1    BG    F1          15        ZL   DECREMENT COUNT
+         B           Q     Q           INCK      U    COUNT NON ZERO 
-                                       GETB01   J     LAST BUFFER, ZERO GET
          EOR   A     F1                          ZL   BUFFER = GET 
+         A     I                 WRITE INCK      U    NO, FWD IN BACK ADDR 
-         A     I           F1                   RU    YES, FWD CHAIN TO GET
+         EOR   A     F1                          ZL   BUFFER = PUT 
+         SUB   I     BG    F           15        U    FORWOARD CHAIN - 1 
-         B           Q     F1                   RU    BACKWRD TO PUT, EXIT 
+         B           Q     Q     WRITE          RU    STORE BKWD IN FWD - 1
 GETB01   ZERO              F1          INCK           ZERO GET POINTER 
          ZERO              F1          INCK     RU    ZERO PUT POINTER, EXIT 
******************************************************************************
*                                                                            *
*         MICRO CALLS FOR BUFFER GETS                                        *
*                                                                            *
*         INPUTS  - RTJ USERS MICRO RETURN ADDRESS                           *
*                                                                            *
******************************************************************************
******************************************************************************
*         STORE CHARACTER ENTRY FOR GET 64 WORD BUFFER                       *
******************************************************************************
 BUFGETS  -B          CRTJ  F1          K=GETRTRN      SAVE RETURN
          A     F           F1          K=GETADDR      RETURN FOR STAMP 
                                        K=TPFLG        IS TP RUNNING
          A     F1                      K=BCB64   ZL     *
+                                       GET64    J     YES CONTINUE 
*         ASSUME IT IS IDP THAT CALLED
* 
-         SUB   F1    BG                11        NU   COUNT LT. 16 
+         ADD   A     BG    F           14        U    YES, GET TO ISPTA
-                                       GET64    J     NO, CONTINUE 
+                                 READ                 READ ISPTA 
-         ADD+  MEM   BG    Q           14             FORCE STATE 3
                                  READ                 READ STATE 3 
          A     MEM         P           RNI.     J     GO EXECUTE STATE 3 
******************************************************************************
*                                                                            *
*         MACRO CALL FOR BUFFER GET                                          *
*                                                                            *
*         INPUTS  - P= ADDRESS + 5 OF CALLERS RETURN ADDRESS                 *
*                                                                            *
*         OUTPUTS   BUFFER OBTAINED AND BCB UPDATED                          *
*                   A = BUFFER ADDRESS                                       *
*                   F1 GETADDR = CALLERS ADDRESS                             *
*                   Q = CALLERS RETURN ADDRESS                               *
******************************************************************************
 BUFGET                           READ                 GET CALLERS ADDRESS
          A     MEM         F1          K=GETADDR        *
                                  READ                 READ ADDRESS OF SIZE 
          A     MEM         F                            *
                                  READ  N=F200FF       READ ADDRESS OF SIZE 
          A     MEM         F                            *
          ADD   F1    BG    F1    READ  15             READ BUFFER SIZE 
          A+B   MEM   BG    Q           13             ADD 4 TO SIZE
+                                 RTJ   K=GETRTRN      SAVE RETURN
-         -B          CRTJ  F1          BUFG.1   J     SAVE RETURN
*         RETURN HERE AFTER BUFFER GET
+                                       K=QTOPSK       GET INTERRUPT LOCKOUT
          A     F1          F           K=GETADDR      READ INTERRUPT LOCKOUT 
          A     F1          Q     READ                 SET Q TO RETURN ADDRESS
          A     MEM                     K=F10001  ZL   LOCKOUT ZERO 
+         ADD   P     F1    P           UINTRTN  JL    SKIP UNLOCK
-                                       UINTRTN  JL    RETURN TO EMULATOR 
 BUFG.1   B           Q           PAGE10TMA/S2    U    TRANSFORM ON SIZE
******************************************************************************
*         GET 64 WORD BUFFER                                                 *
*                                                                            *
*         INPUTS  -  RETURN IN F1=GETRTRN                                    *
*         OUTPUTS -  A = BUFFER ADDRESS                                      *
*                    I = BUFFER CHAIN ADDRESS                                *
*                    BCB UPDATED                                             *
*                    FLAG WORD ZERO                                          *
*                    LCD/FCD STORED IN WORD ZER0                             *
******************************************************************************
 GET64    A                             K=BCB64        GET BCB
                                  RTJ   GETCOM   J     GO GET BUFFER
+         A     I                       K=F1003F  ZL   ANY BUFFERS
+         A.-B  I     F1    A           N=F200FF  U    GET TO TOP OF BUFFER 
-                                       OUTBUF   J     OUT OF BUFFERS 
          A.-B  X     F2                K=F10001  ZL   TEST BUFFER FREE 
+                                       DUPGET   J     1, DUPLICATE GET 
-         B           Q     Q     WRITE K=F10003       0, STORE LCD/FCD 
          SUB   I     F1    F           K=GETADDR      GET CHAIN -3 
          A     F1                WRITE                STAMP RETURN 
          ADD+  A     ZERO  F                          ZERO FLAG WORD 
          ZERO                    WRITE                  *
          A+-B  X     F2    X     RTJ   PUTMAP   J     SET BUFFER IN USE
+                                       GETEXIT  J     RETURN TO CALLER 
******************************************************************************
*         GET 32 WORD BUFFER                                                 *
*                                                                            *
*         INPUTS  -  RETURN IN F1 = GETRTRN                                  *
*         OUTPUTS -  BCB UPDATED                                             *
*                    A = BUFFER ADDRESS                                      *
*                    I = BUFFER CHAIN ADDRESS                                *
*                    LCD/FCD IN WORD 0                                       *
*                    0 IN WORD 1                                             *
*                    0 IN CHAIN ADDRESS                                      *
******************************************************************************
 GET32                                  K=BCB32        GET BCB
                                  RTJ   GETCOM   J     GO GET BUFFER
+         A     I                       K=F1F000  ZL   ANY BUFFERS
+         A.B   A     BG                10        ZL   GET CORRECT MASK 
-                                       NO32     J     OUT OF BUFFERS 
+         -A.-B F1    F2    F                     U    0F00 MASK
-         A     F1          F                          F000 MASK
          A.B   X     F                 K=F1001F  ZL   TEST BUFFER FREE 
+                                       DUPGET   J     1, DUPLICATE GET 
-         A.-B  I     F1    A                          0, GET TOP OF BUFFER 
+         B           Q     Q     WRITE                0, STORE LCD/FCD 
          ADD+  A     ZERO  Q                          ZERO FLAG WORD 
          ZERO                    WRITE                  *
          A+B   X     F     X     RTJ   PUTMAP   J     SET IN USE,
+                                       GETEXIT  J     EXIT 
****************************************************************************
*         NO 32 WORD BUFFER - GET A 64 AND RELEASE HALF OF IT              *
****************************************************************************
+NO32                                   K=GETRTRN      SET 64 WORD BCB
-         A     F1          F1          K=G32RTRN      SAVE RETURN
+                                 RTJ   K=GETRTRN      GO GET 64 WORD 
-         -B          CRTJ  F1          GET64    J       *
+                                       K=F10F00       GET MASK OF HIGHER 
          A.-B  X     F1    X           K=BCB32        RESET HIGHER IN USE
          A     I           A     RTJ   RELCOM   J     GO RELEASE HIGHER 32 
+         A                             K=F1003F       GET TO TOP OF BUFFER 
          A.-B  A     F1    A           K=LCD32        STORE LCD/FCD
          A     F1                WRITE K=F1001F         *
          A+B   A     F1    F                          GET TO CHAIN WORD
          ZERO                    WRITE K=G32RTRN      ZERO CHAIN 
          A     F           I           RTNWHR   J     VARIABLE EXIT
******************************************************************************
*         GET 16 WORD BUFFER                                                 *
*                                                                            *
*         INPUTS  -  RETURN IN F1 = GETRTRN                                  *
*         OUTPUTS -  BCB UPDATED                                             *
*                    A = BUFFER ADDRESS                                      *
*                    I = BUFFER CHAIN ADDRESS                                *
*                    LCD/FCD IN WORD 0                                       *
*                    0 IN WORD 1                                             *
*                    0 IN CHAIN ADDRESS                                      *
******************************************************************************
 GET16                                  K=BCB16        GET BCB
                                  RTJ   GETCOM   J     GO GET BUFFER
+         A     I           A           N=3X      ZL   ANY BUFFERS
+         AROE                          K=F10006  U    SHIFT BUFFER ADDRESS 
-                                       NO16     J     OUT OF BUFFERS 
          A.B   A     F1    F           K=MASK16       SHIFT BUFFER ADDR
          ADD   F1    F     F           N=F200FF       GET MASK ADDRESS 
          A     I           A     READ                 READ MASK
          A     MEM         F           K=F1000F       0, 
          A.B   X     F                           ZL   TEST BUFFER FREE 
+                                       DUPGET   J     1, DUPLICATE GET 
-         A.-B  A     F1    A                          GET TO TOP OF BUFFER 
          B           Q     Q     WRITE                0, STORE LCD/FCD 
          ADD+  A     ZERO  Q                          ZERO FLAG WORD 
          ZERO                    WRITE                  *
          A+B   X     F     X     RTJ   PUTMAP   J     SET IN USE 
+                                       GETEXIT  J     EXIT 
****************************************************************************
*         NO 16 WORD BUFFER - GET A 32 AND RELEASE HALF OF IT              *
****************************************************************************
+NO16                                   K=GETRTRN      SAVE RETURN ADDRESS
-         A     F1          F1          K=G16RTRN        *
+                                 RTJ   K=GETRTRN      GO GET 32 WORD 
-         -B          CRTJ  F1          GET32    J       *
+         A.B   A     BG                10        ZL   TEST FOR 16 MASK 
+         A                             K=F10300  U    1, MASK HIGHER ADDR. 
-                                       K=F13000       0, MASK LOWER ADDR.
          A.-B  X     F1    X           K=BCB16        RESET IN USE ON HIGHER 
          A     I           A     RTJ   RELCOM   J     RELEASE HIGHER BUF.
+         A                             K=F1001F       SAVE LCD/FCD 
          A.-B  A     F1    A           K=LCD16        GET TO TOP OF BUFFER 
          A     F1                WRITE K=F1000F       STORE LCD/FCD
          A+B   A     F1    F                          GET TO CHAIN WORD
          ZERO                    WRITE K=G16RTRN      ZERO CHAIN 
          A     F           I           RTNWHR   J     VARIABLE EXIT
******************************************************************************
*         GET  8 WORD BUFFER                                                 *
*                                                                            *
*         INPUTS  -  RETURN IN F1 = GETRTRN                                  *
*         OUTPUTS -  BCB UPDATED                                             *
*                    A = BUFFER ADDRESS                                      *
*                    I = BUFFER CHAIN ADDRESS                                *
*                    LCD/FCD IN WORD 0                                       *
*                    0 IN WORD 1                                             *
*                    0 IN CHAIN ADDRESS                                      *
******************************************************************************
 GET8                                   K=BCB8         GET BCB
                                  RTJ   GETCOM   J     GO GET BUFFER
+         A     I           A           N=2X      ZL   ANY BUFFERS
+         AROE                          K=F1000E  U    SHIFT BUFFER ADDRESS 
-                                       NO8      J     OUT OF BUFFERS 
+         A.B   A     F1    F           K=MASK8        SHIFT BUFFER ADDR
          ADD   F1    F     F           N=F200FF       GET MASK ADDRESS 
          A     I           A     READ                 READ MASK
          A     MEM         F           K=F10007         *
          A.-B  A     F1    A                          GET TO TOP OF BUFFER 
          A.B   X     F                           ZL   TEST BUFFER FREE 
+                                       DUPGET   J     1, DUPLICATE GET 
-         B           Q     Q     WRITE                0, STORE LCD/FCD 
          ADD+  A     ZERO  Q                          ZERO FLAG WORD 
          ZERO                    WRITE                  *
          A+B   X     F     X     RTJ   PUTMAP   J     SET IN USE 
+                                       GETEXIT  J     EXIT 
****************************************************************************
*         NO 8  WORD BUFFER - GET A 16 AND RELEASE HALF OF IT              *
****************************************************************************
+NO8                                    K=GETRTRN      SAVE RETURN ADDRESS
-         A     F1          F1          K=G8RTRN         *
+                                 RTJ   K=GETRTRN      GO GET 16 WORD 
-         -B          CRTJ  F1          GET16    J       *
+         A     I           A           N=2X           GET MASK 
          AROE                          K=F1000E       SHIFT BUFFER ADDRESS 
          A.B   A     F1    F           K=MASK8        GET MASK FOR HIGHER
          ADD   F     F1    F                            *
          A     I           A     READ                 READ MASK
          A.-B  X     MEM   X           K=BCB8         RESET HIGHER IN USE
          A                       RTJ   RELCOM   J     GO RELEASE HIGHER
+                                       K=F1000F       GET TO TOP OF BUFFER 
          A.-B  A     F1    A           K=LCD8           *
          A     F1                WRITE K=F10007       STORE LCD/FCD
          A+B   A     F1    F           K=G8RTRN       GET CHAIN ADDRESS
          ZERO                    WRITE                ZERO CHAIN 
          A     F           I           RTNWHR   J     EXIT 
******************************************************************************
*         COMMON GET BUFFER ROUTINE                                          *
*                                                                            *
*         INPUTS  K=BCB ADDRESS                                              *
*                                                                            *
*         OUTPUTS I = BUFFER ADDRESS CHAIN WORD /  ZERO IF NO BUFFER         *
*                 A = BUFFER ADDRESS CHAIN WORD                              *
*                 X = MAP WORD                                               *
*                 F1 MAPADR = ADDRESS OF MAP WORD                            *
*                 Q = LCD/FCD FROM BCB                                       *
******************************************************************************
 GETCOM   A     F1                                ZL   COUNT = 0
+         SUB   F1    BG    F1          15        U    DECREMENT COUNT
-         A     F1          I                    RU    OUT OF BUFFERS 
+         A     F           Q           INCK      ZL   GET "GET" POINTER
+         A     F1          I                     L    GET BUFFER ADDRESS 
-         B     F1    ZERO  F1    GATEI                GET ADDR., ZERO "GET"
+         A     I           A           GETCOM1  J
-                                 READ                 READ CHAIN ADDRESS 
          A     MEM         F1                         UPDATE "GET" 
          A     I           A                          ZERO THE CHAIN WORD
 GETCOM1  ZERO              F     WRITE                  *
          B           Q                 INCK      ZL   BCB PUT, TEST LAST 
+GETCOM2                                INCK      U    BCB LCD FCD
-         ZERO              F1          GETCOM2  J     ZERO PUT POINTER 
          A     F1          Q           GETMAP   J     LCD FCD TO Q 
****************************************************************************
*         VARIABLE EXIT FOR BUFGET                                         *
****************************************************************************
 GETEXIT                                K=GETRTRN      GET RETURN 
                                        RTNWHR   J     EXIT 
******************************************************************************
*         BUFFER HALT CODE ENTRIES                                           *
******************************************************************************
+RELDUP   B           BG    A           14        U    SET ERROR CODE 2 
-OUTBUF   B           BG    A           15             SET ERROR CODE 1 
+HALTBP   A     I           F1          K=BUFADR       SET FILE WITH ADDRESS
                                        MFBP     J     GO TO SAVE REGISTERS 
 DUPGET   A                             K=F10003       CHAIN ERROR ON GET 
          A     F1          A           HALTBP   J     SET ERROR CODE 3 
****************************************************************************
*         TEMPORARY BREAKPOINT ROUTINE                                     *
****************************************************************************
 MFBP     -B          CRTJ  F1          K=5EX          SAVE RTJ 
          A     A           F1          K=5FX 
          A     I           F1          K=60X 
          A     X           F1          K=61X 
          B           Q     F1          K=62X 
                                        PBHALT   J
******************************************************************************
*         TPICCX - CC1/CC2 + TP FILE REGISTER REPLACES CCX.                  *
*         TPDCCX - CC1/CC2 - TP FILE REGISTER REPLACES CCX AND TEST RESULT.  *
*                    IF THE RESULT IS LESS THAN 0,    EXIT P + 1             *
*                                     EQUAL TO 0 ,    EXIT P + 2             *
*                                     GREATER THAN 0, EXIT P + 3             *
*                                                                            *
******************************************************************************
* 
 TPCCFR   A.-B  I     F2    A     L8EA  N=4            GET FILE REGISTER
          AROE                          K=D0X            *
          A+B   A     K     Q                             * 
          B           Q                 TK/0           FILE REG. TO K 
          A     F1          Q           K=F10007       FILE REG. TO Q 
          A.B   I     BG                9         ZL   TEST CC1 OR CC2
+         ADD   X     F1    F           TPCC.2   J     CC2 ADDRESS
-         ADD   X     BG    F           15             CC1 ADDRESS
          A                       READ  N=F200FF       READ CC1 
          A.B   MEM   F2    A                          GET CC1
          A.B   I     BG                10        ZL  TEST INCR/DECR
+         ADD   A     Q     A                     U    INCR. IN A 
-         SUB   A     Q     A                          DECR. IN A 
+         A     F           F                          GET CC1 ADDRESS
          A     A           A           WRCH/1         WRITE CC1
******************************************************************************
*         TEST INCR/DECR AND IF DECR. TEST LT., EQ., OR GT. ZERO             *
******************************************************************************
 TPCC.1   A.B   I     BG                10        ZL   TEST INCR/DECR 
+         A     X           A           INI.     J     INCR. EXIT P + 1 
-         A     A                                 NU   DECR, TEST NEGITIVE
+         A     X           A           INI.     J     NEGITIVE, EXIT P + 1 
-         A     A                                 ZL   POSITIVE, TEST ZERO
+         A     X           A           RNI.3    J     NON ZERO, EXIT P + 3 
-         A     X           A           RNI.2    J     ZERO, EXIT P + 2 
******************************************************************************
*         CHARACTER COUNT 2 - TEST INCR OR DECR.                             *
******************************************************************************
 TPCC.2   A.B   I     BG          READ  10        ZL   TEST INCR./DECR
+         ADD   MEM   Q     A                     U    INCR. IN A 
-         SUB   MEM   Q     A                          DECR. IN A 
          A     F           F                          GET CC2 ADDRESS
          A     A           A     WRITE TPCC.1   J     STORE COUNT
          ORG   AF0X
******************************************************************************
*         JUMP TABLE FOR ODD DECODE OF ODD CONTROL STATE                     *
******************************************************************************
********** STATE 0 - NOT BUF, NOT EOS, NOT RIGHT CHARACTER *******************
+         A                             ODDLFT.0 J     GO PROCESS LEFT CHAR.
- 
********** STATE 1 - NOT BUF, NOT EOS, RIGHT CHARACTER ***********************
+ODDRIT.2       I           P           K=F18000       EOBL MASK
-         A.B   I     F2    A           ODDRIT.0 J     CHAR. TO A 
******** STATE 2 - NOT USED  *************************************************
+ODDN1                                  ODDN1    J     HALT THIS STATE NO USED
- 
********** STATE 3 - NOT BUF, EOS, RIGHT CHARACTER TO OUTPUT******************
+         A.B   I     F2    A           K=F12000       RIGHT CHAR. TO A 
-         A     F1          P           ODDRIS.0 J     P=   EOS, PROCESS LAST 
********** STATE 4 - BUF, NOT EOS, LEFT CHARACTER TO OUTPUT*******************
+         A                             ODDBUF   J   LEFT CHAR. BUFFERED CLA
-         A 
********** STATE 5 - BUF, NOT EOS, RIGHT CHARACTER TO OUTPUT *****************
+         A     I           P           K=F1C000       EOBL MASK
-         A.B   I     F2    A           ODDRIT.0 J     CHAR TO A
******** STATE 6 - NOT USED  *************************************************
+ODDN2                                  ODDN2    J     HALT THIS STATE NO USED
-         A 
******** STATE 7 - BUF, EOS, RIGHT CHARACTER TO OUTPUT ***********************
+         A.B   I     F2    A           K=F1F000       RITE CHAR. TO A
-         EOR   F1    BG    P           0              STATE 7 TO P 
                                        ODDRIS.0 J     GO OUTPUT RITE 
          ORG   FFFX
-STOP     HEX   FFFFFFFF
          END 
          FINIS 
