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