A large commit.
[pdp8.git] / sw / adventure / src / PSPEAK.RA
diff --git a/sw/adventure/src/PSPEAK.RA b/sw/adventure/src/PSPEAK.RA
new file mode 100644 (file)
index 0000000..e6fc0a6
--- /dev/null
@@ -0,0 +1,109 @@
+       SECT    PSPEAK\r
+/       SUBROUTINE PSPEAK(MSG,SKIP)\r
+/       C\r
+/       C FIND THE SKIP+1ST MESSAGE FOR OBJECT MSG AND PRINT IT.\r
+/       C MSG SHOULD BE THE INDEX OF\r
+/       C THE OBJECT. (INVEN+N+1 MESSAGE IS PROP=N MESSAGE).\r
+/       C\r
+/       IMPLICIT INTEGER (A-Z)\r
+/       COMMON /TXTCOM/ RTEXT,LINES,ASCVAR\r
+/       COMMON /PTXCOM/ PTEXT\r
+/       DIMENSION RTEXT(205),LINES(36),PTEXT(100)\r
+\r
+       EXTERN  IO\r
+       EXTERN  SPEAK\r
+       JA      #ST\r
+#XR,   ORG     .+10\r
+       TEXT    +PSPEAK+\r
+#RET,  SETX    #XR\r
+       SETB    #BASE\r
+       JA      .+3\r
+#BASE, ORG     .+6\r
+MSG,   ORG     .+3\r
+SKIP,  ORG     .+3\r
+ONE,   F 1.0\r
+#DOTMP,        ORG     .+3\r
+OLDLOC,        ORG .+3\r
+       ORG     #BASE+30\r
+       FNOP\r
+       JA      #RET\r
+       FNOP\r
+#GOBAK,        0;0\r
+I,     ORG     .+0003\r
+M,     ORG     .+0003\r
+       #LBL=.\r
+       COMMON  PTXCOM\r
+PTEXT, ORG     .+0454\r
+       COMMON  TXTCOM\r
+RTEXT, ORG     .+1147\r
+LINES, ORG     .+0044\r
+ASCVAR,        ORG     .+0003\r
+TXTLOC,        ORG     .+0003\r
+DATA,  ORG     .+0352\r
+       ORG     #LBL\r
+#RTN,  BASE    #BASE\r
+       JA      #GOBAK\r
+#ST,   STARTD\r
+       0210\r
+       FSTA    #GOBAK,0\r
+       0200\r
+       SETX    #XR\r
+       SETB    #BASE\r
+       LDX     0,1\r
+       FSTA    #BASE\r
+       FLDA%   #BASE,1+\r
+       FSTA    MSG\r
+       FLDA%   #BASE,1+\r
+       FSTA    SKIP\r
+       STARTF\r
+/       M=PTEXT(MSG)\r
+       FLDA%   MSG\r
+       ATX     7\r
+       FLDA    PTEXT-0003,7\r
+       FSTA    M\r
+/       IF(SKIP.LT.0)GOTO 9\r
+       FLDA%   SKIP\r
+       JLT     #9\r
+/       OLDLOC=MSG\r
+       FLDA%   MSG\r
+       FSTA    OLDLOC\r
+/       DO 3 I=1,SKIP+1\r
+       FLDA    ONE\r
+       FSTA    I\r
+       FLDA%   SKIP\r
+       FADD    ONE\r
+       FSTA    #DOTMP\r
+\r
+#G0001,\r
+/       1      READ(2'M)LOC,LINES\r
+#1,    JSR     IO\r
+       JA      .+0004\r
+       JA      M\r
+/       M = ASCVAR\r
+       FLDA    M\r
+       FADD    ONE\r
+       FSTA    M\r
+/       IF(LOC.EQ.OLDLOC) GO TO 1\r
+       FLDA    TXTLOC\r
+       FSUB    OLDLOC\r
+       JEQ     #1\r
+/       OLDLOC=LOC\r
+       FLDA    TXTLOC\r
+       FSTA    OLDLOC\r
+/       3      CONTINUE\r
+#3,    FLDA    I\r
+       FADD    ONE\r
+       FSTA    I\r
+       FSUB    #DOTMP\r
+       JLE     #G0001\r
+/       M=M-1\r
+       FLDA    M\r
+       FSUB    ONE\r
+       FSTA    M\r
+/       CALL SPEAK(M)\r
+#9,    JSR     SPEAK\r
+/       RETURN\r
+/       END\r
+       JA      #RTN\r
+       JA      M\r
+       END\r