A large commit.
[pdp8.git] / sw / src / life / type.pa
CommitLineData
81e70d48
PH
1/********************************************************************
2/********************************************************************
3/ ASYNCHRONOUS DISPLAY OUTPUT SUPPORT
4
5/ THE DISPLAY OPERATES IN AN INTERRUPT DRIVEN MANNER IN ITS OWN
6/ THREAD. IF THERE IS NO DISPLAY OPERATION PENDING, IT FALLS
7/ ASLEEP.
8
9DINIT, 0 / CALLED BY MAIN THREAD
10 TCF / CLEAR TELEPRINTER FLAG
11 DCA DTMP / SAVE AC FOR A LITTLE MOMENT
12 TAD PDPROC / GET POINTER TO DISPLAY PROCESS ENTRY
13 DCA TTOUT / GENERATE RETURN ADDRESS
14 DCA TTAC
15 DCA TTL
16 DCA DFLAGS / CLEAR DISPLAY COMMAND FLAGS
17 TAD DTMP / RESTORE CALLER'S AC
18 JMP I DINIT / RETURN TO CALLING THREAD
19
20DSUB, 0 / SUBMIT A FLAG TO SET
21 CMA
22 DCA TMP / SAVE INVERSE OF FLAG
23 CLL / CLEAR LINK
24 TAD DFLAGS
25 SNA
26 CML / LINK INDICATES RESTART NOW
27 CMA
28 AND TMP
29 CMA
30 DCA DFLAGS / NEW DFLAGS HAVE BEEN INSTALLED.
31 SZL / SKIP IF NO LINK
32 SPF / SET TTO FLAG -> DISPLAY RESUME
33 ION
34 JMP I DSUB
35
36/*************************************************
37DPROC, / ENTRY POINT TO THE DISPLAY PROCESS.
38 /....
39
40 / TEST, SLEEP, RESTART
41 CLA CLL
42 TAD DFLAGS
43 SZA
44 JMP DPROC / WORK TO DO
45 TFC / CLEAR FLAG, NO WORK TO DO.
46 JMS TTOUT / DUMMY TYPING WITHOUT TLS
47 JMP DPROC / AND JUMP BACK TO START OF THREAD
48
49
50
51
52PDPROC, DPROC / POINTER TO DISPLAY PROCESS
53TTAC, 0
54TTL, 0
55DTMP, 0
56
57/********************************************************************
58/ TELETYPE OUTPUT HANDLER AND MANAGEMENT
59
60
61TTOUT, 0 / SEND CHARACTER - CALLED FROM DISPLAY THREAD!
62 TSF / IF NO FLAG - GO SLEEPING ONLY
63 SKP
64 TLS / GET IT OUT!
65 DCA TTAC / SAVE AC, JUST POLITE
66 RAR
67 DCA TTL / SAVE LINK, STILL POLITE
68 JMP IEND / END OF INTERRUPT HANDLING
69TTOHAN, TAD TTL
70 RAL
71 TAD TTAC
72 JMP I TTOUT / RESUME DISPLAY THREAD