A large commit.
[pdp8.git] / sw / src / mandel_screen / PCHAR.RA
1 FIELD1 PCHAR
2 JA #ST / JUMP TO FPP ROUTINE'S START
3 TEXT +PCHAR +
4
5 EXTERN #RETRN / NEEDED FOR TRAP3 RETURN
6 EXTERN ONQI / FIDDLE SOMETHING INTO SKIP CHAIN
7 EXTERN #DISMS / DISMISS JUMP LIST
8 EXTERN #HANG / HANG ROUTINE
9
10 TOCHR=4 / LOCATION OF TTY STATUS WORD
11 / POSITIVE=CHARACTER IN QUEUE
12 / NEGATIVE=BUSY
13 / ZERO=IDLE
14
15 TCF=6042 / CLEAR TELEPRINTER FLAG
16 TSF=6041 / TEST TELEPRINTER FLAG
17
18 / **************************************************************
19 / PDP-8 CODE
20
21 PC8, CLA CLL
22
23 CDF 0
24 SWAIT, CLA CLL / WAIT FOR SYSTEM TO BE DONE WITH TTY
25 TAD% PTOCHR / TELEPRINTER STATUS
26 SZA
27 JMP SWAIT / KEEP ON WAITING
28 CDF 10 / BACK TO DATA FIELD 1
29
30 TAD FIRST / FIRST CALL?
31 SZA
32 JMP NOTFST
33
34 ISZ FIRST
35
36 JMS% PONQI+1 / REGISTER OUR ROUTINE TO SKIP CHAIN
37 TSF / SKIP TO BE USED
38 ADDR HANDLE / POINTER TO OUR HANDLER
39
40 TAD DISMIS+1 / SET UP TO CALL HANG
41 DCA HLOC
42
43
44 NOTFST, IOF / THIS SHOULD BE DONE WITHOUT INTERRUPT!
45
46 TAD CHAR / LOAD CHARACTER TO PRINT
47 TLS / AND PRINT IT
48
49 ISZ ACTIVE / ENABLE OUR INT HANDLER
50
51 CIF 0 / #HANG IS IN FIELD 0
52 JMS% HANG+1
53 HLOC, 0 / LOCATION WHERE #HANG COUPLES INTO
54
55 ION / INTERRUPT BACK ON
56
57 CIF CDF 0
58 JMP% RET+1 / GO HOME TO FPP LAND
59
60 /***************
61
62 HANDLE, 0 / OUR INTERRUPT HANDLER, CALLED FROM FIELD 1
63 CLA CLL
64 TAD ACTIVE
65 SNA / ACTIVE FLAG?
66 JMP% HANDLE / NOT ACTIVE, LEAVE INTERRUPT UNPROCESSED
67 CLA
68 DCA ACTIVE / NOW INACTIVE
69 TCF / CLEAR TTY FLAG
70 CIF CDF 0
71 JMP% DISMIS+1 / INT PROCESSED
72
73 /***************
74
75
76 RET, ADDR #RETRN
77 PONQI, ADDR ONQI / PUT SOMETHING ONTO SKIP CHAIN
78 HANG, ADDR #HANG
79 DISMIS, ADDR #DISMS
80
81 PTOCHR, TOCHR
82 FIRST, 0 / FLAG FOR INITAL SETUP
83 ACTIVE, 0 / FLAG TO INACTIVATE INT HANDLER
84 #CHAR, 0;0 / HERE GOES THE 3-WORD FROM FPP
85 CHAR, 0 / THAT'S WHAT WE PRINT
86
87
88
89 / **************************************************************
90 / FPP-12 CODE
91
92 BASE 0 / STAY ON THE CALLER'S BASE
93 #PCBAS, ORG .+3 / OUR BASE PAGE
94 #PTR, ORG .+3 / POINTER
95 #ARGP1, ORG .+3
96 #XR, ORG .+10 / INDEX REGISTERS
97
98 #ST, / START OF FPP ROUTINE
99 STARTD / 24 BIT DATA ONLY
100
101 0210 /FLDA 30 / GET RETURN JA
102 FSTA# #GOBAK / PUT TO RETURN LOCATION
103
104 0200 /FLDA 0 / JA AROUND ARGUMENTS
105
106 BASE #PCBAS
107 SETX #XR / USE OWN INDEX REGISTERS
108 SETB #PCBAS / OUR BASE
109
110 FSTA #PTR / TO POINTER
111
112 LDX 0,1 / 0 TO INDEX REG 1
113
114 FLDA% #PTR,1+ / LOAD FROM (#PTR)+INDEX1
115 FSTA #ARGP1 / FIRST ARGUMENT POINTER
116
117 STARTF / BACK TO FLOATING POINT MODE
118 FLDA% #ARGP1 / LOAD THE ACTUAL ARGUMENT TO FAC.
119 ALN 0 / MAKE INTEGER OF IT
120 FSTA CHAR / STORE INTO PDP-8 ROUTINE'S BUFFER
121
122 TRAP3 PC8 / FIRE UP PDP-8
123
124 STARTF / BACK TO 3-WORD MODE (STILL NEEDED?)
125 #GOBAK, 0;0 / RETURN JUMP (FILLED IN ABOVE)
126
127 END