3 ; author: hackbard@hackdaworld.dyndns.org
9 ; vcc card --- atmel vcc
11 ; rst cam --- atmel int0 (pd2)
12 ; rst card --- atmel (pd4)
16 ; gnd card --- gnd cam --- atmel gnd
17 ; i/o card --- atmel icp (pd6)
18 ; i/o cam --- atmel int1 (pd3)
20 .include "../include/2313def.inc"
24 ; stupid mode only by now. just see what cam/card do and redirect
27 ; next implementation:
29 ; try to read one byte of card/cam communication and output via uart.
30 ; output time information in some way.
34 ; buffer/parse whole strings and decide whether to send to card or not.
39 ; baudrate = clock freq / etu
40 ; std smartcard etu: 372
41 ; other smartcards: 625
46 .define baudrate 5 ; UBRR value for 76800 bits/s (8mhz clock)
54 .define overflow_counter r21
76 ; timer/counter capt 1
79 ; timer/counter compare
82 ; timer/counter overflow 1
85 ; timer/counter overflow 0
91 ; uart data register empty
110 ; enable interrupts int0,int1
111 ldi tmp,((1<<INT0)|(1<<INT1))
114 ldi tmp,((1<<ISC01)|(0<<ISC00)|(1<<ISC11)|(0<<ISC10))
117 ; enable t/c overflow interrupt and icp
118 ldi tmp,((1<<TOIE1)|(1<<TICIE1))
121 ldi tmp,((1<<CS12)|(1<<CS11)|(1<<CS10)|(1<<ICNC1)|(1<<ICES1))
124 ; configure uart - interrupt enabled when i/o
132 ldi overflow_counter,0
140 ; enable interrupts (global)
171 ; output high on port to cam
183 ; enable uart dre interrupt
194 ; output low on port to cam
203 ; enable uart dre interrupt
221 ; output high on port to card
233 ; output low on port to card
244 ; t1_overflow routine
249 add r22,r1 ; inc counter overflow register
266 ; output high on rst port to card
278 ; output low on rst port to cam