*COMDECK COM2 
*CALL COM1
 COM2     CTEXT  COMMON DECK COM-2
          LIST   -R 
**    COM-2  -  SECONDARY COMMON DECK FOR THE 8-BIT PACKAGE 
* 
*     THIS DECK IS DIRECTLY CALLED INTO THOSE ROUTINES IN THE PACKAGE 
*     WHICH ARE CONCERNED WITH I-O OR CONVERSION TO/FROM EXTERNAL FORMS.
*     THIS DECK CALLS COM1. 
* 
*     LISTING OF COM2 IS CONTROLLED BY THE X(CTEXT) LIST OPTION.
 CONSTANT SPACE  4
****  SYMBOLIC CONSTANTS USED BY THE I-O ROUTINES 
* 
*                                                                       001830
          SPACE  2                                                      001840
*                                                                       001850
* ASSEMBLY CONTROLS                                                     001860
*                                                                       001870
 T8.COM2  =      0           DEFINE SYMBOL FOR USE BY END/RMT CODE
 L.STRING =      8           NUMBER OF WORDS IN THE STRING HOLDING AREA 001880
 L.STACK  =      7           MAXIMUM STACK DEPTH (ENTRIES)              001890
 CODE     MICRO  1,,/C/      DEFAULT CODE FOR TAPE (A=ASCII, C=EBCDIC)
 COLON    EQU    63B         COLON IN 63-CHARACTER SET
          SPACE  2
* 
* WORKING STORAGE FLAG LOCATIONS (USER WSA) 
* 
 W.FIT    =      0           WORD CONTAING FIT ADDRESS AND POINTERS 
 S.TST    =      18           TEST TABLE POINTER OFFSET 
 S.CON    =      36           CONVERSION TABLE POINTER OFFSET 
 W.BUFR   =      1           WORD CONTAINING BUFFER POINTERS
 W.FTYP   =      1           WORD CONTAINING FILE TYPE FLAG 
 W.XSET   =      1           WORD CONTAINING CHAR SET OR FORMAT CODE
 S.BLKAD  =      0            BLOCK BUFFER ADDRESS OFFSET 
 S.RECAD  =      18           RECORD BUFFER ADDRESS OFFSET
 S.FTYP   =      36           FILE TYPE CODE OFFSET 
 S.XSET   =      54           CHAR SET OR FORMAT CODE OFFSET
 W.STATUS =      2           WORD CONTAINING LAST STATUS RETURN 
 W.PREV   =      3           WORD CONTAINING PREVIOUS RECORD POINTER
 W.TPAR   =      4           WORD CONTAINING TAPE FILE PARAMETERS 
 S.LRECL  =      18           LRECL VALUE OFFSET
 S.BLKSZ  =      36           BLKSIZE VALUE OFFSET
 W.RESBLK =      5           WORD CONTAINING RESIDUAL BLOCK POINTER 
          SPACE  2
* 
* RECORD PARAMETERS 
* 
 L.CARD   =      80*2        NUMBRER OF 6-BIT BYTES IN A CARD (MAX) 
 L.PRINT  =      137*2       NUMBER OF 6-BIT BYTES IN A PRINT LINE (MAX)
* 
 LW.CARD  =      16          NUMBER OF WORDS FOR A CARD BUFFER
 LW.PRINT =      28          NUMBER OF WORDS FOR A PRINT BUFFER 
          SPACE  2
*                                                                       001930
* VALUES NEEDED BY JUMP TABLE HANDLERS                                  001940
*                                                                       001950
 S.STRING =      1R1         BIT POSITION FOR STRING LITERAL            001960
 S.NUM    =      1R0         BIT POSITION FOR NUMERIC LITERAL           001970
****
 ENTRY2   SPACE  4
