adventure: Initial commit
[pdp8.git] / sw / adventure / GETIN.FT
CommitLineData
84b5715c
PH
1C WAS SUBROUTINE GETIN(WORD1,WORD1A,WORD1X,WORD2,WORD2A,WORD2X)\r
2C OS/8 version returns 4 chars in the first word of each command entity\r
3C\r
4C GET A COMMAND FROM THE ADVENTURER. SNARF OUT THE FIRST WORD, PAD IT WITH\r
5C BLANKS, AND RETURN IT IN WORD1 AND WORD1A. (for OS/8, WORD1)\r
6C CHARS 5 AND 6 ARE RETURNED IN WORD1X, IN\r
7C CASE WE NEED TO PRINT OUT THE WHOLE WORD IN AN ERROR MESSAGE. ANY NUMBER OF\r
8C BLANKS MAY FOLLOW THE WORD. IF A SECOND WORD APPEARS, IT IS RETURNED IN\r
9C WORD2 AND WORD2A (CHARS 5 AND 68 IN WORD2X), ELSE WORD2 IS SET TO ZERO.\r
10C (for OS/8, WORD2 and WORD2X).\r
11C\r
12C IMPLICIT INTEGER (A-Z)\r
13C LOGICAL*1 FRST(20),BLANK,LCA,LCZ,UCA\r
14C DATA BLANK/' '/,UCA/'A'/,LCA/'a'/,LCZ/'z'/\r
15\r
16 SUBROUTINE GETIN(WORD1,WORD1X,WORD2,WORD2X)\r
17 INTEGER INPUT(20),WORD1,WORD1X\r
18 INTEGER WORD2,WORD2X\r
19\r
2010 WRITE(4,1)\r
211 FORMAT(' > ',$)\r
22C READ(4,2)INPUT\r
23C2 FORMAT(20A1)\r
24 CALL RDLINE(INPUT, 20)\r
25 WORD1 = ' '\r
26 WORD1X = ' '\r
27 WORD2 = ' '\r
28 WORD2X = ' '\r
29\r
30 DO 15 I=1,20\r
31C Using INT here to normalize the input values\r
32 J = INT(INPUT(I))\r
3315 INPUT(I) = J\r
34 IX1=0\r
35 IX2=0\r
36 I=0\r
37C\r
38C Find first nonblank\r
39C\r
4020 I=I+1\r
41 IF(I.GT.20)GOTO 10\r
42 IF(INPUT(I).EQ.32)GOTO 20\r
43C\r
44C Move four characters to WORD1\r
45C\r
46 DO 30 IX1 = 1, 4\r
47 CALL CPUT(WORD1, IX1, INPUT(I))\r
48 I=I+1\r
49 IF(I.GT.20)GOTO 100\r
50C\r
51C If blank, go to word 2\r
52C\r
53 IF(INPUT(I) .EQ. 32) GOTO 50\r
5430 CONTINUE\r
55C\r
56C Move two characters to WORD1X\r
57C\r
58 DO 40 IX1 = 1, 20\r
59 IF (IX1 .GT. 2) GOTO 35\r
60 CALL CPUT(WORD1X, IX1, INPUT(I))\r
6135 I=I+1\r
62 IF(I.GT.20)GOTO 100\r
63 IF(INPUT(I).EQ.32)GOTO 50\r
6440 CONTINUE\r
65\r
66C\r
67C Find next nonblank\r
68C\r
6950 I = I + 1\r
70 IF(I.GT.20) GOTO 100\r
71 IF (INPUT(I).EQ. 32)GOTO 50\r
72\r
73C\r
74C Move four to WORD2\r
75C\r
76 DO 60 IX1 = 1,4\r
77 CALL CPUT(WORD2, IX1, INPUT(I))\r
78 I = I + 1\r
79 IF (I.GT.20) GOTO 100\r
80 IF (INPUT(I).EQ. 32) GOTO 100\r
8160 CONTINUE\r
82C\r
83C Move to to WORD2X\r
84C\r
85 DO 70 IX1 = 1,2\r
86 CALL CPUT(WORD2X, IX1, INPUT(I))\r
87 I = I + 1\r
88 IF (I.GT.20) GOTO 100\r
89 IF(INPUT(I).EQ.32) GOTO 100\r
9070 CONTINUE\r
91100 IF (WORD2 .NE. ' ') RETURN\r
92 WORD2 = 0\r
93 WORD2X = 0\r
94 RETURN\r
95 END\r