; general device setup ; this is for the ATtiny 85 ; project contains timer, ADC , pinchange IRQ .NOLIST ; Disable listfile generation .include "tn85def.inc" .LIST ; ; constants 1 Mhz clk (8 mhz /8) , PB 0-1 outputs ,PB 2-4 input ; .equ ROMSTART = 0x0100 .equ RAMSTART = SRAM_START .equ NUMLIGHTS = 18 .equ SEQSPEED = 0xb8 ; knight raider speed .equ debouncecount = 0x10 ; mode definitions .equ modoff = 0 ; all off and system sleep .equ modon = 1 ; all on , with timeout .equ modrnd = 2 ; random generator .equ modseq = 3 ; sequencer rotates lights .equ moddim = 4 ; halfpower lights .equ modaction = 5 ; actionflash .equ modprg = 6 ; play ROM tables init .equ modvu = 7 .equ maxmode = 8 .equ modprg2 = 12 ; play ROM tables run ; configure the ADC .equ ADMUXset = 0b10101011 ; data left adjusted, bipolar input , 20 x gain, 1.1 volt reference ; .equ ADCSRAset = .equ ADCSRBset = 0b10000000 .equ DIDR0set = 0b00100100 .equ TCCR0Bset = 0b00000101 ; prescaler / 1024 = 1 khz @ 1Mhz clk ; hardware ports .equ SData = 0 .equ SClk = 1 .equ ADinA = 3 .equ ADinB = 4 .equ button = 2 ; general usage .def stateA = r9 .def stateB = r10 .def stateC = r11 .def masking = r12 .def zero = r13 ; ADC floor .def peak = r14 ; peak value .def timeout = r15 ; immediate registers .def temp =r16 ;misc usage, must be in upper regs for IMMED mode .def temphi =r17 ;misc usage, higher byte for word access .def del = r18 ; delay counter .def bounce = r19 .def scratch =r22 .def scratch2 =r23 .def scratch3 =r24 .def mode =r25 ; port usage ; ;*************** MACROS ************************* ; ************** Variables ; ************** MAIN PROGRAM STARTS HERE ************************* .CSEG .ORG 0x0 rjmp RESET ; Reset Handler rjmp EXT_INT0 ; IRQ0 Handler rjmp PC_INT0 ; PCINT0 Handler rjmp TIM0_OVF ; Timer0 Overflow Handler rjmp EE_RDY ; EEPROM Ready Handler rjmp ANA_COMP ; Analog Comparator Handler rjmp TIM0_COMPA ; Timer0 CompareA Handler rjmp TIM0_COMPB ; Timer0 CompareB Handler rjmp WATCHDOG ; Watchdog Interrupt Handler rjmp ADC_INT ; ADC Conversion Handler ; EXT_INT0: RETI ; the pinchange irq increments the mode and wraps around to zero ; contains debounce code for pushbutton PC_INT0: ldi bounce,debouncecount ; debouncer pcirq2: sbic pinb,button RETI ; spurious dec bounce brne pcirq2 ; next test for pressed key bclr SREG_I ; passed, disable irq inc mode ; next mode cpi mode,maxmode ; is limit reached brcs pcirq3 ; no , maxmode is still bigger than mode clr mode ; else set to 0 pcirq3: clr timeout ;reset timeout pcirq0: ldi bounce,debouncecount ; debouncer pcirq1: sbis pinb,button ; check for button release rjmp pcirq0 dec bounce brne pcirq1 bset SREG_I ;enable irq RETI TIM0_OVF: RETI EE_RDY: RETI ANA_COMP: RETI TIM0_COMPA: RETI TIM0_COMPB: RETI WATCHDOG: RETI ADC_INT: RETI ; RESET: cli ; first switch off the WD wdr in temp, MCUSR ; clr the WDRF bit andi temp, (0xff & (0<Carry rol scratch2 ;Carry->D0 D7->Carry rol scratch3 ;Carry->D0 D7->Carry, but that will be fixed. ;Now we have to Xor the bits to see what ;goes in to bit 1 rol temphi ;Move bit 19->20 andi temphi,$08 ;Important that D1,0 be zero andi temp,$13 ;Mask out irrelevants, protecting bit 19 or temphi,temp ;Get bits 5->21 2->18 1->17 andi temphi,$18 ;Nuke bits 18,17 lsr temphi ;19->19 5->20 lsr temphi ;19->18 5->19 lsr temphi ;19->17 5->18 eor temphi,temp ;First xor, result in temphi (5x2 in 02 and 19x1 in 01) mov temp,temphi ;Make a copy ror temp ;Move the 5x2 result to 01 andi temphi,$01 ;Mask off everything else andi temp,$01 ;in both eor temphi,temp ; brne state_random_1 ;If one, do that, else state_random_0: ;Set a zero in the lsb of the low byte mov temp,scratch ;Get the low byte andi temp,$FE ;Make the LSB zero mov scratch,temp ;Put it back rjmp state_random_exit ;Bye bye state_random_1: ;Set a one in the lsb of the low byte mov temp,scratch ;Get the low byte ori temp,$01 ;Make the LSB one mov scratch,temp ;Put it back state_random_exit: mov stateA,scratch mov stateB,scratch2 mov stateC,scratch3 mov temp,scratch ; and return it ret ; initialize ports init_ports: ldi temp,0x03 ; PB0 to PB1 out, PB 2,3,4 in out PORTB,temp ; high set out DDRB,temp ; set outputs sbi PortB,button ; use the pull-ups ldi del,0x10 ; first settle rcall wozwait rcall alloff ldi del,0x10 ; first settle rcall wozwait init_adc: ldi temp, 0b00011000 ; disable digital input on PB3 and PB4 ( ADC2 and 3 ) out DIDR0, temp ldi temp, 0b10100111 ; 1.1 Volt ref, left adjust, multiplexer to bipolar PB4 + , PB3 - , 20 db gain out ADMUX, temp ldi temp, 0b00010010 ; set prescaler/4 = 250 khz @ 1Mhz Clk, irq clr, irq disable, adc stop, no trigger source out ADCSRA,temp ; poke to register ldi temp, 0b10000000 ; set bipolar mode - no other trigger source out ADCSRB,temp ; poke sbi ADCSRA,ADEN ; enable the AD calib_adc: clr zero ; check for background noise and set a zero level ldi del,0x40 ; first settle the analog parts rcall wozwait ldi scratch,0x40 ; 64 cycles calib1: ldi del,0x04 ; settle the analog parts rcall wozwait rcall getadc cp zero,temp ; new value larger than old ? brcc calib2 ; no , branch mov zero,temp ; store new floor value calib2: dec scratch brne calib1 ; next test inc zero ; safer threshold mov peak,zero ; preset peak value inc peak ; one more mov scratch,zero rcall outval ; output zero value to LEDS ldi del,0x80 ; give time to let the user read rcall wozwait rcall alloff ; switch off ret ; steve wozniak's wait routine - this time for AVR ; this is the extended routine with del^3 ; this wait routine is ingenious and handles wide ranges of delay ; as a hommage to steve i ported it to all my embedded systems. wozwait: push del wwait2: push del wwait1: subi del,1 brne wwait1 pop del subi del,1 brne wwait2 pop del subi del,1 brne wozwait ret .cseg ; cw single bulb seq1data: .db 0x80,0x00,0x00,0xb0 .db 0x40,0x00,0x00,0xb0 .db 0x20,0x00,0x00,0xb0 .db 0x10,0x00,0x00,0xb0 .db 0x08,0x00,0x00,0xb0 .db 0x04,0x00,0x00,0xb0 .db 0x02,0x00,0x00,0xb0 .db 0x01,0x00,0x00,0xb0 .db 0x00,0x80,0x00,0xb0 .db 0x00,0x40,0x00,0xb0 .db 0x00,0x20,0x00,0xb0 .db 0x00,0x10,0x00,0xb0 .db 0x00,0x08,0x00,0xb0 .db 0x00,0x04,0x00,0xb0 .db 0x00,0x02,0x00,0xb0 .db 0x00,0x01,0x00,0xb0 .db 0x00,0x00,0x80,0xb0 .db 0x00,0x00,0x40,0xb0 .db 0x80,0x00,0x00,0xb0 .db 0x40,0x00,0x00,0xb0 .db 0x20,0x00,0x00,0xb0 .db 0x10,0x00,0x00,0xb0 .db 0x08,0x00,0x00,0xb0 .db 0x04,0x00,0x00,0xb0 .db 0x02,0x00,0x00,0xb0 .db 0x01,0x00,0x00,0xb0 .db 0x00,0x80,0x00,0xb0 .db 0x00,0x40,0x00,0xb0 .db 0x00,0x20,0x00,0xb0 .db 0x00,0x10,0x00,0xb0 .db 0x00,0x08,0x00,0xb0 .db 0x00,0x04,0x00,0xb0 .db 0x00,0x02,0x00,0xb0 .db 0x00,0x01,0x00,0xb0 .db 0x00,0x00,0x80,0xb0 .db 0x00,0x00,0x40,0xb0 .db 0x80,0x00,0x00,0xb0 .db 0x40,0x00,0x00,0xb0 .db 0x20,0x00,0x00,0xb0 .db 0x10,0x00,0x00,0xb0 .db 0x08,0x00,0x00,0xb0 .db 0x04,0x00,0x00,0xb0 .db 0x02,0x00,0x00,0xb0 .db 0x01,0x00,0x00,0xb0 .db 0x00,0x80,0x00,0xb0 .db 0x00,0x40,0x00,0xb0 .db 0x00,0x20,0x00,0xb0 .db 0x00,0x10,0x00,0xb0 .db 0x00,0x08,0x00,0xb0 .db 0x00,0x04,0x00,0xb0 .db 0x00,0x02,0x00,0xb0 .db 0x00,0x01,0x00,0xb0 .db 0x00,0x00,0x80,0xb0 .db 0x00,0x00,0x40,0xb0 .db 0x80,0x00,0x00,0xb0 .db 0x40,0x00,0x00,0xb0 .db 0x20,0x00,0x00,0xb0 .db 0x10,0x00,0x00,0xb0 .db 0x08,0x00,0x00,0xb0 .db 0x04,0x00,0x00,0xb0 .db 0x02,0x00,0x00,0xb0 .db 0x01,0x00,0x00,0xb0 .db 0x00,0x80,0x00,0xb0 .db 0x00,0x40,0x00,0xb0 .db 0x00,0x20,0x00,0xb0 .db 0x00,0x10,0x00,0xb0 .db 0x00,0x08,0x00,0xb0 .db 0x00,0x04,0x00,0xb0 .db 0x00,0x02,0x00,0xb0 .db 0x00,0x01,0x00,0xb0 .db 0x00,0x00,0x80,0xb0 .db 0x00,0x00,0x40,0xb0 ;ccw single bulb .db 0x00,0x00,0x40,0xb0 .db 0x00,0x00,0x80,0xb0 .db 0x00,0x01,0x00,0xb0 .db 0x00,0x02,0x00,0xb0 .db 0x00,0x04,0x00,0xb0 .db 0x00,0x08,0x00,0xb0 .db 0x00,0x10,0x00,0xb0 .db 0x00,0x20,0x00,0xb0 .db 0x00,0x40,0x00,0xb0 .db 0x00,0x80,0x00,0xb0 .db 0x01,0x00,0x00,0xb0 .db 0x02,0x00,0x00,0xb0 .db 0x04,0x00,0x00,0xb0 .db 0x08,0x00,0x00,0xb0 .db 0x10,0x00,0x00,0xb0 .db 0x20,0x00,0x00,0xb0 .db 0x40,0x00,0x00,0xb0 .db 0x80,0x00,0x00,0xb0 .db 0x00,0x00,0x40,0xb0 .db 0x00,0x00,0x80,0xb0 .db 0x00,0x01,0x00,0xb0 .db 0x00,0x02,0x00,0xb0 .db 0x00,0x04,0x00,0xb0 .db 0x00,0x08,0x00,0xb0 .db 0x00,0x10,0x00,0xb0 .db 0x00,0x20,0x00,0xb0 .db 0x00,0x40,0x00,0xb0 .db 0x00,0x80,0x00,0xb0 .db 0x01,0x00,0x00,0xb0 .db 0x02,0x00,0x00,0xb0 .db 0x04,0x00,0x00,0xb0 .db 0x08,0x00,0x00,0xb0 .db 0x10,0x00,0x00,0xb0 .db 0x20,0x00,0x00,0xb0 .db 0x40,0x00,0x00,0xb0 .db 0x80,0x00,0x00,0xb0 .db 0x00,0x00,0x40,0xb0 .db 0x00,0x00,0x80,0xb0 .db 0x00,0x01,0x00,0xb0 .db 0x00,0x02,0x00,0xb0 .db 0x00,0x04,0x00,0xb0 .db 0x00,0x08,0x00,0xb0 .db 0x00,0x10,0x00,0xb0 .db 0x00,0x20,0x00,0xb0 .db 0x00,0x40,0x00,0xb0 .db 0x00,0x80,0x00,0xb0 .db 0x01,0x00,0x00,0xb0 .db 0x02,0x00,0x00,0xb0 .db 0x04,0x00,0x00,0xb0 .db 0x08,0x00,0x00,0xb0 .db 0x10,0x00,0x00,0xb0 .db 0x20,0x00,0x00,0xb0 .db 0x40,0x00,0x00,0xb0 .db 0x80,0x00,0x00,0xb0 .db 0x00,0x00,0x40,0xb0 .db 0x00,0x00,0x80,0xb0 .db 0x00,0x01,0x00,0xb0 .db 0x00,0x02,0x00,0xb0 .db 0x00,0x04,0x00,0xb0 .db 0x00,0x08,0x00,0xb0 .db 0x00,0x10,0x00,0xb0 .db 0x00,0x20,0x00,0xb0 .db 0x00,0x40,0x00,0xb0 .db 0x00,0x80,0x00,0xb0 .db 0x01,0x00,0x00,0xb0 .db 0x02,0x00,0x00,0xb0 .db 0x04,0x00,0x00,0xb0 .db 0x08,0x00,0x00,0xb0 .db 0x10,0x00,0x00,0xb0 .db 0x20,0x00,0x00,0xb0 .db 0x40,0x00,0x00,0xb0 .db 0x80,0x00,0x00,0xb0 ; bridge .db 0xc0,0x00,0x00,0xa8 .db 0xa0,0x00,0x00,0xa0 .db 0x90,0x00,0x00,0x98 .db 0x88,0x00,0x00,0x90 .db 0x84,0x00,0x00,0x88 .db 0x82,0x00,0x00,0x80 .db 0x81,0x00,0x00,0x80 .db 0x80,0x80,0x00,0x80 ; cw opposite single bulbs .db 0x80,0x40,0x00,0x80 .db 0x40,0x20,0x00,0x80 .db 0x20,0x10,0x00,0x80 .db 0x10,0x08,0x00,0x80 .db 0x08,0x04,0x00,0x80 .db 0x04,0x02,0x00,0x80 .db 0x02,0x01,0x00,0x80 .db 0x01,0x00,0x80,0x80 .db 0x00,0x80,0x40,0x80 .db 0x80,0x40,0x00,0x80 .db 0x40,0x20,0x00,0x80 .db 0x20,0x10,0x00,0x80 .db 0x10,0x08,0x00,0x80 .db 0x08,0x04,0x00,0x80 .db 0x04,0x02,0x00,0x80 .db 0x02,0x01,0x00,0x80 .db 0x01,0x00,0x80,0x80 .db 0x00,0x80,0x40,0x80 .db 0x80,0x40,0x00,0x80 .db 0x40,0x20,0x00,0x80 .db 0x20,0x10,0x00,0x80 .db 0x10,0x08,0x00,0x80 .db 0x08,0x04,0x00,0x80 .db 0x04,0x02,0x00,0x80 .db 0x02,0x01,0x00,0x80 .db 0x01,0x00,0x80,0x80 .db 0x00,0x80,0x40,0x80 .db 0x80,0x40,0x00,0x80 .db 0x40,0x20,0x00,0x80 .db 0x20,0x10,0x00,0x80 .db 0x10,0x08,0x00,0x80 .db 0x08,0x04,0x00,0x80 .db 0x04,0x02,0x00,0x80 .db 0x02,0x01,0x00,0x80 .db 0x01,0x00,0x80,0x80 .db 0x00,0x80,0x40,0x80 ; ccw opposite bulbs .db 0x80,0x40,0x00,0x80 .db 0x00,0x80,0x40,0x80 .db 0x01,0x00,0x80,0x80 .db 0x02,0x01,0x00,0x80 .db 0x04,0x02,0x00,0x80 .db 0x08,0x04,0x00,0x80 .db 0x10,0x08,0x00,0x80 .db 0x20,0x10,0x00,0x80 .db 0x40,0x20,0x00,0x80 .db 0x80,0x40,0x00,0x80 .db 0x00,0x80,0x40,0x80 .db 0x01,0x00,0x80,0x80 .db 0x02,0x01,0x00,0x80 .db 0x04,0x02,0x00,0x80 .db 0x08,0x04,0x00,0x80 .db 0x10,0x08,0x00,0x80 .db 0x20,0x10,0x00,0x80 .db 0x40,0x20,0x00,0x80 .db 0x80,0x40,0x00,0x80 .db 0x00,0x80,0x40,0x80 .db 0x01,0x00,0x80,0x80 .db 0x02,0x01,0x00,0x80 .db 0x04,0x02,0x00,0x80 .db 0x08,0x04,0x00,0x80 .db 0x10,0x08,0x00,0x80 .db 0x20,0x10,0x00,0x80 .db 0x40,0x20,0x00,0x80 .db 0x80,0x40,0x00,0x80 .db 0x00,0x80,0x40,0x80 .db 0x01,0x00,0x80,0x80 .db 0x02,0x01,0x00,0x80 .db 0x04,0x02,0x00,0x80 .db 0x08,0x04,0x00,0x80 .db 0x10,0x08,0x00,0x80 .db 0x20,0x10,0x00,0x80 .db 0x40,0x20,0x00,0x80 ;bridge .db 0x80,0x40,0x00,0x80 .db 0x80,0x80,0x00,0x80 .db 0x81,0x00,0x00,0x80 .db 0x82,0x00,0x00,0x80 .db 0x84,0x00,0x00,0x80 .db 0x88,0x00,0x00,0x80 .db 0x90,0x00,0x00,0x80 .db 0xa0,0x00,0x00,0x80 .db 0xc0,0x00,0x00,0x80 ; cw double bulbs .db 0x80,0x00,0x40,0x40 .db 0xc0,0x00,0x00,0x40 .db 0x60,0x00,0x00,0x40 .db 0x30,0x00,0x00,0x40 .db 0x18,0x00,0x00,0x40 .db 0x0c,0x00,0x00,0x40 .db 0x06,0x00,0x00,0x40 .db 0x03,0x00,0x00,0x40 .db 0x01,0x80,0x00,0x40 .db 0x00,0xc0,0x00,0x40 .db 0x00,0x60,0x00,0x40 .db 0x00,0x30,0x00,0x40 .db 0x00,0x18,0x00,0x40 .db 0x00,0x0c,0x00,0x40 .db 0x00,0x06,0x00,0x40 .db 0x00,0x03,0x00,0x40 .db 0x00,0x01,0x80,0x40 .db 0x00,0x00,0xc0,0x40 .db 0x80,0x00,0x40,0x40 .db 0xc0,0x00,0x00,0x40 .db 0x60,0x00,0x00,0x40 .db 0x30,0x00,0x00,0x40 .db 0x18,0x00,0x00,0x40 .db 0x0c,0x00,0x00,0x40 .db 0x06,0x00,0x00,0x40 .db 0x03,0x00,0x00,0x40 .db 0x01,0x80,0x00,0x40 .db 0x00,0xc0,0x00,0x40 .db 0x00,0x60,0x00,0x40 .db 0x00,0x30,0x00,0x40 .db 0x00,0x18,0x00,0x40 .db 0x00,0x0c,0x00,0x40 .db 0x00,0x06,0x00,0x40 .db 0x00,0x03,0x00,0x40 .db 0x00,0x01,0x80,0x40 .db 0x00,0x00,0xc0,0x40 ;ccw doublebulb .db 0x00,0x01,0x80,0x40 .db 0x00,0x03,0x00,0x40 .db 0x00,0x06,0x00,0x40 .db 0x00,0x0c,0x00,0x40 .db 0x00,0x18,0x00,0x40 .db 0x00,0x30,0x00,0x40 .db 0x00,0x60,0x00,0x40 .db 0x00,0xc0,0x00,0x40 .db 0x01,0x80,0x00,0x40 .db 0x03,0x00,0x00,0x40 .db 0x06,0x00,0x00,0x40 .db 0x0c,0x00,0x00,0x40 .db 0x18,0x00,0x00,0x40 .db 0x30,0x00,0x00,0x40 .db 0x60,0x00,0x00,0x40 .db 0xc0,0x00,0x00,0x40 .db 0x80,0x00,0x40,0x40 .db 0x00,0x00,0xc0,0x40 .db 0x00,0x01,0x80,0x40 .db 0x00,0x03,0x00,0x40 .db 0x00,0x06,0x00,0x40 .db 0x00,0x0c,0x00,0x40 .db 0x00,0x18,0x00,0x40 .db 0x00,0x30,0x00,0x40 .db 0x00,0x60,0x00,0x40 .db 0x00,0xc0,0x00,0x40 .db 0x01,0x80,0x00,0x40 .db 0x03,0x00,0x00,0x40 .db 0x06,0x00,0x00,0x40 .db 0x0c,0x00,0x00,0x40 .db 0x18,0x00,0x00,0x40 .db 0x30,0x00,0x00,0x40 .db 0x60,0x00,0x00,0x40 .db 0xc0,0x00,0x00,0x40 .db 0x80,0x00,0x40,0x40 ; bridge .db 0x80,0x00,0x40,0x40 .db 0xc0,0x00,0x40,0x3a .db 0xe0,0x00,0x40,0x36 .db 0xd0,0x00,0x40,0x32 .db 0x98,0x00,0x40,0x2e .db 0x8c,0x00,0x40,0x2c .db 0x86,0x00,0x40,0x28 .db 0x83,0x00,0x40,0x24 .db 0x81,0x80,0x40,0x20 ; cw double bulbs opposite seq4data: .db 0x80,0xc0,0x40,0x20 .db 0xc0,0x60,0x00,0x20 .db 0x60,0x30,0x00,0x20 .db 0x30,0x18,0x00,0x20 .db 0x18,0x0c,0x00,0x20 .db 0x0c,0x06,0x00,0x20 .db 0x06,0x03,0x00,0x20 .db 0x03,0x01,0x80,0x20 .db 0x01,0x80,0xc0,0x20 .db 0x80,0xc0,0x40,0x20 .db 0xc0,0x60,0x00,0x20 .db 0x60,0x30,0x00,0x20 .db 0x30,0x18,0x00,0x20 .db 0x18,0x0c,0x00,0x20 .db 0x0c,0x06,0x00,0x20 .db 0x06,0x03,0x00,0x20 .db 0x03,0x01,0x80,0x20 .db 0x01,0x80,0xc0,0x20 .db 0x80,0xc0,0x40,0x20 .db 0xc0,0x60,0x00,0x20 .db 0x60,0x30,0x00,0x20 .db 0x30,0x18,0x00,0x20 .db 0x18,0x0c,0x00,0x20 .db 0x0c,0x06,0x00,0x20 .db 0x06,0x03,0x00,0x20 .db 0x03,0x01,0x80,0x20 .db 0x01,0x80,0xc0,0x20 .db 0x80,0xc0,0x40,0x20 .db 0xc0,0x60,0x00,0x20 .db 0x60,0x30,0x00,0x20 .db 0x30,0x18,0x00,0x20 .db 0x18,0x0c,0x00,0x20 .db 0x0c,0x06,0x00,0x20 .db 0x06,0x03,0x00,0x20 .db 0x03,0x01,0x80,0x20 .db 0x01,0x80,0xc0,0x20 ; ccw opposite double bulbs .db 0x01,0x80,0xc0,0x20 .db 0x03,0x01,0x80,0x20 .db 0x06,0x03,0x00,0x20 .db 0x0c,0x06,0x00,0x20 .db 0x18,0x0c,0x00,0x20 .db 0x30,0x18,0x00,0x20 .db 0x60,0x30,0x00,0x20 .db 0xc0,0x60,0x00,0x20 .db 0x80,0xc0,0x40,0x20 .db 0x01,0x80,0xc0,0x20 .db 0x03,0x01,0x80,0x20 .db 0x06,0x03,0x00,0x20 .db 0x0c,0x06,0x00,0x20 .db 0x18,0x0c,0x00,0x20 .db 0x30,0x18,0x00,0x20 .db 0x60,0x30,0x00,0x20 .db 0xc0,0x60,0x00,0x20 .db 0x80,0xc0,0x40,0x20 .db 0x01,0x80,0xc0,0x20 .db 0x03,0x01,0x80,0x20 .db 0x06,0x03,0x00,0x20 .db 0x0c,0x06,0x00,0x20 .db 0x18,0x0c,0x00,0x20 .db 0x30,0x18,0x00,0x20 .db 0x60,0x30,0x00,0x20 .db 0xc0,0x60,0x00,0x20 .db 0x80,0xc0,0x40,0x20 .db 0x01,0x80,0xc0,0x20 .db 0x03,0x01,0x80,0x20 .db 0x06,0x03,0x00,0x20 .db 0x0c,0x06,0x00,0x20 .db 0x18,0x0c,0x00,0x20 .db 0x30,0x18,0x00,0x20 .db 0x60,0x30,0x00,0x20 .db 0xc0,0x60,0x00,0x20 .db 0x80,0xc0,0x40,0x20 ; end trailer - bridge to start .db 0x81,0x80,0x40,0x20 .db 0x83,0x00,0x40,0x30 .db 0x86,0x00,0x40,0x40 .db 0x8c,0x00,0x40,0x50 .db 0x98,0x00,0x40,0x60 .db 0xb0,0x00,0x40,0x70 .db 0xe0,0x00,0x40,0x80 .db 0xc0,0x00,0x40,0x80 .db 0x80,0x00,0x40,0x80 ; .db 0x00,0x00,0x00,0xff ; end marker .db 0xff,0xff,0xff,0xff ; end marker .db 0xff,0xff,0xff,0xff ; end marker .db 0xff,0xff,0xff,0xff ; end marker ; creator: .db "(C)2008 DC7UR free for personal usage"