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"