A large commit.
[pdp8.git] / sw / adventure / 0906 / PSPEAK.RA
... / ...
CommitLineData
1 SECT PSPEAK\r
2/ SUBROUTINE PSPEAK(MSG,SKIP)\r
3/ C\r
4/ C FIND THE SKIP+1ST MESSAGE FOR OBJECT MSG AND PRINT IT.\r
5/ C MSG SHOULD BE THE INDEX OF\r
6/ C THE OBJECT. (INVEN+N+1 MESSAGE IS PROP=N MESSAGE).\r
7/ C\r
8/ IMPLICIT INTEGER (A-Z)\r
9/ COMMON /TXTCOM/ RTEXT,LINES,ASCVAR\r
10/ COMMON /PTXCOM/ PTEXT\r
11/ DIMENSION RTEXT(205),LINES(36),PTEXT(100)\r
12\r
13 EXTERN IO\r
14 EXTERN SPEAK\r
15 JA #ST\r
16#XR, ORG .+10\r
17 TEXT +PSPEAK+\r
18#RET, SETX #XR\r
19 SETB #BASE\r
20 JA .+3\r
21#BASE, ORG .+6\r
22MSG, ORG .+3\r
23SKIP, ORG .+3\r
24ONE, F 1.0\r
25#DOTMP, ORG .+3\r
26OLDLOC, ORG .+3\r
27 ORG #BASE+30\r
28 FNOP\r
29 JA #RET\r
30 FNOP\r
31#GOBAK, 0;0\r
32I, ORG .+0003\r
33M, ORG .+0003\r
34 #LBL=.\r
35 COMMON PTXCOM\r
36PTEXT, ORG .+0454\r
37 COMMON TXTCOM\r
38RTEXT, ORG .+1147\r
39LINES, ORG .+0044\r
40ASCVAR, ORG .+0003\r
41TXTLOC, ORG .+0003\r
42DATA, ORG .+0352\r
43 ORG #LBL\r
44#RTN, BASE #BASE\r
45 JA #GOBAK\r
46#ST, STARTD\r
47 0210\r
48 FSTA #GOBAK,0\r
49 0200\r
50 SETX #XR\r
51 SETB #BASE\r
52 LDX 0,1\r
53 FSTA #BASE\r
54 FLDA% #BASE,1+\r
55 FSTA MSG\r
56 FLDA% #BASE,1+\r
57 FSTA SKIP\r
58 STARTF\r
59/ M=PTEXT(MSG)\r
60 FLDA% MSG\r
61 ATX 7\r
62 FLDA PTEXT-0003,7\r
63 FSTA M\r
64/ IF(SKIP.LT.0)GOTO 9\r
65 FLDA% SKIP\r
66 JLT #9\r
67/ OLDLOC=MSG\r
68 FLDA% MSG\r
69 FSTA OLDLOC\r
70/ DO 3 I=1,SKIP+1\r
71 FLDA ONE\r
72 FSTA I\r
73 FLDA% SKIP\r
74 FADD ONE\r
75 FSTA #DOTMP\r
76\r
77#G0001,\r
78/ 1 READ(2'M)LOC,LINES\r
79#1, JSR IO\r
80 JA .+0004\r
81 JA M\r
82/ M = ASCVAR\r
83 FLDA M\r
84 FADD ONE\r
85 FSTA M\r
86/ IF(LOC.EQ.OLDLOC) GO TO 1\r
87 FLDA TXTLOC\r
88 FSUB OLDLOC\r
89 JEQ #1\r
90/ OLDLOC=LOC\r
91 FLDA TXTLOC\r
92 FSTA OLDLOC\r
93/ 3 CONTINUE\r
94#3, FLDA I\r
95 FADD ONE\r
96 FSTA I\r
97 FSUB #DOTMP\r
98 JLE #G0001\r
99/ M=M-1\r
100 FLDA M\r
101 FSUB ONE\r
102 FSTA M\r
103/ CALL SPEAK(M)\r
104#9, JSR SPEAK\r
105/ RETURN\r
106/ END\r
107 JA #RTN\r
108 JA M\r
109 END\r