****  ADDITIONAL ENTRY POINT NAMES KNOWN TO COM2 USERS
* 
          RMT                                                           003370
 XFILE    E      XFILE                                                  003380
 XREAD    E      XREAD                                                  003390
 XREREAD  E      XREREAD                                                003400
 XWRITE   E      XWRITE                                                 003410
 T8.TST6  E      TEST6
 T8.TSTC  E      TESTC
 T8.TSTT  E      TESTT
 T8.CN6T  E      CON6T
 T8.CN6C  E      CON6C
 T8.CN6P  E      CON6P
 T8.CNC6  E      CONC6
 T8.CNT6  E      CONT6
 T8.CHKP  E      CHKPAR 
 T8.CAMB  E      CNA..MB
 T8.CAMV  E      CNA..MV
 T8.COMB  E      COMBIT 
 T8.CAB   E      CONA.B.
 T8.CABL  E      CONA.BL
 T8.CAXA  E      CONA..A
 T8.CAXB  E      CONA..B
 T8.CAXC  E      CONA..C
 T8.CAXQ  E      CONA..Q
 T8.CAXX  E      CONA..X
 T8.CAR   E      CONA.R 
 T8.CARN  E      CONA.RN
 T8.CAX   E      CONA.X 
 T8.CCB   E      CONC.B.
 T8.CCX   E      CONC.X.
 T8.CTB   E      CONT.B.
 T8.CTE   E      CONT.E.
 T8.CTF   E      CONT.F.
 T8.CTG   E      CONT.G.
 T8.CTH   E      CONT.H.
 T8.CTL   E      CONT.L.
 T8.CTP   E      CONT.P.
 T8.CTS   E      CONT.S.
 T8.CTW   E      CONT.W.
 T8.CTX   E      CONT.X.
 T8.C6A   E      CON6.A.
 T8.C6B   E      CON6.B.
 T8.C6C   E      CON6.C.
 T8.C6D   E      CON6.D.
 T8.C6E   E      CON6.E.
 T8.C6I   E      CON6.I.
 T8.C6N   E      CON6.N.
 T8.C6S   E      CON6.S.
 T8.C6U   E      CON6.U.
 T8.C6X   E      CON6.X.
 T8.C6Z   E      CON6.Z.
 T8.C6XA  E      CON6..A
 T8.C6XB  E      CON6..B
 T8.C6XC  E      CON6..C
 T8.C6XD  E      CON6..D
 T8.C6XE  E      CON6..E
 T8.C6XI  E      CON6..I
 T8.C6XN  E      CON6..N
 T8.C6XS  E      CON6..S
 T8.C6XU  E      CON6..U
 T8.C6XX  E      CON6..X
 T8.C6XZ  E      CON6..Z
 T8.ECON  E      ECON 
 T8.GDB   E      GDB
 T8.GDC   E      GDC
 T8.GDD   E      GDD
 T8.GDE   E      GDE
 T8.GDG   E      GDG
 T8.GDH   E      GDH
 T8.GDL   E      GDL
 T8.GDW   E      GDW
 T8.GD6   E      GD6
 T8.GD8   E      GD8
 T8.GINT  E      GETINT 
 T8.GNUM  E      GETNUM 
 T8.GZSN  E      GETZSN.N 
 T8.GZSS  E      GETZSN.S 
 T8.GZSZ  E      GETZSN.Z 
 T8.GSB   E      GSB
 T8.GSBX  E      GSBX 
 T8.GSC   E      GSC
 T8.GSCX  E      GSCX 
 T8.GSD   E      GSD
 T8.GSE   E      GSE
 T8.GSG   E      GSG
 T8.GSH   E      GSH
 T8.GSL   E      GSL
 T8.GSW   E      GSW
 T8.GS6   E      GS6
 T8.GS6X  E      GS6X 
 T8.GS8   E      GS8
 T8.GS8X  E      GS8X 
 T8.MVBT  E      MVBITS 
 T8.NCHR  E      NCHAR
 T8.NNUM  E      NEXTNUM
 T8.NNMA  E      NEXTNUMA 
 T8.NNMC  E      NEXTNUMC 
 T8.NXTX  E      NEXTN.X
 T8.NNBL  E      NNBL 
 T8.NXNA  E      NXTNMA 
 T8.NXNC  E      NXTNMC 
 T8.NXMA  E      NXTNUMA
 T8.NXMC  E      NXTNUMC
 T8.NXTJ  E      NXTN.J 
 T8.PARS  E      PARSE
 T8.PCHR  E      PCHAR
 T8.STBT  E      STBITS 
 T8.TRNS  E      TRANSPC
 T8.TSB1  E      TST.B1 
 T8.TSB2  E      TST.B2 
 T8.TSBB  E      TST.BB 
 T8.TSCM  E      TST.COM
 T8.TSCS  E      TST.CS 
 T8.TSEQ  E      TST.EQS
 T8.TSNQ  E      TST.NES
 T8.TSSS  E      TST.SS 
 T8.TST0  E      TST..0 
 T8.TST1  E      TST..1 
 T8.TSTS  E      TST..$ 
 T8.TXTS  E      TXTEST 
 T8.T3A1  E      T3=ADD1
 T8.T3M1  E      T3=MUL1
 T8.T3M3  E      T3=MUL3
