A large commit.
[pdp8.git] / sw / os8 / v3d / sources / fortran / dectapes / dectape2 / chars.ra
diff --git a/sw/os8/v3d/sources/fortran/dectapes/dectape2/chars.ra b/sw/os8/v3d/sources/fortran/dectapes/dectape2/chars.ra
new file mode 100644 (file)
index 0000000..58ae83d
--- /dev/null
@@ -0,0 +1,176 @@
+/
+/ VERSION 5A 4-27-77  PT
+/
+       SECT    CHARS
+       ENTRY   CGET
+       ENTRY   CPUT
+       TEXT    +CHARS+
+CHARXR,        SETX    XRCHAR
+       SETB    BPCHAR
+BPCHAR,        F 0.
+XRCHAR,        F 0.
+FROM,  F 0.
+NCHAR, F 0.
+       ORG     10*3+BPCHAR
+       FNOP
+       JA      CHARXR
+       0
+CHARTN,        JA      .
+       BASE    0
+START, JA      .
+       STARTD
+       FLDA    10*3
+       FSTA    CHARTN
+       FLDA    0
+       SETX    XRCHAR
+       SETB    BPCHAR
+       BASE    BPCHAR
+       LDX     1,1
+       FSTA    BPCHAR  /STR SAVED IN BPCHAR
+       FLDA%   BPCHAR,1
+       FSTA    STR
+       FLDA%   BPCHAR,1+
+       FSTA    NCHAR
+       FLDA%   BPCHAR,1+
+       FSTA    FROM    /ADDR OF F
+       STARTF
+       FLDA%   NCHAR
+       ATX     0
+       JA      START
+/
+CGET,  JSA     START
+       TRAP4   CGETIT
+       XTA     0
+       FSTA%   FROM    /TO 3 WORDS
+       JA      CHARTN
+/
+CPUT,  JSA     START
+       FLDA%   FROM
+       ATX     1
+       FCLA
+       TRAP4   CPUTIT
+       JA      CHARTN
+/
+       SECT8   CHAR            /ALL IN 1 PAGE
+CGETIT,        0
+       JMS     FLDRTN
+       TAD     O2FLD
+       DCA     ORGFLD
+       TAD     XFLD
+       DCA     XR2FLD
+       TAD     PFLD
+       DCA     GFLD
+GFLD,  0               /STR FIELD
+       TAD%    STR-1
+ORGFLD,        0                       /THIS ROUTINE
+       DCA     LOC
+       TAD     XR              /N
+       RAR
+       SNL     CLA
+       JMP     RIGHT
+       CLL
+       TAD     LOC
+       RTR
+       RTR
+       RTR
+BOTH,  AND     P77
+XR2FLD,        0
+       DCA%    QXR+1           /PASS TO FPP
+       CDF CIF 0
+       JMP%    CGETIT
+RIGHT, TAD     LOC
+       JMP     BOTH
+CADD,  ADDR    CGETIT
+       0
+STR,   0
+       0
+/
+CPUTIT,        0
+       JMS     FLDRTN
+       TAD     QXR1
+       AND     P7
+       RTL
+       RAL
+       TAD     CDFINS
+       DCA     XR1FLD
+       TAD     O2FLD
+       DCA     O1FLD
+       TAD     O2FLD
+       DCA     O3FLD
+       TAD     PFLD
+       DCA     P1FLD
+XR1FLD,        0
+       TAD%    QXR1+1  /F VALUE
+O1FLD, 0
+       AND     P77
+       DCA     LOC
+P1FLD, 0
+       TAD%    STR-1
+O3FLD, 0
+       DCA     XR1FLD          /USE AS A TMP
+       TAD     XR
+       RAR
+       SNL CLA
+       JMP PRIGHT
+       CLL
+       TAD     XR1FLD
+       AND     P77             /SAVE RIGHT HALF
+       DCA     XR1FLD
+       TAD     LOC
+       RTL
+       RTL
+       RTL
+       TAD     XR1FLD
+PFLD,  0
+       DCA%    STR-1
+       CIF CDF 0
+       JMP%    CPUTIT
+PRIGHT,        TAD     XR1FLD
+       AND     P7700
+       TAD     LOC
+       JMP     PFLD
+/
+FLDRTN,        0
+       TAD     CADD
+       AND     P7
+       RTL 
+       RAL
+       TAD     CDFINS
+       DCA     O2FLD
+       TAD     QXR
+       AND     P7
+       RAL
+       RTL
+       TAD     CDFINS
+       DCA     XFLD
+XFLD,  0
+       TAD%    QXR+1   
+O2FLD, 0
+       DCA     XR
+       TAD     XR
+       RAR
+       SNL
+       TAD     M1
+       CLL
+       TAD     STR+1
+       DCA     STR-1
+       SZL     CLA
+       IAC
+       CLL
+       TAD     STR
+       AND     P7
+       RAL
+       RTL
+       TAD     CDFINS
+       DCA     PFLD            /STR FLD
+       JMP%    FLDRTN
+P77,   77
+CDFINS,        6203
+P7,    7
+QXR,   ADDR    XRCHAR
+LOC,   0
+XR,    0
+M1,    -1
+QXR1,  ADDR    XRCHAR+1
+P7700, 7700
+\f