--- /dev/null
+ 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