* 
 T8.NZRO  E      TEN.ZRO
 T8.NLG2  E      TEN.LG2
 T8.NHLF  E      TEN.HLF
 T8.NMHF  E      TEN.MHF
 T8.NONE  E      TEN.ONE
 T8.NBIG  E      TEN.BIG
 T8.NM1   E      TEN.M1 
 T8.NLIL  E      TEN.LIL
 T8.STRI  E      T.STRING 
 T8.NUM   E      T.NUM
 T8.NUM1  E      T.NUM1 
 T8.STCK  E      T.STACK
 T8.CHR   E      T.CHR
 T8.COND  E      T.COND 
 T8.COUN  E      T.COUNT
 T8.CSTR  E      T.CSTR 
 T8.ESG   E      T.ESG
 T8.EXP   E      T.EXP
 T8.IFLG  E      T.IFLAG
 T8.INRC  E      T.INREC
 T8.I1    E      T.I1 
 T8.I2    E      T.I2 
 T8.MPTR  E      T.MPTR 
 T8.MSG   E      T.MSG
 T8.M1    E      T.M1 
 T8.M2    E      T.M2 
 T8.NBL   E      T.NBL
 T8.NSIG  E      T.NSIG 
 T8.OTRC  E      T.OUTREC 
 T8.P     E      T.P
 T8.PER   E      T.PER
 T8.PSB6  E      T.PSAVB6 
 T8.RECO  E      T.RECORD 
 T8.REL1  E      T.REL1 
 T8.REL2  E      T.REL2 
 T8.SVB5  E      T.SAVEB5 
 T8.SVB6  E      T.SAVEB6 
 T8.SVCT  E      T.SAVECT 
 T8.SVX1  E      T.SAVEX1 
 T8.SPTR  E      T.SPTR 
 T8.STAW  E      T.STATW
 T8.STKP  E      T.STKPTR 
 T8.TEMP  E      T.TEMP 
 T8.TMP1  E      T.TEMP1
 T8.TMP2  E      T.TEMP2
 T8.TMP3  E      T.TEMP3
 T8.T1    E      T.T1 
 T8.T2    E      T.T2 
 T8.USRC  E      T.USEREC 
 T8.W1    E      T.W1 
 T8.W2    E      T.W2 
****
 E        HERE
          RMT                                                           003510
          SPACE  4
**    MACROS USED BY TEST AND CONVERT DRIVERS 
 J        SPACE  2,10 
