;***************************************************************************** ; IR Controller II (source file) ; dsPIC-based IR Controller ; ; Other Files Required : IrController2.gld, p30f2010.inc ; Tools Used : MPLAB IDE : 7.xx ; ; Hardware: ; RD0 = IR LED Out (PWM OC1) ; RE0 = IR Receiver Input ; RC13/14 = Alternate RS-232 RxD/TxD ; ; Notes: ; When using Starter-28 board jumper ICD 2-3, wire J8-RC13, J9-RC14 ;***************************************************************************** .equ __30F2010, 1 .include "p30f2010.inc" ;............................................................................. ; Configuration bits: ;............................................................................. ; config __FOSC, CSW_FSCM_OFF & XT_PLL16 ;16xPLL - 120MHz/30MIPs at 7.37MHz XTAL config __FOSC, CSW_FSCM_OFF & XT_PLL4 ;4xPLL config __FWDT, WDT_OFF ;Turn off Watchdog Timer config __FBORPOR, PBOR_ON & BORV_27 & PWRT_16 & MCLR_EN ;Set Brown-out Reset voltage and config __FGS, CODE_PROT_OFF ;Set Code Protection Off ;............................................................................. ; Global Declarations: ;............................................................................. .global __reset ;Label for first line of code. .global __ICD2RAM ;Allows ICD2 to be used .global __U1RXInterrupt ;............................................................................. ; Variable Storage in Data space (beginning at 0x850) ;............................................................................. .section .data .align 2 ByteCounter: .space 2 ;Number of bytes to sample BitCounter: .space 2 ;Number of bits (8) per sample byte Sample: .space 2 ;IR Signal Sample IRTxFlag: .space 2 ;Flags that IR signal was sent Command: .space 1 ;Command received via serial port ;............................................................................. ; Constants ;............................................................................. .equiv FCY, 7372800 ;Instruction Cycle Frequency .equiv BAUDRATE, 9600 ;Operating Baud Rate .equiv DelayConst, FCY/2000 .equiv IR_IN,#0 ;Port E IR Rx input line ;............................................................................. ; Code Section in Program Memory ;............................................................................. .text ;Start of Code section __U1RXInterrupt: push w0 ;Save w0 push w1 mov.b U1RXREG, wreg ;Transfer received byte to w0 mov.b wreg, Command pop w1 pop w0 ;Restore w0 bclr IFS0, #U1RXIF ;Clear the interrupt flag. retfie ;Return from Interrupt __T2Interrupt: retfie __reset: ;Setup Stack for Calls in program memory ;Use 0x880-0x8FF to keep 0x900-0x9FF free for IR samples nop nop MOV #0x08A0, W15 ;Initalize the Stack Pointer to top-of-RAM MOV #0x08FE, W0 ;Initialize the Stack Pointer Limit Register MOV W0, SPLIM ;Setup Ports mov #0xFE,W1 ;RD0=PWM Output (to IR Led) mov W1,TRISD mov #0xFF,W1 ;RE0=IR Receiver Input mov W1,TRISE ; mov #0x003F,W0 ;Setup all analog pins for digital mode ; mov W0,ADPCFG ;Setup Timer 1 for sampling delay mov #0x8000,w1 mov w1,T1CON ;1:1, Int Clk, ON mov #246,W1 ;Load PR1 for delay, 30KHz Sample Rate mov w1,PR1 ;Setup PWM for 40KHz output mov #184,w1 ;Set TMR3 for 40KHz PWM mov w1,PR3 clr OC1RS ;Zero duty cycle mov #0B0000000000001110,w1 mov w1,OC1CON clr T2CON ;Select 16-bit mode for TMR3 mov #0x8000,w1 ;Turn TMR3 ON mov w1,T3CON ;Setup UART for transmission clr U1MODE clr U1STA bset U1MODE, #ALTIO ;Use U1ATX/U1ARX pins for UART bset U1MODE, #UARTEN ;Enable UART (implies reception) mov #(((FCY/BAUDRATE) / 16) - 1), w0 mov w0, U1BRG ;Initialize BRG bclr IFS0, #U1RXIF ;Clear the interrupt flag bset IEC0, #U1RXIE ;Enable Rx ISR bset U1STA, #UTXEN ;Enable Transmission ;Announce System is alive mov #tblpage(InitString), w0 mov w0, _TBLPAG mov #tbloffset(InitString), w5 call StringOut ;Sample IR Signal to RAM ; call SampleIn ;To sample, enable and break ; nop ;Breakpoint ;Load pointer for all tables (all in low memory) clr TBLPAG ;Select Page 0 (EA=0x00nnnn) clr IRTxFlag ;Main Loop: wait for character to be rec'd (via ISR) and send codes MainLoop: clr w0 mov.b Command,wreg ;Get the command received via the ISR mov #0x4D,w1 ;Is it an "M"? cpsne.b w0,w1 call SendMemorexPower mov #0x31,w1 ;Is it an "1"? cpsne.b w0,w1 call SendMacro1 mov #0x32,w1 ;Is it an "2"? cpsne.b w0,w1 call SendMacro2 mov #0x33,w1 ;Is it an "3"? cpsne.b w0,w1 call SendMacro3 mov #0x55,w1 ;Is it an "U"? cpsne.b w0,w1 call SendMemorexVolumeUp mov #0x44,w1 ;Is it an "D"? cpsne.b w0,w1 call SendMemorexVolumeDown btss IRTxFlag,#0 ;If IR signal was sent, clear command buffer goto MainLoop clr Command clr IRTxFlag goto MainLoop SendMacro1: ;StarChoice Receiver ON, 910, Memorex ON, TV input selected mov #tbloffset(StarChoicePower), w5 call SampleOut mov #tbloffset(StarChoice9), w5 call SampleOut mov #tbloffset(StarChoice1), w5 call SampleOut mov #tbloffset(StarChoice0), w5 call SampleOut mov #tbloffset(MemorexPower), w5 call SampleOut mov #tbloffset(MemorexTv), w5 call SampleOut return SendMacro2: mov #tbloffset(StarChoice9), w5 call SampleOut mov #tbloffset(StarChoice1), w5 call SampleOut mov #tbloffset(StarChoice0), w5 call SampleOut return SendMacro3: mov #tbloffset(StarChoice9), w5 call SampleOut mov #tbloffset(StarChoice3), w5 call SampleOut mov #tbloffset(StarChoice0), w5 call SampleOut return ;Playback Memorex POWER SendMemorexPower: mov #tbloffset(MemorexPower), w5 call SampleOut return ;Playback Memorex TV mov #tbloffset(MemorexTv), w5 call SampleOut SendMemorexVolumeUp: mov #tbloffset(MemorexVolumeUp), w5 call SampleOut return SendMemorexVolumeDown: mov #tbloffset(MemorexVolumeDown), w5 call SampleOut return Spoog: goto Spoog ;****** Sample IR Signal ****** SampleIn: mov #0x0900,W6 ;Initialize pointer: W6 = FSR0 mov #0x0100,w1 mov w1,ByteCounter WaitToSample: btsc.b PORTE,#IR_IN ;Wait for Signal to go low bra WaitToSample ;Start sampling call StartSamplingDelay ;Initial delay for first sample SampleNextByte: mov #8,W1 mov W1,BitCounter SampleNextBit: rlnc Sample btss.b PORTE,#IR_IN bclr.b Sample,#0 btsc.b PORTE,#IR_IN bset.b Sample,#0 call SamplingDelay dec.b BitCounter bra NZ,SampleNextBit mov Sample,W1 mov.b W1,[W6++] ;Save sample and increment pointer dec ByteCounter bra NZ,SampleNextByte return ;****** Playback IR Signal ****** ;Playback IR Sample pointed-to by W5 SampleOut: mov #0xFFFF,w1 mov w1,IRTxFlag ;Show that IR signal was sent mov #0x0100,w1 mov w1,ByteCounter WriteNextByte: mov #8,w1 mov w1,BitCounter tblrdl.b [W5++],w4 mov w4,Sample WriteNextBit: btss.b Sample,#7 call StartPWM btsc.b Sample,#7 call StopPWM rlnc Sample call SamplingDelay dec.b BitCounter bra NZ,WriteNextBit dec ByteCounter bra NZ,WriteNextByte call StopPWM ;Turn off PWM at the end of the packet call InterDigitDelay return ;****** PWM Duty Cycle control ****** StartPWM: mov #0B01011100,w1 ;Output ON (PWM with 50/50 wave) 40KHz mov w1,OC1RS return StopPWM: mov #0x00,w1 ;Output OFF - stop PWM mov w1,OC1RS return ;****** Precision delay for sampling ****** ;Start Initial Delay at zero StartSamplingDelay: clr TMR1 return ;Wait for timer to expire, start next delay SamplingDelay: btss.b IFS0,#T1IF ;Wait for Timer to expire bra SamplingDelay bclr.b IFS0,#T1IF ;Clear 'done' flag return ;Delay Between IRSamples: Approx 0.25sec InterDigitDelay: mov #10000,w2 NextBigDelay: call SamplingDelay dec w2,w2 bra NZ,NextBigDelay return ;****** UART transmission **** ;Send a zero-terminated string (Pointer=W5) to the UART StringOut: tblrdl.b [W5++],w4 ;Grab the character to send mov.b W4,W0 add #0,W0 bra NZ,SendChar return SendChar: btsc U1STA,#UTXBF ;Wait for buffer empty then skip bra SendChar mov w0,U1TXREG ;load the buffer to send the character goto StringOut ;............................................................................. ; Data Tables in Program Memory: ;............................................................................. .section .const,"r" .align 4 ;Remote Control Samples for Various Keys, each 0x100 bytes long StarChoice9: .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0xFF00,0xFFFF,0xFFFF,0xFFFF,0x00C0,0x0000,0xFF7F .hword 0xFCFF,0x0000,0x0F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0x00F8,0x0000,0xFF0F,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF0FF .hword 0x0000,0x1F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x00E0 .hword 0x0000,0xFF3F,0xFEFF,0x0000,0x0300,0xFFFF,0xE0FF,0x0000 .hword 0x7F00,0xFFFF,0x00FC,0x0000,0xFF07,0xFFFF,0x00C0,0x0000 .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x80FF,0x0000,0xFF01 .hword 0xFFFF,0x00F8,0x0000,0xFF3F,0xFFFF,0x0000,0x0300,0xFFFF .hword 0xF0FF,0x0000,0x3F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF StarChoice8: .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0xFF01,0xFFFF,0xFFFF,0xFFFF,0x00C0,0x0000,0xFF7F .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x80FF,0x0000,0xFF00,0xFFFF .hword 0x00F8,0x0000,0xFF0F,0xFFFF,0x0000,0x0100,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0x00FF,0x0000,0xFF03,0xFFFF,0x00E0 .hword 0x0000,0xFF7F,0xFEFF,0x0000,0x0700,0xFFFF,0xE0FF,0x0000 .hword 0x7F00,0xFFFF,0x00FC,0x0000,0xFF0F,0xFFFF,0x00C0,0x0000 .hword 0xFFFF,0xF8FF,0x0000,0x0F00,0xFFFF,0x80FF,0x0000,0xFF01 .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x0000,0x0100,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF StarChoice7: .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0xFF00,0xFFFF,0xFFFF,0xFFFF,0x00C0,0x0000,0xFF7F .hword 0xFCFF,0x0000,0x0F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0x00F8,0x0000,0xFF0F,0xFFFF,0x0080,0x0000,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0x80FF,0x0000,0xFF01,0xFFFF,0x00F0 .hword 0x0000,0xFF1F,0xFEFF,0x0000,0x0300,0xFFFF,0xE0FF,0x0000 .hword 0x3F00,0xFFFF,0x00FC,0x0000,0xFF03,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xF8FF,0x0000,0x0F00,0xFFFF,0x80FF,0x0000,0xFF01 .hword 0xFFFF,0x00F0,0x0000,0xFF0F,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xE0FF,0x0000,0x1F00,0xFFFF,0x00FE,0x0000,0xFF03,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFCFF,0x0000,0x0F00,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF StarChoice6: .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0xFF01,0xFFFF,0xFFFF,0xFFFF,0x00C0,0x0000,0xFF7F .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x80FF,0x0000,0xFF00,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x0000,0x0100,0xFFFF,0xF0FF .hword 0x0000,0x1F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x00E0 .hword 0x0000,0xFF7F,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE0FF,0x0000 .hword 0x7F00,0xFFFF,0x00FC,0x0000,0xFF0F,0xFFFF,0x0080,0x0000 .hword 0xFFFF,0xF8FF,0x0000,0x0F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0x00F0,0x0000,0xFF1F,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xF0FF,0x0000,0x3F00,0xFFFF,0x00FE,0x0000,0xFF03,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFEFF,0x0000,0x0F00,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF StarChoice5: .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0xFF00,0xFFFF,0xFFFF,0xFFFF,0x00C0,0x0000,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC0FF,0x0000,0xFF00,0xFFFF .hword 0x00F8,0x0000,0xFF0F,0xFFFF,0x0080,0x0000,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0x80FF,0x0000,0xFF01,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFEFF,0x0000,0x0300,0xFFFF,0xC0FF,0x0000 .hword 0x3F00,0xFFFF,0x00FC,0x0000,0xFF03,0xFFFF,0x00C0,0x0000 .hword 0xFF7F,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x80FF,0x0000,0xFF01 .hword 0xFFFF,0x00F0,0x0000,0xFF0F,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xE0FF,0x0000,0x1F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0x00E0,0x0000,0xFF7F,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF StarChoice4: .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0xFF01,0xFFFF,0xFFFF,0xFFFF,0x00C0,0x0000,0xFF7F .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x80FF,0x0000,0xFF00,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x0000,0x0100,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0x00FF,0x0000,0xFF03,0xFFFF,0x00E0 .hword 0x0000,0xFF7F,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xE0FF,0x0000 .hword 0x7F00,0xFFFF,0x00FC,0x0000,0xFF0F,0xFFFF,0x0080,0x0000 .hword 0xFFFF,0xF8FF,0x0000,0x0F00,0xFFFF,0x80FF,0x0000,0xFF01 .hword 0xFFFF,0x00F0,0x0000,0xFF1F,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xF0FF,0x0000,0x3F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0x00E0,0x0000,0xFF7F,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF StarChoice3: .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0xFF01,0xFFFF,0xFFFF,0xFFFF,0x00C0,0x0000,0xFF7F .hword 0xFCFF,0x0000,0x0F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0x00F8,0x0000,0xFF1F,0xFFFF,0x0080,0x0100,0xFFFF,0xF0FF .hword 0x0000,0x3F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x00E0 .hword 0x0000,0xFF3F,0xFEFF,0x0000,0x0700,0xFFFF,0xC0FF,0x0000 .hword 0x7F00,0xFFFF,0x00FC,0x0000,0xFF07,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xF8FF,0x0000,0x0F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0x00F0,0x0000,0xFF3F,0xFFFF,0x0000,0x0300,0xFFFF .hword 0xF0FF,0x0000,0x3F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF StarChoice2: .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0xFF00,0xFFFF,0xFFFF,0xFFFF,0x00C0,0x0000,0xFF7F .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x80FF,0x0000,0xFF00,0xFFFF .hword 0x00F8,0x0000,0xFF0F,0xFFFF,0x0080,0x0100,0xFFFF,0xF0FF .hword 0x0000,0x1F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x00F0 .hword 0x0000,0xFF7F,0xFEFF,0x0000,0x0700,0xFFFF,0xE0FF,0x0000 .hword 0x7F00,0xFFFF,0x00FE,0x0000,0xFF07,0xFFFF,0x00C0,0x0000 .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x80FF,0x0000,0xFF01 .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x0000,0x0100,0xFFFF .hword 0xF0FF,0x0000,0x3F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF StarChoice1: .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0xFF00,0xFFFF,0xFFFF,0xFFFF,0x00C0,0x0000,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xC0FF,0x0000,0xFF00,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x0080,0x0000,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0x00FF,0x0000,0xFF03,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFEFF,0x0000,0x0300,0xFFFF,0xE0FF,0x0000 .hword 0x3F00,0xFFFF,0x00FC,0x0000,0xFF07,0xFFFF,0x00C0,0x0000 .hword 0xFFFF,0xF8FF,0x0000,0x0F00,0xFFFF,0x80FF,0x0000,0xFF01 .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x0000,0x0300,0xFFFF .hword 0xF0FF,0x0000,0x3F00,0xFFFF,0x00FF,0x0000,0xFF03,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF StarChoice0: .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0xFF00,0xFFFF,0xFFFF,0xFFFF,0x00C0,0x0000,0xFF7F .hword 0xFCFF,0x0000,0x0700,0xFFFF,0x80FF,0x0000,0x7F00,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x0000,0x0100,0xFFFF,0xF0FF .hword 0x0000,0x1F00,0xFFFF,0x00FF,0x0000,0xFF03,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFEFF,0x0000,0x0300,0xFFFF,0xE0FF,0x0000 .hword 0x7F00,0xFFFF,0x00FC,0x0000,0xFF07,0xFFFF,0x0080,0x0000 .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x80FF,0x0000,0xFF01 .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x0000,0x0100,0xFFFF .hword 0xE0FF,0x0000,0x3F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF StarChoiceExit: .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0xFF01,0xFFFF,0xFFFF,0xFFFF,0x00C0,0x0000,0xFF7F .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x80FF,0x0000,0x7F00,0xFFFF .hword 0x00F8,0x0000,0xFF0F,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF0FF .hword 0x0000,0x3F00,0xFFFF,0x00FF,0x0000,0xFF03,0xFFFF,0x00E0 .hword 0x0000,0xFF3F,0xFEFF,0x0000,0x0300,0xFFFF,0xE0FF,0x0000 .hword 0x7F00,0xFFFF,0x00FC,0x0000,0xFF07,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xF8FF,0x0000,0x0F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0x00F0,0x0000,0xFF0F,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xE0FF,0x0000,0x3F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0x00E0,0x0000,0xFF7F,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF StarChoicePower: .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0xFF01,0xFFFF,0xFFFF,0xFFFF,0x00C0,0x0000,0xFF7F .hword 0xFCFF,0x0000,0x0F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0x00F8,0x0000,0xFF0F,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xF0FF .hword 0x0000,0x1F00,0xFFFF,0x00FF,0x0000,0xFF03,0xFFFF,0x00F0 .hword 0x0000,0xFF7F,0xFEFF,0x0000,0x0700,0xFFFF,0xE0FF,0x0000 .hword 0x7F00,0xFFFF,0x00FC,0x0000,0xFF0F,0xFFFF,0x0080,0x0000 .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0x80FF,0x0000,0xFF01 .hword 0xFFFF,0x00F0,0x0000,0xFF1F,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xF0FF,0x0000,0x3F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF MemorexPower: .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0x00FC,0xFF01,0x00FE,0x7F00,0x80FF,0x3F00,0xE0FF .hword 0x0F00,0xF0FF,0x0300,0xFCFF,0x0100,0xFFFF,0x0000,0xFF7F .hword 0xFFFF,0xFFFF,0x00E0,0xFF0F,0x00F8,0xFF03,0xFFFF,0xFFFF .hword 0x00FF,0x7F00,0xFFFF,0xFFFF,0xF0FF,0x0700,0xFFFF,0xFFFF .hword 0xFEFF,0x0000,0xFFFF,0xFFFF,0xFFFF,0x00C0,0xFF1F,0x00F0 .hword 0xFF07,0xFFFF,0xFFFF,0x00FE,0xFF00,0x80FF,0x3F00,0xE0FF .hword 0x0F00,0xFFFF,0xFFFF,0xFCFF,0x0100,0xFFFF,0xFFFF,0xFFFF .hword 0x0080,0xFF1F,0x00E0,0xFF0F,0x00F8,0xFF03,0x00FC,0xFF00 .hword 0x00FF,0x7F00,0xC0FF,0x1F00,0xE0FF,0x0700,0xF8FF,0x0300 .hword 0xFEFF,0x0000,0xFFFF,0xFFFF,0xFFFF,0x00C0,0xFF1F,0xFFFF .hword 0xFFFF,0x00F8,0xFF03,0xFFFF,0xFFFF,0x00FF,0x3F00,0xFFFF .hword 0xFFFF,0xF0FF,0x0700,0xFFFF,0xFFFF,0xFFFF,0x0000,0xFF7F .hword 0xFFFF,0xFFFF,0x00E0,0xFF0F,0xFFFF,0xFFFF,0xFFFF,0xFFFF MemorexTv: .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0x00F8,0xFF01,0x00FE,0x7F00,0x80FF,0x3F00,0xC0FF .hword 0x0F00,0xF0FF,0x0300,0xFCFF,0x0100,0xFEFF,0x0000,0xFF7F .hword 0xFFFF,0xFFFF,0x00E0,0xFF0F,0x00F0,0xFF03,0xFFFF,0xFFFF .hword 0x00FF,0x7F00,0xFFFF,0xFFFF,0xE0FF,0x0700,0xFFFF,0xFFFF .hword 0xFCFF,0x0000,0xFFFF,0xFFFF,0xFFFF,0x00C0,0xFF1F,0x00E0 .hword 0xFF07,0xFFFF,0xFFFF,0x00FE,0xFF00,0x00FF,0x3F00,0xC0FF .hword 0x0F00,0xF0FF,0x0700,0xF8FF,0x0100,0xFEFF,0x0000,0xFF7F .hword 0x0080,0xFF3F,0x00C0,0xFF0F,0x00F0,0xFF03,0x00FC,0xFF01 .hword 0x00FE,0x7F00,0xFFFF,0xFFFF,0xE0FF,0x0F00,0xFFFF,0xFFFF .hword 0xFCFF,0x0000,0xFFFF,0xFFFF,0xFFFF,0x00C0,0xFF1F,0xFFFF .hword 0xFFFF,0x00F8,0xFF03,0xFFFF,0xFFFF,0x00FF,0x3F00,0xFFFF .hword 0xFFFF,0xF0FF,0x0700,0xFFFF,0xFFFF,0xFEFF,0x0000,0xFFFF .hword 0xFFFF,0xFFFF,0x00E0,0xFF0F,0xFFFF,0xFFFF,0xFFFF,0xFFFF MemorexCd: .hword 0x0F00,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0x03FC,0xFFFF,0x0FFF,0xFFFF,0xFFFF,0xFFFF,0xE1FF .hword 0xFFFF,0xF8FF,0xFF7F,0xFFFF,0xFFFF,0xFFFF,0xFF3F,0xFFFF .hword 0xFFFF,0xFFFF,0x3FE0,0xFFFF,0x7FF8,0xFFFF,0xFFFF,0xFFFF .hword 0x01FF,0xFFFF,0xFFFF,0xFFFF,0xF0FF,0xFF1F,0xFFFF,0xFFFF .hword 0xFEFF,0xFF01,0xFFFF,0xFFFF,0xFFFF,0x3FC0,0xFFFF,0xFFF0 .hword 0xFFFF,0xFFFF,0xFFFF,0x03FE,0xFFFF,0x87FF,0xFFFF,0xE1FF .hword 0xFFFF,0xFFFF,0xFFFF,0xFCFF,0xFF07,0xFFFF,0xFF0F,0xFFFF .hword 0xFFFF,0xFFFF,0xFFE1,0xFFFF,0x7FF8,0xFFFF,0xFFFF,0xFFFF .hword 0x1FFF,0xFFFF,0xC3FF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0x00FE,0xFF3F,0x00FC,0xFFFF,0x1FE0,0xFCFF,0xFF0F,0x0EE0 .hword 0xFF7F,0x1C80,0xFFFF,0x06FC,0xFF07,0xF0FF,0xFF07,0x00FE .hword 0xFF3F,0x00FE,0xFF7F,0x03F0,0xFFFF,0xF0C0,0xFF1F,0x01FF .hword 0x1FF0,0xFFFF,0x3F00,0xFFFF,0xFF81,0xC0FF,0xFF0F,0xC0FF MemorexVolumeDown: .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0x00FC,0xFF00,0x00FE,0x7F00,0x80FF,0x3F00,0xC0FF .hword 0x0F00,0xF8FF,0x0300,0xFCFF,0x0100,0xFEFF,0x0000,0xFF7F .hword 0xFFFF,0xFFFF,0x00E0,0xFF0F,0x00F8,0xFF03,0xFFFF,0xFFFF .hword 0x00FF,0x7F00,0xFFFF,0xFFFF,0xE0FF,0x0700,0xFFFF,0xFFFF .hword 0xFEFF,0x0000,0xFFFF,0xFFFF,0xFFFF,0x00C0,0xFF1F,0x00F0 .hword 0xFF07,0xFFFF,0xFFFF,0x00FE,0xFF00,0x80FF,0x3F00,0xE0FF .hword 0x0F00,0xFFFF,0xFFFF,0xFCFF,0x0100,0xFFFF,0x0000,0xFF7F .hword 0xFFFF,0xFFFF,0x00E0,0xFF0F,0xFFFF,0xFFFF,0x00FC,0xFF01 .hword 0xFFFF,0xFFFF,0x80FF,0x1F00,0xF0FF,0x0F00,0xF8FF,0x0300 .hword 0xFEFF,0x0000,0xFFFF,0x0080,0xFF3F,0xFFFF,0xFFFF,0x00E0 .hword 0xFF07,0x00FC,0xFF01,0x00FE,0xFF00,0x80FF,0x3F00,0xFFFF .hword 0xFFFF,0xF0FF,0x0700,0xFFFF,0xFFFF,0xFEFF,0x0000,0xFF7F .hword 0xFFFF,0xFFFF,0x00E0,0xFF0F,0xFFFF,0xFFFF,0xFFFF,0xFFFF MemorexVolumeUp: .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0xFF7F,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0x00F8,0xFF00,0x00FF,0x7F00,0xC0FF,0x1F00,0xE0FF .hword 0x0F00,0xF8FF,0x0300,0xFCFF,0x0000,0xFFFF,0x0000,0xFF3F .hword 0xFFFF,0xFFFF,0x00E0,0xFF0F,0x00F8,0xFF03,0xFFFF,0xFFFF .hword 0x00FF,0x3F00,0xFFFF,0xFFFF,0xE0FF,0x0700,0xFFFF,0xFFFF .hword 0xFEFF,0x0000,0xFFFF,0xFFFF,0xFFFF,0x00C0,0xFF1F,0x00F0 .hword 0xFF07,0xFFFF,0xFFFF,0x00FE,0xFF00,0xC0FF,0x3F00,0xE0FF .hword 0x0F00,0xF8FF,0x0700,0xFFFF,0xFFFF,0xFEFF,0x0000,0xFF7F .hword 0xFFFF,0xFFFF,0x00E0,0xFF0F,0xFFFF,0xFFFF,0x00FC,0xFF01 .hword 0xFFFF,0xFFFF,0x80FF,0x1F00,0xF0FF,0x0700,0xFCFF,0x0300 .hword 0xFEFF,0x0000,0xFFFF,0xFFFF,0xFFFF,0x00E0,0xFF1F,0x00F0 .hword 0xFF07,0x00FC,0xFF03,0x00FF,0xFF00,0x80FF,0x3F00,0xFFFF .hword 0xFFFF,0xF8FF,0x0700,0xFFFF,0xFFFF,0xFEFF,0x0000,0xFFFF .hword 0xFFFF,0xFFFF,0x00C0,0xFF0F,0xFFFF,0xFFFF,0xFFFF,0xFFFF MemorexMute: .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000 .hword 0x0000,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF,0xFFFF .hword 0xFFFF,0x00F8,0xFF00,0x00FE,0xFF00,0x80FF,0x3F00,0xC0FF .hword 0x0F00,0xF0FF,0x0700,0xFCFF,0x0100,0xFEFF,0x0000,0xFF7F .hword 0xFFFF,0xFFFF,0x00E0,0xFF0F,0x00F0,0xFF03,0xFFFF,0xFFFF .hword 0x00FF,0x7F00,0xFFFF,0xFFFF,0xE0FF,0x0700,0xFFFF,0xFFFF .hword 0xFCFF,0x0000,0xFFFF,0xFFFF,0xFFFF,0x00C0,0xFF1F,0x00E0 .hword 0x01F8,0xFFFF,0x1FC0,0xFFFF,0x3C80,0xFF07,0x03F8,0xFFFF .hword 0x07E0,0xFFFF,0xF080,0xFF1F,0x01F8,0xFFFF,0x0FE0,0xFFFF .hword 0x7F80,0xFFFF,0xFF00,0xF0FF,0xFF01,0xF8FF,0xFF0F,0xC0FF .hword 0xFF1F,0x01FE,0xFFFF,0x07E0,0xFCFF,0xFF07,0x81FF,0xFFFF .hword 0x7F00,0xFFFF,0xFF07,0xC0FF,0xFF7F,0x01FC,0xFFFF,0xFCF0 .hword 0xFF0F,0xC0FF,0xFF0F,0xC0FF,0xFFFF,0x00FE,0xFFFF,0x0FF8 .hword 0xFCFF,0xFF07,0x00FF,0xFF70,0xC0FF,0xFF7F,0x1FE0,0xFEFF .hword 0xFF01,0xF8FF,0xFF0F,0xC0FF,0xFF7F,0x0EF0,0xFF3F,0x03F8 .align 1 InitString: .ascii "IR Controller II (dsPICDemo)\n\rMark Csele 2004\n\r" .ascii "\n\rMenu:\n\r1. Macro 1: 910 (Eighties Musik) to Home Theatre (Master Power)\n\r" .ascii "2. Macro 2: 910 Channel Select only\n\r" .ascii "3. Macro 3: 930 (Baroque) Channel Select\n\r" .ascii "M. Memorex Power ON/OFF\n\r" .ascii "U. Memorex Volume UP\n\r" .ascii "D. Memorex Volume DOWN\n\r" .asciz "\n\r" .end ;End of program code in this file