10 oldvec = &0070
20 byte = &0072
30 shift = &0073
40 delayl = &0074
50 delayh = &0075
60 ptr1 = &0076
70 ptr2 = &0077
80 status = &0078
90
100 hours = &0080
110 minutes= &0081
120 seconds= &0082
130 fifty = &0083
140 oldeve = &0084
150 memptr = &0086
160
170 irqv2 = &0204
180 eventv = &0220
190
200 buffer = &0900
210
220 orirb = &FE60
230 ddrb = &FE62
240 t2lo = &FE68
250 t2hi = &FE69
260 acr = &FE6B
270 pcr = &FE6C
280 ifr = &FE6D
290 ier = &FE6E
300
310 osnewl = &FFE7
320 osrdch = &FFE0
330 osasci = &FFE3
340 oswrch = &FFEE
350 osbyte = &FFF4
360
370 FOR I=0 TO 2 STEP 2
380 P%=&1400
390 [OPT I
400
410 .revector
420 SEI
430 LDA irqv2
440 STA oldvec
450 LDA irqv2+1
460 STA oldvec+1
470 LDA #&00
480 STA ddrb
490 STA shift
500 STA ptr1
510 STA ptr2
520 LDA acr
530 AND #&DF
540 STA acr
550 LDA #(introutine MOD 256)
560 STA irqv2
570 LDA #(introutine DIV 256)
580 STA irqv2+1
590 JSR init
600 CLI
610 RTS
620
630 .resetirq
640 SEI
650 LDA oldvec
660 STA irqv2
670 LDA oldvec+1
680 STA irqv2+1
690 LDA #&7F
700 STA ier
710 CLI
720 RTS
730
740 .init
750 LDA pcr
760 AND #&EF
770 STA pcr
780 LDA #&7F
790 STA ier
800 LDA #&90
810 STA ier
820 RTS
830
840 .introutine
850 LDA &FC
860 PHA
870 TXA
880 PHA
890 TYA
900 PHA
910 LDA ifr
920 AND ier
930 AND #&30
940 BEQ intexit
950 AND #&20
960 BNE timer2
970 LDA orirb
980 LDA pcr
990 EOR #&10
1000 STA pcr
1010 AND #&10
1020 BEQ intexit
1030 LDA delayh
1040 LSR A
1050 STA t2hi
1060 LDA delayl
1070 ROL A
1080 STA t2lo
1090 LDA #&A0
1100 STA ier
1110 LDA #&04
1120 STA byte
1130 .intexit
1140 PLA
1150 TAY
1160 PLA
1170 TAX
1180 PLA
1190 STA &FC
1200 JMP (oldvec)
1210
1220 .timer2
1230 LDA #&10
1240 STA ier
1250 LDA delayl
1260 STA t2lo
1270 LDA delayh
1280 STA t2hi
1290 LDA orirb
1300 LSR A
1310 ROL byte
1320 BCC intexit
1330 JSR init
1340
1350 LDA byte
1360 CMP #&02
1370 BEQ crlf
1380 CMP #&08
1390 BEQ crlf
1400 CMP #&1B
1410 BEQ setfig
1420 CMP #&1F
1430 BEQ setlet
1440 ORA shift
1450 TAX
1460 LDA chartab,X
1470 JSR send
1480 CMP #&20
1490 BNE intexit
1500 BIT status
1510 BMI setlet
1520 BPL intexit
1530 .crlf
1540 LDA #&0D
1550 JSR send
1560 .setlet
1570 LDA #&00
1580 BEQ set
1590 .setfig
1600 LDA #&20
1610 .set
1620 STA shift
1630 JMP intexit
1640
1650 .send
1660 LDX ptr1
1670 STA buffer,X
1680 INC ptr1
1690 RTS
1700
1710 .chartab
1720 EQUS CHR$(0)+"T/O HNM^LRGIPCVEZDBSYFXAWJ"+CHR$(0)+"UQK"+CHR$(0)
1730 EQUS CHR$(0)+"5/9 ',.^)4@80:=3+#?!6%/-2"+CHR$(7)+CHR$(0)+"71("+CHR$(00)
1740
1750 .clock
1760 LDA eventv
1770 STA oldeve
1780 LDA eventv+1
1790 STA oldeve+1
1800 LDA #(clockroutine MOD 256)
1810 STA eventv
1820 LDA #(clockroutine DIV 256)
1830 STA eventv+1
1840 LDA #&0E
1850 LDX #&04
1860 LDY #&00
1870 JSR osbyte
1880 LDA #&00
1890 STA fifty
1900 RTS
1910
1920 .resetclock
1930 LDA oldeve
1940 STA eventv
1950 LDA oldeve+1
1960 STA eventv+1
1970 LDA #&0D
1980 LDX #&04
1990 LDY #&00
2000 JMP osbyte
2010
2020 .clockroutine
2030 PHA
2040 CMP #&04
2050 BNE clockexit
2060 INC fifty
2070 LDA fifty
2080 CMP #50
2090 BEQ clockit
2100 .clockexit
2110 PLA
2120 RTS
2130 .clockit
2140 TXA
2150 PHA
2160 TYA
2170 PHA
2180 LDA #0
2190 STA fifty
2200 INC seconds
2210 LDA seconds
2220 CMP #60
2230 BNE cprint
2240 LDA #0
2250 STA seconds
2260 INC minutes
2270 LDA minutes
2280 CMP #60
2290 BNE cprint
2300 LDA #0
2310 STA minutes
2320 INC hours
2330 LDA hours
2340 CMP #24
2350 BNE cprint
2360 LDA #0
2370 STA hours
2380 .cprint
2390 LDA #((&3000+4*&280+64*&08) MOD 256)
2400 STA memptr
2410 LDA #((&3000+4*&280+64*&08) DIV 256)
2420 STA memptr+1
2430 LDA hours
2440 JSR decout
2450 LDA #&0A
2460 JSR ourprint
2470 LDA minutes
2480 JSR decout
2490 LDA #&0A
2500 JSR ourprint
2510 LDA seconds
2520 JSR decout
2530 PLA
2540 TAY
2550 PLA
2560 TAX
2570 PLA
2580 RTS
2590 .decout
2600 LDY #&00
2610 .dloop
2620 CMP #&0A
2630 BCC dprint
2640 SBC #&0A
2650 INY
2660 BNE dloop
2670 .dprint
2680 PHA
2690 TYA
2700 JSR ourprint
2710 PLA
2720 .ourprint
2730 PHA
2740 TXA
2750 PHA
2760 TYA
2770 PHA
2780 TSX
2790 LDA &103,X
2800 ASL A
2810 ASL A
2820 ASL A
2830 TAX
2840 LDY #&00
2850 .ploop
2860 LDA charset,X
2870 STA (memptr),Y
2880 INX
2890 INY
2900 CPY #&08
2910 BNE ploop
2920 CLC
2930 LDA memptr
2940 ADC #&08
2950 STA memptr
2960 LDA memptr+1
2970 ADC #&00
2980 STA memptr+1
2990 PLA
3000 TAY
3010 PLA
3020 TAX
3030 PLA
3040 RTS
3050 .charset
3060 EQUD &7E6E663C
3070 EQUD &3C6676
3080 EQUD &18183818
3090 EQUD &7E1818
3100 EQUD &C06663C
3110 EQUD &7E3018
3120 EQUD &1C06663C
3130 EQUD &3C6606
3140 EQUD &6C3C1C0C
3150 EQUD &C0C7E
3160 EQUD &67C607E
3170 EQUD &3C6606
3180 EQUD &7C60301C
3190 EQUD &3C6666
3200 EQUD &180C067E
3210 EQUD &303030
3220 EQUD &3C66663C
3230 EQUD &3C6666
3240 EQUD &3E66663C
3250 EQUD &380C06
3260 EQUD &18180000
3270 EQUD &181800
3280 ]
3290 NEXT
3300 A%=revector
3310 B%=clock
3320 C%=resetirq
3330 D%=resetclock
3340 CHAIN "RTTYI-2"