A large commit.
[pdp8.git] / sw / rescue / lab8e_goettingen / disk2_11 / rka / paroff / charin.ft
1 SUBROUTINE CHARIN (CHAR)
2 C
3 C INSERT A CHARACTER INTO THE SCREEN COMMON AT THE NEXT POSITION
4 C
5 INTEGER CHAR
6 INCLUDE YSCREE.FI
7 INTEGER NCOND
8 EXTERNAL NCOND
9 INTEGER POSIT (4) @ SEQUENCE FOR CURSOR CONTROL
10 DATA POSIT /27,61,2*0/
11 C
12 IF (CHAR.LT.32) GOTO 50 @ CONTROL CHARACTER
13 C
14 GOTO (11,12,13,14,15,16), MOD(YCOLMN,6)+1
15 11 CALL IFLD(0,6,YSCREE(YLINE,YCOLMN/6+1),CHAR)
16 GOTO 20
17 12 CALL IFLD(6,6,YSCREE(YLINE,YCOLMN/6+1),CHAR)
18 GOTO 20
19 13 CALL IFLD(12,6,YSCREE(YLINE,YCOLMN/6+1),CHAR)
20 GOTO 20
21 14 CALL IFLD(18,6,YSCREE(YLINE,YCOLMN/6+1),CHAR)
22 GOTO 20
23 15 CALL IFLD(24,6,YSCREE(YLINE,YCOLMN/6+1),CHAR)
24 GOTO 20
25 16 CALL IFLD(30,6,YSCREE(YLINE,YCOLMN/6+1),CHAR)
26 C
27 20 CONTINUE
28 CALL PUTTY (1,CHAR)
29 YCOLMN=MOD(YCOLMN+1,80)
30 CXCX YCOLMN=NCOND(YCOLMN.LE.1,80,YCOLMN-1) @ *
31 YCOLMN=MAX0(YCOLMN,1)
32 IF (YCOLMN.GT.1) RETURN
33 CXCX IF (YCOLMN.NE.80) GOTO 40 @ *
34 YLINE=MOD(YLINE+1,24)
35 CXCX YLINE=NCOND(YLINE.GT.1,YLINE-1,24) @ *
36 YLINE=MAX0(YLINE,1)
37 CXCX GOTO 40 @ *
38 IF (YLINE.GT.1) GOTO 40 @ REPOSITION THE CURSOR
39 CALL PUTTY (1,30) @ RESET CURSOR TO HOME POSITION
40 RETURN
41 50 CONTINUE
42 GOTO (100,101,102,103,104,105,106,107,110,111,112,113,114,
43 * 115,116,117,120,121,122,123,124,125,126,127,130,131,132,133,
44 * 134,135,136,137),CHAR+1
45 C
46 100 RETURN
47 101 RETURN
48 102 RETURN
49 103 RETURN
50 104 RETURN
51 105 RETURN
52 106 RETURN
53 107 GOTO 30 @ BEL
54 110 YCOLMN=NCOND(YCOLMN-1,YCOLMN-1,80) @ BS
55 IF (YCOLMN.EQ.80) YLINE=NCOND(YLINE-1,YLINE-1,24)
56 GOTO 40
57 111 RETURN
58 112 YLINE=MOD(YLINE+1,24) @ LF
59 YLINE=NCOND(YLINE,YLINE,1)
60 GOTO 40
61 113 YLINE=NCOND(YLINE-1,YLINE-1,24) @ VT
62 GOTO 40
63 114 YCOLMN=MOD(YCOLMN+1,80) @ FF
64 YCOLMN=NCOND(YCOLMN,YCOLMN,1)
65 IF (YCOLMN.EQ.1) YLINE=MOD(YLINE+1,24)
66 YCOLMN=NCOND(YCOLMN,YCOLMN,1)
67 GOTO 40
68 115 YCOLMN=1 @ CR
69 YLINE=MOD(YLINE+1,24) @ CR-LF ECHO
70 YLINE=NCOND(YLINE,YLINE,1)
71 GOTO 40
72 116 RETURN
73 117 RETURN
74 120 RETURN
75 121 RETURN
76 122 RETURN
77 123 RETURN
78 124 RETURN
79 125 RETURN
80 126 RETURN
81 127 RETURN
82 130 RETURN
83 131 RETURN
84 132 CALL PUTTY (1,15) @ SI LOCK KEYBOARD
85 CALL MOVE (-336,1H ,YSCREE)
86 YCOLMN=1 @ SUB
87 YLINE=1
88 CALL PUTTY (1,14) @ SO UNLOCK KEYBOARD
89 GOTO 30
90 133 RETURN
91 134 RETURN
92 135 RETURN
93 136 YCOLMN=1
94 YLINE=1
95 GOTO 30
96 137 RETURN
97 30 CALL PUTTY (1,CHAR)
98 RETURN
99 C
100 C
101 40 POSIT(3)=YLINE+31
102 POSIT(4)=YCOLMN+31
103 CALL PUTTY (4,POSIT)
104 RETURN
105 END
106 \1a