** J  - MACRO TO SET UP JUMP VECTORS FOR TEST AND CONVERSION ACTIONS
*                                                                       002280
*         J      *      (FIRST TIME)                                    002290
*         J      LOC    (SUBSEQUENT)                                    002300
*                                                                       002310
*         *      = SET JUMP BASE TO *-1 (THE BIT VECTOR LOCATION)       002320
*         LOC    = SET A 15 BIT FIELD TO LOC - (JUMP BASE)              002330
*                                                                       002340
*         THE JUMP BASE IS A SYMBOL NAMED $JBASE$                       002350
* **                                                                    002370
 J        MACRO  LOC                                                    002380
 .1       IFC    EQ,/*/LOC/                                             002390
 +        VFD    15/0                                                   002400
 .JBASE$  SET    *-1
 .1       ELSE                                                          002420
          VFD    15/LOC-.JBASE$                                         002430
 .1       ENDIF                                                         002440
          ENDM                                                          002450
 LETMASK  SPACE  2,19 
** LETMASK  -  MACRO TO GENERATE BIT MASKS FOR CHARACTER STRING TESTING 
*                                                                       002490
*         LETMASK  LR,(LETS),(BITS),OFF                                 002500
*                                                                       002510
*         *LR*   = DIRECTION OF INTENDED SHIFT (L OR R)                 002520
*                                                                       002530
*         *LETS* = A CHARACTER STRING, (ABC...N) WHICH DETERMINES       002540
*                 WHICH BITS ARE TO BE SET. IF LR=R, THE BITS ARE       002550
*                 SET SO THAT A RIGHT SHIFT OF *X*-OFF BITS WILL        002560
*                 PLACE A 1 BIT IN BIT 0 IF *X* IS ONE OF THE           002570
*                 CHARACTERS IN THE STRING. IF LR=L, THE BITS ARE       002580
*                 SET TO PLACE A 1 BIT IN BIT 59 AFTER THE SHIFT-       002590
*                                                                       002600
*         *BITS* = A LIST OF VALUES. EACH VALUE WILL BE USED TO         002610
*                 SET A BIT. THIS IS LIKE *LETS* EXCEPT THAT THE        002620
*                 GIVEN VALUE IS USED, RATHER THAN *1R_VALUE_*.         002630
*                                                                       002640
*         *OFF*  = AN OFFSET TO BE APPLIED WHEN SETTING BITS.           002650
* **                                                                    002670
 LETMASK  MACRO  LR,LETS,BITS,OFF                                       002680
          LOCAL  A,B,C,D,E,F,G,H,I                                      002690
 A        SET    0                                                      002700
 B        MICRO  1,,^_LETS_^                                            002710
 C        OCTMIC ,10D                                                   002720
 D        OCTMIC ,10D                                                   002730
 F        SET    OFF 0                                                  002740
 G        MICCNT B                                                      002750
 H        MICRO  1,,/-F+/                                               002760
 .1       IFC    NE,/LR/R/                                              002770
 H        MICRO  1,,/59D+F-/                                            002780
 .1       IFC    NE,/LR/L/                                              002790
          ERR    L_R SPECIFICATION MISSING OR INCORRECT                 002800
 .1       ENDIF                                                         002810
 .1       DUP    G                                                      002820
 A        SET    A+1                                                    002830
 B        MICRO  A,1,^_LETS_^                                           002840
          LETMSK. C,D,E,I,("H"1R"B")                                    002850
 .1       ENDD                                                          002860
          IRP    BITS                                                   002870
          LETMSK. C,D,E,I,("H"BITS)                                     002880
          IRP                                                           002890
          DATA   "D""C"O                                                002900
 LETMASK  ENDM                                                          002910
          SPACE  2
**    LETMSK.  - AUXILIARY MACRO FOR LETMASK
* 
 LETMSK.  MACRO  C,D,E,I,V                                              002930
 I        SET    V                                                      002940
          IFLT   I,60,1                                                 002950
          IFLT   I,0,2                                                  002960
 E        DECMIC I,3                                                    002970
          ERR    BIT OUT OF WORD AT "E"                                 002980
 .2       IFLE   I,29D                                                  002990
 E        DECMIC I,2                                                    003000
 C        OCTMIC 1S"E"+"C"B,10D                                         003010
 .2       ELSE                                                          003020
 E        DECMIC I-30D,2                                                003030
 D        OCTMIC 1S"E"+"D"B,10D                                         003040
.2        ENDIF                                                         003050
 LETMSK.  ENDM                                                          003060
* 
          TITLE 
          LIST   R
          ENDX
