1 * PRINT CHAR - BUFFERED VERSION
21 ABS INTERRUPT HANDLER IN ABSOLUTE MODE
22 ORG '63 STANDARD INTERRUPT VECTOR
23 DAC INTH INTERRUPT HANDLER ADDRESS
25 REL PROGRAM IS RELOCATABLE
28 INTH STA SAVA SAVE A REGISTER
33 STX SAVX SAVE X REGISTER
36 SZE SKIP IF NOTHING IN BUFFER
40 LDA SAVK EXIT FROM INTERRUPT WITHOUT RESTORING
43 JMP* INTH RETURN FROM INTERRUPT, NOT ENABLED ANY MORE.
45 LGR 1 SHIFT TO WORD ADDRESS
48 SLN SKIP IF LAST BIT IN A SET
49 JMP RUPP FETCH UPPER CHARACTER
50 LDA BUFF,1 FETCH LOWER CHARACTER
52 RUPP LDA BUFF,1 READ FROM BUFFER
54 LDED OTA 4 OUTPUT TO ASR
55 JMP *-1 SHOULD NOT HAPPEN!
71 ENB RE-ENABLE INTERRUPTS
72 JMP* INTH RETURN TO ELSEWHERE
74 **********************************************************************
75 **********************************************************************
86 LDA* PC FIRST ARGUMENT ADDRESS
87 STA PTR STORE TO POINTER
88 IRS PC TALLY RETURN ADDRESS
92 JMP NINI NO INITIALISATION
93 SKS '104 TEST IF ASR BUSY
96 NINI ENB ENABLE INTERRUPT
99 HLT THAT SHOULD NEVER HAPPEN!
100 JMP NINI LOOP UNTIL ROOM IN BUFFER
101 INH DISABLE INTERRUPT
102 LDA WPOS WRITE BYTE POSITION
103 LGR 1 SHIFT RIGHT, NOW WORD OFFSET
104 STA 0 TO INDEX REGISTER
107 SLZ SKIP IF LAST BIT 0
108 JMP WLOW WRITE TO LOWER CHAR
110 LRR 8 SHIFT LOWER BITS TO B UPPER
121 IRS FILL ONE MORE IN BUFFER
123 LDA WPOS LOAD WRITE POSITION
125 ANA BMSK TALLY ROLLOVER
128 LDA ='60 INTERRUPT MASK FOR ASR33
129 SMK '20 SET INTERRUPT MASK
131 LDA SB RESTORE REGISTERS
138 EXF ENB ENABLE INTERRUPT
139 JMP* PC RETURN TO MAIN PROGRAM
141 ************************************************************
142 ************************************************************
152 FILL DAC ** AMOUNT OF BUFFERED DATA
153 PTR DAC ** UNIVERSAL POINTER
155 SAVK DAC ** SAVED KEYS IN INTERRUPT-ROUTINE
156 SAVA DAC ** SAVED A-REG IN INTERRUPT-ROUTINE
157 SAVX DAC ** SAVED X-REG IN INTERRUPT-ROUTINE
158 SB DAC ** SAVED B-REG IN MAIN ROUTINE
159 SX DAC ** SAVED X-REG IN MAIN ROUTINE
160 SA DAC ** SAVED A-REG IN MAIN ROUTINE
161 SK DAC ** SAVED KEYS IN MAIN ROUTINE
162 RPOS DAC ** READ POSITION
163 WPOS DAC ** WRITE POSITION