MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 1 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00001 ; list p=12f683,b=4,n=0 ; declare processor, tabs, and lines/page 00002 00003 ;********************************************************************** 00004 ; Copyright (C) 2005,2006,2007,2008 Dwayne Forsyth 00005 ; 00006 ; This program is free software; you can redistribute it and/or 00007 ; modify it under the terms of the GNU General Public License 00008 ; as published by the Free Software Foundation; either version 2 00009 ; of the License, or (at your option) any later version. 00010 ; 00011 ; This program is distributed in the hope that it will be useful, 00012 ; but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 ; GNU General Public License for more details. 00015 ; 00016 ; You should have received a copy of the GNU General Public License 00017 ; along with this program; if not, write to the 00018 ; 00019 ; Free Software Foundation, Inc. 00020 ; 51 Franklin Street, Fifth Floor 00021 ; Boston, MA 02110-1301, USA. 00022 ; 00023 ;********************************************************************** 00024 ; 00025 ; This is a merger of a number of Blinkie programs I created for different 00026 ; www.2DKits.com boards. The current goal of this code is to support all 00027 ; the 12F683 based boards, and then eventually adding of the 16F688 boards. 00028 ; 00029 ; 4RBG /w common anode (ufo and clear 5mm) .... Working 00030 ; 4RBG /w common Cathode (milk 5mm) ........... Working 00031 ; 6 BI /w bi-color LEDs. ...................... Working 00032 ; - update all for new mult patterns in eeprom logic. 00033 ; 6 BI /w mono LEDs. .......................... Working 00034 ; - want to add brightness patterns 00035 ; - update all for new mult patterns in eeprom logic. 00036 ; badge 6 bi-color plus 1 mono, no IR ......... Working 00037 ; - update all for new mult patterns in eeprom logic. 00038 ; badge 7 LED /w mono LEDs, no IR ............. Working 00039 ; - update all for new mult patterns in eeprom logic. 00040 ; 19 LED Stick ................................ Working 00041 ; 19 circle /w mono............................ Working 00042 ; - draft 00043 ; 19 circle /w bi-color........................ Working 00044 ; - Draft 00045 ; RGB Stick ................................... Draft 00046 ; 3x3 /w mono ................................. Need 00047 ; 3x3 /w bi-color ............................. Draft 00048 ; 16x8x2 ...................................... Working on 00049 ; 00050 ; Dwayne Forsyth wrote the original code, Dwayne pulled a number of updates, 00051 ; code cleanup, and patterns from Dave Holle. 00052 ; 00053 ;********************************************************************** MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 2 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00054 ; 00055 ; Filename: generic_683.asm 00056 ; Date: 04/05/2007 00057 ; 00058 ; Author: Dwayne Forsyth 00059 ; email: Dwayne@2DKits.com 00060 ; Company: www.2DKits.com 00061 ; 502 Rue Orleanais 00062 ; Deer Park, IL 60010 00063 ; 00064 ; Help from: Dave Holle 00065 ; 00066 ;********************************************************************** 00067 00068 errorlevel -302 ; suppress banking messages 00069 #ifdef __16F726 00070 __CONFIG _CONFIG1, _CP_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF 00071 #else 00072 #ifdef __16F886 2007 28C4 00073 __CONFIG _CONFIG1, _DEBUG_OFF & _LVP_OFF & _FCMEN_ON & _IESO_OFF & _BOR_OFF & _CPD_OFF & _CP_OFF & _MCLRE_OFF & _PWRTE_ON & _WDT_OFF & _INTOSCIO 2008 3EFF 00074 __CONFIG _CONFIG2, _WRT_OFF & _BOR21V 00075 #else 00076 __CONFIG _CP_OFF & _CPD_OFF & _BOD_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_OFF & _ FCMEN_OFF & _IESO_OFF 00077 #endif 00078 #endif 00079 00080 ; '__CONFIG' directive is used to embed configuration data within .asm file. 00081 ; The labels following the directive are located in the respective .inc file. 00082 ; See respective data sheet for additional information on configuration word. 00083 00084 ; this SIM_DEBUG disables the buttons and IR inputs so the code will run the patterns. 00085 ; #define SIM_DEBUG 00086 00087 ;---------------------------------------------------- 00088 ; Select 1 board config! 00089 ;---------------------------------------------------- 00090 ;#define RGB4 00091 ;#define RGB4_Common_Cathode 00092 ;#define BI6 00093 ;#define BI6_MONO 00094 ;#define BI6_BADGE 00095 ;#define BI6_BADGE_MONO 00096 ;#define S19 00097 ;#define C19 00098 ;#define C19_MONO 00099 ;#define M3X3 00100 ;#define M3X3_MONO 00101 ;#define SRGB 00102 ;#define SRGB_Common_Cathode 00103 ;#define M8X16 ; Rom "J" 00104 ;#define C12 ; Rom "M" MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 3 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00105 ;#define C12_MONO ; Rom "L" 00106 #define C12_SINGLE ; Rom "K" 00107 ;#define C12_SINGLE_MONO ; Rom "P" 00108 ;---------------------------------------------------- 00109 00110 ;********************************* 00111 ; 4RBG /w common anode (ufo and clear 5mm) 00112 ;********************************* 00113 00114 #ifdef RGB4 00115 #define PATTERN1 00116 #define PATTERN2 00117 #define PATTERN3 00118 #define PATTERN4 00119 #define PATTERN20 00120 #define DISPLAY_1BIT_C 00121 #define DISPLAY_2BIT_C 00122 #define ENABLE_IR 00123 #include ; processor specific variable definitions 00124 LIST P=PIC12F683 00125 NUM_TAB equ d'14' ;highest pattern table number 00126 #endif 00127 00128 ;********************************* 00129 ; 4RBG /w common Cathode (milk 5mm and 10mm) 00130 ;********************************* 00131 00132 #ifdef RGB4_Common_Cathode 00133 #define RGB4 00134 #define Common_Cathode 00135 #define PATTERN1 00136 #define PATTERN2 00137 #define PATTERN3 00138 #define PATTERN4 00139 #define PATTERN20 00140 #define DISPLAY_1BIT_C 00141 #define DISPLAY_2BIT_C 00142 #define ENABLE_IR 00143 #include ; processor specific variable definitions 00144 LIST P=PIC12F683 00145 NUM_TAB equ d'14' ;highest pattern table number 00146 #endif 00147 00148 ;********************************* 00149 ; 6 BI /w bi-color LEDs. 00150 ;********************************* 00151 00152 #ifdef BI6 00153 #define BIN2LED 00154 #define PATTERN1 00155 #define PATTERN3 00156 #define DISPLAY_1BIT_C 00157 #define DISPLAY_2BIT_C MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 4 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00158 #define ENABLE_IR 00159 #include ; processor specific variable definitions 00160 LIST P=PIC12F683 00161 NUM_TAB equ d'14' ;highest pattern table number 00162 #endif 00163 00164 ;********************************* 00165 ; 6 BI /w mono LEDs. 00166 ;********************************* 00167 00168 #ifdef BI6_MONO 00169 #define BI6 00170 #define MONO 00171 #define FLIPBYTE 00172 #define PATTERN5 00173 #define PATTERN11 00174 #define DISPLAY_1BIT_A 00175 #define DISPLAY_2BIT_A 00176 #define ENABLE_IR 00177 #include ; processor specific variable definitions 00178 LIST P=PIC12F683 00179 NUM_TAB equ d'17' ;highest pattern table number 00180 #endif 00181 00182 ;********************************* 00183 ; badge 6 bi-color plus 1 mono LEDs. 00184 ;********************************* 00185 00186 #ifdef BI6_BADGE 00187 #define BI6 00188 #define BIN2LED 00189 #define PATTERN10 00190 #define PATTERN3 00191 #define BADGE 00192 #define DISPLAY_1BIT_C 00193 #define DISPLAY_2BIT_C 00194 #include ; processor specific variable definitions 00195 LIST P=PIC12F683 00196 NUM_TAB equ d'14' ;highest pattern table number 00197 #endif 00198 00199 ;********************************* 00200 ; badge 6 mono LEDs. 00201 ;********************************* 00202 00203 #ifdef BI6_BADGE_MONO 00204 #define BI6 00205 #define MONO 00206 #define BADGE 00207 #define PATTERN5 00208 #define PATTERN11 00209 #define FLIPBYTE 00210 #define DISPLAY_1BIT_A MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 5 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00211 #define DISPLAY_2BIT_A 00212 #include ; processor specific variable definitions 00213 LIST P=PIC12F683 00214 NUM_TAB equ d'19' ;highest pattern table number 00215 #endif 00216 00217 ;#define DREW ; special pattern in EEProm for Drew 00218 00219 ;********************************* 00220 ; 19 LED Stick 00221 ;********************************* 00222 00223 #ifdef S19 00224 #define PATTERN6 00225 #define PATTERN7 00226 #define PATTERN8 00227 #define FLIPBYTE 00228 #define DISPLAY_1BIT_D 00229 #define ENABLE_IR 00230 #include ; processor specific variable definitions 00231 LIST P=PIC12F683 00232 NUM_TAB equ d'23' ;highest pattern table number 00233 #endif 00234 00235 ;********************************* 00236 ; 19 Circle bicolor 00237 ;********************************* 00238 00239 #ifdef C19 00240 #define PATTERN9 00241 #define PATTERN12 00242 #define PATTERN13 00243 #define BIN2LED 00244 #define RANDOM 00245 #define DEDICATED_BUTTON 00246 #define DISPLAY_1BIT_B 00247 #define DISPLAY_2BIT_D 00248 #define ENABLE_IR 00249 #include ; processor specific variable definitions 00250 LIST P=PIC16F688 00251 NUM_TAB equ d'25' ;highest pattern table number 00252 #endif 00253 00254 ;********************************* 00255 ; 19 Circle mono 00256 ;********************************* 00257 00258 #ifdef C19_MONO 00259 #define MONO 00260 #define C19 00261 #define PATTERN9 00262 #define PATTERN12 00263 #define PATTERN14 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 6 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00264 #define RANDOM 00265 #define BIN2LED 00266 #define DEDICATED_BUTTON 00267 #define DISPLAY_1BIT_B 00268 #define DISPLAY_2BIT_E 00269 #define ENABLE_IR 00270 #include ; processor specific variable definitions 00271 LIST P=PIC16F688 00272 NUM_TAB equ d'25' ;highest pattern table number 00273 #endif 00274 00275 ;********************************* 00276 ; 3x3 matrix Bi-color 00277 ;********************************* 00278 00279 #ifdef M3X3 00280 #define PATTERN6 00281 #define PATTERN19 00282 #define PATTERN21 00283 #define BIN2LED 00284 #define DISPLAY_1BIT_F 00285 #define ENABLE_IR 00286 #define MULTIBUTTON 00287 #define RANDOM 00288 #include ; processor specific variable definitions 00289 LIST P=PIC12F683 00290 NUM_TAB equ d'14' ;highest pattern table number 00291 #endif 00292 00293 ;********************************* 00294 ; 3x3 matrix mono 00295 ;********************************* 00296 00297 #ifdef M3X3_MONO 00298 #define M3X3 00299 #define MONO 00300 #define PATTERN6 00301 #define PATTERN19 00302 #define PATTERN21 00303 #define BIN2LED 00304 #define DISPLAY_1BIT_F 00305 #define ENABLE_IR 00306 #define MULTIBUTTON 00307 #define RANDOM 00308 #include ; processor specific variable definitions 00309 LIST P=PIC12F683 00310 NUM_TAB equ d'14' ;highest pattern table number 00311 #endif 00312 00313 ;********************************* 00314 ; RGB Stick (new UFO 00315 ;********************************* 00316 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 7 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00317 #ifdef SRGB 00318 #define PATTERN15 00319 #define PATTERN16 00320 #define PATTERN17 00321 #define PATTERN18 00322 #define DEDICATED_BUTTON 00323 #define DEDICATED_BUTTON2 00324 #define DISPLAY_1BIT_E 00325 #define ENABLE_IR 00326 #include ; processor specific variable definitions 00327 LIST P=PIC16F688 00328 NUM_TAB equ d'15' ;highest pattern table number 00329 #endif 00330 00331 ;********************************* 00332 ; RGB Stick 00333 ;********************************* 00334 00335 #ifdef SRGB_Common_Cathode 00336 #define SRGB 00337 #define Common_Cathode 00338 #define PATTERN15 00339 #define PATTERN16 00340 #define PATTERN17 00341 #define PATTERN18 00342 #define DEDICATED_BUTTON 00343 #define DEDICATED_BUTTON2 00344 #define DISPLAY_1BIT_E 00345 #define ENABLE_IR 00346 #include ; processor specific variable definitions 00347 LIST P=PIC16F688 00348 NUM_TAB equ d'15' ;highest pattern table number 00349 #endif 00350 00351 ;********************************* 00352 ; 8x16 Matrix 00353 ;********************************* 00354 00355 #ifdef M8X16 00356 #define PATTERN12 00357 #define PATTERN22 00358 #define PATTERN24 00359 #define PATTERN25 00360 #define PATTERN26 00361 #define BIN2LED 00362 #define RANDOM 00363 #define DEDICATED_BUTTON 00364 #define DISPLAY_1BIT_G 00365 ;#define DISPLAY_2BIT_D 00366 #define ENABLE_IR 00367 #include ; processor specific variable definitions 00368 LIST P=PIC16F886 00369 NUM_TAB equ d'18' ;highest pattern table number MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 8 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00370 #endif 00371 00372 ;********************************* 00373 ; 12 Double Bi-color Circle 00374 ;********************************* 00375 00376 #ifdef C12 00377 #define PATTERN23 00378 #define PATTERN27 00379 #define BIN2LED 00380 #define RANDOM 00381 #define DEDICATED_BUTTON 00382 #define DEDICATED_BUTTON2 00383 #define DISPLAY_1BIT_H 00384 #define FLIPBYTE 00385 ;#define DISPLAY_2BIT_D 00386 #define ENABLE_IR 00387 #include ; processor specific variable definitions 00388 LIST P=PIC16F886 00389 NUM_TAB equ d'14' ;highest pattern table number 00390 #endif 00391 00392 ;********************************* 00393 ; 16 Double Mono Circle 00394 ;********************************* 00395 00396 #ifdef C12_MONO 00397 #define C12 00398 #define MONO 00399 #define PATTERN23 00400 #define PATTERN27 00401 #define BIN2LED 00402 #define RANDOM 00403 #define DEDICATED_BUTTON 00404 #define DEDICATED_BUTTON2 00405 #define DISPLAY_1BIT_H 00406 #define FLIPBYTE 00407 ;#define DISPLAY_2BIT_D 00408 #define ENABLE_IR 00409 #include ; processor specific variable definitions 00410 LIST P=PIC16F886 00411 NUM_TAB equ d'14' ;highest pattern table number 00412 #endif 00413 00414 ;********************************* 00415 ; 12 Single Bi-color Circle 00416 ;********************************* 00417 00418 #ifdef C12_SINGLE 00419 #define C12 00420 #define SINGLE 00421 #define PATTERN23 00422 #define PATTERN27 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 9 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00423 #define BIN2LED 00424 #define RANDOM 00425 #define DEDICATED_BUTTON 00426 #define DEDICATED_BUTTON2 00427 #define DISPLAY_1BIT_H 00428 #define FLIPBYTE 00429 ;#define DISPLAY_2BIT_D 00430 #define ENABLE_IR 00431 #include ; processor specific variable definitions 00001 LIST 00002 ; P16F886.INC Standard Header File, Version 1.00 Microchip Technology, Inc. 00614 LIST 00432 LIST P=PIC16F886 0000000E 00433 NUM_TAB equ d'14' ;highest pattern table number 00434 #endif 00435 00436 ;********************************* 00437 ; 16 Single Mono Circle 00438 ;********************************* 00439 00440 #ifdef C12_SINGLE_MONO 00441 #define C12 00442 #define SINGLE 00443 #define MONO 00444 #define PATTERN23 00445 #define PATTERN27 00446 #define BIN2LED 00447 #define RANDOM 00448 #define DEDICATED_BUTTON 00449 #define DEDICATED_BUTTON2 00450 #define DISPLAY_1BIT_H 00451 #define FLIPBYTE 00452 ;#define DISPLAY_2BIT_D 00453 #define ENABLE_IR 00454 #include ; processor specific variable definitions 00455 LIST P=PIC16F886 00456 NUM_TAB equ d'14' ;highest pattern table number 00457 #endif 00458 00459 00460 ;********************************************************************** 00461 ; Macros 00462 ;********************************************************************** 00463 ; bank select macros 00464 setbank0 macro 00465 bcf STATUS,RP0 ; select bank 0 00466 bcf STATUS,RP1 00467 endm 00468 00469 setbank1 macro 00470 bsf STATUS,RP0 ; select bank 1 00471 bcf STATUS,RP1 00472 endm MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 10 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00473 00000020 00474 mem = 20 0000007F 00475 mem2 = 0x7F 000000A0 00476 mem3 = 0xa0 00477 00478 var macro name 00479 name equ mem 00480 mem = mem + 1 00481 if (mem >= mem2) 00482 error 'Too much var space used' 00483 endif 00484 endm 00485 00486 dupvar macro name, name2 00487 name equ name2 00488 endm 00489 00490 var_all_bank macro name 00491 name equ mem2 00492 mem2 = mem2 - 1 00493 if (mem >= mem2) 00494 error 'Too much var space used' 00495 endm 00496 000000A0 00497 mem3 = 0xa0 00498 var_bank2 macro name 00499 name equ mem3 00500 mem3 = mem3 + 1 00501 if (mem3 >= 0xef) 00502 error 'Too much var space used' 00503 endm 00504 00000000 00505 patternc = 0 00506 start_pattern macro typem, delaym 00507 00508 table#v(patternc) 00509 if (typem == 1) || (typem == 6) || (typem == 0x15) 00510 leng = (endpat#v(patternc)-$-3)/3 ;tbltype1,speed,length 00511 else 00512 if (typem == 3) || (typem == 0x0b) || (typem == 0x10) || (typem == 0x13) || (typem == 0x14)|| (typem == 0x18) 00513 leng = (endpat#v(patternc)-$-3)/2 ;tbltype1,speed,length 00514 else 00515 if (typem == 9) || (typem == 0x0e) 00516 leng =(endpat#v(patternc)-$-3)/5 ;tbltype1,speed,length 00517 else 00518 if (typem == 0x0a) 00519 leng =(endpat#v(patternc)-$-3)/4 ;tbltype1,speed,length 00520 else 00521 if (typem == 0x0d) 00522 leng =(endpat#v(patternc)-$-3)/(9+1) ;tbltype1,speed,length 00523 else 00524 if (typem == 0x0f) || (typem == 0x12)|| (typem == 0x17)||(typem == 0x1b) MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 11 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00525 leng =(endpat#v(patternc)-$-3)/(6) ;tbltype1,speed,length 00526 else 00527 if (typem == 0x11) 00528 leng = (endpat#v(patternc)-$-3)/(9+4) ;tbltype1,speed,length 00529 else 00530 if (typem == 0x16) || (typem == 0x1a) 00531 leng = (endpat#v(patternc)-$-3)/0x20 ;tbltype1,speed,length 00532 else 00533 leng =(endpat#v(patternc)-$-3) 00534 endif 00535 endif 00536 endif 00537 endif 00538 endif 00539 endif 00540 endif 00541 endif 00542 expand 00543 if ($ < 0x2100) 00544 dt typem,delaym,(leng) 00545 else 00546 de typem,delaym,(leng) 00547 endif 00548 endm 00549 00550 storedata macro stuff 00551 if ($ < 0x2100) 00552 dt stuff 00553 else 00554 de stuff 00555 endif 00556 endm 00557 00558 end_pattern macro 00559 endpat#v(patternc) 00560 patternc = patternc + 1 00561 endm 00562 00563 mult_nop macro nup_count 00564 local i = nup_count 00565 while i > 3 00566 call Lcontinue ;4 cycles 00567 i -= 4 00568 endw 00569 while i > 1 00570 goto $+1 ;2 cycles 00571 i -= 2 00572 endw 00573 if i > 0 00574 nop ;1 cycle 00575 endif 00576 endm 00577 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 12 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00578 LedOut macro word,reg_dir,port 00579 movfw TMR0 00580 subwf word,w 00581 btfss STATUS,C 00582 bsf reg_dir, port 00583 endm 00584 00585 LedOutInd macro word,reg_dir,port 00586 movlw word 00587 movwf FSR ; set indirect pointer to word 00588 movfw TMR0 00589 subwf INDF,w 00590 btfss STATUS,C 00591 bsf reg_dir, port 00592 endm 00593 00594 ; Indirect Paged 00595 LedOutIndP macro page,word,reg_dir,port 00596 if (page == 0) 00597 bcf STATUS,IRP 00598 else 00599 bsf STATUS,IRP 00600 endif 00601 movlw (word & 0xff) 00602 movwf FSR ; set indirect pointer to word 00603 movfw TMR0 00604 subwf INDF,w 00605 btfss STATUS,C 00606 bsf reg_dir, port 00607 endm 00608 00609 LedOutL macro word,reg_dir,port 00610 swapf word,w 00611 movwf temp4 00612 movfw TMR0 00613 subwf temp4,w 00614 btfss STATUS,C 00615 bsf reg_dir, port 00616 endm 00617 00618 LedOutH macro word,reg_dir,port 00619 nop 00620 nop 00621 movfw TMR0 00622 subwf word,w 00623 btfss STATUS,C 00624 bsf reg_dir, port 00625 endm 00626 00627 state_tbl macro num,zero,one,flag 00628 Lstate#v(num) 00629 #ifndef MULTIBUTTON 00630 if (flag == 0) MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 13 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00631 bcf button,0 00632 movlw 0x30 00633 movwf butcount 00634 endif 00635 if (flag == 1) 00636 bsf button,0 00637 endif 00638 #endif 00639 btfsc IR_in,0 00640 goto Lstate#v(num)a 00641 00642 movlw zero 00643 movwf instate 00644 00645 goto Lcontinue 00646 00647 Lstate#v(num)a 00648 movlw one 00649 movwf instate 00650 00651 goto Lcontinue 00652 endm 00653 00654 state2_tbl macro num, name, offset 00655 Lstate#v(num) 00656 ; save the 1st half of word 00657 movf IR_in,w ; save 1st half 00658 movwf IR_lhalf 00659 incf instate,f 00660 00661 goto Lcontinue 00662 00663 Lstate#v(num+1) 00664 ; save the 2nd half of word 00665 ; check for protocal error should get 01 or 10 00666 movf IR_lhalf,w 00667 xorwf IR_in,w 00668 btfss STATUS,Z 00669 goto Lstate#v(num+1)a 00670 clrf instate ; error state = zero 00671 00672 goto Lcontinue 00673 00674 ; set the correct bit in output vars. 00675 Lstate#v(num+1)a 00676 btfsc IR_in,0 00677 bcf name,offset 00678 btfss IR_in,0 00679 bsf name,offset 00680 00681 incf instate,f 00682 goto Lcontinue 00683 endm MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 14 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00684 00685 entry macro a0,a1,a2 00686 dt a0,a1,a2 00687 endm 00688 00689 tbltype1 macro speed,length 00690 if (length > 2) & (length < d'256') 00691 dt 0x01,speed,length 00692 else 00693 error 'pattern length must be > 2 and < 256' 00694 endif 00695 endm 00696 00697 make_mtab macro numtab 00698 local i = 0 00699 while i <= numtab 00700 dt HIGH table#v(i), LOW table#v(i) 00701 i += 1 00702 endw 00703 endm 00704 00705 make_state_jump_table macro max_state 00706 local i = 0 00707 while i <= max_state 00708 dt HIGH Lstate#v(i), LOW Lstate#v(i) 00709 i += 1 00710 endw 00711 endm 00712 00713 00714 #ifdef __12F683 00715 PORTA EQU GPIO 00716 TRISA EQU TRISIO 00717 NOT_RAPU EQU NOT_GPPU 00718 #endif 00719 00720 ; ++-------- A7 A6 unimplemented (0) 00721 ; || +------ A4 IR LED output (0) 00722 ; || |+----- A3 detector/button input (1) 00723 ; || || 00724 ; b'00101111' ;set LED matrix pins to input (tri-stated) 00725 ; | ||| 00726 ; +--+++-- LED matrix on A5 A2 A1 A0 (1) 00727 00728 ;********************************************************************** 0000 00729 ORG 0x000 ; processor reset vector 00730 ;********************************************************************** 0000 2D9F 00731 goto main ; go to beginning of program 00732 00733 ;********************************************************************** 0004 00734 ORG 0x004 ; interrupt vector location 00735 ;********************************************************************** 00736 var_all_bank w_temp ; variable used for context saving MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 15 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000007F M w_temp equ mem2 0000007E M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 00737 var_all_bank status_temp ; variable used for context saving 0000007E M status_temp equ mem2 0000007D M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 00738 00739 #ifdef __16F688 00740 var_all_bank fsr_save 00741 var_all_bank pclath_temp 00742 #endif 00743 00744 #ifdef __16F726 00745 var_all_bank fsr_save 00746 var_all_bank pclath_temp 00747 #endif 00748 00749 #ifdef __16F886 00750 var_all_bank fsr_save 0000007D M fsr_save equ mem2 0000007C M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 00751 var_all_bank pclath_temp 0000007C M pclath_temp equ mem2 0000007B M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 00752 #endif 00753 00754 00755 var nextf ; flags for timing loops 00000020 M nextf equ mem 00000021 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00756 ; bit 0 is one display cycle (890 usec) 00757 ; bit 1 is about 1 minute 00758 var dcycle ; stobe counter [0-3] 00000021 M dcycle equ mem 00000022 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00759 var count1 ; lower bit counter 00000022 M count1 equ mem 00000023 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 16 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif 00760 var count2 ; higher bit counter. 00000023 M count2 equ mem 00000024 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00761 00762 #ifdef __12F683 00763 movwf w_temp ; copy W to TEMP register 00764 swapf STATUS,w ; Swap status to be saved into W 00765 clrf STATUS ; Bank 0 00766 movwf status_temp ; save off contents of PCLATH register 00767 #else 0004 00FF 00768 movwf w_temp ; save off current W register contents 0005 0803 00769 movf STATUS,w ; move status register into W register 0006 00FE 00770 movwf status_temp ; save off contents of STATUS register 0007 080A 00771 movf PCLATH,w ; move pclath register into W register 0008 00FC 00772 movwf pclath_temp ; save off contents of PCLATH register 0009 0804 00773 movf FSR,w 000A 00FD 00774 movwf fsr_save 00775 #endif 00776 000B 00777 here 00778 setbank0 000B 1283 M bcf STATUS,RP0 ; select bank 0 000C 1303 M bcf STATUS,RP1 000D 3000 008A 00779 pageselw here 00780 ; 00781 ; set tick interupt to 889ms for IR RC5 protocal 1/2 digit. 00782 ; an Interupt every 889us /w 8mhz internal osc 00783 ; 00784 00785 #define TICK_VALUE D'35' 00786 000F 3023 00787 movlw TICK_VALUE 0010 0081 00788 movwf TMR0 00789 ; 00790 ; increment the stobe and duration counters 00791 ; 00792 0011 0AA1 00793 incf dcycle,f 00794 00795 #ifdef RGB4 00796 movlw 0x04 00797 #else 00798 #ifdef BI6 00799 movlw 0x04 00800 #else 00801 #ifdef S19 00802 movlw 0x05 00803 #else 00804 #ifdef C19 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 17 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00805 movlw 0x07 00806 #else 00807 #ifdef M3X3 00808 movlw 0x05 00809 #else 00810 #ifdef SRGB 00811 movlw 0x07 00812 #else 00813 #ifdef M8X16 00814 movlw 0x10 00815 #else 00816 #ifdef C12 0012 3006 00817 movlw 0x06 00818 #else 00819 error "unknown board strobe type" 00820 #endif 00821 #endif 00822 #endif 00823 #endif 00824 #endif 00825 #endif 00826 #endif 00827 #endif 00828 0013 0221 00829 subwf dcycle,w 0014 1803 00830 btfsc STATUS,C 0015 01A1 00831 clrf dcycle 00832 0016 1420 00833 bsf nextf,0 00834 0017 0FA2 00835 incfsz count1,f 0018 281C 00836 goto skip1 00837 0019 0FA3 00838 incfsz count2,f 001A 281C 00839 goto skip1 00840 001B 14A0 00841 bsf nextf,1 00842 001C 00843 skip1 00844 001C 083D 00845 movf scount,w ; F22 001D 3E00 00846 addlw 0 ; F23 001E 1903 00847 btfsc STATUS,Z ; F24 001F 283C 00848 goto send_nothing ; F25 00849 0020 1C2E 00850 btfss tx_1,0 ; F26 0021 283A 00851 goto send_zero ; F27 00852 00853 ;-------------------------------------------------------------------------------------- 0022 00854 send_one ; we are slaming the 36K IR siginal, its like a busy wait! 00855 ;-------------------------------------------------------------------------------------- 00856 var repeat 00000024 M repeat equ mem MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 18 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000025 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00857 #ifdef S19 00858 setbank1 00859 movlw b'00011010' ;set A0 & A5 led to output 00860 movwf TRISA 00861 setbank0 00862 #define IRBIT 0 00863 #define IRPORT PORTA 00864 #else 00865 #ifdef C12 00866 setbank1 0022 1683 M bsf STATUS,RP0 ; select bank 1 0023 1303 M bcf STATUS,RP1 0024 30DB 00867 movlw b'11011011' ;set B2 & B5 led to output 0025 0086 00868 movwf TRISB 00869 setbank0 0026 1283 M bcf STATUS,RP0 ; select bank 0 0027 1303 M bcf STATUS,RP1 00870 #define IRBIT 2 00871 #define IRPORT PORTB 00872 #else 00873 #ifdef M8X16 00874 #define IRBIT 1 00875 #define IRPORT PORTC 00876 #else 00877 #ifdef M3X3 00878 setbank1 00879 movlw b'00111001' ;set A1 & A2 led to output 00880 movwf TRISA 00881 setbank0 00882 #define IRBIT 1 00883 #define IRPORT PORTA 00884 #else 00885 #ifdef SRGB 00886 #define IRBIT 1 00887 #define IRPORT PORTA 00888 #else 00889 #define IRBIT 4 00890 #define IRPORT PORTA 00891 #endif 00892 #endif 00893 #endif 00894 #endif 00895 #endif 00896 0028 0186 00897 clrf IRPORT 0029 1506 00898 bsf IRPORT,IRBIT ; A01 00899 002A 235B 00900 call get_next_tx_bit ; 2 + 11 cycles A04-A16 00901 ; mult_nop d'9' ; A17-A25 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 19 LOC OBJECT CODE LINE SOURCE TEXT VALUE 002B 3001 00902 movlw 01h 002C 2365 00903 call qdelay ; 6 + (1 * 3) = 9 ; A17-A25 002D 0000 00904 nop 00905 002E 301E 00906 movlw 0x1E ; C26 (23) 002F 00A4 00907 movwf repeat ; C27 0030 00908 repeat_loop 0030 1106 00909 bcf IRPORT,IRBIT ; D01 00910 00911 ; mult_nop d'26' ; D02-D27 0031 3007 00912 movlw 07h 0032 2365 00913 call qdelay ; 6 + (7 * 3) = 27 ; D02-D27 00914 0033 1506 00915 bsf IRPORT,IRBIT ; E01 (27) 00916 00917 ; mult_nop d'23' ; E02-E24 0034 3006 00918 movlw 06h ; 6+(6 * 3) = 22 ; E02-E24 0035 2365 00919 call qdelay 00920 0036 0BA4 00921 decfsz repeat,f ; E25 (24) 0037 2830 00922 goto repeat_loop ; E26/E27 00923 0038 1106 00924 bcf IRPORT,IRBIT 0039 285E 00925 goto exit_tx 00926 00927 ;-------------------------------------------------------------------------------------- 003A 00928 send_zero ; we are going to release all the CPU time to the main line for display. 00929 ;-------------------------------------------------------------------------------------- 00930 003A 235B 00931 call get_next_tx_bit ; 2 + 11 cycles A04-A16 003B 283E 00932 goto drive_main_leds 00933 00934 ;-------------------------------------------------------------------------------------- 003C 00935 send_nothing ; Drive the main LEDs. 00936 ;-------------------------------------------------------------------------------------- 00937 003C 2350 00938 call read_ir_in 00939 #ifdef DEDICATED_BUTTON 003D 2349 00940 call read_button_in 00941 #endif 00942 ; goto drive_main_leds 00943 00944 ;-------------------------------------------------------------------------------------- 003E 00945 drive_main_leds ; Drive the main LEDs. 00946 ;-------------------------------------------------------------------------------------- 00947 var fcount 00000025 M fcount equ mem 00000026 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00948 #ifndef S19 00949 #ifndef C19 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 20 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00950 #ifndef SRGB 00951 #ifndef M3X3 00952 #ifndef M8X16 00953 #ifndef C12 00954 var Ar_reg 00955 var Ag_reg 00956 var Ab_reg 00957 var Br_reg 00958 var Bg_reg 00959 var Bb_reg 00960 var Cr_reg 00961 var Cg_reg 00962 var Cb_reg 00963 var Dr_reg 00964 var Dg_reg 00965 var Db_reg 00966 #endif 00967 #endif 00968 #endif 00969 #endif 00970 #endif 00971 #endif 00972 00973 #ifdef BADGE 00974 var Center_reg 00975 #endif 00976 #ifdef M3X3 00977 var A0_A1_reg 00978 var A0_A2_reg 00979 var A0_A4_reg 00980 var A0_A5_reg 00981 var A1_A0_reg 00982 var A1_A2_reg 00983 var A1_A4_reg 00984 var A1_A5_reg 00985 var A2_A0_reg 00986 var A2_A1_reg 00987 var A2_A4_reg 00988 var A2_A5_reg 00989 var A4_A0_reg 00990 var A4_A1_reg 00991 var A4_A2_reg 00992 var A4_A5_reg 00993 var A5_A0_reg 00994 var A5_A1_reg 00995 var A5_A2_reg 00996 var A5_A4_reg 00997 #endif 00998 #ifdef S19 00999 var A0_A1_reg 01000 var A0_A2_reg 01001 var A0_A4_reg 01002 var A0_A5_reg MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 21 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01003 var A1_A0_reg 01004 var A1_A2_reg 01005 var A1_A4_reg 01006 var A1_A5_reg 01007 var A2_A0_reg 01008 var A2_A1_reg 01009 var A2_A4_reg 01010 var A2_A5_reg 01011 var A4_A0_reg 01012 var A4_A1_reg 01013 var A4_A2_reg 01014 var A4_A5_reg 01015 var A5_A0_reg 01016 var A5_A1_reg 01017 var A5_A2_reg 01018 var A5_A4_reg 01019 #endif 01020 #ifdef C19 01021 var_bank2 A0_A1_reg 01022 var_bank2 A0_A2_reg 01023 var_bank2 A0_C0_reg 01024 var_bank2 A0_C1_reg 01025 var_bank2 A0_C2_reg 01026 var_bank2 A0_C4_reg 01027 01028 var_bank2 A1_A0_reg 01029 var_bank2 A1_A2_reg 01030 var_bank2 A1_C0_reg 01031 var_bank2 A1_C1_reg 01032 var_bank2 A1_C2_reg 01033 var_bank2 A1_C4_reg 01034 01035 var_bank2 A2_A0_reg 01036 var_bank2 A2_A1_reg 01037 var_bank2 A2_C0_reg 01038 var_bank2 A2_C1_reg 01039 var_bank2 A2_C2_reg 01040 var_bank2 A2_C4_reg 01041 01042 var_bank2 C0_A0_reg 01043 var_bank2 C0_A1_reg 01044 var_bank2 C0_A2_reg 01045 var_bank2 C0_C1_reg 01046 var_bank2 C0_C2_reg 01047 var_bank2 C0_C4_reg 01048 01049 var_bank2 C1_A0_reg 01050 var_bank2 C1_A1_reg 01051 var_bank2 C1_A2_reg 01052 var_bank2 C1_C0_reg 01053 var_bank2 C1_C2_reg 01054 var_bank2 C1_C4_reg 01055 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 22 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01056 var_bank2 C2_A0_reg 01057 var_bank2 C2_A1_reg 01058 var_bank2 C2_A2_reg 01059 var_bank2 C2_C0_reg 01060 var_bank2 C2_C1_reg 01061 var_bank2 C2_C4_reg 01062 01063 var_bank2 C4_A0_reg 01064 var_bank2 C4_A1_reg 01065 var_bank2 C4_A2_reg 01066 var_bank2 C4_C0_reg 01067 var_bank2 C4_C1_reg 01068 var_bank2 C4_C2_reg 01069 #endif 01070 #ifdef SRGB 01071 ; 01072 ; The shifter pattern needs the colored LEDs defined sequentially 01073 ; 01074 var_bank2 C5_C3_reg ; 01 R 01075 var_bank2 C2_C3_reg ; 02 R 01076 var_bank2 C0_C4_reg ; 03 R 01077 var_bank2 C5_C4_reg ; 04 R 01078 var_bank2 C3_C5_reg ; 05 R 01079 var_bank2 C4_C5_reg ; 06 R 01080 var_bank2 A2_C0_reg ; 07 R 01081 var_bank2 C3_C0_reg ; 08 R 01082 var_bank2 C0_A2_reg ; 09 R 01083 var_bank2 C3_A2_reg ; 10 R 01084 var_bank2 A2_C2_reg ; 11 R 01085 var_bank2 C3_C2_reg ; 12 R 01086 var_bank2 A2_C1_reg ; 13 R 01087 var_bank2 C3_C1_reg ; 14 R 01088 01089 var_bank2 A2_C3_reg ; 01 G 01090 var_bank2 C0_C3_reg ; 02 G 01091 var_bank2 A2_C4_reg ; 03 G 01092 var_bank2 C3_C4_reg ; 04 G 01093 var_bank2 C0_C5_reg ; 05 G 01094 var_bank2 A2_C5_reg ; 06 G 01095 var_bank2 C4_C0_reg ; 07 G 01096 var_bank2 C5_C0_reg ; 08 G 01097 var_bank2 C4_A2_reg ; 09 G 01098 var_bank2 C5_A2_reg ; 10 G 01099 var_bank2 C4_C2_reg ; 11 G 01100 var_bank2 C5_C2_reg ; 12 G 01101 var_bank2 C4_C1_reg ; 13 G 01102 var_bank2 C5_C1_reg ; 14 G 01103 01104 var_bank2 C1_C3_reg ; 01 B ? 01105 var_bank2 C4_C3_reg 01106 var_bank2 C2_C4_reg ; 03 B 01107 var_bank2 C1_C4_reg ; 04 B 01108 var_bank2 C1_C5_reg ; 05 B MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 23 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01109 var_bank2 C2_C5_reg ; 06 B 01110 var_bank2 C2_C0_reg ; 07 B 01111 var_bank2 C1_C0_reg ; 08 B 01112 var_bank2 C2_A2_reg ; 09 B 01113 var_bank2 C1_A2_reg ; 10 B 01114 var_bank2 C1_C2_reg ; 11 B 01115 var_bank2 C0_C2_reg 01116 var_bank2 C2_C1_reg ; 13 B ? 01117 var_bank2 C0_C1_reg ; 14 B 01118 01119 #endif 01120 01121 #ifdef M8X16 01122 01123 ; Bank 1 01124 Led_G00 equ 0x0b0 01125 Led_G01 equ 0x0b1 01126 Led_G02 equ 0x0b2 01127 Led_G03 equ 0x0b3 01128 Led_G04 equ 0x0b4 01129 Led_G05 equ 0x0b5 01130 Led_G06 equ 0x0b6 01131 Led_G07 equ 0x0b7 01132 01133 Led_G10 equ 0x0b8 01134 Led_G11 equ 0x0b9 01135 Led_G12 equ 0x0ba 01136 Led_G13 equ 0x0bb 01137 Led_G14 equ 0x0bc 01138 Led_G15 equ 0x0bd 01139 Led_G16 equ 0x0be 01140 Led_G17 equ 0x0bf 01141 01142 Led_G20 equ 0x0c0 01143 Led_G21 equ 0x0c1 01144 Led_G22 equ 0x0c2 01145 Led_G23 equ 0x0c3 01146 Led_G24 equ 0x0c4 01147 Led_G25 equ 0x0c5 01148 Led_G26 equ 0x0c6 01149 Led_G27 equ 0x0c7 01150 01151 Led_G30 equ 0x0c8 01152 Led_G31 equ 0x0c9 01153 Led_G32 equ 0x0ca 01154 Led_G33 equ 0x0cb 01155 Led_G34 equ 0x0cc 01156 Led_G35 equ 0x0cd 01157 Led_G36 equ 0x0ce 01158 Led_G37 equ 0x0cf 01159 01160 ; Bank 2 01161 Led_G40 equ 0x110 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 24 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01162 Led_G41 equ 0x111 01163 Led_G42 equ 0x112 01164 Led_G43 equ 0x113 01165 Led_G44 equ 0x114 01166 Led_G45 equ 0x115 01167 Led_G46 equ 0x116 01168 Led_G47 equ 0x117 01169 01170 Led_G50 equ 0x118 01171 Led_G51 equ 0x119 01172 Led_G52 equ 0x11a 01173 Led_G53 equ 0x11b 01174 Led_G54 equ 0x11c 01175 Led_G55 equ 0x11d 01176 Led_G56 equ 0x11e 01177 Led_G57 equ 0x11f 01178 01179 Led_G60 equ 0x120 01180 Led_G61 equ 0x121 01181 Led_G62 equ 0x122 01182 Led_G63 equ 0x123 01183 Led_G64 equ 0x124 01184 Led_G65 equ 0x125 01185 Led_G66 equ 0x126 01186 Led_G67 equ 0x127 01187 01188 Led_G70 equ 0x128 01189 Led_G71 equ 0x129 01190 Led_G72 equ 0x12a 01191 Led_G73 equ 0x12b 01192 Led_G74 equ 0x12c 01193 Led_G75 equ 0x12d 01194 Led_G76 equ 0x12e 01195 Led_G77 equ 0x12f 01196 01197 Led_G80 equ 0x130 01198 Led_G81 equ 0x131 01199 Led_G82 equ 0x132 01200 Led_G83 equ 0x133 01201 Led_G84 equ 0x134 01202 Led_G85 equ 0x135 01203 Led_G86 equ 0x136 01204 Led_G87 equ 0x137 01205 01206 Led_G90 equ 0x138 01207 Led_G91 equ 0x139 01208 Led_G92 equ 0x13a 01209 Led_G93 equ 0x13b 01210 Led_G94 equ 0x13c 01211 Led_G95 equ 0x13d 01212 Led_G96 equ 0x13e 01213 Led_G97 equ 0x13f 01214 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 25 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01215 Led_GA0 equ 0x140 01216 Led_GA1 equ 0x141 01217 Led_GA2 equ 0x142 01218 Led_GA3 equ 0x143 01219 Led_GA4 equ 0x144 01220 Led_GA5 equ 0x145 01221 Led_GA6 equ 0x146 01222 Led_GA7 equ 0x147 01223 01224 Led_GB0 equ 0x148 01225 Led_GB1 equ 0x149 01226 Led_GB2 equ 0x14a 01227 Led_GB3 equ 0x14b 01228 Led_GB4 equ 0x14c 01229 Led_GB5 equ 0x14d 01230 Led_GB6 equ 0x14e 01231 Led_GB7 equ 0x14f 01232 01233 Led_GC0 equ 0x150 01234 Led_GC1 equ 0x151 01235 Led_GC2 equ 0x152 01236 Led_GC3 equ 0x153 01237 Led_GC4 equ 0x154 01238 Led_GC5 equ 0x155 01239 Led_GC6 equ 0x156 01240 Led_GC7 equ 0x157 01241 01242 Led_GD0 equ 0x158 01243 Led_GD1 equ 0x159 01244 Led_GD2 equ 0x15a 01245 Led_GD3 equ 0x15b 01246 Led_GD4 equ 0x15c 01247 Led_GD5 equ 0x15d 01248 Led_GD6 equ 0x15e 01249 Led_GD7 equ 0x15f 01250 01251 Led_GE0 equ 0x160 01252 Led_GE1 equ 0x161 01253 Led_GE2 equ 0x162 01254 Led_GE3 equ 0x163 01255 Led_GE4 equ 0x164 01256 Led_GE5 equ 0x165 01257 Led_GE6 equ 0x166 01258 Led_GE7 equ 0x167 01259 01260 Led_GF0 equ 0x168 01261 Led_GF1 equ 0x169 01262 Led_GF2 equ 0x16a 01263 Led_GF3 equ 0x16b 01264 Led_GF4 equ 0x16c 01265 Led_GF5 equ 0x16d 01266 Led_GF6 equ 0x16e 01267 Led_GF7 equ 0x16f MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 26 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01268 01269 ; Bank 1 01270 Led_R00 equ 0x0d0 01271 Led_R01 equ 0x0d1 01272 Led_R02 equ 0x0d2 01273 Led_R03 equ 0x0d3 01274 Led_R04 equ 0x0d4 01275 Led_R05 equ 0x0d5 01276 Led_R06 equ 0x0d6 01277 Led_R07 equ 0x0d7 01278 01279 Led_R10 equ 0x0d8 01280 Led_R11 equ 0x0d9 01281 Led_R12 equ 0x0da 01282 Led_R13 equ 0x0db 01283 Led_R14 equ 0x0dc 01284 Led_R15 equ 0x0dd 01285 Led_R16 equ 0x0de 01286 Led_R17 equ 0x0df 01287 01288 Led_R20 equ 0x0e0 01289 Led_R21 equ 0x0e1 01290 Led_R22 equ 0x0e2 01291 Led_R23 equ 0x0e3 01292 Led_R24 equ 0x0e4 01293 Led_R25 equ 0x0e5 01294 Led_R26 equ 0x0e6 01295 Led_R27 equ 0x0e7 01296 01297 Led_R30 equ 0x0e8 01298 Led_R31 equ 0x0e9 01299 Led_R32 equ 0x0ea 01300 Led_R33 equ 0x0eb 01301 Led_R34 equ 0x0ec 01302 Led_R35 equ 0x0ed 01303 Led_R36 equ 0x0ee 01304 Led_R37 equ 0x0ef 01305 01306 ; bank 3 01307 Led_R40 equ 0x190 01308 Led_R41 equ 0x191 01309 Led_R42 equ 0x192 01310 Led_R43 equ 0x193 01311 Led_R44 equ 0x194 01312 Led_R45 equ 0x195 01313 Led_R46 equ 0x196 01314 Led_R47 equ 0x197 01315 01316 Led_R50 equ 0x198 01317 Led_R51 equ 0x199 01318 Led_R52 equ 0x19a 01319 Led_R53 equ 0x19b 01320 Led_R54 equ 0x19c MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 27 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01321 Led_R55 equ 0x19d 01322 Led_R56 equ 0x19e 01323 Led_R57 equ 0x19f 01324 01325 Led_R60 equ 0x1a0 01326 Led_R61 equ 0x1a1 01327 Led_R62 equ 0x1a2 01328 Led_R63 equ 0x1a3 01329 Led_R64 equ 0x1a4 01330 Led_R65 equ 0x1a5 01331 Led_R66 equ 0x1a6 01332 Led_R67 equ 0x1a7 01333 01334 Led_R70 equ 0x1a8 01335 Led_R71 equ 0x1a9 01336 Led_R72 equ 0x1aa 01337 Led_R73 equ 0x1ab 01338 Led_R74 equ 0x1ac 01339 Led_R75 equ 0x1ad 01340 Led_R76 equ 0x1ae 01341 Led_R77 equ 0x1af 01342 01343 Led_R80 equ 0x1b0 01344 Led_R81 equ 0x1b1 01345 Led_R82 equ 0x1b2 01346 Led_R83 equ 0x1b3 01347 Led_R84 equ 0x1b4 01348 Led_R85 equ 0x1b5 01349 Led_R86 equ 0x1b6 01350 Led_R87 equ 0x1b7 01351 01352 Led_R90 equ 0x1b8 01353 Led_R91 equ 0x1b9 01354 Led_R92 equ 0x1ba 01355 Led_R93 equ 0x1bb 01356 Led_R94 equ 0x1bc 01357 Led_R95 equ 0x1bd 01358 Led_R96 equ 0x1be 01359 Led_R97 equ 0x1bf 01360 01361 Led_RA0 equ 0x1c0 01362 Led_RA1 equ 0x1c1 01363 Led_RA2 equ 0x1c2 01364 Led_RA3 equ 0x1c3 01365 Led_RA4 equ 0x1c4 01366 Led_RA5 equ 0x1c5 01367 Led_RA6 equ 0x1c6 01368 Led_RA7 equ 0x1c7 01369 01370 Led_RB0 equ 0x1c8 01371 Led_RB1 equ 0x1c9 01372 Led_RB2 equ 0x1ca 01373 Led_RB3 equ 0x1cb MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 28 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01374 Led_RB4 equ 0x1cc 01375 Led_RB5 equ 0x1cd 01376 Led_RB6 equ 0x1ce 01377 Led_RB7 equ 0x1cf 01378 01379 Led_RC0 equ 0x1d0 01380 Led_RC1 equ 0x1d1 01381 Led_RC2 equ 0x1d2 01382 Led_RC3 equ 0x1d3 01383 Led_RC4 equ 0x1d4 01384 Led_RC5 equ 0x1d5 01385 Led_RC6 equ 0x1d6 01386 Led_RC7 equ 0x1d7 01387 01388 Led_RD0 equ 0x1d8 01389 Led_RD1 equ 0x1d9 01390 Led_RD2 equ 0x1da 01391 Led_RD3 equ 0x1db 01392 Led_RD4 equ 0x1dc 01393 Led_RD5 equ 0x1dd 01394 Led_RD6 equ 0x1de 01395 Led_RD7 equ 0x1df 01396 01397 Led_RE0 equ 0x1e0 01398 Led_RE1 equ 0x1e1 01399 Led_RE2 equ 0x1e2 01400 Led_RE3 equ 0x1e3 01401 Led_RE4 equ 0x1e4 01402 Led_RE5 equ 0x1e5 01403 Led_RE6 equ 0x1e6 01404 Led_RE7 equ 0x1e7 01405 01406 Led_RF0 equ 0x1e8 01407 Led_RF1 equ 0x1e9 01408 Led_RF2 equ 0x1ea 01409 Led_RF3 equ 0x1eb 01410 Led_RF4 equ 0x1ec 01411 Led_RF5 equ 0x1ed 01412 Led_RF6 equ 0x1ee 01413 Led_RF7 equ 0x1ef 01414 #endif 01415 01416 #ifdef C12 01417 var_bank2 A0_A1_reg 000000A0 M A0_A1_reg equ mem3 000000A1 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01418 var_bank2 A0_A2_reg 000000A1 M A0_A2_reg equ mem3 000000A2 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 29 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01419 ; var_bank2 A0_A3_reg 01420 var_bank2 A0_A4_reg 000000A2 M A0_A4_reg equ mem3 000000A3 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01421 var_bank2 A0_A5_reg 000000A3 M A0_A5_reg equ mem3 000000A4 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01422 01423 var_bank2 A1_A0_reg 000000A4 M A1_A0_reg equ mem3 000000A5 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01424 var_bank2 A1_A2_reg 000000A5 M A1_A2_reg equ mem3 000000A6 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01425 var_bank2 A1_A3_reg 000000A6 M A1_A3_reg equ mem3 000000A7 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01426 ; var_bank2 A1_A4_reg 01427 var_bank2 A1_A5_reg 000000A7 M A1_A5_reg equ mem3 000000A8 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01428 01429 var_bank2 A2_A0_reg 000000A8 M A2_A0_reg equ mem3 000000A9 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01430 var_bank2 A2_A1_reg 000000A9 M A2_A1_reg equ mem3 000000AA M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01431 var_bank2 A2_A3_reg 000000AA M A2_A3_reg equ mem3 000000AB M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01432 var_bank2 A2_A4_reg 000000AB M A2_A4_reg equ mem3 000000AC M mem3 = mem3 + 1 M if (mem3 >= 0xef) MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 30 LOC OBJECT CODE LINE SOURCE TEXT VALUE M error 'Too much var space used' 01433 ; var_bank2 A2_A5_reg 01434 01435 ; var_bank2 A3_A0_reg 01436 var_bank2 A3_A1_reg 000000AC M A3_A1_reg equ mem3 000000AD M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01437 var_bank2 A3_A2_reg 000000AD M A3_A2_reg equ mem3 000000AE M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01438 var_bank2 A3_A4_reg 000000AE M A3_A4_reg equ mem3 000000AF M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01439 var_bank2 A3_A5_reg 000000AF M A3_A5_reg equ mem3 000000B0 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01440 01441 var_bank2 A4_A0_reg 000000B0 M A4_A0_reg equ mem3 000000B1 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01442 ; var_bank2 A4_A1_reg 01443 var_bank2 A4_A2_reg 000000B1 M A4_A2_reg equ mem3 000000B2 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01444 var_bank2 A4_A3_reg 000000B2 M A4_A3_reg equ mem3 000000B3 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01445 var_bank2 A4_A5_reg 000000B3 M A4_A5_reg equ mem3 000000B4 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01446 01447 var_bank2 A5_A0_reg 000000B4 M A5_A0_reg equ mem3 000000B5 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01448 var_bank2 A5_A1_reg MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 31 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000000B5 M A5_A1_reg equ mem3 000000B6 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01449 ; var_bank2 A5_A2_reg 01450 var_bank2 A5_A3_reg 000000B6 M A5_A3_reg equ mem3 000000B7 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01451 var_bank2 A5_A4_reg 000000B7 M A5_A4_reg equ mem3 000000B8 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01452 01453 var_bank2 B7_B6_reg 000000B8 M B7_B6_reg equ mem3 000000B9 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01454 var_bank2 B7_B5_reg 000000B9 M B7_B5_reg equ mem3 000000BA M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01455 ; var_bank2 B7_B4_reg 01456 var_bank2 B7_B3_reg 000000BA M B7_B3_reg equ mem3 000000BB M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01457 var_bank2 B7_B2_reg 000000BB M B7_B2_reg equ mem3 000000BC M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01458 01459 var_bank2 B6_B7_reg 000000BC M B6_B7_reg equ mem3 000000BD M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01460 var_bank2 B6_B5_reg 000000BD M B6_B5_reg equ mem3 000000BE M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01461 var_bank2 B6_B4_reg 000000BE M B6_B4_reg equ mem3 000000BF M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 32 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01462 ; var_bank2 B6_B3_reg 01463 var_bank2 B6_B2_reg 000000BF M B6_B2_reg equ mem3 000000C0 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01464 01465 var_bank2 B5_B7_reg 000000C0 M B5_B7_reg equ mem3 000000C1 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01466 var_bank2 B5_B6_reg 000000C1 M B5_B6_reg equ mem3 000000C2 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01467 var_bank2 B5_B4_reg 000000C2 M B5_B4_reg equ mem3 000000C3 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01468 var_bank2 B5_B3_reg 000000C3 M B5_B3_reg equ mem3 000000C4 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01469 ; var_bank2 B5_B2_reg 01470 01471 ; var_bank2 B4_B7_reg 01472 var_bank2 B4_B6_reg 000000C4 M B4_B6_reg equ mem3 000000C5 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01473 var_bank2 B4_B5_reg 000000C5 M B4_B5_reg equ mem3 000000C6 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01474 var_bank2 B4_B3_reg 000000C6 M B4_B3_reg equ mem3 000000C7 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01475 var_bank2 B4_B2_reg 000000C7 M B4_B2_reg equ mem3 000000C8 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01476 01477 var_bank2 B3_B7_reg 000000C8 M B3_B7_reg equ mem3 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 33 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000000C9 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01478 ; var_bank2 B3_B6_reg 01479 var_bank2 B3_B5_reg 000000C9 M B3_B5_reg equ mem3 000000CA M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01480 var_bank2 B3_B4_reg 000000CA M B3_B4_reg equ mem3 000000CB M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01481 var_bank2 B3_B2_reg 000000CB M B3_B2_reg equ mem3 000000CC M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01482 01483 var_bank2 B2_B7_reg 000000CC M B2_B7_reg equ mem3 000000CD M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01484 var_bank2 B2_B6_reg 000000CD M B2_B6_reg equ mem3 000000CE M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01485 ; var_bank2 B2_B5_reg 01486 var_bank2 B2_B4_reg 000000CE M B2_B4_reg equ mem3 000000CF M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01487 var_bank2 B2_B3_reg 000000CF M B2_B3_reg equ mem3 000000D0 M mem3 = mem3 + 1 M if (mem3 >= 0xef) M error 'Too much var space used' 01488 #endif 01489 01490 #ifndef M8X16 01491 var_all_bank Ax_dir 0000007B M Ax_dir equ mem2 0000007A M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 01492 #endif 01493 #ifdef C19 01494 var_all_bank Cx_dir 01495 #endif MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 34 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01496 #ifdef SRGB 01497 var_all_bank Cx_dir 01498 #endif 01499 #ifdef C12 01500 var_all_bank Bx_dir 0000007A M Bx_dir equ mem2 00000079 M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 01501 #endif 01502 01503 ; 01504 ; This is the number of times the display logic should cycle before exiting. It's been hand timed from t he 01505 ; start of the interupt to the end to be around 800usec. This leaves 90 usec for the main loop. 01506 ; The 19 stick has an extra display line strobe cycle. 01507 ; 01508 #ifdef RGB4 01509 movlw 0x36 01510 #else 01511 #ifdef BI6 01512 movlw 0x3a 01513 #else 01514 #ifdef S19 01515 movlw 0x30 01516 #else 01517 #ifdef C19 01518 movlw 0x18 01519 #else 01520 #ifdef M3X3 01521 movlw 0x2E 01522 #else 01523 #ifdef SRGB 01524 movlw 0x18 01525 #else 01526 #ifdef M8X16 01527 movlw 0x0a 01528 #else 01529 #ifdef C12 003E 3014 01530 movlw 0x14 01531 #else 01532 error "unknown board delaytimer" 01533 #endif 01534 #endif 01535 #endif 01536 #endif 01537 #endif 01538 #endif 01539 #endif 01540 #endif 01541 01542 01543 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 35 LOC OBJECT CODE LINE SOURCE TEXT VALUE 003F 00A5 01544 movwf fcount 01545 01546 #ifdef C19 01547 movlw b'00101000' ;set LED matrix pins to input (tri-stated) 01548 movwf Ax_dir 01549 clrf Cx_dir ;set LED matrix pins to input (tri-stated) 01550 #else 01551 #ifdef SRGB 01552 movlw b'00111000' ;set LED matrix pins to input (tri-stated) 01553 movwf Ax_dir 01554 clrf Cx_dir ;set LED matrix pins to input (tri-stated) 01555 #else 01556 #ifdef C12 0040 01FB 01557 clrf Ax_dir ;set LED matrix pins to input (tri-stated) 0041 01FA 01558 clrf Bx_dir 01559 #else 01560 #ifndef M8X16 01561 movlw b'00001000' ;set LED matrix pins to input (tri-stated) 01562 movwf Ax_dir 01563 #endif 01564 #endif 01565 #endif 01566 #endif 01567 0042 21EF 01568 call get_state_tbl_hi_address 0043 21F5 01569 call get_state_tbl_low_address 0044 2203 01570 call go_state_table 0045 2354 01571 call set_max_state 01572 01573 ; turn off the LEDs DDF 0046 0185 01574 clrf PORTA 01575 ; clrf PORTB 01576 0047 0821 01577 movf dcycle,w ; testing for 0 0048 1903 01578 btfsc STATUS,Z 0049 2069 01579 call display_cycle0 01580 004A 3001 01581 movlw 0x01 ; testing for 1 004B 0221 01582 subwf dcycle,w 004C 1903 01583 btfsc STATUS,Z 004D 20AA 01584 call display_cycle1 01585 004E 3002 01586 movlw 0x02 ; testing for 2 004F 0221 01587 subwf dcycle,w 0050 1903 01588 btfsc STATUS,Z 0051 20EB 01589 call display_cycle2 01590 0052 3003 01591 movlw 0x03 ; testing for 3 0053 0221 01592 subwf dcycle,w 0054 1903 01593 btfsc STATUS,Z 0055 212C 01594 call display_cycle3 01595 01596 #ifndef BI6 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 36 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01597 #ifndef RGB4 0056 3004 01598 movlw 0x04 ; testing for 4 0057 0221 01599 subwf dcycle,w 0058 1903 01600 btfsc STATUS,Z 0059 216D 01601 call display_cycle4 01602 01603 #ifndef S19 01604 #ifndef M3X3 005A 3005 01605 movlw 0x05 ; testing for 5 005B 0221 01606 subwf dcycle,w 005C 1903 01607 btfsc STATUS,Z 005D 21AE 01608 call display_cycle5 01609 01610 #ifndef C12 01611 movlw 0x06 ; testing for 6 01612 subwf dcycle,w 01613 btfsc STATUS,Z 01614 call display_cycle6 01615 01616 #ifndef C19 01617 #ifndef SRGB 01618 movlw 0x07 ; testing for 7 01619 subwf dcycle,w 01620 btfsc STATUS,Z 01621 call display_cycle7 01622 01623 movlw 0x08 ; testing for 8 01624 subwf dcycle,w 01625 btfsc STATUS,Z 01626 call display_cycle8 01627 01628 movlw 0x09 ; testing for 9 01629 subwf dcycle,w 01630 btfsc STATUS,Z 01631 call display_cycle9 01632 01633 movlw 0x0a ; testing for 10 01634 subwf dcycle,w 01635 btfsc STATUS,Z 01636 call display_cycle10 01637 01638 movlw 0x0b ; testing for 11 01639 subwf dcycle,w 01640 btfsc STATUS,Z 01641 call display_cycle11 01642 01643 movlw 0x0c ; testing for 12 01644 subwf dcycle,w 01645 btfsc STATUS,Z 01646 call display_cycle12 01647 01648 movlw 0x0d ; testing for 13 01649 subwf dcycle,w MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 37 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01650 btfsc STATUS,Z 01651 call display_cycle13 01652 01653 movlw 0x0e ; testing for 14 01654 subwf dcycle,w 01655 btfsc STATUS,Z 01656 call display_cycle14 01657 01658 movlw 0x0f ; testing for 15 01659 subwf dcycle,w 01660 btfsc STATUS,Z 01661 call display_cycle15 01662 #endif 01663 #endif 01664 #endif 01665 #endif 01666 #endif 01667 #endif 01668 #endif 01669 01670 ;-------------------------------------------------------------------------------------- 005E 01671 exit_tx 01672 ;-------------------------------------------------------------------------------------- 01673 #ifdef __16F886 01674 ; clrf PORTA ;DDF debug hack ; turn all the LED off 01675 ; clrf PORTB ;DDF debug hack ; turn all the LED off 01676 ; clrf PORTC ;DDF debug hack ; turn all the LED off 01677 #else 01678 #ifdef MULTIBUTTON 01679 movlw b'00110111' 01680 movwf PORTA 01681 #else 01682 clrf PORTA ;DDF debug hack ; turn all the LED off 01683 #endif 01684 #ifndef __12F683 01685 clrf PORTC ;DDF debug hack ; turn all the LED off 01686 #endif 01687 #endif 01688 01689 01690 ; clear timer0 interupt 005E 110B 01691 bcf INTCON,T0IF 01692 01693 ; restore state, return form interupt 01694 005F 01695 exit_int 005F 178B 01696 bsf INTCON,GIE 01697 #ifdef __12F683 01698 swapf status_temp,w 01699 movwf STATUS 01700 swapf w_temp,f 01701 swapf w_temp,w 01702 #else MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 38 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0060 087D 01703 movf fsr_save,w 0061 0084 01704 movwf FSR 0062 087C 01705 movf pclath_temp,w ; retrieve copy of PCLATH register 0063 008A 01706 movwf PCLATH ; restore pre-isr PCLATH register contents 0064 087E 01707 movf status_temp,w ; retrieve copy of STATUS register 0065 0083 01708 movwf STATUS ; restore pre-isr STATUS register contents 0066 0EFF 01709 swapf w_temp,f 0067 0E7F 01710 swapf w_temp,w ; restore pre-isr W register content 01711 #endif 0068 0009 01712 retfie ; return from interrupt 01713 01714 #define DEBOUNCE 0x10 01715 01716 01717 01718 #ifdef RGB4 01719 #include 01720 #else 01721 #ifdef BI6 01722 #include 01723 #else 01724 #ifdef S19 01725 #include 01726 #else 01727 #ifdef C19 01728 #include 01729 #else 01730 #ifdef M3X3 01731 #include 01732 #else 01733 #ifdef SRGB 01734 #include 01735 #else 01736 #ifdef M8X16 01737 #include 01738 #else 01739 #ifdef C12 01740 #include 00001 ;-------------------------------------------------------------------------------------- 0069 00002 display_cycle0 00003 ;-------------------------------------------------------------------------------------- 00004 LedOutInd B7_B6_reg,Bx_dir,6 0069 30B8 M movlw B7_B6_reg 006A 0084 M movwf FSR ; set indirect pointer to word 006B 0801 M movfw TMR0 006C 0200 M subwf INDF,w 006D 1C03 M btfss STATUS,C 006E 177A M bsf Bx_dir, 6 00005 LedOutInd B7_B5_reg,Bx_dir,5 006F 30B9 M movlw B7_B5_reg 0070 0084 M movwf FSR ; set indirect pointer to word 0071 0801 M movfw TMR0 0072 0200 M subwf INDF,w MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 39 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0073 1C03 M btfss STATUS,C 0074 16FA M bsf Bx_dir, 5 00006 ; LedOutInd B7_B4_reg,Bx_dir,4 0075 167A 00007 bsf Bx_dir, 4 00008 00009 LedOutInd B7_B3_reg,Bx_dir,3 0076 30BA M movlw B7_B3_reg 0077 0084 M movwf FSR ; set indirect pointer to word 0078 0801 M movfw TMR0 0079 0200 M subwf INDF,w 007A 1C03 M btfss STATUS,C 007B 15FA M bsf Bx_dir, 3 00010 LedOutInd B7_B2_reg,Bx_dir,2 007C 30BB M movlw B7_B2_reg 007D 0084 M movwf FSR ; set indirect pointer to word 007E 0801 M movfw TMR0 007F 0200 M subwf INDF,w 0080 1C03 M btfss STATUS,C 0081 157A M bsf Bx_dir, 2 00011 00012 LedOutInd A0_A5_reg,Ax_dir,5 0082 30A3 M movlw A0_A5_reg 0083 0084 M movwf FSR ; set indirect pointer to word 0084 0801 M movfw TMR0 0085 0200 M subwf INDF,w 0086 1C03 M btfss STATUS,C 0087 16FB M bsf Ax_dir, 5 00013 LedOutInd A0_A4_reg,Ax_dir,4 0088 30A2 M movlw A0_A4_reg 0089 0084 M movwf FSR ; set indirect pointer to word 008A 0801 M movfw TMR0 008B 0200 M subwf INDF,w 008C 1C03 M btfss STATUS,C 008D 167B M bsf Ax_dir, 4 00014 ; LedOutInd A0_A3_reg,Ax_dir,3 008E 15FB 00015 bsf Ax_dir, 3 00016 LedOutInd A0_A2_reg,Ax_dir,2 008F 30A1 M movlw A0_A2_reg 0090 0084 M movwf FSR ; set indirect pointer to word 0091 0801 M movfw TMR0 0092 0200 M subwf INDF,w 0093 1C03 M btfss STATUS,C 0094 157B M bsf Ax_dir, 2 00017 LedOutInd A0_A1_reg,Ax_dir,1 0095 30A0 M movlw A0_A1_reg 0096 0084 M movwf FSR ; set indirect pointer to word 0097 0801 M movfw TMR0 0098 0200 M subwf INDF,w 0099 1C03 M btfss STATUS,C 009A 14FB M bsf Ax_dir, 1 00018 00019 setbank1 009B 1683 M bsf STATUS,RP0 ; select bank 1 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 40 LOC OBJECT CODE LINE SOURCE TEXT VALUE 009C 1303 M bcf STATUS,RP1 009D 087B 00020 movf Ax_dir,w ;set portA direction 009E 0085 00021 movwf TRISA 009F 087A 00022 movf Bx_dir,w ;set portA direction 00A0 0086 00023 movwf TRISB 00024 setbank0 00A1 1283 M bcf STATUS,RP0 ; select bank 0 00A2 1303 M bcf STATUS,RP1 00025 00A3 3080 00026 movlw b'10000000' 00A4 0086 00027 movwf PORTB 00A5 3001 00028 movlw b'00000001' 00A6 0085 00029 movwf PORTA 00030 00A7 0BA5 00031 decfsz fcount,f 00A8 2869 00032 goto display_cycle0 00033 00A9 0008 00034 return 00035 00036 ;-------------------------------------------------------------------------------------- 00AA 00037 display_cycle1 00038 ;-------------------------------------------------------------------------------------- 00039 LedOutInd B6_B7_reg,Bx_dir,7 00AA 30BC M movlw B6_B7_reg 00AB 0084 M movwf FSR ; set indirect pointer to word 00AC 0801 M movfw TMR0 00AD 0200 M subwf INDF,w 00AE 1C03 M btfss STATUS,C 00AF 17FA M bsf Bx_dir, 7 00040 LedOutInd B6_B5_reg,Bx_dir,5 00B0 30BD M movlw B6_B5_reg 00B1 0084 M movwf FSR ; set indirect pointer to word 00B2 0801 M movfw TMR0 00B3 0200 M subwf INDF,w 00B4 1C03 M btfss STATUS,C 00B5 16FA M bsf Bx_dir, 5 00041 LedOutInd B6_B4_reg,Bx_dir,4 00B6 30BE M movlw B6_B4_reg 00B7 0084 M movwf FSR ; set indirect pointer to word 00B8 0801 M movfw TMR0 00B9 0200 M subwf INDF,w 00BA 1C03 M btfss STATUS,C 00BB 167A M bsf Bx_dir, 4 00042 ; LedOutInd B6_B3_reg,Bx_dir,3 00BC 15FA 00043 bsf Bx_dir, 3 00044 LedOutInd B6_B2_reg,Bx_dir,2 00BD 30BF M movlw B6_B2_reg 00BE 0084 M movwf FSR ; set indirect pointer to word 00BF 0801 M movfw TMR0 00C0 0200 M subwf INDF,w 00C1 1C03 M btfss STATUS,C 00C2 157A M bsf Bx_dir, 2 00045 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 41 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00046 LedOutInd A1_A5_reg,Ax_dir,5 00C3 30A7 M movlw A1_A5_reg 00C4 0084 M movwf FSR ; set indirect pointer to word 00C5 0801 M movfw TMR0 00C6 0200 M subwf INDF,w 00C7 1C03 M btfss STATUS,C 00C8 16FB M bsf Ax_dir, 5 00047 ; LedOutInd A1_A4_reg,Ax_dir,4 00C9 167B 00048 bsf Ax_dir, 4 00049 LedOutInd A1_A3_reg,Ax_dir,3 00CA 30A6 M movlw A1_A3_reg 00CB 0084 M movwf FSR ; set indirect pointer to word 00CC 0801 M movfw TMR0 00CD 0200 M subwf INDF,w 00CE 1C03 M btfss STATUS,C 00CF 15FB M bsf Ax_dir, 3 00050 LedOutInd A1_A2_reg,Ax_dir,2 00D0 30A5 M movlw A1_A2_reg 00D1 0084 M movwf FSR ; set indirect pointer to word 00D2 0801 M movfw TMR0 00D3 0200 M subwf INDF,w 00D4 1C03 M btfss STATUS,C 00D5 157B M bsf Ax_dir, 2 00051 LedOutInd A1_A0_reg,Ax_dir,0 00D6 30A4 M movlw A1_A0_reg 00D7 0084 M movwf FSR ; set indirect pointer to word 00D8 0801 M movfw TMR0 00D9 0200 M subwf INDF,w 00DA 1C03 M btfss STATUS,C 00DB 147B M bsf Ax_dir, 0 00052 00053 setbank1 00DC 1683 M bsf STATUS,RP0 ; select bank 1 00DD 1303 M bcf STATUS,RP1 00DE 087B 00054 movf Ax_dir,w ;set portA direction 00DF 0085 00055 movwf TRISA 00E0 087A 00056 movf Bx_dir,w ;set portA direction 00E1 0086 00057 movwf TRISB 00058 setbank0 00E2 1283 M bcf STATUS,RP0 ; select bank 0 00E3 1303 M bcf STATUS,RP1 00059 00E4 3040 00060 movlw b'01000000' 00E5 0086 00061 movwf PORTB 00E6 3002 00062 movlw b'00000010' 00E7 0085 00063 movwf PORTA 00064 00E8 0BA5 00065 decfsz fcount,f 00E9 28AA 00066 goto display_cycle1 00067 00EA 0008 00068 return 00069 00070 ;-------------------------------------------------------------------------------------- MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 42 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00EB 00071 display_cycle2 00072 ;-------------------------------------------------------------------------------------- 00073 LedOutInd B5_B7_reg,Bx_dir,7 00EB 30C0 M movlw B5_B7_reg 00EC 0084 M movwf FSR ; set indirect pointer to word 00ED 0801 M movfw TMR0 00EE 0200 M subwf INDF,w 00EF 1C03 M btfss STATUS,C 00F0 17FA M bsf Bx_dir, 7 00074 LedOutInd B5_B6_reg,Bx_dir,6 00F1 30C1 M movlw B5_B6_reg 00F2 0084 M movwf FSR ; set indirect pointer to word 00F3 0801 M movfw TMR0 00F4 0200 M subwf INDF,w 00F5 1C03 M btfss STATUS,C 00F6 177A M bsf Bx_dir, 6 00075 LedOutInd B5_B4_reg,Bx_dir,4 00F7 30C2 M movlw B5_B4_reg 00F8 0084 M movwf FSR ; set indirect pointer to word 00F9 0801 M movfw TMR0 00FA 0200 M subwf INDF,w 00FB 1C03 M btfss STATUS,C 00FC 167A M bsf Bx_dir, 4 00076 LedOutInd B5_B3_reg,Bx_dir,3 00FD 30C3 M movlw B5_B3_reg 00FE 0084 M movwf FSR ; set indirect pointer to word 00FF 0801 M movfw TMR0 0100 0200 M subwf INDF,w 0101 1C03 M btfss STATUS,C 0102 15FA M bsf Bx_dir, 3 00077 ; LedOutInd B5_B2_reg,Bx_dir,2 0103 157A 00078 bsf Bx_dir, 2 00079 00080 ; LedOutInd A2_A5_reg,Ax_dir,5 0104 16FB 00081 bsf Ax_dir, 5 00082 LedOutInd A2_A4_reg,Ax_dir,4 0105 30AB M movlw A2_A4_reg 0106 0084 M movwf FSR ; set indirect pointer to word 0107 0801 M movfw TMR0 0108 0200 M subwf INDF,w 0109 1C03 M btfss STATUS,C 010A 167B M bsf Ax_dir, 4 00083 LedOutInd A2_A3_reg,Ax_dir,3 010B 30AA M movlw A2_A3_reg 010C 0084 M movwf FSR ; set indirect pointer to word 010D 0801 M movfw TMR0 010E 0200 M subwf INDF,w 010F 1C03 M btfss STATUS,C 0110 15FB M bsf Ax_dir, 3 00084 LedOutInd A2_A1_reg,Ax_dir,1 0111 30A9 M movlw A2_A1_reg 0112 0084 M movwf FSR ; set indirect pointer to word 0113 0801 M movfw TMR0 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 43 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0114 0200 M subwf INDF,w 0115 1C03 M btfss STATUS,C 0116 14FB M bsf Ax_dir, 1 00085 LedOutInd A2_A0_reg,Ax_dir,0 0117 30A8 M movlw A2_A0_reg 0118 0084 M movwf FSR ; set indirect pointer to word 0119 0801 M movfw TMR0 011A 0200 M subwf INDF,w 011B 1C03 M btfss STATUS,C 011C 147B M bsf Ax_dir, 0 00086 00087 setbank1 011D 1683 M bsf STATUS,RP0 ; select bank 1 011E 1303 M bcf STATUS,RP1 011F 087B 00088 movf Ax_dir,w ;set portA direction 0120 0085 00089 movwf TRISA 0121 087A 00090 movf Bx_dir,w ;set portA direction 0122 0086 00091 movwf TRISB 00092 setbank0 0123 1283 M bcf STATUS,RP0 ; select bank 0 0124 1303 M bcf STATUS,RP1 00093 0125 3020 00094 movlw b'00100000' 0126 0086 00095 movwf PORTB 0127 3004 00096 movlw b'00000100' 0128 0085 00097 movwf PORTA 00098 0129 0BA5 00099 decfsz fcount,f 012A 28EB 00100 goto display_cycle2 00101 012B 0008 00102 return 00103 00104 ;-------------------------------------------------------------------------------------- 012C 00105 display_cycle3 00106 ;-------------------------------------------------------------------------------------- 00107 00108 ; LedOutInd B4_B7_reg,Bx_dir,7 012C 17FA 00109 bsf Bx_dir, 7 00110 LedOutInd B4_B6_reg,Bx_dir,6 012D 30C4 M movlw B4_B6_reg 012E 0084 M movwf FSR ; set indirect pointer to word 012F 0801 M movfw TMR0 0130 0200 M subwf INDF,w 0131 1C03 M btfss STATUS,C 0132 177A M bsf Bx_dir, 6 00111 LedOutInd B4_B5_reg,Bx_dir,5 0133 30C5 M movlw B4_B5_reg 0134 0084 M movwf FSR ; set indirect pointer to word 0135 0801 M movfw TMR0 0136 0200 M subwf INDF,w 0137 1C03 M btfss STATUS,C 0138 16FA M bsf Bx_dir, 5 00112 LedOutInd B4_B3_reg,Bx_dir,3 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 44 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0139 30C6 M movlw B4_B3_reg 013A 0084 M movwf FSR ; set indirect pointer to word 013B 0801 M movfw TMR0 013C 0200 M subwf INDF,w 013D 1C03 M btfss STATUS,C 013E 15FA M bsf Bx_dir, 3 00113 LedOutInd B4_B2_reg,Bx_dir,2 013F 30C7 M movlw B4_B2_reg 0140 0084 M movwf FSR ; set indirect pointer to word 0141 0801 M movfw TMR0 0142 0200 M subwf INDF,w 0143 1C03 M btfss STATUS,C 0144 157A M bsf Bx_dir, 2 00114 00115 LedOutInd A3_A5_reg,Ax_dir,5 0145 30AF M movlw A3_A5_reg 0146 0084 M movwf FSR ; set indirect pointer to word 0147 0801 M movfw TMR0 0148 0200 M subwf INDF,w 0149 1C03 M btfss STATUS,C 014A 16FB M bsf Ax_dir, 5 00116 LedOutInd A3_A4_reg,Ax_dir,4 014B 30AE M movlw A3_A4_reg 014C 0084 M movwf FSR ; set indirect pointer to word 014D 0801 M movfw TMR0 014E 0200 M subwf INDF,w 014F 1C03 M btfss STATUS,C 0150 167B M bsf Ax_dir, 4 00117 LedOutInd A3_A2_reg,Ax_dir,2 0151 30AD M movlw A3_A2_reg 0152 0084 M movwf FSR ; set indirect pointer to word 0153 0801 M movfw TMR0 0154 0200 M subwf INDF,w 0155 1C03 M btfss STATUS,C 0156 157B M bsf Ax_dir, 2 00118 LedOutInd A3_A1_reg,Ax_dir,1 0157 30AC M movlw A3_A1_reg 0158 0084 M movwf FSR ; set indirect pointer to word 0159 0801 M movfw TMR0 015A 0200 M subwf INDF,w 015B 1C03 M btfss STATUS,C 015C 14FB M bsf Ax_dir, 1 00119 ; LedOutInd A3_A0_reg,Ax_dir,0 015D 147B 00120 bsf Ax_dir, 0 00121 00122 setbank1 015E 1683 M bsf STATUS,RP0 ; select bank 1 015F 1303 M bcf STATUS,RP1 0160 087B 00123 movf Ax_dir,w ;set portA direction 0161 0085 00124 movwf TRISA 0162 087A 00125 movf Bx_dir,w ;set portA direction 0163 0086 00126 movwf TRISB 00127 setbank0 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 45 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0164 1283 M bcf STATUS,RP0 ; select bank 0 0165 1303 M bcf STATUS,RP1 00128 0166 3010 00129 movlw b'00010000' 0167 0086 00130 movwf PORTB 0168 3008 00131 movlw b'00001000' 0169 0085 00132 movwf PORTA 00133 016A 0BA5 00134 decfsz fcount,f 016B 292C 00135 goto display_cycle3 00136 016C 0008 00137 return 00138 00139 ;-------------------------------------------------------------------------------------- 016D 00140 display_cycle4 00141 ;-------------------------------------------------------------------------------------- 00142 00143 LedOutInd B3_B7_reg,Bx_dir,7 016D 30C8 M movlw B3_B7_reg 016E 0084 M movwf FSR ; set indirect pointer to word 016F 0801 M movfw TMR0 0170 0200 M subwf INDF,w 0171 1C03 M btfss STATUS,C 0172 17FA M bsf Bx_dir, 7 00144 ; LedOutInd B3_B6_reg,Bx_dir,6 0173 177A 00145 bsf Bx_dir, 6 00146 LedOutInd B3_B5_reg,Bx_dir,5 0174 30C9 M movlw B3_B5_reg 0175 0084 M movwf FSR ; set indirect pointer to word 0176 0801 M movfw TMR0 0177 0200 M subwf INDF,w 0178 1C03 M btfss STATUS,C 0179 16FA M bsf Bx_dir, 5 00147 LedOutInd B3_B4_reg,Bx_dir,4 017A 30CA M movlw B3_B4_reg 017B 0084 M movwf FSR ; set indirect pointer to word 017C 0801 M movfw TMR0 017D 0200 M subwf INDF,w 017E 1C03 M btfss STATUS,C 017F 167A M bsf Bx_dir, 4 00148 LedOutInd B3_B2_reg,Bx_dir,2 0180 30CB M movlw B3_B2_reg 0181 0084 M movwf FSR ; set indirect pointer to word 0182 0801 M movfw TMR0 0183 0200 M subwf INDF,w 0184 1C03 M btfss STATUS,C 0185 157A M bsf Bx_dir, 2 00149 00150 LedOutInd A4_A5_reg,Ax_dir,5 0186 30B3 M movlw A4_A5_reg 0187 0084 M movwf FSR ; set indirect pointer to word 0188 0801 M movfw TMR0 0189 0200 M subwf INDF,w MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 46 LOC OBJECT CODE LINE SOURCE TEXT VALUE 018A 1C03 M btfss STATUS,C 018B 16FB M bsf Ax_dir, 5 00151 LedOutInd A4_A3_reg,Ax_dir,3 018C 30B2 M movlw A4_A3_reg 018D 0084 M movwf FSR ; set indirect pointer to word 018E 0801 M movfw TMR0 018F 0200 M subwf INDF,w 0190 1C03 M btfss STATUS,C 0191 15FB M bsf Ax_dir, 3 00152 LedOutInd A4_A2_reg,Ax_dir,2 0192 30B1 M movlw A4_A2_reg 0193 0084 M movwf FSR ; set indirect pointer to word 0194 0801 M movfw TMR0 0195 0200 M subwf INDF,w 0196 1C03 M btfss STATUS,C 0197 157B M bsf Ax_dir, 2 00153 ; LedOutInd A4_A1_reg,Ax_dir,1 0198 14FB 00154 bsf Ax_dir, 1 00155 LedOutInd A4_A0_reg,Ax_dir,0 0199 30B0 M movlw A4_A0_reg 019A 0084 M movwf FSR ; set indirect pointer to word 019B 0801 M movfw TMR0 019C 0200 M subwf INDF,w 019D 1C03 M btfss STATUS,C 019E 147B M bsf Ax_dir, 0 00156 00157 setbank1 019F 1683 M bsf STATUS,RP0 ; select bank 1 01A0 1303 M bcf STATUS,RP1 01A1 087B 00158 movf Ax_dir,w ;set portA direction 01A2 0085 00159 movwf TRISA 01A3 087A 00160 movf Bx_dir,w ;set portA direction 01A4 0086 00161 movwf TRISB 00162 setbank0 01A5 1283 M bcf STATUS,RP0 ; select bank 0 01A6 1303 M bcf STATUS,RP1 00163 01A7 3008 00164 movlw b'00001000' 01A8 0086 00165 movwf PORTB 01A9 3010 00166 movlw b'00010000' 01AA 0085 00167 movwf PORTA 00168 01AB 0BA5 00169 decfsz fcount,f 01AC 296D 00170 goto display_cycle4 00171 01AD 0008 00172 return 00173 00174 00175 ;-------------------------------------------------------------------------------------- 01AE 00176 display_cycle5 00177 ;-------------------------------------------------------------------------------------- 00178 00179 LedOutInd B2_B7_reg,Bx_dir,7 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 47 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01AE 30CC M movlw B2_B7_reg 01AF 0084 M movwf FSR ; set indirect pointer to word 01B0 0801 M movfw TMR0 01B1 0200 M subwf INDF,w 01B2 1C03 M btfss STATUS,C 01B3 17FA M bsf Bx_dir, 7 00180 LedOutInd B2_B6_reg,Bx_dir,6 01B4 30CD M movlw B2_B6_reg 01B5 0084 M movwf FSR ; set indirect pointer to word 01B6 0801 M movfw TMR0 01B7 0200 M subwf INDF,w 01B8 1C03 M btfss STATUS,C 01B9 177A M bsf Bx_dir, 6 00181 ; LedOutInd B2_B5_reg,Bx_dir,5 01BA 16FA 00182 bsf Bx_dir, 5 00183 LedOutInd B2_B4_reg,Bx_dir,4 01BB 30CE M movlw B2_B4_reg 01BC 0084 M movwf FSR ; set indirect pointer to word 01BD 0801 M movfw TMR0 01BE 0200 M subwf INDF,w 01BF 1C03 M btfss STATUS,C 01C0 167A M bsf Bx_dir, 4 00184 LedOutInd B2_B3_reg,Bx_dir,3 01C1 30CF M movlw B2_B3_reg 01C2 0084 M movwf FSR ; set indirect pointer to word 01C3 0801 M movfw TMR0 01C4 0200 M subwf INDF,w 01C5 1C03 M btfss STATUS,C 01C6 15FA M bsf Bx_dir, 3 00185 00186 LedOutInd A5_A4_reg,Ax_dir,4 01C7 30B7 M movlw A5_A4_reg 01C8 0084 M movwf FSR ; set indirect pointer to word 01C9 0801 M movfw TMR0 01CA 0200 M subwf INDF,w 01CB 1C03 M btfss STATUS,C 01CC 167B M bsf Ax_dir, 4 00187 LedOutInd A5_A3_reg,Ax_dir,3 01CD 30B6 M movlw A5_A3_reg 01CE 0084 M movwf FSR ; set indirect pointer to word 01CF 0801 M movfw TMR0 01D0 0200 M subwf INDF,w 01D1 1C03 M btfss STATUS,C 01D2 15FB M bsf Ax_dir, 3 00188 ; LedOutInd A5_A2_reg,Ax_dir,2 01D3 157B 00189 bsf Ax_dir, 2 00190 LedOutInd A5_A1_reg,Ax_dir,1 01D4 30B5 M movlw A5_A1_reg 01D5 0084 M movwf FSR ; set indirect pointer to word 01D6 0801 M movfw TMR0 01D7 0200 M subwf INDF,w 01D8 1C03 M btfss STATUS,C 01D9 14FB M bsf Ax_dir, 1 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 48 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00191 LedOutInd A5_A0_reg,Ax_dir,0 01DA 30B4 M movlw A5_A0_reg 01DB 0084 M movwf FSR ; set indirect pointer to word 01DC 0801 M movfw TMR0 01DD 0200 M subwf INDF,w 01DE 1C03 M btfss STATUS,C 01DF 147B M bsf Ax_dir, 0 00192 setbank1 01E0 1683 M bsf STATUS,RP0 ; select bank 1 01E1 1303 M bcf STATUS,RP1 01E2 087B 00193 movf Ax_dir,w ;set portA direction 01E3 0085 00194 movwf TRISA 01E4 087A 00195 movf Bx_dir,w ;set portA direction 01E5 0086 00196 movwf TRISB 00197 setbank0 01E6 1283 M bcf STATUS,RP0 ; select bank 0 01E7 1303 M bcf STATUS,RP1 00198 01E8 3004 00199 movlw b'00000100' 01E9 0086 00200 movwf PORTB 01EA 3020 00201 movlw b'00100000' 01EB 0085 00202 movwf PORTA 00203 01EC 0BA5 00204 decfsz fcount,f 01ED 29AE 00205 goto display_cycle5 00206 01EE 0008 00207 return 01741 #else 01742 error "unknown board strobe type" 01743 #endif 01744 #endif 01745 #endif 01746 #endif 01747 #endif 01748 #endif 01749 #endif 01750 #endif 01751 01752 01753 ;************************************************************************************** 01754 ; 01755 ; State Machine 01756 ; 01757 ;************************************************************************************** 01758 01759 var instate 00000026 M instate equ mem 00000027 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01760 var max_instate 00000027 M max_instate equ mem MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 49 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000028 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01761 var IR_in 00000028 M IR_in equ mem 00000029 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01762 var command 00000029 M command equ mem 0000002A M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01763 var address 0000002A M address equ mem 0000002B M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01764 var toggle 0000002B M toggle equ mem 0000002C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01765 var IR_lhalf 0000002C M IR_lhalf equ mem 0000002D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01766 var button 0000002D M button equ mem 0000002E M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01767 #ifdef M3X3 01768 var button0 01769 var button1 01770 var button2 01771 var button3 01772 var button4 01773 #endif 01774 var tx_1 0000002E M tx_1 equ mem 0000002F M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 50 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01775 var pindex2 0000002F M pindex2 equ mem 00000030 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01776 var IR_in_good 00000030 M IR_in_good equ mem 00000031 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01777 var butcount 00000031 M butcount equ mem 00000032 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01778 01779 ;-------------------------------------------------------------------------------------- 01EF 01780 get_state_tbl_hi_address ; 17 cycles 01781 ;-------------------------------------------------------------------------------------- 01782 var tbl2_hi 00000032 M tbl2_hi equ mem 00000033 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01783 01EF 1003 01784 bcf STATUS,0 ; clear carry flag ; 1 01F0 0D26 01785 rlf instate,w ; entry = table * 2 ; 2 01F1 00AF 01786 movwf pindex2 ; 3 01F2 21FC 01787 call table_lookup2 ; 14 (9+2) 01F3 00B2 01788 movwf tbl2_hi ; 15 01F4 0008 01789 return ; 16/17 01790 01791 ;-------------------------------------------------------------------------------------- 01F5 01792 get_state_tbl_low_address ; 18 cycles 01793 ;-------------------------------------------------------------------------------------- 01794 var tbl2_low 00000033 M tbl2_low equ mem 00000034 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01795 01F5 1003 01796 bcf STATUS,0 ; clear carry flag (just in case) ; 1 01F6 0D26 01797 rlf instate,w ; entry = table * 2 + 1 ; 2 01F7 3E01 01798 addlw 1 ; 3 01F8 00AF 01799 movwf pindex2 ; 4 01F9 21FC 01800 call table_lookup2 ; 15 (9+2) 01FA 00B3 01801 movwf tbl2_low ; 16 01FB 0008 01802 return ; 17/18 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 51 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01803 01804 ;********************************************************************** 01FC 01805 table_lookup2 ; 9 cycles 01806 ;********************************************************************** 01FC 3002 01807 movlw HIGH state_jump_table ; 1 01FD 008A 01808 movwf PCLATH ; 2 01FE 082F 01809 movf pindex2,w ; 3 01FF 3E07 01810 addlw LOW state_jump_table ; 4 0200 1803 01811 btfsc STATUS,0 ; check carry flag ; 5 0201 0A8A 01812 incf PCLATH,f ; 6 0202 0082 01813 movwf PCL ; 7 + 2 01814 01815 ;********************************************************************** 0203 01816 go_state_table ; 18 cycles 01817 ;********************************************************************** 01818 0203 0832 01819 movf tbl2_hi,w ; 1 0204 008A 01820 movwf PCLATH ; 2 0205 0833 01821 movf tbl2_low,w ; 3 0206 0082 01822 movwf PCL ; 4 01823 01824 ;********************************************************************** 0207 01825 state_jump_table 01826 ;********************************************************************** 01827 make_state_jump_table d'31' 0000 M local i = 0 M while i <= d'31' 0207 3402 3447 M dt HIGH Lstate0, LOW Lstate0 00000001 M i += 1 0209 3402 3452 M dt HIGH Lstate1, LOW Lstate1 00000002 M i += 1 020B 3402 345A M dt HIGH Lstate2, LOW Lstate2 00000003 M i += 1 020D 3402 3462 M dt HIGH Lstate3, LOW Lstate3 00000004 M i += 1 020F 3402 346A M dt HIGH Lstate4, LOW Lstate4 00000005 M i += 1 0211 3402 3472 M dt HIGH Lstate5, LOW Lstate5 00000006 M i += 1 0213 3402 347A M dt HIGH Lstate6, LOW Lstate6 00000007 M i += 1 0215 3402 3486 M dt HIGH Lstate7, LOW Lstate7 00000008 M i += 1 0217 3402 348A M dt HIGH Lstate8, LOW Lstate8 00000009 M i += 1 0219 3402 3496 M dt HIGH Lstate9, LOW Lstate9 0000000A M i += 1 021B 3402 349A M dt HIGH Lstate10, LOW Lstate10 0000000B M i += 1 021D 3402 34A6 M dt HIGH Lstate11, LOW Lstate11 0000000C M i += 1 021F 3402 34AA M dt HIGH Lstate12, LOW Lstate12 0000000D M i += 1 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 52 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0221 3402 34B6 M dt HIGH Lstate13, LOW Lstate13 0000000E M i += 1 0223 3402 34BA M dt HIGH Lstate14, LOW Lstate14 0000000F M i += 1 0225 3402 34C6 M dt HIGH Lstate15, LOW Lstate15 00000010 M i += 1 0227 3402 34CA M dt HIGH Lstate16, LOW Lstate16 00000011 M i += 1 0229 3402 34D6 M dt HIGH Lstate17, LOW Lstate17 00000012 M i += 1 022B 3402 34DA M dt HIGH Lstate18, LOW Lstate18 00000013 M i += 1 022D 3402 34E6 M dt HIGH Lstate19, LOW Lstate19 00000014 M i += 1 022F 3402 34EA M dt HIGH Lstate20, LOW Lstate20 00000015 M i += 1 0231 3402 34F6 M dt HIGH Lstate21, LOW Lstate21 00000016 M i += 1 0233 3402 34FA M dt HIGH Lstate22, LOW Lstate22 00000017 M i += 1 0235 3403 3406 M dt HIGH Lstate23, LOW Lstate23 00000018 M i += 1 0237 3403 340A M dt HIGH Lstate24, LOW Lstate24 00000019 M i += 1 0239 3403 3416 M dt HIGH Lstate25, LOW Lstate25 0000001A M i += 1 023B 3403 341A M dt HIGH Lstate26, LOW Lstate26 0000001B M i += 1 023D 3403 3426 M dt HIGH Lstate27, LOW Lstate27 0000001C M i += 1 023F 3403 342A M dt HIGH Lstate28, LOW Lstate28 0000001D M i += 1 0241 3403 3436 M dt HIGH Lstate29, LOW Lstate29 0000001E M i += 1 0243 3403 343A M dt HIGH Lstate30, LOW Lstate30 0000001F M i += 1 0245 3403 3446 M dt HIGH Lstate31, LOW Lstate31 00000020 M i += 1 M endw 01828 01829 state_tbl 0, 6, 1, 0 0247 M Lstate0 M #ifndef MULTIBUTTON M if (0 == 0) 0247 102D M bcf button,0 0248 3030 M movlw 0x30 0249 00B1 M movwf butcount M endif M if (0 == 1) M bsf button,0 M endif M #endif 024A 1828 M btfsc IR_in,0 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 53 LOC OBJECT CODE LINE SOURCE TEXT VALUE 024B 2A4F M goto Lstate0a M 024C 3006 M movlw 6 024D 00A6 M movwf instate M 024E 2B48 M goto Lcontinue M 024F M Lstate0a 024F 3001 M movlw 1 0250 00A6 M movwf instate M 0251 2B48 M goto Lcontinue 01830 state_tbl 1, 0, 2, -1 0252 M Lstate1 M #ifndef MULTIBUTTON M if (-1 == 0) M bcf button,0 M movlw 0x30 M movwf butcount M endif M if (-1 == 1) M bsf button,0 M endif M #endif 0252 1828 M btfsc IR_in,0 0253 2A57 M goto Lstate1a M 0254 3000 M movlw 0 0255 00A6 M movwf instate M 0256 2B48 M goto Lcontinue M 0257 M Lstate1a 0257 3002 M movlw 2 0258 00A6 M movwf instate M 0259 2B48 M goto Lcontinue 01831 state_tbl 2, 0, 3, -1 025A M Lstate2 M #ifndef MULTIBUTTON M if (-1 == 0) M bcf button,0 M movlw 0x30 M movwf butcount M endif M if (-1 == 1) M bsf button,0 M endif M #endif 025A 1828 M btfsc IR_in,0 025B 2A5F M goto Lstate2a M 025C 3000 M movlw 0 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 54 LOC OBJECT CODE LINE SOURCE TEXT VALUE 025D 00A6 M movwf instate M 025E 2B48 M goto Lcontinue M 025F M Lstate2a 025F 3003 M movlw 3 0260 00A6 M movwf instate M 0261 2B48 M goto Lcontinue 01832 state_tbl 3, 4, 3, -1 0262 M Lstate3 M #ifndef MULTIBUTTON M if (-1 == 0) M bcf button,0 M movlw 0x30 M movwf butcount M endif M if (-1 == 1) M bsf button,0 M endif M #endif 0262 1828 M btfsc IR_in,0 0263 2A67 M goto Lstate3a M 0264 3004 M movlw 4 0265 00A6 M movwf instate M 0266 2B48 M goto Lcontinue M 0267 M Lstate3a 0267 3003 M movlw 3 0268 00A6 M movwf instate M 0269 2B48 M goto Lcontinue 01833 state_tbl 4, 0, 5, -1 026A M Lstate4 M #ifndef MULTIBUTTON M if (-1 == 0) M bcf button,0 M movlw 0x30 M movwf butcount M endif M if (-1 == 1) M bsf button,0 M endif M #endif 026A 1828 M btfsc IR_in,0 026B 2A6F M goto Lstate4a M 026C 3000 M movlw 0 026D 00A6 M movwf instate M 026E 2B48 M goto Lcontinue MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 55 LOC OBJECT CODE LINE SOURCE TEXT VALUE M 026F M Lstate4a 026F 3005 M movlw 5 0270 00A6 M movwf instate M 0271 2B48 M goto Lcontinue 01834 state_tbl 5, 7, 0, -1 0272 M Lstate5 M #ifndef MULTIBUTTON M if (-1 == 0) M bcf button,0 M movlw 0x30 M movwf butcount M endif M if (-1 == 1) M bsf button,0 M endif M #endif 0272 1828 M btfsc IR_in,0 0273 2A77 M goto Lstate5a M 0274 3007 M movlw 7 0275 00A6 M movwf instate M 0276 2B48 M goto Lcontinue M 0277 M Lstate5a 0277 3000 M movlw 0 0278 00A6 M movwf instate M 0279 2B48 M goto Lcontinue 01835 027A 01836 Lstate6 01837 027A 1828 01838 btfsc IR_in,0 027B 2A84 01839 goto Lstate6a 01840 027C 3000 01841 movlw 0 027D 0731 01842 addwf butcount,w 027E 1903 01843 btfsc STATUS,Z 027F 2A82 01844 goto Lstate6b 01845 0280 0BB1 01846 decfsz butcount,f 0281 2B48 01847 goto Lcontinue 01848 0282 01849 Lstate6b 01850 01851 #ifndef MULTIBUTTON 0282 142D 01852 bsf button,0 01853 #endif 0283 2B48 01854 goto Lcontinue 01855 0284 01856 Lstate6a MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 56 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0284 01A6 01857 clrf instate 0285 2B48 01858 goto Lcontinue 01859 01860 state2_tbl 7, toggle, 0 0286 M Lstate7 M ; save the 1st half of word 0286 0828 M movf IR_in,w ; save 1st half 0287 00AC M movwf IR_lhalf 0288 0AA6 M incf instate,f M 0289 2B48 M goto Lcontinue M 028A M Lstate8 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 028A 082C M movf IR_lhalf,w 028B 0628 M xorwf IR_in,w 028C 1D03 M btfss STATUS,Z 028D 2A90 M goto Lstate8a 028E 01A6 M clrf instate ; error state = zero M 028F 2B48 M goto Lcontinue M M ; set the correct bit in output vars. 0290 M Lstate8a 0290 1828 M btfsc IR_in,0 0291 102B M bcf toggle,0 0292 1C28 M btfss IR_in,0 0293 142B M bsf toggle,0 M 0294 0AA6 M incf instate,f 0295 2B48 M goto Lcontinue 01861 state2_tbl 9, address, 4 0296 M Lstate9 M ; save the 1st half of word 0296 0828 M movf IR_in,w ; save 1st half 0297 00AC M movwf IR_lhalf 0298 0AA6 M incf instate,f M 0299 2B48 M goto Lcontinue M 029A M Lstate10 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 029A 082C M movf IR_lhalf,w 029B 0628 M xorwf IR_in,w 029C 1D03 M btfss STATUS,Z 029D 2AA0 M goto Lstate10a 029E 01A6 M clrf instate ; error state = zero M 029F 2B48 M goto Lcontinue M M ; set the correct bit in output vars. MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 57 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02A0 M Lstate10a 02A0 1828 M btfsc IR_in,0 02A1 122A M bcf address,4 02A2 1C28 M btfss IR_in,0 02A3 162A M bsf address,4 M 02A4 0AA6 M incf instate,f 02A5 2B48 M goto Lcontinue 01862 state2_tbl d'11', address, 3 02A6 M Lstate11 M ; save the 1st half of word 02A6 0828 M movf IR_in,w ; save 1st half 02A7 00AC M movwf IR_lhalf 02A8 0AA6 M incf instate,f M 02A9 2B48 M goto Lcontinue M 02AA M Lstate12 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02AA 082C M movf IR_lhalf,w 02AB 0628 M xorwf IR_in,w 02AC 1D03 M btfss STATUS,Z 02AD 2AB0 M goto Lstate12a 02AE 01A6 M clrf instate ; error state = zero M 02AF 2B48 M goto Lcontinue M M ; set the correct bit in output vars. 02B0 M Lstate12a 02B0 1828 M btfsc IR_in,0 02B1 11AA M bcf address,3 02B2 1C28 M btfss IR_in,0 02B3 15AA M bsf address,3 M 02B4 0AA6 M incf instate,f 02B5 2B48 M goto Lcontinue 01863 state2_tbl d'13', address, 2 02B6 M Lstate13 M ; save the 1st half of word 02B6 0828 M movf IR_in,w ; save 1st half 02B7 00AC M movwf IR_lhalf 02B8 0AA6 M incf instate,f M 02B9 2B48 M goto Lcontinue M 02BA M Lstate14 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02BA 082C M movf IR_lhalf,w 02BB 0628 M xorwf IR_in,w 02BC 1D03 M btfss STATUS,Z 02BD 2AC0 M goto Lstate14a MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 58 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02BE 01A6 M clrf instate ; error state = zero M 02BF 2B48 M goto Lcontinue M M ; set the correct bit in output vars. 02C0 M Lstate14a 02C0 1828 M btfsc IR_in,0 02C1 112A M bcf address,2 02C2 1C28 M btfss IR_in,0 02C3 152A M bsf address,2 M 02C4 0AA6 M incf instate,f 02C5 2B48 M goto Lcontinue 01864 state2_tbl d'15', address, 1 02C6 M Lstate15 M ; save the 1st half of word 02C6 0828 M movf IR_in,w ; save 1st half 02C7 00AC M movwf IR_lhalf 02C8 0AA6 M incf instate,f M 02C9 2B48 M goto Lcontinue M 02CA M Lstate16 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02CA 082C M movf IR_lhalf,w 02CB 0628 M xorwf IR_in,w 02CC 1D03 M btfss STATUS,Z 02CD 2AD0 M goto Lstate16a 02CE 01A6 M clrf instate ; error state = zero M 02CF 2B48 M goto Lcontinue M M ; set the correct bit in output vars. 02D0 M Lstate16a 02D0 1828 M btfsc IR_in,0 02D1 10AA M bcf address,1 02D2 1C28 M btfss IR_in,0 02D3 14AA M bsf address,1 M 02D4 0AA6 M incf instate,f 02D5 2B48 M goto Lcontinue 01865 state2_tbl d'17', address, 0 02D6 M Lstate17 M ; save the 1st half of word 02D6 0828 M movf IR_in,w ; save 1st half 02D7 00AC M movwf IR_lhalf 02D8 0AA6 M incf instate,f M 02D9 2B48 M goto Lcontinue M 02DA M Lstate18 M ; save the 2nd half of word MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 59 LOC OBJECT CODE LINE SOURCE TEXT VALUE M ; check for protocal error should get 01 or 10 02DA 082C M movf IR_lhalf,w 02DB 0628 M xorwf IR_in,w 02DC 1D03 M btfss STATUS,Z 02DD 2AE0 M goto Lstate18a 02DE 01A6 M clrf instate ; error state = zero M 02DF 2B48 M goto Lcontinue M M ; set the correct bit in output vars. 02E0 M Lstate18a 02E0 1828 M btfsc IR_in,0 02E1 102A M bcf address,0 02E2 1C28 M btfss IR_in,0 02E3 142A M bsf address,0 M 02E4 0AA6 M incf instate,f 02E5 2B48 M goto Lcontinue 01866 state2_tbl d'19', command, 5 02E6 M Lstate19 M ; save the 1st half of word 02E6 0828 M movf IR_in,w ; save 1st half 02E7 00AC M movwf IR_lhalf 02E8 0AA6 M incf instate,f M 02E9 2B48 M goto Lcontinue M 02EA M Lstate20 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02EA 082C M movf IR_lhalf,w 02EB 0628 M xorwf IR_in,w 02EC 1D03 M btfss STATUS,Z 02ED 2AF0 M goto Lstate20a 02EE 01A6 M clrf instate ; error state = zero M 02EF 2B48 M goto Lcontinue M M ; set the correct bit in output vars. 02F0 M Lstate20a 02F0 1828 M btfsc IR_in,0 02F1 12A9 M bcf command,5 02F2 1C28 M btfss IR_in,0 02F3 16A9 M bsf command,5 M 02F4 0AA6 M incf instate,f 02F5 2B48 M goto Lcontinue 01867 state2_tbl d'21', command, 4 02F6 M Lstate21 M ; save the 1st half of word 02F6 0828 M movf IR_in,w ; save 1st half 02F7 00AC M movwf IR_lhalf 02F8 0AA6 M incf instate,f MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 60 LOC OBJECT CODE LINE SOURCE TEXT VALUE M 02F9 2B48 M goto Lcontinue M 02FA M Lstate22 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02FA 082C M movf IR_lhalf,w 02FB 0628 M xorwf IR_in,w 02FC 1D03 M btfss STATUS,Z 02FD 2B00 M goto Lstate22a 02FE 01A6 M clrf instate ; error state = zero M 02FF 2B48 M goto Lcontinue M M ; set the correct bit in output vars. 0300 M Lstate22a 0300 1828 M btfsc IR_in,0 0301 1229 M bcf command,4 0302 1C28 M btfss IR_in,0 0303 1629 M bsf command,4 M 0304 0AA6 M incf instate,f 0305 2B48 M goto Lcontinue 01868 state2_tbl d'23', command, 3 0306 M Lstate23 M ; save the 1st half of word 0306 0828 M movf IR_in,w ; save 1st half 0307 00AC M movwf IR_lhalf 0308 0AA6 M incf instate,f M 0309 2B48 M goto Lcontinue M 030A M Lstate24 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 030A 082C M movf IR_lhalf,w 030B 0628 M xorwf IR_in,w 030C 1D03 M btfss STATUS,Z 030D 2B10 M goto Lstate24a 030E 01A6 M clrf instate ; error state = zero M 030F 2B48 M goto Lcontinue M M ; set the correct bit in output vars. 0310 M Lstate24a 0310 1828 M btfsc IR_in,0 0311 11A9 M bcf command,3 0312 1C28 M btfss IR_in,0 0313 15A9 M bsf command,3 M 0314 0AA6 M incf instate,f 0315 2B48 M goto Lcontinue 01869 state2_tbl d'25', command, 2 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 61 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0316 M Lstate25 M ; save the 1st half of word 0316 0828 M movf IR_in,w ; save 1st half 0317 00AC M movwf IR_lhalf 0318 0AA6 M incf instate,f M 0319 2B48 M goto Lcontinue M 031A M Lstate26 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 031A 082C M movf IR_lhalf,w 031B 0628 M xorwf IR_in,w 031C 1D03 M btfss STATUS,Z 031D 2B20 M goto Lstate26a 031E 01A6 M clrf instate ; error state = zero M 031F 2B48 M goto Lcontinue M M ; set the correct bit in output vars. 0320 M Lstate26a 0320 1828 M btfsc IR_in,0 0321 1129 M bcf command,2 0322 1C28 M btfss IR_in,0 0323 1529 M bsf command,2 M 0324 0AA6 M incf instate,f 0325 2B48 M goto Lcontinue 01870 state2_tbl d'27', command, 1 0326 M Lstate27 M ; save the 1st half of word 0326 0828 M movf IR_in,w ; save 1st half 0327 00AC M movwf IR_lhalf 0328 0AA6 M incf instate,f M 0329 2B48 M goto Lcontinue M 032A M Lstate28 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 032A 082C M movf IR_lhalf,w 032B 0628 M xorwf IR_in,w 032C 1D03 M btfss STATUS,Z 032D 2B30 M goto Lstate28a 032E 01A6 M clrf instate ; error state = zero M 032F 2B48 M goto Lcontinue M M ; set the correct bit in output vars. 0330 M Lstate28a 0330 1828 M btfsc IR_in,0 0331 10A9 M bcf command,1 0332 1C28 M btfss IR_in,0 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 62 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0333 14A9 M bsf command,1 M 0334 0AA6 M incf instate,f 0335 2B48 M goto Lcontinue 01871 state2_tbl d'29', command, 0 0336 M Lstate29 M ; save the 1st half of word 0336 0828 M movf IR_in,w ; save 1st half 0337 00AC M movwf IR_lhalf 0338 0AA6 M incf instate,f M 0339 2B48 M goto Lcontinue M 033A M Lstate30 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 033A 082C M movf IR_lhalf,w 033B 0628 M xorwf IR_in,w 033C 1D03 M btfss STATUS,Z 033D 2B40 M goto Lstate30a 033E 01A6 M clrf instate ; error state = zero M 033F 2B48 M goto Lcontinue M M ; set the correct bit in output vars. 0340 M Lstate30a 0340 1828 M btfsc IR_in,0 0341 1029 M bcf command,0 0342 1C28 M btfss IR_in,0 0343 1429 M bsf command,0 M 0344 0AA6 M incf instate,f 0345 2B48 M goto Lcontinue 01872 0346 01873 Lstate31 0346 01A6 01874 clrf instate 0347 1430 01875 bsf IR_in_good,0 01876 0348 01877 Lcontinue 0348 0008 01878 return 01879 01880 ;-------------------------------------------------------------------------------------- 0349 01881 read_button_in ; 5 cycles 01882 ;-------------------------------------------------------------------------------------- 01883 ; Portability : hardcoded button port 01884 ; 01885 #ifndef SIM_DEBUG 01886 #ifdef M8X16 01887 bcf button,1 ; 1 01888 btfss PORTC,2 ; 2 01889 bsf button,1 ; 3 01890 #else ; M8X16 01891 #ifndef MULTIBUTTON MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 63 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0349 102D 01892 bcf button,0 ; 1 034A 10AD 01893 bcf button,1 ; 1 01894 #ifdef DEDICATED_BUTTON2 01895 #ifdef SRGB 01896 btfss PORTA,5 ; 2 ; stick has 2 buttons. 01897 bsf button,1 ; 3 01898 btfss PORTA,4 ; 2 01899 bsf button,0 ; 3 01900 #else ; SRGB 034B 1E87 01901 btfss PORTC,5 ; 2 ; Dual 12C has 2 buttons. 034C 142D 01902 bsf button,0 ; 3 034D 1F87 01903 btfss PORTC,7 ; 2 034E 14AD 01904 bsf button,1 ; 3 01905 #endif ; SRGB 01906 #else ; DEDICATED_BUTTON2 01907 btfss PORTA,5 ; 2 01908 bsf button,0 ; 3 01909 #endif ; not DEDICATED_BUTTON2 01910 #endif ; not MULTIBUTTON 01911 #endif ; not M8x16 01912 #endif ; not SIM_DEBUG 034F 0008 01913 return 01914 01915 ;-------------------------------------------------------------------------------------- 0350 01916 read_ir_in ; 5 cycles 01917 ;-------------------------------------------------------------------------------------- 01918 0350 1028 01919 bcf IR_in,0 ; 1 01920 #ifndef SIM_DEBUG 01921 #ifdef C12 0351 1B07 01922 btfsc PORTC,6 ; 2 01923 #else 01924 #ifdef M8X16 01925 btfsc PORTE,3 ; 2 01926 #else 01927 btfsc PORTA,3 ; 2 01928 #endif 01929 #endif 01930 #endif 01931 0352 1428 01932 bsf IR_in,0 ; 3 01933 01934 ; movf tx_1,w ; loopback for testing HACK!! ;1 01935 ; xorlw 0x01 ; loopback for testing HACK!! ;2 01936 ; movwf IR_in ; loopback for testing HACK!! ;3 0353 0008 01937 return ; 4/5 01938 01939 ;-------------------------------------------------------------------------------------- 0354 01940 set_max_state ; 5-7 cycles 01941 ;-------------------------------------------------------------------------------------- 0354 0827 01942 movf max_instate,w 0355 0226 01943 subwf instate,w 0356 1C03 01944 btfss STATUS,C MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 64 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0357 2B5A 01945 goto smi_l1 0358 0826 01946 movf instate,w 0359 00A7 01947 movwf max_instate 035A 01948 smi_l1 035A 0008 01949 return 01950 01951 ;-------------------------------------------------------------------------------------- 035B 01952 get_next_tx_bit ; 11 cycles 01953 ;-------------------------------------------------------------------------------------- 01954 035B 102E 01955 bcf tx_1,0 ;1 035C 03BD 01956 decf scount,f ;2 035D 1003 01957 bcf STATUS, C ; clear carry bit ;3 035E 0CBC 01958 rrf out3,f ;4 035F 0CBB 01959 rrf out2,f ;5 0360 0CBA 01960 rrf out1,f ;6 0361 0CB9 01961 rrf out0,f ;7 0362 1803 01962 btfsc STATUS, C ;8 0363 142E 01963 bsf tx_1,0 ;9 01964 01965 ; movf tx_1,w ; loopback for testing HACK!! 01966 ; xorlw 0x01 ; loopback for testing HACK!! 01967 ; movwf tx_1 ; loopback for testing HACK!! 01968 ; mult_nop d'6' ; for debuging 01969 0364 0008 01970 return ;10/11 01971 01972 ;********************************************************************** 0365 01973 qdelay 01974 ;********************************************************************** 01975 var qcount 00000034 M qcount equ mem 00000035 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01976 0365 00B4 01977 movwf qcount 0366 01978 delay_loop2 0366 0BB4 01979 decfsz qcount,1 0367 2B66 01980 goto delay_loop2 0368 0008 01981 return 01982 ;********************************************************************** 0369 01983 rf_command_out 01984 ;********************************************************************** 01985 01986 var out_address 00000035 M out_address equ mem 00000036 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01987 var out_command MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 65 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000036 M out_command equ mem 00000037 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01988 var out_toggle 00000037 M out_toggle equ mem 00000038 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01989 var out_pattern 00000038 M out_pattern equ mem 00000039 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01990 var out0 00000039 M out0 equ mem 0000003A M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01991 var out1 0000003A M out1 equ mem 0000003B M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01992 var out2 0000003B M out2 equ mem 0000003C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01993 var out3 0000003C M out3 equ mem 0000003D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01994 var scount 0000003D M scount equ mem 0000003E M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 01995 0369 01BA 01996 clrf out1 036A 01BB 01997 clrf out2 036B 01BC 01998 clrf out3 01999 02000 ; start flag MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 66 LOC OBJECT CODE LINE SOURCE TEXT VALUE 036C 30A0 02001 movlw B'10100000' 036D 00B9 02002 movwf out0 02003 02004 02005 ; toggle bit 036E 09B7 02006 comf out_toggle,f ; toggle the toggle flag 036F 1C37 02007 btfss out_toggle,0 0370 143A 02008 bsf out1,0 0371 1837 02009 btfsc out_toggle,0 0372 14BA 02010 bsf out1,1 02011 02012 ; address bits 0373 1E35 02013 btfss out_address,4 0374 153A 02014 bsf out1,2 0375 1A35 02015 btfsc out_address,4 0376 15BA 02016 bsf out1,3 02017 0377 1DB5 02018 btfss out_address,3 0378 163A 02019 bsf out1,4 0379 19B5 02020 btfsc out_address,3 037A 16BA 02021 bsf out1,5 02022 037B 1D35 02023 btfss out_address,2 037C 173A 02024 bsf out1,6 037D 1935 02025 btfsc out_address,2 037E 17BA 02026 bsf out1,7 02027 037F 1CB5 02028 btfss out_address,1 0380 143B 02029 bsf out2,0 0381 18B5 02030 btfsc out_address,1 0382 14BB 02031 bsf out2,1 02032 0383 1C35 02033 btfss out_address,0 0384 153B 02034 bsf out2,2 0385 1835 02035 btfsc out_address,0 0386 15BB 02036 bsf out2,3 02037 02038 ; command bits 0387 1EB6 02039 btfss out_command,5 0388 163B 02040 bsf out2,4 0389 1AB6 02041 btfsc out_command,5 038A 16BB 02042 bsf out2,5 02043 038B 1E36 02044 btfss out_command,4 038C 173B 02045 bsf out2,6 038D 1A36 02046 btfsc out_command,4 038E 17BB 02047 bsf out2,7 02048 038F 1DB6 02049 btfss out_command,3 0390 143C 02050 bsf out3,0 0391 19B6 02051 btfsc out_command,3 0392 14BC 02052 bsf out3,1 02053 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 67 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0393 1D36 02054 btfss out_command,2 0394 153C 02055 bsf out3,2 0395 1936 02056 btfsc out_command,2 0396 15BC 02057 bsf out3,3 02058 0397 1CB6 02059 btfss out_command,1 0398 163C 02060 bsf out3,4 0399 18B6 02061 btfsc out_command,1 039A 16BC 02062 bsf out3,5 02063 039B 1C36 02064 btfss out_command,0 039C 173C 02065 bsf out3,6 039D 1836 02066 btfsc out_command,0 039E 17BC 02067 bsf out3,7 02068 039F 3021 02069 movlw 0x21 03A0 00BD 02070 movwf scount 02071 03A1 0008 02072 return 02073 02074 #ifdef BIN2LED 02075 ;********************************************************************** 03A2 02076 bin2led 02077 ;********************************************************************** 02078 var b2l_out_hi 0000003E M b2l_out_hi equ mem 0000003F M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02079 var b2l_out_low 0000003F M b2l_out_low equ mem 00000040 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02080 var b2l_lcount 00000040 M b2l_lcount equ mem 00000041 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02081 var b2l_in_red 00000041 M b2l_in_red equ mem 00000042 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02082 var b2l_in_green 00000042 M b2l_in_green equ mem 00000043 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 68 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif 02083 03A2 01BE 02084 clrf b2l_out_hi 03A3 01BF 02085 clrf b2l_out_low 03A4 3008 02086 movlw 0x08 03A5 00C0 02087 movwf b2l_lcount 03A6 02088 b2l_loop 03A6 1003 02089 bcf STATUS, C 03A7 0CC2 02090 rrf b2l_in_green,f 03A8 0DBF 02091 rlf b2l_out_low,f 03A9 0DBE 02092 rlf b2l_out_hi,f 03AA 0CC1 02093 rrf b2l_in_red,f 03AB 0DBF 02094 rlf b2l_out_low,f 03AC 0DBE 02095 rlf b2l_out_hi,f 02096 03AD 0BC0 02097 decfsz b2l_lcount,f 03AE 2BA6 02098 goto b2l_loop 03AF 0008 02099 return 02100 #endif 02101 02102 #ifdef FLIPBYTE 02103 ;********************************************************************** 03B0 02104 flipbyte 02105 ;********************************************************************** 02106 var flip_in 00000043 M flip_in equ mem 00000044 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02107 var flip_out 00000044 M flip_out equ mem 00000045 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02108 var flip_lcount 00000045 M flip_lcount equ mem 00000046 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02109 03B0 00C3 02110 movwf flip_in 03B1 01C4 02111 clrf flip_out 03B2 3008 02112 movlw 0x08 03B3 00C5 02113 movwf flip_lcount 03B4 02114 fbyte_loop 03B4 1003 02115 bcf STATUS, C 03B5 0CC3 02116 rrf flip_in,f 03B6 0DC4 02117 rlf flip_out,f 02118 03B7 0BC5 02119 decfsz flip_lcount,f MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 69 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03B8 2BB4 02120 goto fbyte_loop 02121 03B9 0844 02122 movfw flip_out 03BA 0008 02123 return 02124 #endif 02125 02126 ;********************************************************************** 03BB 02127 delay 02128 ;********************************************************************** 02129 02130 var delay_count 00000046 M delay_count equ mem 00000047 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02131 02132 ; movlw 0ffh 03BB 00C6 02133 movwf delay_count 03BC 02134 delay_loop 03BC 0000 02135 nop 03BD 0BC6 02136 decfsz delay_count,1 03BE 2BBC 02137 goto delay_loop 03BF 0008 02138 return 02139 02140 ;********************************************************************** 03C0 02141 next_pattern 02142 ;********************************************************************** 03C0 0ACD 02143 incf pattern,f 03C1 084D 02144 movf pattern,w 03C2 3C0F 02145 sublw NUM_TAB+1 ; max pattern? 03C3 1903 02146 btfsc STATUS,2 ; z bit check 03C4 01CD 02147 clrf pattern ; reset to zero 03C5 084D 02148 movfw pattern 03C6 00B8 02149 movwf out_pattern 03C7 01F9 02150 clrf pindex 03C8 01F8 02151 clrf pindex1 03C9 0008 02152 return 02153 02154 ;********************************************************************** 03CA 02155 past_pattern 02156 ;********************************************************************** 03CA 03CD 02157 decf pattern,f 03CB 084D 02158 movf pattern,w 03CC 3E01 02159 addlw 1 ; max pattern? 03CD 1D03 02160 btfss STATUS,2 ; z bit check 03CE 2BD2 02161 goto past_exit 03CF 300E 02162 movlw NUM_TAB 03D0 00CD 02163 movwf pattern 03D1 00B8 02164 movwf out_pattern 03D2 02165 past_exit 03D2 01F9 02166 clrf pindex 03D3 01F8 02167 clrf pindex1 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 70 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03D4 0008 02168 return 02169 02170 ;********************************************************************** 03D5 02171 set_pattern ;set pattern from IR 02172 ;********************************************************************** 02173 ; extra logic because all the different blinkes talk to each other, but 02174 ; do not have the same number of patterns. So if blinkie "A" sents a 02175 ; pattern 22 to blinkie "B" which only has 10 patterns, Blinkie "B" 02176 ; starts to show pattern 2. (22 % 10 a mod function.) But to make 02177 ; things fair in blinkie wars, it will transmit pattern 22 to other 02178 ; blinkies. 02179 ;********************************************************************** 02180 03D5 0829 02181 movfw command 03D6 00CD 02182 movwf pattern 03D7 00B8 02183 movwf out_pattern 03D8 02184 set_loop 03D8 3EF1 02185 addlw 0xff-NUM_TAB 03D9 1C03 02186 btfss STATUS, C 03DA 2BDF 02187 goto set_exit 02188 03DB 300E 02189 movlw NUM_TAB 03DC 02CD 02190 subwf pattern,f 03DD 084D 02191 movfw pattern 03DE 2BD8 02192 goto set_loop 02193 03DF 02194 set_exit 03DF 01F9 02195 clrf pindex 03E0 01F8 02196 clrf pindex1 03E1 0008 02197 return 02198 02199 ;********************************************************************** 03E2 02200 strobe_delay 02201 ;********************************************************************** 02202 02203 var strobe_count 00000047 M strobe_count equ mem 00000048 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02204 03E2 00C7 02205 movwf strobe_count 03E3 02206 strobe_delay1 03E3 1020 02207 bcf nextf,0 02208 03E4 02209 strobe_delay2 03E4 1C20 02210 btfss nextf,0 03E5 2BE4 02211 goto strobe_delay2 02212 03E6 0BC7 02213 decfsz strobe_count,f 03E7 2BE3 02214 goto strobe_delay1 02215 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 71 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03E8 0008 02216 return 02217 02218 #ifdef M8X16 02219 #include display_pattern_id_8x16.asm 02220 #else 02221 ;********************************************************************** 03E9 02222 display_pattern_id 02223 ;********************************************************************** 02224 03E9 0A4D 02225 incf pattern,w ; W = pattern + 1 02226 #ifdef SRGB 02227 movwf in1 02228 clrf in0 02229 clrf in2 02230 clrf in3 02231 clrf in4 02232 clrf in5 02233 #else 02234 #ifdef C12 03EA 23B0 02235 call flipbyte 03EB 00CF 02236 movwf in0 03EC 01D0 02237 clrf in1 03ED 01D1 02238 clrf in2 03EE 01D2 02239 clrf in3 03EF 01D3 02240 clrf in4 03F0 01D4 02241 clrf in5 03F1 3070 02242 movlw b'01110000' 03F2 1857 02243 btfsc demo_mode,0 03F3 00D0 02244 movwf in1 02245 #else 02246 movwf in0 02247 #endif 02248 #endif 02249 02250 #ifdef S19 02251 call flipbyte 02252 movwf in0 02253 #endif 02254 #ifdef BI6 02255 #ifdef MONO 02256 call flipbyte 02257 movwf in0 02258 #else 02259 movwf b2l_in_green 02260 clrf b2l_in_red 02261 call bin2led 02262 movf b2l_out_hi,w 02263 movwf in0 02264 movf b2l_out_low,w 02265 movwf in1 02266 #endif 02267 #endif 02268 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 72 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02269 #ifdef M3X3 02270 movwf b2l_in_green 02271 clrf b2l_in_red 02272 call bin2led 02273 movf b2l_out_hi,w 02274 movwf in0 02275 movf b2l_out_low,w 02276 movwf in1 02277 #endif 02278 02279 #ifdef C19 02280 ; outer ring hars the pattern number 02281 movwf b2l_in_red 02282 clrf b2l_in_green 02283 call bin2led 02284 movf b2l_out_hi,w 02285 movwf in0 02286 movf b2l_out_low,w 02287 movwf in1 02288 02289 ; center LED turned on 02290 clrf in2 02291 clrf in3 02292 movlw b'00001100' 02293 movwf in4 02294 02295 ; middle ring on if demo mode 02296 btfss demo_mode,0 02297 goto skip4 02298 02299 comf in3,f 02300 movlw b'11111100' 02301 movwf in4 02302 skip4 02303 02304 #endif 02305 02306 #ifdef M3X3 02307 clrf in2 02308 02309 movlw b'11100000' 02310 btfsc demo_mode,0 02311 movwf in2 02312 #endif 02313 02314 #ifdef S19 02315 clrf in1 02316 clrf in2 02317 02318 movlw b'11100000' 02319 btfsc demo_mode,0 02320 movwf in2 02321 #else MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 73 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02322 #ifdef BI6 02323 #ifdef MONO 02324 btfsc demo_mode,0 02325 bsf in0,2 02326 #else ; bicolor 02327 btfsc demo_mode,0 02328 bsf in1,4 02329 #endif ; end Mono/bicolor 02330 #endif ; end BI 02331 #endif ; end S19/BI6 02332 02333 #ifdef RGB4 02334 btfsc demo_mode,0 02335 bsf in1,7 02336 #endif 02337 #ifdef SRGB 02338 movlw b'00111000' 02339 btfsc demo_mode,0 02340 movwf in4 02341 #endif 02342 03F4 30FF 02343 movlw 0xFF 03F5 24EB 02344 call display_1bit 02345 03F6 01CF 02346 clrf in0 03F7 01D0 02347 clrf in1 03F8 01D1 02348 clrf in2 03F9 3001 02349 movlw 0x01 03FA 24EB 02350 call display_1bit 03FB 0008 02351 return 02352 #endif 02353 ;********************************************************************** 03FC 02354 setup_pattern_table 02355 ;********************************************************************** 02356 var tbl_hi 00000048 M tbl_hi equ mem 00000049 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02357 var tbl_low 00000049 M tbl_low equ mem 0000004A M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02358 var temp_high 0000004A M temp_high equ mem 0000004B M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02359 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 74 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02360 ;slabel1 02361 ; 02362 ; Set the pattern (table) 02363 ; 03FC 3005 02364 movlw HIGH MasterTable 03FD 00C8 02365 movwf tbl_hi 03FE 30EE 02366 movlw LOW MasterTable 03FF 00C9 02367 movwf tbl_low 02368 02369 ; get the high address for the pattern table 0400 1003 02370 bcf STATUS,0 ; clear carry flag 0401 0D4D 02371 rlf pattern,w ; entry = table * 2 0402 00F9 02372 movwf pindex 0403 138B 02373 bcf INTCON, GIE ; disable INTs 0404 25E1 02374 call table_lookup 0405 178B 02375 bsf INTCON, GIE ; enable INTs 0406 00CA 02376 movwf temp_high ; can't put it in tbl_high yet 02377 02378 ; get the low address for the pattern table 0407 1403 02379 bsf STATUS,0 ; set carry 0408 0D4D 02380 rlf pattern,w ; entry = table * 2 + 1 0409 00F9 02381 movwf pindex 040A 138B 02382 bcf INTCON, GIE ; disable INTs 040B 25E1 02383 call table_lookup 040C 178B 02384 bsf INTCON, GIE ; enable INTs 040D 00C9 02385 movwf tbl_low 02386 040E 084A 02387 movf temp_high,w 040F 00C8 02388 movwf tbl_hi 02389 0410 02390 sreturn 0410 0008 02391 return 02392 02393 ;********************************************************************** 0411 02394 get_next_pattern_entry 02395 ;********************************************************************** 02396 var pclath_save 0000004B M pclath_save equ mem 0000004C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02397 var temp2 0000004C M temp2 equ mem 0000004D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02398 02399 #ifndef NOEEPROM 02400 ; if hi address is 0x21 pattern is in eeprom 0411 3021 02401 movlw 0x21 0412 0248 02402 subwf tbl_hi,w MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 75 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0413 1D03 02403 btfss STATUS,Z 0414 2C19 02404 goto glabel1 02405 02406 ; table in eeprom 0415 0849 02407 movfw tbl_low 0416 0779 02408 addwf pindex,w 02409 0417 2446 02410 call read_eeprom 02411 0418 2C2B 02412 goto greturn 02413 #endif 02414 02415 ; table in program memory 0419 02416 glabel1 0419 138B 02417 bcf INTCON, GIE ; disable INTs 041A 080A 02418 movfw PCLATH 041B 00CB 02419 movwf pclath_save 02420 041C 0848 02421 movfw tbl_hi 041D 0778 02422 addwf pindex1,w 041E 00DB 02423 movwf offset_hi 02424 041F 1003 02425 bcf STATUS,C 0420 0849 02426 movfw tbl_low 0421 0779 02427 addwf pindex,w 0422 00DC 02428 movwf offset_low 02429 0423 1803 02430 btfsc STATUS,C 0424 0ADB 02431 incf offset_hi,f 0425 25E8 02432 call jump_address 02433 0426 00CC 02434 movwf temp2 0427 084B 02435 movfw pclath_save 0428 008A 02436 movwf PCLATH 0429 084C 02437 movfw temp2 042A 178B 02438 bsf INTCON, GIE ; enable INTs 02439 042B 02440 greturn 042B 0FF9 02441 incfsz pindex,f 042C 2C2E 02442 goto gskip 042D 0AF8 02443 incf pindex1,f 042E 02444 gskip 042E 0008 02445 return 02446 02447 #ifndef NOEEPROM 02448 02449 ;********************************************************************** 042F 02450 write_eeprom 02451 ; expects EEPROM address and data in pindex and input 02452 ; makes sure previous write (if any) has completed before proceeding 02453 ;********************************************************************** 042F 1683 1703 02454 BANKSEL EECON1 02455 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 76 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0431 188C 02456 btfsc EECON1,WR ;wait for WR to clear 0432 2C31 02457 goto $-1 02458 0433 138B 02459 bcf INTCON, GIE ; disable INTs 0434 150C 02460 bsf EECON1,WREN ;enable writes 0435 1283 1703 02461 BANKSEL EEADR 0437 0879 02462 movf pindex,w ;set address 0438 008D 02463 movwf EEADR 0439 0877 02464 movf input,w ;set data 043A 008C 02465 movwf EEDAT 043B 1683 1703 02466 BANKSEL EECON1 043D 3055 02467 movlw 0x55 ;EECON2 = 0x55 ;unlock sequence 043E 008D 02468 movwf EECON2 043F 30AA 02469 movlw 0xAA ;EECON2 = 0xAA ;unlock sequence 0440 008D 02470 movwf EECON2 0441 148C 02471 bsf EECON1,WR ;initiate a write cycle 0442 178B 02472 bsf INTCON, GIE ; enable INT 02473 02474 setbank0 0443 1283 M bcf STATUS,RP0 ; select bank 0 0444 1303 M bcf STATUS,RP1 0445 0008 02475 return 02476 02477 02478 ;********************************************************************** 0446 02479 read_eeprom 02480 ; expects EEPROM address in W 02481 ; returns EEPROM data in W 02482 ; makes sure previous write (if any) has completed before proceeding 02483 ;********************************************************************** 0446 138B 02484 bcf INTCON, GIE ; disable INTs 02485 0447 1683 1703 02486 BANKSEL EECON1 0449 188C 02487 btfsc EECON1,WR ;wait for WR to clear 044A 2C49 02488 goto $-1 02489 044B 110C 02490 bcf EECON1,WREN ;disable writes 044C 1283 1703 02491 BANKSEL EEADR 044E 008D 02492 movwf EEADR ;EEADR = W 044F 1683 1703 02493 BANKSEL EECON1 0451 138C 02494 bcf EECON1,7 ;clear EEPGD 0452 140C 02495 bsf EECON1,RD ;initiate a read cycle 0453 1283 1703 02496 BANKSEL EEDAT 0455 080C 02497 movf EEDAT,w ;W = EEDAT 02498 02499 setbank0 0456 1283 M bcf STATUS,RP0 ; select bank 0 0457 1303 M bcf STATUS,RP1 0458 178B 02500 bsf INTCON, GIE ; enable INT 0459 0008 02501 return 02502 #endif 02503 02504 ;********************************************************************** MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 77 LOC OBJECT CODE LINE SOURCE TEXT VALUE 045A 02505 read_demo_mode 02506 ;********************************************************************** 02507 #ifndef NOEEPROM 045A 3000 02508 movlw LOW demo_store 045B 2446 02509 call read_eeprom 02510 #else 02511 movlw 0x00 02512 #endif 045C 00D7 02513 movwf demo_mode 045D 0008 02514 return 02515 02516 ;********************************************************************** 045E 02517 toggle_demo 02518 ;********************************************************************** 045E 245A 02519 call read_demo_mode 02520 #ifndef NOEEPROM 045F 1C57 02521 btfss demo_mode,0 ; 0460 2C63 02522 goto tdemo_on 02523 02524 ; toggle off 0461 1057 02525 bcf demo_mode,0 0462 2C64 02526 goto tdemo_cont 02527 0463 02528 tdemo_on 0463 1457 02529 bsf demo_mode,0 02530 0464 02531 tdemo_cont 0464 3000 02532 movlw LOW demo_store 0465 00F9 02533 movwf pindex 0466 0857 02534 movfw demo_mode 0467 00F7 02535 movwf input 0468 242F 02536 call write_eeprom 02537 0469 23E9 02538 call display_pattern_id 046A 23E9 02539 call display_pattern_id 02540 #endif 046B 0008 02541 return 02542 02543 ;********************************************************************** 046C 02544 pattern_driver 02545 ;********************************************************************** 02546 02547 var pattern 0000004D M pattern equ mem 0000004E M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02548 var tbltype 0000004E M tbltype equ mem 0000004F M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 78 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif 02549 var in0 0000004F M in0 equ mem 00000050 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02550 var in1 00000050 M in1 equ mem 00000051 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02551 var in2 00000051 M in2 equ mem 00000052 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02552 #ifdef C12 02553 var in3 00000052 M in3 equ mem 00000053 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02554 var in4 00000053 M in4 equ mem 00000054 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02555 var in5 00000054 M in5 equ mem 00000055 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02556 #endif 02557 #ifdef C19 02558 var in3 02559 var in4 02560 var in5 02561 var in6 02562 var in7 02563 var in8 02564 var in9 02565 #endif 02566 #ifdef SRGB 02567 var in3 02568 var in4 02569 var in5 02570 var in6 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 79 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02571 var in7 02572 var in8 02573 var in9 02574 var in10 02575 var in11 02576 var in12 02577 #endif 02578 #ifdef BADGE 02579 var in3 02580 #endif 02581 #ifdef M8X16 02582 var in3 02583 var in4 02584 var in5 02585 var in6 02586 var in7 02587 var in8 02588 var in9 02589 var ina 02590 var inb 02591 var inc 02592 var ind 02593 var ine 02594 var inf 02595 var in10 02596 var in11 02597 var in12 02598 var in13 02599 var in14 02600 var in15 02601 var in16 02602 var in17 02603 var in18 02604 var in19 02605 var in1a 02606 var in1b 02607 var in1c 02608 var in1d 02609 var in1e 02610 var in1f 02611 #endif 02612 var speed 00000055 M speed equ mem 00000056 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02613 var pspeed 00000056 M pspeed equ mem 00000057 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 80 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02614 var demo_mode 00000057 M demo_mode equ mem 00000058 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02615 var psize 00000058 M psize equ mem 00000059 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02616 02617 ; need to be able to access from page1 & page2 for eeprom read/write 02618 var_all_bank pindex ; pattern index 00000079 M pindex equ mem2 00000078 M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 02619 var_all_bank pindex1 ; pattern index 00000078 M pindex1 equ mem2 00000077 M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 02620 var_all_bank input 00000077 M input equ mem2 00000076 M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 02621 046C 02622 ptop 02623 02624 046C 23FC 02625 call setup_pattern_table 02626 046D 01F9 02627 clrf pindex 046E 01F8 02628 clrf pindex1 02629 02630 ; load the table type (Currently only 1 type) 046F 2411 02631 call get_next_pattern_entry 0470 00CE 02632 movwf tbltype 0471 13CE 02633 bcf tbltype,7 ; using top bit for demo mode. 02634 02635 ; load the speed (someday this will be a table type 1 only thing.) 0472 2411 02636 call get_next_pattern_entry 0473 00D6 02637 movwf pspeed 0474 0AD6 02638 incf pspeed,f ; adjust so 0 is fastest, not treated like speed 256 02639 02640 ; load the table size 0475 2411 02641 call get_next_pattern_entry ;4rgb 0476 00D8 02642 movwf psize ;4rgb 02643 0477 02644 ploop0 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 81 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02645 ; 02646 ; Check for IR command in 02647 ; 0477 1C30 02648 btfss IR_in_good,0 0478 2C95 02649 goto button_check 02650 0479 02651 blinkie_check 0479 3007 02652 movlw 0x07 ; blinkines use address 0x07 (Experimental) 047A 022A 02653 subwf address,w 047B 1D03 02654 btfss STATUS,Z 047C 2C80 02655 goto remote_check 02656 047D 23D5 02657 call set_pattern 047E 01B0 02658 clrf IR_in_good 047F 2C6C 02659 goto ptop 02660 0480 02661 remote_check 0480 08AA 02662 movf address,f ; remote giving "0" for address (TV)? 0481 1D03 02663 btfss STATUS,Z 0482 2C95 02664 goto button_check 02665 0483 3020 02666 movlw 0x20 ; remote curser right (pattern ++) 0484 0229 02667 subwf command,w 0485 1903 02668 btfsc STATUS,Z 0486 23C0 02669 call next_pattern 02670 0487 3021 02671 movlw 0x21 ; remote curser left (pattern --) 0488 0229 02672 subwf command,w 0489 1903 02673 btfsc STATUS,Z 048A 23CA 02674 call past_pattern 02675 048B 3000 02676 movlw 0x00 ; remote "0" key (pattern = 0) 048C 0229 02677 subwf command,w 048D 1903 02678 btfsc STATUS,Z 048E 01CD 02679 clrf pattern 02680 048F 300C 02681 movlw 0x0c ; remote on/off key (togle demo mode!) 0490 0229 02682 subwf command,w 0491 1903 02683 btfsc STATUS,Z 0492 245E 02684 call toggle_demo 02685 0493 01B0 02686 clrf IR_in_good 0494 2C6C 02687 goto ptop 02688 0495 02689 button_check 02690 ; ploop1 02691 0495 082D 02692 movfw button ; if any putton pressed show pattern id 0496 1903 02693 btfsc STATUS,Z 0497 2CAB 02694 goto ploop2 02695 0498 23E9 02696 call display_pattern_id 0499 23E9 02697 call display_pattern_id MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 82 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02698 049A 02699 ploop1a 02700 02701 #ifdef M3X3 02702 movlw 0x03 ; if button 3 & 4 presses 02703 subwf button,w 02704 btfsc STATUS,Z 02705 goto mode_loop 02706 02707 movlw 0x0C ; if button 1 & 2 presses 02708 subwf button,w 02709 btfsc STATUS,Z 02710 call toggle_demo 02711 02712 #endif 02713 02714 #ifdef M8X16 02715 movlw 0x03 ; if both buttons pressed 02716 subwf button,w 02717 btfsc STATUS,Z 02718 call toggle_demo 02719 #endif 02720 #ifdef C12 049A 3003 02721 movlw 0x03 ; if both buttons pressed 049B 022D 02722 subwf button,w 049C 1903 02723 btfsc STATUS,Z 049D 245E 02724 call toggle_demo 02725 #endif 02726 02727 049E 182D 02728 btfsc button,0 ; if button 3 pressed inc pattern 049F 2CA3 02729 goto ploop1up 02730 04A0 18AD 02731 btfsc button,1 ; if button 4 pressed dec pattern 04A1 2CA7 02732 goto ploop1down 02733 04A2 2C6C 02734 goto ptop 02735 04A3 02736 ploop1up 04A3 23C0 02737 call next_pattern 04A4 23E9 02738 call display_pattern_id 04A5 23E9 02739 call display_pattern_id 04A6 2C9A 02740 goto ploop1a 02741 04A7 02742 ploop1down 04A7 23CA 02743 call past_pattern 04A8 23E9 02744 call display_pattern_id 04A9 23E9 02745 call display_pattern_id 04AA 2C9A 02746 goto ploop1a 04AB 02747 ploop2 02748 02749 #ifdef PATTERN1 02750 movlw 0x01 ; pattern1 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 83 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02751 subwf tbltype,w 02752 btfsc STATUS,Z 02753 call table_type_1 02754 #endif 02755 02756 #ifdef PATTERN2 02757 movlw 0x02 ; pattern2 02758 subwf tbltype,w 02759 btfsc STATUS,Z 02760 call table_type_2 02761 #endif 02762 02763 #ifdef PATTERN3 02764 movlw 0x03 ; pattern3 02765 subwf tbltype,w 02766 btfsc STATUS,Z 02767 call table_type_3 02768 #endif 02769 02770 #ifdef PATTERN4 02771 movlw 0x04 ; pattern4 02772 subwf tbltype,w 02773 btfsc STATUS,Z 02774 call table_type_4 02775 #endif 02776 02777 #ifdef PATTERN5 02778 movlw 0x05 ; pattern5 02779 subwf tbltype,w 02780 btfsc STATUS,Z 02781 call table_type_5 02782 #endif 02783 02784 #ifdef PATTERN6 02785 movlw 0x06 ; pattern6 02786 subwf tbltype,w 02787 btfsc STATUS,Z 02788 call table_type_6 02789 #endif 02790 02791 #ifdef PATTERN7 02792 movlw 0x07 ; pattern7 02793 subwf tbltype,w 02794 btfsc STATUS,Z 02795 call table_type_7 02796 #endif 02797 02798 #ifdef PATTERN8 02799 movlw 0x08 ; pattern8 02800 subwf tbltype,w 02801 btfsc STATUS,Z 02802 call table_type_8 02803 #endif MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 84 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02804 02805 #ifdef PATTERN9 02806 movlw 0x09 ; pattern9 02807 subwf tbltype,w 02808 btfsc STATUS,Z 02809 call table_type_9 02810 #endif 02811 02812 #ifdef PATTERN10 02813 movlw 0x0A ; pattern10 02814 subwf tbltype,w 02815 btfsc STATUS,Z 02816 call table_type_10 02817 #endif 02818 02819 #ifdef PATTERN11 02820 movlw 0x0B ; pattern11 02821 subwf tbltype,w 02822 btfsc STATUS,Z 02823 call table_type_11 02824 #endif 02825 02826 #ifdef PATTERN12 02827 movlw 0x0C ; pattern12 02828 subwf tbltype,w 02829 btfsc STATUS,Z 02830 call table_type_12 02831 #endif 02832 02833 #ifdef PATTERN13 02834 movlw 0x0D ; pattern13 02835 subwf tbltype,w 02836 btfsc STATUS,Z 02837 call table_type_13 02838 #endif 02839 02840 #ifdef PATTERN14 02841 movlw 0x0E ; pattern14 02842 subwf tbltype,w 02843 btfsc STATUS,Z 02844 call table_type_14 02845 #endif 02846 02847 #ifdef PATTERN15 02848 movlw 0x0F ; pattern15 02849 subwf tbltype,w 02850 btfsc STATUS,Z 02851 call table_type_15 02852 #endif 02853 02854 #ifdef PATTERN16 02855 movlw 0x10 ; pattern16 02856 subwf tbltype,w MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 85 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02857 pageselw table_type_16 02858 btfsc STATUS,Z 02859 call table_type_16 02860 pageselw pattern_driver 02861 #endif 02862 02863 #ifdef PATTERN17 02864 movlw 0x11 ; pattern17 02865 subwf tbltype,w 02866 btfsc STATUS,Z 02867 call table_type_17 02868 #endif 02869 02870 #ifdef PATTERN18 02871 movlw 0x12 ; pattern18 02872 subwf tbltype,w 02873 pageselw table_type_18 02874 btfsc STATUS,Z 02875 call table_type_18 02876 pageselw pattern_driver 02877 #endif 02878 02879 #ifdef PATTERN19 02880 movlw 0x13 ; pattern19 02881 subwf tbltype,w 02882 pageselw table_type_19 02883 btfsc STATUS,Z 02884 call table_type_19 02885 pageselw pattern_driver 02886 #endif 02887 02888 #ifdef PATTERN20 02889 movlw 0x14 ; pattern20 02890 subwf tbltype,w 02891 pageselw table_type_20 02892 btfsc STATUS,Z 02893 call table_type_20 02894 pageselw pattern_driver 02895 #endif 02896 02897 #ifdef PATTERN21 02898 movlw 0x15 ; pattern21 02899 subwf tbltype,w 02900 pageselw table_type_21 02901 btfsc STATUS,Z 02902 call table_type_21 02903 pageselw pattern_driver 02904 #endif 02905 02906 #ifdef PATTERN22 02907 movlw 0x16 ; pattern22 02908 subwf tbltype,w 02909 pageselw table_type_22 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 86 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02910 btfsc STATUS,Z 02911 call table_type_22 02912 pageselw pattern_driver 02913 #endif 02914 02915 #ifdef PATTERN23 04AB 3017 02916 movlw 0x17 ; pattern23 04AC 024E 02917 subwf tbltype,w 04AD 3004 008A 02918 pageselw table_type_23 04AF 1903 02919 btfsc STATUS,Z 04B0 24D8 02920 call table_type_23 04B1 3004 008A 02921 pageselw pattern_driver 02922 #endif 02923 02924 #ifdef PATTERN24 02925 movlw 0x18 ; pattern24 02926 subwf tbltype,w 02927 pageselw table_type_24 02928 btfsc STATUS,Z 02929 call table_type_24 02930 pageselw pattern_driver 02931 #endif 02932 02933 #ifdef PATTERN25 02934 movlw 0x19 ; pattern25 02935 subwf tbltype,w 02936 pageselw table_type_25 02937 btfsc STATUS,Z 02938 call table_type_25 02939 pageselw pattern_driver 02940 #endif 02941 02942 #ifdef PATTERN26 02943 movlw 0x1a ; pattern26 02944 subwf tbltype,w 02945 pageselw table_type_26 02946 btfsc STATUS,Z 02947 goto table_type_26 02948 pageselw pattern_driver 02949 #endif 02950 02951 #ifdef PATTERN27 04B3 301B 02952 movlw 0x1b ; pattern27 04B4 024E 02953 subwf tbltype,w 04B5 3008 008A 02954 pageselw table_type_27 04B7 1903 02955 btfsc STATUS,Z Message[306]: Crossing page boundary -- ensure page bits are set. 04B8 2800 02956 goto table_type_27 04B9 3004 008A 02957 pageselw pattern_driver 02958 #endif 02959 04BB 02960 pattern_return 02961 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 87 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02962 ; make sure we are not sending a IR signel 04BB 083D 02963 movf scount,w ; F22 04BC 3E00 02964 addlw 0 ; F23 04BD 1D03 02965 btfss STATUS,Z ; F24 04BE 2CCB 02966 goto ploop3 02967 02968 ; count down till net IR signel 04BF 1CA0 02969 btfss nextf,1 04C0 2CCB 02970 goto ploop3 02971 04C1 10A0 02972 bcf nextf,1 04C2 1C57 02973 btfss demo_mode,0 04C3 2CC6 02974 goto ploop2a 02975 04C4 23C0 02976 call next_pattern 04C5 2C6C 02977 goto ptop 02978 04C6 02979 ploop2a 02980 ; send an IR signel 02981 #ifdef ENABLE_IR 04C6 3007 02982 movlw 0x07 ; address 0x07 "Experimental" 04C7 00B5 02983 movwf out_address 04C8 0838 02984 movfw out_pattern 04C9 00B6 02985 movwf out_command ; copy out_pettern 02986 04CA 2369 02987 call rf_command_out 02988 #endif 02989 04CB 02990 ploop3 04CB 0BD8 02991 decfsz psize,f ;check for end of pattern (4rgb) 04CC 2C77 02992 goto ploop0 02993 04CD 2C6C 02994 goto ptop 02995 02996 #ifdef PATTERN1 02997 #include pattern_01.asm 02998 #endif 02999 03000 #ifdef PATTERN2 03001 #include pattern_02.asm 03002 #endif 03003 03004 03005 #ifdef PATTERN3 03006 #include pattern_03.asm 03007 #endif 03008 03009 03010 #ifdef PATTERN4 03011 #include pattern_04.asm 03012 #endif 03013 03014 #ifdef PATTERN5 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 88 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03015 ;********************************************************************** 03016 table_type_5 03017 ;********************************************************************** 03018 ; 03019 ; 1 bytes 03020 ; 03021 ; ABCDEFX = 7 bits for LEDs. 03022 ; 03023 03024 var p2count 03025 03026 call get_next_pattern_entry 03027 movwf in0 03028 03029 movlw 0x04 ; call display 4 times, speed thing 03030 movwf p2count 03031 03032 p2loop 03033 movfw pspeed 03034 call display_1bit 03035 03036 decfsz p2count,f 03037 goto p2loop 03038 03039 return 03040 #endif 03041 03042 #ifdef PATTERN6 03043 ;********************************************************************** 03044 table_type_6 03045 ;********************************************************************** 03046 ; 03047 ; 3 bytes 03048 ; 03049 ; AAAAAAAA AAAAAAAA AAADDDDD 03050 ; 03051 ; A = 19 bits of LED 03052 ; DDDDD = a repeat counter. 03053 03054 var p2count 03055 03056 call get_next_pattern_entry 03057 movwf in0 03058 03059 call get_next_pattern_entry 03060 movwf in1 03061 03062 call get_next_pattern_entry 03063 movwf in2 03064 03065 movlw b'00011111' 03066 andwf in2,w 03067 movwf p2count MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 89 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03068 incf p2count,f 03069 rlf p2count,f 03070 rlf p2count,f 03071 03072 p2loop 03073 movfw pspeed 03074 call display_1bit 03075 03076 decfsz p2count,f 03077 goto p2loop 03078 03079 return 03080 #endif 03081 03082 #define BRIGHT1 0x40 03083 #define BRIGHT2 0xA0 03084 03085 #ifdef PATTERN7 03086 #include pattern_07.asm 03087 #endif 03088 03089 #ifdef PATTERN19 03090 #include pattern_19.asm 03091 #endif 03092 03093 03094 #ifdef PATTERN8 03095 ;********************************************************************** 03096 table_type_8 ; - 19 LED fader 03097 ;********************************************************************** 03098 03099 var delay1 03100 var fad 03101 var color 03102 03103 03104 incf delay1,f 03105 03106 movf delay1,w ; testing for 0 03107 btfss STATUS,Z 03108 goto cf8_loop2a 03109 03110 movlw TICK_VALUE ; we are using timer0 for the counts, 0 through tick value is LED off. 03111 movwf delay1 03112 03113 ; 03114 ; select a pattern 03115 ; 03116 comf fad,f 03117 movf fad,w ; testing for 0 03118 btfss fad,0 03119 incf color,f 03120 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 90 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03121 movlw 0xFD ; testing for greater then 3 03122 addwf color,w 03123 btfsc STATUS,C 03124 clrf color 03125 03126 #ifdef M3X3 03127 nop 03128 cf8_loop2a 03129 clrf A4_A0_reg ; 1G 03130 clrf A5_A0_reg ; 2G 03131 clrf A5_A1_reg ; 3G 03132 clrf A2_A0_reg ; 4G 03133 clrf A4_A2_reg ; 5G 03134 clrf A5_A2_reg ; 6G 03135 clrf A1_A0_reg ; 7G 03136 clrf A4_A1_reg ; 8G 03137 clrf A5_A4_reg ; 9G 03138 clrf A0_A4_reg ; 1R 03139 clrf A0_A5_reg ; 2R 03140 clrf A1_A5_reg ; 3R 03141 clrf A0_A2_reg ; 4R 03142 clrf A2_A4_reg ; 5R 03143 clrf A2_A5_reg ; 6R 03144 clrf A0_A1_reg ; 7R 03145 clrf A1_A4_reg ; 8R 03146 clrf A4_A5_reg ; 9R 03147 03148 movf delay1,w ; fading up 03149 btfsc fad,0 03150 comf delay1,w ; fading down 03151 03152 btfsc color,0 03153 goto t8_skip_r 03154 03155 movwf A4_A0_reg ; 1G 03156 movwf A5_A0_reg ; 2G 03157 movwf A5_A1_reg ; 3G 03158 movwf A2_A0_reg ; 4G 03159 movwf A4_A2_reg ; 5G 03160 movwf A5_A2_reg ; 6G 03161 movwf A1_A0_reg ; 7G 03162 movwf A4_A1_reg ; 8G 03163 movwf A5_A4_reg ; 9G 03164 03165 t8_skip_r 03166 btfsc color,1 03167 goto t8_skip_g 03168 03169 movwf A0_A4_reg ; 1R 03170 movwf A0_A5_reg ; 2R 03171 movwf A1_A5_reg ; 3R 03172 movwf A0_A2_reg ; 4R 03173 movwf A2_A4_reg ; 5R MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 91 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03174 movwf A2_A5_reg ; 6R 03175 movwf A0_A1_reg ; 7R 03176 movwf A1_A4_reg ; 8R 03177 movwf A4_A5_reg ; 9R 03178 t8_skip_g 03179 03180 #else 03181 03182 nop 03183 cf8_loop2a 03184 movf delay1,w ; fading up 03185 btfsc fad,0 03186 comf delay1,w ; fading down 03187 03188 movwf A5_A0_reg ; 01 03189 movwf A2_A5_reg ; 02 03190 movwf A5_A2_reg ; 03 03191 movwf A4_A5_reg ; 04 03192 movwf A5_A4_reg ; 05 03193 movwf A1_A5_reg ; 06 03194 movwf A5_A1_reg ; 07 03195 movwf A2_A0_reg ; 08 03196 movwf A0_A2_reg ; 09 03197 movwf A4_A0_reg ; 10 03198 movwf A0_A4_reg ; 11 03199 movwf A1_A0_reg ; 12 03200 movwf A0_A1_reg ; 13 03201 movwf A4_A2_reg ; 14 03202 movwf A2_A4_reg ; 15 03203 movwf A1_A2_reg ; 16 03204 movwf A2_A1_reg ; 17 03205 movwf A1_A4_reg ; 18 03206 movwf A4_A1_reg ; 19 03207 #endif 03208 03209 movlw 0x03 03210 call strobe_delay 03211 03212 return 03213 #endif 03214 03215 #ifdef PATTERN9 03216 ;********************************************************************** 03217 table_type_9 03218 ;********************************************************************** 03219 ; 03220 ; 5 bytes 03221 ; 00000000 00000000 00111111 11111111 111111XX 03222 ; 11223344 55667788 99001122 33445566 778899XX 03223 ; RGRGRGRG RGRGRGRG RGRGRGRG RGRGRGRG RGRGRGXX 03224 ; 03225 ; XX = a repeat counter. 03226 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 92 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03227 var p2count 03228 03229 call get_next_pattern_entry 03230 movwf in0 03231 03232 call get_next_pattern_entry 03233 movwf in1 03234 03235 call get_next_pattern_entry 03236 movwf in2 03237 03238 call get_next_pattern_entry 03239 movwf in3 03240 03241 call get_next_pattern_entry 03242 movwf in4 03243 03244 movlw b'00000011' 03245 andwf in4,w 03246 movwf p2count 03247 incf p2count,f 03248 rlf p2count,f 03249 rlf p2count,f 03250 03251 p2loop 03252 movfw pspeed 03253 call display_1bit 03254 03255 decfsz p2count,f 03256 goto p2loop 03257 03258 return 03259 #endif 03260 03261 #ifdef PATTERN10 03262 ;********************************************************************** 03263 table_type_10 03264 ;********************************************************************** 03265 ; 76543210 <-- bits 03266 ; AABBCCDD <-- LEDs 03267 ; 01010101 <-- stays on for 1 unit - b'01' 03268 ; 10101010 <-- stays on for 2 units - b'10' 03269 ; 11111111 <-- stays on for 3 units - b'11' 03270 03271 ; in0 LEDs 0,1 03272 ; in1 LEDs 2,3 03273 ; in2 LEDs 4,5 03274 ; in3 LED 6 03275 03276 call get_next_pattern_entry 03277 movwf in0 03278 03279 call get_next_pattern_entry MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 93 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03280 movwf in1 03281 03282 call get_next_pattern_entry ;4rgb 03283 movwf in2 ;4rgb 03284 03285 call get_next_pattern_entry ;4rgb 03286 movwf in3 ;4rgb 03287 03288 03289 03290 movf pspeed,w 03291 movwf speed 03292 call display_2bit 03293 03294 return 03295 #endif 03296 03297 #ifdef PATTERN11 03298 ;********************************************************************** 03299 table_type_11 03300 ;********************************************************************** 03301 ; 76543210 <-- bits 03302 ; AABBCCDD <-- LEDs 03303 ; 01010101 <-- stays on for 1 unit - b'01' 03304 ; 10101010 <-- stays on for 2 units - b'10' 03305 ; 11111111 <-- stays on for 3 units - b'11' 03306 03307 ; in0 LEDs 0,1,3,4 03308 ; in1 LEDs 5,6,C 03309 03310 call get_next_pattern_entry 03311 movwf in0 03312 03313 call get_next_pattern_entry 03314 movwf in1 03315 03316 movf pspeed,w 03317 movwf speed 03318 call display_2bit 03319 03320 return 03321 #endif 03322 03323 #ifdef RANDOM 03324 03325 ;********************************************************************** 04CE 03326 gen_random 03327 ;********************************************************************** 03328 03329 var random 00000059 M random equ mem 0000005A M mem = mem + 1 M if (mem >= mem2) MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 94 LOC OBJECT CODE LINE SOURCE TEXT VALUE M error 'Too much var space used' M endif 03330 04CE 0D59 03331 RLF random,W 04CF 0D59 03332 RLF random,W 04D0 1A59 03333 BTFSC random,4 04D1 3A01 03334 XORLW 1 04D2 1AD9 03335 BTFSC random,5 04D3 3A01 03336 XORLW 1 04D4 19D9 03337 BTFSC random,3 04D5 3A01 03338 XORLW 1 04D6 00D9 03339 MOVWF random 04D7 0008 03340 return 03341 #endif 03342 03343 #ifdef PATTERN12 03344 ;********************************************************************** 03345 table_type_12 03346 ;********************************************************************** 03347 ; 03348 dupvar p12_count, b2l_out_hi 03349 03350 movlw in0 ; shift down in1f->in0 03351 movwf FSR 03352 bcf STATUS,IRP 03353 03354 #ifdef M8X16 03355 movlw 0x20 03356 #else 03357 movlw 0x04 03358 #endif 03359 03360 movwf p12_count 03361 03362 p12_loop 03363 call gen_random 03364 call gen_random 03365 call gen_random 03366 call gen_random 03367 call gen_random 03368 movwf INDF 03369 incf FSR,f 03370 03371 decfsz p12_count,f 03372 goto p12_loop 03373 03374 movfw pspeed 03375 call display_1bit 03376 03377 return 03378 #endif ; PATTERN12 03379 03380 #ifdef PATTERN13 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 95 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03381 ;********************************************************************** 03382 table_type_13 03383 ;********************************************************************** 03384 ; 03385 ; 10 bytes 03386 ; 11112222 33334444 55556666 77778888 99990000 11112222 33334444 55556666 77778888 9999XXXX 03387 ; 03388 ; XX = a repeat counter. 03389 03390 call get_next_pattern_entry 03391 movwf in0 03392 03393 call get_next_pattern_entry 03394 movwf in1 03395 03396 call get_next_pattern_entry 03397 movwf in2 03398 03399 call get_next_pattern_entry 03400 movwf in3 03401 03402 call get_next_pattern_entry 03403 movwf in4 03404 03405 call get_next_pattern_entry 03406 movwf in5 03407 03408 call get_next_pattern_entry 03409 movwf in6 03410 03411 call get_next_pattern_entry 03412 movwf in7 03413 03414 call get_next_pattern_entry 03415 movwf in8 03416 03417 call get_next_pattern_entry 03418 movwf in9 03419 03420 movlw b'00001111' 03421 andwf in9,w 03422 movwf p2count 03423 incf p2count,f 03424 rlf p2count,f 03425 rlf p2count,f 03426 03427 p3loop 03428 movfw pspeed 03429 call display_2bit 03430 03431 decfsz p2count,f 03432 goto p3loop 03433 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 96 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03434 return 03435 #endif 03436 03437 #ifdef PATTERN14 03438 ;********************************************************************** 03439 table_type_14 03440 ;********************************************************************** 03441 ; 03442 ; 5 bytes 03443 ; 11223344 55667788 99001122 33445566 778899XX 03444 ; 03445 ; XX = a repeat counter. 03446 03447 call get_next_pattern_entry 03448 movwf in0 03449 03450 call get_next_pattern_entry 03451 movwf in1 03452 03453 call get_next_pattern_entry 03454 movwf in2 03455 03456 call get_next_pattern_entry 03457 movwf in3 03458 03459 call get_next_pattern_entry 03460 movwf in4 03461 03462 movlw b'00000011' 03463 andwf in4,w 03464 movwf p2count 03465 incf p2count,f 03466 rlf p2count,f 03467 rlf p2count,f 03468 03469 p3loop 03470 movfw pspeed 03471 call display_2bit 03472 03473 decfsz p2count,f 03474 goto p3loop 03475 03476 return 03477 #endif 03478 03479 #ifdef PATTERN15 03480 ;********************************************************************** 03481 table_type_15 03482 ;********************************************************************** 03483 ; 03484 ; 6 bytes 03485 ; 0 1 2 3 4 5 03486 ; DDRRRRRR RRRRRRRR XXGGGGGG GGGGGGGG XXBBBBBB BBBBBBBB MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 97 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03487 ; xx111110 00000000 xx111110 00000000 xx111110 00000000 03488 ; xx432109 87654321 xx432109 87654321 xx432109 87654321 03489 ; 03490 ; DD = delay counter 03491 ; XX = not used 03492 var p2count 03493 03494 call get_next_pattern_entry 03495 movwf in0 03496 03497 call get_next_pattern_entry 03498 movwf in1 03499 03500 call get_next_pattern_entry 03501 movwf in2 03502 03503 call get_next_pattern_entry 03504 movwf in3 03505 03506 call get_next_pattern_entry 03507 movwf in4 03508 03509 call get_next_pattern_entry 03510 movwf in5 03511 03512 movlw b'11000000' 03513 andwf in0,w 03514 movwf p2count 03515 bcf STATUS, C 03516 rrf p2count,f 03517 rrf p2count,f 03518 rrf p2count,f 03519 rrf p2count,f 03520 rrf p2count,f 03521 rrf p2count,f 03522 incf p2count,f 03523 03524 p3loop 03525 movfw pspeed 03526 call display_1bit 03527 03528 decfsz p2count,f 03529 goto p3loop 03530 03531 return 03532 #endif 03533 03534 #ifdef PATTERN17 03535 #include "pattern_17.asm" 03536 #endif 03537 03538 #ifdef PATTERN22 03539 ;********************************************************************** MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 98 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03540 table_type_22 03541 ;********************************************************************** 03542 ; 03543 ; 32 bytes 03544 ; 03545 ; AAAABBBB 03546 ; 03547 ; A = shire Right/Left 03548 ; BB = two bit intensity to shift on 03549 ; CCCCC = Number of shifts to loop 03550 ; 03551 ; if CCCCC = 0x11111, specical case: turn all LEDs off. 03552 ; 03553 var fcount1 ;, b2l_out_hi 03554 03555 movlw in0 03556 movwf FSR 03557 bcf STATUS,IRP 03558 03559 movlw 0x20 03560 movwf fcount1 03561 03562 t22_loop 03563 call get_next_pattern_entry 03564 movwf INDF 03565 incf FSR,f 03566 decfsz fcount1,f 03567 goto t22_loop 03568 03569 movfw pspeed 03570 call display_1bit 03571 movfw pspeed 03572 call display_1bit 03573 movfw pspeed 03574 call display_1bit 03575 movfw pspeed 03576 call display_1bit 03577 03578 return 03579 #endif 03580 03581 #ifdef PATTERN23 03582 ;********************************************************************** 04D8 03583 table_type_23 03584 ;********************************************************************** 03585 ; 03586 ; 3 bytes 03587 ; 03588 ; AAAAAAAA AAAAAAAA AAADDDDD 03589 ; 03590 ; A = 19 bits of LED 03591 ; DDDDD = a repeat counter. 03592 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 99 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03593 var p2count 0000005A M p2count equ mem 0000005B M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 03594 04D8 2411 03595 call get_next_pattern_entry 04D9 00CF 03596 movwf in0 03597 04DA 2411 03598 call get_next_pattern_entry 04DB 00D0 03599 movwf in1 03600 04DC 2411 03601 call get_next_pattern_entry 04DD 00D1 03602 movwf in2 03603 04DE 2411 03604 call get_next_pattern_entry 04DF 00D2 03605 movwf in3 03606 04E0 2411 03607 call get_next_pattern_entry 04E1 00D3 03608 movwf in4 03609 04E2 2411 03610 call get_next_pattern_entry 04E3 00D4 03611 movwf in5 03612 04E4 3030 03613 movlw 0x30 04E5 00DA 03614 movwf p2count 03615 04E6 03616 p2loop 04E6 0856 03617 movfw pspeed 04E7 24EB 03618 call display_1bit 03619 04E8 0BDA 03620 decfsz p2count,f 04E9 2CE6 03621 goto p2loop 03622 04EA 0008 03623 return 03624 #endif 03625 03626 #ifdef M8X16 03627 ;********************************************************************** 03628 shift_left 03629 ;********************************************************************** 03630 ; 03631 ; shift the in1f->in1e->in1d->....->in1->in0 03632 ; 03633 03634 movlw in0 ; shift down in1f->in0 03635 movwf FSR 03636 bcf STATUS,IRP 03637 03638 movlw 0x1f 03639 movwf fcount1 03640 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 100 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03641 t23_loop 03642 incf FSR,f 03643 movfw INDF ; get n 03644 decf FSR,f 03645 movwf INDF ; put n+1 03646 incf FSR,f 03647 03648 decfsz fcount1,f 03649 goto t23_loop 03650 03651 return 03652 #endif 03653 03654 #ifdef PATTERN24 03655 ;********************************************************************** 03656 table_type_24 03657 ;********************************************************************** 03658 ; 03659 ; 2 bytes 03660 ; 03661 ; shift_left 03662 ; load new in1f and inf 03663 ; display 03664 ; 03665 03666 call shift_left 03667 03668 movlw inf ; load new inf 03669 movwf FSR 03670 call get_next_pattern_entry 03671 movwf INDF 03672 03673 movlw in1f ; load new in1f 03674 movwf FSR 03675 call get_next_pattern_entry 03676 movwf INDF 03677 03678 movfw pspeed ; display 03679 call display_1bit 03680 movfw pspeed 03681 call display_1bit 03682 movfw pspeed 03683 call display_1bit 03684 movfw pspeed 03685 call display_1bit 03686 03687 return 03688 #endif 03689 03690 #ifdef PATTERN25 03691 ;********************************************************************** 03692 table_type_25 03693 ;********************************************************************** MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 101 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03694 ; 03695 ; 03696 ; get the char 03697 ; lookup char line count 03698 ; loop char count 03699 ; shift_left 03700 ; load char line 03701 ; display 03702 ; endloop 03703 ; 03704 03705 dupvar char_in, b2l_out_hi 03706 dupvar char_color, b2l_out_low 03707 dupvar tentry, b2l_lcount 03708 dupvar char_words, b2l_in_red 03709 ; 03710 ; offset = chartabel + (char_in - 0x20) * 6 + char_offset 03711 ; offset = chartabel + (char_in - 0x20) + ((char_in - 0x21) * 4) + char_offset <<1 03712 ; offset = chartabel + (char_in - 0x20) + ((char_in - 0x21) <<2) + char_offset <<1 03713 ; 12 bit 12 bit 7 bit 9 bit 4 bit 03714 03715 call get_next_pattern_entry 03716 03717 movwf char_in 03718 movf char_in,f ; test for zero 03719 03720 movlw 0x20 ; color code? 03721 subwf char_in,w 03722 03723 btfsc STATUS,C 03724 goto skipt3 03725 03726 movf char_in,w ; get color, then pull next entry 03727 movwf char_color 03728 goto p25_return 03729 03730 skipt3 03731 ; char_in = char_in - 0x20 03732 movlw 0x20 03733 subwf char_in,f 03734 03735 ; offset = chartabel 03736 movlw LOW chartable 03737 movwf offset_low 03738 movlw HIGH chartable 03739 movwf offset_hi 03740 03741 ; offset = offset + char_in <<1 03742 movf char_in,w 03743 bcf STATUS, C ; clear carry flag just in case 03744 rlf char_in,w 03745 addwf offset_low, f 03746 btfsc STATUS,C ; check carry flag MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 102 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03747 incf offset_hi,f 03748 03749 ; char_in << 2 ; if carry offset_hi++ 03750 bcf STATUS, C ; clear carry flag just in case 03751 rlf char_in, f 03752 rlf char_in, f 03753 btfsc STATUS,C ; check carry flag 03754 incf offset_hi,f 03755 03756 ; offset = offset + char_in 03757 movf char_in,w ; offset = offset + char_in 03758 addwf offset_low, f 03759 btfsc STATUS,C ; check carry flag 03760 incf offset_hi,f 03761 03762 bcf INTCON, GIE ; disable INTs 03763 call jump_address 03764 movwf char_words 03765 03766 movf pclath_save,w 03767 movwf PCLATH 03768 bsf INTCON, GIE ; enable INTs 03769 03770 ; offset = offset + 1 03771 movlw 1 03772 addwf offset_low, f 03773 btfsc STATUS,C ; check carry flag 03774 incf offset_hi,f 03775 03776 p25_looper 03777 03778 bcf INTCON, GIE ; disable INTs 03779 call jump_address 03780 movwf tentry 03781 03782 movf pclath_save,w 03783 movwf PCLATH 03784 bsf INTCON, GIE ; enable INTs 03785 03786 ; ------------------- 03787 call shift_left 03788 03789 movf tentry, w 03790 movwf in1f 03791 03792 movf tentry, w 03793 movwf inf 03794 03795 btfss char_color,0 ; color adjust 03796 clrf in1f 03797 03798 btfss char_color,2 03799 clrf inf MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 103 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03800 03801 btfsc char_color,1 ; color adjust 03802 comf in1f,f 03803 03804 btfsc char_color,3 03805 comf inf,f 03806 03807 ; ------------------ 03808 03809 ; offset = offset + 1 03810 movlw 1 03811 addwf offset_low, f 03812 btfsc STATUS,C ; check carry flag 03813 incf offset_hi,f 03814 03815 movfw pspeed ; display 03816 call display_1bit 03817 movfw pspeed 03818 call display_1bit 03819 movfw pspeed 03820 call display_1bit 03821 movfw pspeed 03822 call display_1bit 03823 03824 decfsz char_words,f 03825 goto p25_looper 03826 03827 ; add a blank line after the char and display (spacing) 03828 call shift_left 03829 clrf in1f 03830 clrf inf 03831 03832 btfsc char_color,1 ; color adjust 03833 comf in1f,f 03834 03835 btfsc char_color,3 03836 comf inf,f 03837 ;-- 03838 03839 movfw pspeed ; display 03840 call display_1bit 03841 movfw pspeed 03842 call display_1bit 03843 movfw pspeed 03844 call display_1bit 03845 movfw pspeed 03846 call display_1bit 03847 03848 p25_return 03849 return 03850 03851 #endif 03852 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 104 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03853 #ifdef PATTERN26 03854 #include "pattern_26.asm" 03855 #endif 03856 03857 03858 #ifdef DISPLAY_1BIT_A 03859 ;********************************************************************** 03860 display_1bit ; Mono 6 LEDs, Badge LED add center (IR) for 7 03861 ;********************************************************************** 03862 03863 movwf speed ;w has the speed/delay 03864 03865 clrf Ar_reg 03866 btfsc in0,7 03867 comf Ar_reg,f 03868 03869 clrf Ag_reg 03870 btfsc in0,5 03871 comf Ag_reg,f 03872 03873 clrf Ab_reg 03874 btfsc in0,3 03875 comf Ab_reg,f 03876 03877 clrf Cr_reg 03878 btfsc in0,6 03879 comf Cr_reg,f 03880 03881 clrf Cg_reg 03882 btfsc in0,4 03883 comf Cg_reg,f 03884 03885 clrf Cb_reg 03886 btfsc in0,2 03887 comf Cb_reg,f 03888 03889 #ifdef BADGE 03890 clrf Center_reg 03891 btfsc in0,1 03892 comf Center_reg,f 03893 #endif 03894 03895 03896 movf speed,w 03897 call strobe_delay 03898 03899 return 03900 #endif 03901 #ifdef DISPLAY_1BIT_B 03902 #include display_1bit_b.asm 03903 #endif 03904 #ifdef DISPLAY_1BIT_C 03905 ;********************************************************************** MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 105 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03906 display_1bit ; 12 LEDs, BI6 & 4RGB Badge LED add center (IR) for 13 03907 ;********************************************************************** 03908 03909 movwf speed ;w has the speed/delay 03910 03911 clrf Ar_reg 03912 btfsc in0,7 03913 comf Ar_reg,f 03914 03915 clrf Ag_reg 03916 btfsc in0,3 03917 comf Ag_reg,f 03918 03919 clrf Ab_reg 03920 btfsc in1,7 03921 comf Ab_reg,f 03922 03923 clrf Br_reg 03924 btfsc in0,6 03925 comf Br_reg,f 03926 03927 clrf Bg_reg 03928 btfsc in0,2 03929 comf Bg_reg,f 03930 03931 clrf Bb_reg 03932 btfsc in1,6 03933 comf Bb_reg,f 03934 03935 clrf Cr_reg 03936 btfsc in0,5 03937 comf Cr_reg,f 03938 03939 clrf Cg_reg 03940 btfsc in0,1 03941 comf Cg_reg,f 03942 03943 clrf Cb_reg 03944 btfsc in1,5 03945 comf Cb_reg,f 03946 03947 clrf Dr_reg 03948 btfsc in0,4 03949 comf Dr_reg,f 03950 03951 clrf Dg_reg 03952 btfsc in0,0 03953 comf Dg_reg,f 03954 03955 clrf Db_reg 03956 btfsc in1,4 03957 comf Db_reg,f 03958 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 106 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03959 #ifdef BADGE 03960 clrf Center_reg 03961 btfsc in1,3 03962 comf Center_reg,f 03963 #endif 03964 03965 movf speed,w 03966 call strobe_delay 03967 03968 return 03969 #endif 03970 #ifdef DISPLAY_1BIT_D 03971 ;********************************************************************** 03972 display_1bit ; 20 LEDs 03973 ;********************************************************************** 03974 03975 movwf speed ;w has the speed/delay 03976 03977 clrf A0_A5_reg ; IR 03978 03979 clrf A5_A0_reg ; 01 03980 btfsc in0,7 03981 comf A5_A0_reg,f 03982 03983 clrf A2_A5_reg ; 02 03984 btfsc in0,6 03985 comf A2_A5_reg,f 03986 03987 clrf A5_A2_reg ; 03 03988 btfsc in0,5 03989 comf A5_A2_reg,f 03990 03991 clrf A4_A5_reg ; 04 03992 btfsc in0,4 03993 comf A4_A5_reg,f 03994 03995 clrf A5_A4_reg ; 05 03996 btfsc in0,3 03997 comf A5_A4_reg,f 03998 03999 clrf A1_A5_reg ; 06 04000 btfsc in0,2 04001 comf A1_A5_reg,f 04002 04003 clrf A5_A1_reg ; 07 04004 btfsc in0,1 04005 comf A5_A1_reg,f 04006 04007 clrf A2_A0_reg ; 08 04008 btfsc in0,0 04009 comf A2_A0_reg,f 04010 04011 clrf A0_A2_reg ; 09 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 107 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04012 btfsc in1,7 04013 comf A0_A2_reg,f 04014 04015 clrf A4_A0_reg ; 10 04016 btfsc in1,6 04017 comf A4_A0_reg,f 04018 04019 clrf A0_A4_reg ; 11 04020 btfsc in1,5 04021 comf A0_A4_reg,f 04022 04023 clrf A1_A0_reg ; 12 04024 btfsc in1,4 04025 comf A1_A0_reg,f 04026 04027 clrf A0_A1_reg ; 13 04028 btfsc in1,3 04029 comf A0_A1_reg,f 04030 04031 clrf A4_A2_reg ; 14 04032 btfsc in1,2 04033 comf A4_A2_reg,f 04034 04035 clrf A2_A4_reg ; 15 04036 btfsc in1,1 04037 comf A2_A4_reg,f 04038 04039 clrf A1_A2_reg ; 16 04040 btfsc in1,0 04041 comf A1_A2_reg,f 04042 04043 clrf A2_A1_reg ; 17 04044 btfsc in2,7 04045 comf A2_A1_reg,f 04046 04047 clrf A1_A4_reg ; 18 04048 btfsc in2,6 04049 comf A1_A4_reg,f 04050 04051 clrf A4_A1_reg ; 19 04052 btfsc in2,5 04053 comf A4_A1_reg,f 04054 04055 04056 movf speed,w 04057 call strobe_delay 04058 04059 return 04060 #endif 04061 04062 #ifdef DISPLAY_1BIT_F 04063 ;********************************************************************** 04064 display_1bit ; 20 LEDs 3x3 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 108 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04065 ;********************************************************************** 04066 04067 movwf speed ;w has the speed/delay 04068 04069 clrf A4_A0_reg ; 1G 04070 btfsc in0,7 04071 comf A4_A0_reg,f 04072 04073 clrf A5_A0_reg ; 2G 04074 btfsc in0,5 04075 comf A5_A0_reg,f 04076 04077 clrf A5_A1_reg ; 3G 04078 btfsc in0,3 04079 comf A5_A1_reg,f 04080 04081 clrf A2_A0_reg ; 4G 04082 btfsc in0,1 04083 comf A2_A0_reg,f 04084 04085 clrf A4_A2_reg ; 5G 04086 btfsc in1,7 04087 comf A4_A2_reg,f 04088 04089 clrf A5_A2_reg ; 6G 04090 btfsc in1,5 04091 comf A5_A2_reg,f 04092 04093 clrf A1_A0_reg ; 7G 04094 btfsc in1,3 04095 comf A1_A0_reg,f 04096 04097 clrf A4_A1_reg ; 8G 04098 btfsc in1,1 04099 comf A4_A1_reg,f 04100 04101 clrf A5_A4_reg ; 9G 04102 btfsc in2,7 04103 comf A5_A4_reg,f 04104 04105 #ifdef MONO 04106 clrf A0_A4_reg ; 1R 04107 clrf A0_A5_reg ; 2R 04108 clrf A1_A5_reg ; 3R 04109 clrf A0_A2_reg ; 4R 04110 clrf A2_A4_reg ; 5R 04111 clrf A2_A5_reg ; 6R 04112 clrf A0_A1_reg ; 7R 04113 clrf A1_A4_reg ; 8R 04114 clrf A4_A5_reg ; 9R 04115 04116 #else 04117 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 109 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04118 clrf A0_A4_reg ; 1R 04119 btfsc in0,6 04120 comf A0_A4_reg,f 04121 04122 clrf A0_A5_reg ; 2R 04123 btfsc in0,4 04124 comf A0_A5_reg,f 04125 04126 clrf A1_A5_reg ; 3R 04127 btfsc in0,2 04128 comf A1_A5_reg,f 04129 04130 clrf A0_A2_reg ; 4R 04131 btfsc in0,0 04132 comf A0_A2_reg,f 04133 04134 clrf A2_A4_reg ; 5R 04135 btfsc in1,6 04136 comf A2_A4_reg,f 04137 04138 clrf A2_A5_reg ; 6R 04139 btfsc in1,4 04140 comf A2_A5_reg,f 04141 04142 clrf A0_A1_reg ; 7R 04143 btfsc in1,2 04144 comf A0_A1_reg,f 04145 04146 clrf A1_A4_reg ; 8R 04147 btfsc in1,0 04148 comf A1_A4_reg,f 04149 04150 clrf A4_A5_reg ; 9R 04151 btfsc in2,6 04152 comf A4_A5_reg,f 04153 #endif 04154 04155 clrf A1_A2_reg ; 16 IR 04156 clrf A2_A1_reg ; 17 IR 04157 04158 04159 04160 movf speed,w 04161 call strobe_delay 04162 04163 return 04164 #endif 04165 04166 #ifdef DISPLAY_1BIT_G 04167 ;********************************************************************** 04168 display_1bit ; 256 Led 16x8x2 matrix 04169 ;********************************************************************** 04170 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 110 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04171 movwf speed ;w has the speed/delay 04172 ; 04173 ; going to break good coding rulTMR2es for compact code, reorder or move 04174 ; the Led_xxx vars and you break the code! 04175 ; 04176 04177 04178 ; process page 1 (0x20) Led_Gxx vars 04179 movlw (Led_G00 & 0xff) 04180 movwf FSR 04181 bcf STATUS,7 04182 04183 movfw in0 04184 call d2b_8bits 04185 movfw in1 04186 call d2b_8bits 04187 movfw in2 04188 call d2b_8bits 04189 movfw in3 04190 call d2b_8bits 04191 04192 ; process page 2 (0x60) Led_Gxx vars 04193 movlw (Led_G40 & 0xff) 04194 movwf FSR 04195 bsf STATUS,7 04196 04197 movfw in4 04198 call d2b_8bits 04199 movfw in5 04200 call d2b_8bits 04201 movfw in6 04202 call d2b_8bits 04203 movfw in7 04204 call d2b_8bits 04205 movfw in8 04206 call d2b_8bits 04207 movfw in9 04208 call d2b_8bits 04209 movfw ina 04210 call d2b_8bits 04211 movfw inb 04212 call d2b_8bits 04213 movfw inc 04214 call d2b_8bits 04215 movfw ind 04216 call d2b_8bits 04217 movfw ine 04218 call d2b_8bits 04219 movfw inf 04220 call d2b_8bits 04221 04222 ; process page 1 (0x20) Led_Rxx vars 04223 movlw (Led_R00 & 0xff) MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 111 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04224 movwf FSR 04225 bcf STATUS,7 04226 04227 movfw in10 04228 call d2b_8bits 04229 movfw in11 04230 call d2b_8bits 04231 movfw in12 04232 call d2b_8bits 04233 movfw in13 04234 call d2b_8bits 04235 04236 04237 04238 ; process page 3 (0x60) Led_Rxx vars 04239 movlw (Led_R40 & 0xff) 04240 movwf FSR 04241 bsf STATUS,7 04242 04243 movfw in14 04244 call d2b_8bits 04245 movfw in15 04246 call d2b_8bits 04247 movfw in16 04248 call d2b_8bits 04249 movfw in17 04250 call d2b_8bits 04251 movfw in18 04252 call d2b_8bits 04253 movfw in19 04254 call d2b_8bits 04255 movfw in1a 04256 call d2b_8bits 04257 movfw in1b 04258 call d2b_8bits 04259 movfw in1c 04260 call d2b_8bits 04261 movfw in1d 04262 call d2b_8bits 04263 movfw in1e 04264 call d2b_8bits 04265 movfw in1f 04266 call d2b_8bits 04267 04268 04269 movf speed,w 04270 call strobe_delay 04271 04272 bcf STATUS,7 04273 return 04274 04275 ;********************************************************************** 04276 d2b_8bits MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 112 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04277 ;********************************************************************** 04278 04279 movwf fcount1 04280 04281 clrf INDF 04282 btfsc fcount1,7 04283 comf INDF,f 04284 04285 incf FSR,f 04286 clrf INDF 04287 btfsc fcount1,6 04288 comf INDF,f 04289 04290 incf FSR,f 04291 clrf INDF 04292 btfsc fcount1,5 04293 comf INDF,f 04294 04295 incf FSR,f 04296 clrf INDF 04297 btfsc fcount1,4 04298 comf INDF,f 04299 04300 incf FSR,f 04301 clrf INDF 04302 btfsc fcount1,3 04303 comf INDF,f 04304 04305 incf FSR,f 04306 clrf INDF 04307 btfsc fcount1,2 04308 comf INDF,f 04309 04310 incf FSR,f 04311 clrf INDF 04312 btfsc fcount1,1 04313 comf INDF,f 04314 04315 incf FSR,f 04316 clrf INDF 04317 btfsc fcount1,0 04318 comf INDF,f 04319 04320 incf FSR,f 04321 return 04322 04323 #endif 04324 04325 #ifdef DISPLAY_1BIT_H 04326 #include display_1bit_h.asm 00001 ; list p=12f683,b=4,n=0 ; declare processor, tabs, and lines/page 00002 00003 ;********************************************************************** MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 113 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00004 ; Copyright (C) 2005,2006,2007 Dwayne Forsyth 00005 ; 00006 ; This program is free software; you can redistribute it and/or 00007 ; modify it under the terms of the GNU General Public License 00008 ; as published by the Free Software Foundation; either version 2 00009 ; of the License, or (at your option) any later version. 00010 ; 00011 ; This program is distributed in the hope that it will be useful, 00012 ; but WITHOUT ANY WARRANTY; without even the implied warranty of 00013 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00014 ; GNU General Public License for more details. 00015 ; 00016 ; You should have received a copy of the GNU General Public License 00017 ; along with this program; if not, write to the 00018 ; 00019 ; Free Software Foundation, Inc. 00020 ; 51 Franklin Street, Fifth Floor 00021 ; Boston, MA 02110-1301, USA. 00022 ; 00023 ;********************************************************************** 00024 00025 ;********************************************************************** 04EB 00026 display_1bit ; 2 x 12 Circle LEDs 48 LEDs 00027 ;********************************************************************** 00028 04EB 00D5 00029 movwf speed ;w has the speed/delay 00030 00031 00032 #ifndef SINGLE 00033 movlw A3_A4_reg ; R1 00034 movwf FSR 00035 clrf INDF 00036 btfsc in3,7 00037 comf INDF,f 00038 00039 movlw A4_A5_reg ; R2 00040 movwf FSR 00041 clrf INDF 00042 btfsc in3,6 00043 comf INDF,f 00044 00045 movlw A3_A5_reg ; R3 00046 movwf FSR 00047 clrf INDF 00048 btfsc in3,5 00049 comf INDF,f 00050 00051 movlw A2_A4_reg ; R4 00052 movwf FSR 00053 clrf INDF 00054 btfsc in3,4 00055 comf INDF,f 00056 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 114 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00057 movlw A2_A3_reg ; R5 00058 movwf FSR 00059 clrf INDF 00060 btfsc in3,3 00061 comf INDF,f 00062 00063 movlw A0_A4_reg ; R6 00064 movwf FSR 00065 clrf INDF 00066 btfsc in3,2 00067 comf INDF,f 00068 00069 movlw A0_A5_reg ; R7 00070 movwf FSR 00071 clrf INDF 00072 btfsc in3,1 00073 comf INDF,f 00074 00075 movlw A1_A5_reg ; R8 00076 movwf FSR 00077 clrf INDF 00078 btfsc in3,0 00079 comf INDF,f 00080 00081 movlw A1_A3_reg ; R9 00082 movwf FSR 00083 clrf INDF 00084 btfsc in4,7 00085 comf INDF,f 00086 00087 movlw A1_A2_reg ; R10 00088 movwf FSR 00089 clrf INDF 00090 btfsc in4,6 00091 comf INDF,f 00092 00093 movlw A0_A2_reg ; R11 00094 movwf FSR 00095 clrf INDF 00096 btfsc in4,5 00097 comf INDF,f 00098 00099 movlw A0_A1_reg ; R12 00100 movwf FSR 00101 clrf INDF 00102 btfsc in4,4 00103 comf INDF,f 00104 00105 ; movlw A3_A0_reg ; 00106 ; movwf FSR 00107 ; clrf INDF 00108 00109 ; movlw A4_A1_reg ; MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 115 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00110 ; movwf FSR 00111 ; clrf INDF 00112 00113 ; movlw A5_A2_reg ; 00114 ; movwf FSR 00115 ; clrf INDF 00116 00117 ; movlw A0_A3_reg ; 00118 ; movwf FSR 00119 ; clrf INDF 00120 00121 ; movlw A1_A4_reg ; 00122 ; movwf FSR 00123 ; clrf INDF 00124 00125 ; movlw A2_A5_reg ; 00126 ; movwf FSR 00127 ; clrf INDF 00128 00129 00130 #ifndef MONO 00131 movlw A4_A3_reg ; G1 00132 movwf FSR 00133 clrf INDF 00134 btfsc in4,3 00135 comf INDF,f 00136 00137 movlw A5_A4_reg ; G2 00138 movwf FSR 00139 clrf INDF 00140 btfsc in4,2 00141 comf INDF,f 00142 00143 movlw A5_A3_reg ; G3 00144 movwf FSR 00145 clrf INDF 00146 btfsc in4,1 00147 comf INDF,f 00148 00149 movlw A4_A2_reg ; G4 00150 movwf FSR 00151 clrf INDF 00152 btfsc in4,0 00153 comf INDF,f 00154 00155 movlw A3_A2_reg ; G5 00156 movwf FSR 00157 clrf INDF 00158 btfsc in5,7 00159 comf INDF,f 00160 00161 movlw A4_A0_reg ; G6 00162 movwf FSR MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 116 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00163 clrf INDF 00164 btfsc in5,6 00165 comf INDF,f 00166 00167 movlw A5_A0_reg ; G7 00168 movwf FSR 00169 clrf INDF 00170 btfsc in5,5 00171 comf INDF,f 00172 00173 movlw A5_A1_reg ; G8 00174 movwf FSR 00175 clrf INDF 00176 btfsc in5,4 00177 comf INDF,f 00178 00179 movlw A3_A1_reg ; G9 00180 movwf FSR 00181 clrf INDF 00182 btfsc in5,3 00183 comf INDF,f 00184 00185 movlw A2_A1_reg ; G10 00186 movwf FSR 00187 clrf INDF 00188 btfsc in5,2 00189 comf INDF,f 00190 00191 movlw A2_A0_reg ; G11 00192 movwf FSR 00193 clrf INDF 00194 btfsc in5,1 00195 comf INDF,f 00196 00197 movlw A1_A0_reg ; G12 00198 movwf FSR 00199 clrf INDF 00200 btfsc in5,0 00201 comf INDF,f 00202 00203 #endif 00204 #endif 00205 04EC 30CC 00206 movlw B2_B7_reg ; R1 04ED 0084 00207 movwf FSR 04EE 0180 00208 clrf INDF 04EF 1BCF 00209 btfsc in0,7 04F0 0980 00210 comf INDF,f 00211 04F1 30C8 00212 movlw B3_B7_reg ; R2 04F2 0084 00213 movwf FSR 04F3 0180 00214 clrf INDF 04F4 1B4F 00215 btfsc in0,6 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 117 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04F5 0980 00216 comf INDF,f 00217 04F6 30C9 00218 movlw B3_B5_reg ; R3 04F7 0084 00219 movwf FSR 04F8 0180 00220 clrf INDF 04F9 1ACF 00221 btfsc in0,5 04FA 0980 00222 comf INDF,f 00223 04FB 30CA 00224 movlw B3_B4_reg ; R4 04FC 0084 00225 movwf FSR 04FD 0180 00226 clrf INDF 04FE 1A4F 00227 btfsc in0,4 04FF 0980 00228 comf INDF,f 00229 0500 30CE 00230 movlw B2_B4_reg ; R5 0501 0084 00231 movwf FSR 0502 0180 00232 clrf INDF 0503 19CF 00233 btfsc in0,3 0504 0980 00234 comf INDF,f 00235 0505 30CF 00236 movlw B2_B3_reg ; R6 0506 0084 00237 movwf FSR 0507 0180 00238 clrf INDF 0508 194F 00239 btfsc in0,2 0509 0980 00240 comf INDF,f 00241 050A 30C1 00242 movlw B5_B6_reg ; R7 050B 0084 00243 movwf FSR 050C 0180 00244 clrf INDF 050D 18CF 00245 btfsc in0,1 050E 0980 00246 comf INDF,f 00247 050F 30BC 00248 movlw B6_B7_reg ; R8 0510 0084 00249 movwf FSR 0511 0180 00250 clrf INDF 0512 184F 00251 btfsc in0,0 0513 0980 00252 comf INDF,f 00253 0514 30C0 00254 movlw B5_B7_reg ; R9 0515 0084 00255 movwf FSR 0516 0180 00256 clrf INDF 0517 1BD0 00257 btfsc in1,7 0518 0980 00258 comf INDF,f 00259 0519 30C4 00260 movlw B4_B6_reg ; R10 051A 0084 00261 movwf FSR 051B 0180 00262 clrf INDF 051C 1B50 00263 btfsc in1,6 051D 0980 00264 comf INDF,f 00265 051E 30C5 00266 movlw B4_B5_reg ; R11 051F 0084 00267 movwf FSR 0520 0180 00268 clrf INDF MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 118 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0521 1AD0 00269 btfsc in1,5 0522 0980 00270 comf INDF,f 00271 0523 30CD 00272 movlw B2_B6_reg ; R12 0524 0084 00273 movwf FSR 0525 0180 00274 clrf INDF 0526 1A50 00275 btfsc in1,4 0527 0980 00276 comf INDF,f 00277 00278 ; movlw B4_B7_reg 00279 ; movwf FSR 00280 ; clrf INDF 00281 00282 ; movlw B3_B6_reg 00283 ; movwf FSR 00284 ; clrf INDF 00285 00286 ; movlw B2_B5_reg 00287 ; movwf FSR 00288 ; clrf INDF 00289 00290 ; movlw B7_B4_reg 00291 ; movwf FSR 00292 ; clrf INDF 00293 00294 ; movlw B6_B3_reg 00295 ; movwf FSR 00296 ; clrf INDF 00297 00298 ; movlw B5_B2_reg 00299 ; movwf FSR 00300 ; clrf INDF 00301 00302 #ifndef MONO 0528 30BB 00303 movlw B7_B2_reg ; G1 0529 0084 00304 movwf FSR 052A 0180 00305 clrf INDF 052B 19D0 00306 btfsc in1,3 052C 0980 00307 comf INDF,f 00308 052D 30BA 00309 movlw B7_B3_reg ; G2 052E 0084 00310 movwf FSR 052F 0180 00311 clrf INDF 0530 1950 00312 btfsc in1,2 0531 0980 00313 comf INDF,f 00314 0532 30C3 00315 movlw B5_B3_reg ; G3 0533 0084 00316 movwf FSR 0534 0180 00317 clrf INDF 0535 18D0 00318 btfsc in1,1 0536 0980 00319 comf INDF,f 00320 0537 30C6 00321 movlw B4_B3_reg ; G4 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 119 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0538 0084 00322 movwf FSR 0539 0180 00323 clrf INDF 053A 1850 00324 btfsc in1,0 053B 0980 00325 comf INDF,f 00326 053C 30C7 00327 movlw B4_B2_reg ; G5 053D 0084 00328 movwf FSR 053E 0180 00329 clrf INDF 053F 1BD1 00330 btfsc in2,7 0540 0980 00331 comf INDF,f 00332 0541 30CB 00333 movlw B3_B2_reg ; G6 0542 0084 00334 movwf FSR 0543 0180 00335 clrf INDF 0544 1B51 00336 btfsc in2,6 0545 0980 00337 comf INDF,f 00338 0546 30BD 00339 movlw B6_B5_reg ; G7 0547 0084 00340 movwf FSR 0548 0180 00341 clrf INDF 0549 1AD1 00342 btfsc in2,5 054A 0980 00343 comf INDF,f 00344 054B 30B8 00345 movlw B7_B6_reg ; G8 054C 0084 00346 movwf FSR 054D 0180 00347 clrf INDF 054E 1A51 00348 btfsc in2,4 054F 0980 00349 comf INDF,f 00350 0550 30B9 00351 movlw B7_B5_reg ; G9 0551 0084 00352 movwf FSR 0552 0180 00353 clrf INDF 0553 19D1 00354 btfsc in2,3 0554 0980 00355 comf INDF,f 00356 0555 30BE 00357 movlw B6_B4_reg ; G10 0556 0084 00358 movwf FSR 0557 0180 00359 clrf INDF 0558 1951 00360 btfsc in2,2 0559 0980 00361 comf INDF,f 00362 055A 30C2 00363 movlw B5_B4_reg ; G11 055B 0084 00364 movwf FSR 055C 0180 00365 clrf INDF 055D 18D1 00366 btfsc in2,1 055E 0980 00367 comf INDF,f 00368 055F 30BF 00369 movlw B6_B2_reg ; G12 0560 0084 00370 movwf FSR 0561 0180 00371 clrf INDF 0562 1851 00372 btfsc in2,0 0563 0980 00373 comf INDF,f 00374 #endif MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 120 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00375 0564 0855 00376 movf speed,w 0565 23E2 00377 call strobe_delay 00378 0566 0008 00379 return 00380 04327 #endif 04328 04329 #ifdef DISPLAY_2BIT_A 04330 ;********************************************************************** 04331 display_2bit 04332 ;********************************************************************** 04333 movf speed,w ;enter here if repeat count is in speed 04334 display_w_2bit ;enter here if repeat count is in W reg 04335 04336 ; 76543210 <-- bits 04337 ; AABBCCDD <-- LEDs 04338 ; 01010101 <-- stays on for 1 unit - b'01' 04339 ; 10101010 <-- stays on for 2 units - b'10' 04340 ; 11111111 <-- stays on for 3 units - b'11' 04341 04342 ; in0 LEDs 1,2,3,4 04343 ; in1 LEDs 5,6,C 04344 04345 04346 clrf Ar_reg 04347 movlw BRIGHT1 04348 btfsc in0,6 04349 addwf Ar_reg,f 04350 movlw BRIGHT2 04351 btfsc in0,7 04352 addwf Ar_reg,f 04353 04354 clrf Ag_reg 04355 movlw BRIGHT1 04356 btfsc in0,2 04357 addwf Ag_reg,f 04358 movlw BRIGHT2 04359 btfsc in0,3 04360 addwf Ag_reg,f 04361 04362 clrf Ab_reg 04363 movlw BRIGHT1 04364 btfsc in1,6 04365 addwf Ab_reg,f 04366 movlw BRIGHT2 04367 btfsc in1,7 04368 addwf Ab_reg,f 04369 04370 clrf Cr_reg 04371 movlw BRIGHT1 04372 btfsc in0,4 04373 addwf Cr_reg,f MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 121 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04374 movlw BRIGHT2 04375 btfsc in0,5 04376 addwf Cr_reg,f 04377 04378 clrf Cg_reg 04379 movlw BRIGHT1 04380 btfsc in0,0 04381 addwf Cg_reg,f 04382 movlw BRIGHT2 04383 btfsc in0,1 04384 addwf Cg_reg,f 04385 04386 clrf Cb_reg 04387 movlw BRIGHT1 04388 btfsc in1,4 04389 addwf Cb_reg,f 04390 movlw BRIGHT2 04391 btfsc in1,5 04392 addwf Cb_reg,f 04393 04394 #ifdef BADGE 04395 clrf Center_reg 04396 movlw BRIGHT1 04397 btfsc in1,2 04398 addwf Center_reg,f 04399 movlw BRIGHT2 04400 btfsc in1,3 04401 addwf Center_reg,f 04402 #endif 04403 04404 movf speed,w 04405 call strobe_delay 04406 movf speed,w 04407 call strobe_delay 04408 movf speed,w 04409 call strobe_delay 04410 04411 return 04412 #endif 04413 04414 #ifdef DISPLAY_2BIT_C 04415 ;********************************************************************** 04416 display_2bit 04417 ;********************************************************************** 04418 movf speed,w ;enter here if repeat count is in speed 04419 display_w_2bit ;enter here if repeat count is in W reg 04420 04421 ; 76543210 <-- bits 04422 ; AABBCCDD <-- LEDs 04423 ; 01010101 <-- stays on for 1 unit - b'01' 04424 ; 10101010 <-- stays on for 2 units - b'10' 04425 ; 11111111 <-- stays on for 3 units - b'11' 04426 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 122 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04427 ; in0 red 04428 ; in1 green 04429 ; in2 blue 04430 04431 clrf Ar_reg 04432 movlw BRIGHT1 04433 btfsc in0,6 04434 addwf Ar_reg,f 04435 movlw BRIGHT2 04436 btfsc in0,7 04437 addwf Ar_reg,f 04438 04439 clrf Ag_reg 04440 movlw BRIGHT1 04441 btfsc in1,6 04442 addwf Ag_reg,f 04443 movlw BRIGHT2 04444 btfsc in1,7 04445 addwf Ag_reg,f 04446 04447 clrf Ab_reg 04448 movlw BRIGHT1 04449 btfsc in2,6 04450 addwf Ab_reg,f 04451 movlw BRIGHT2 04452 btfsc in2,7 04453 addwf Ab_reg,f 04454 04455 clrf Br_reg 04456 movlw BRIGHT1 04457 btfsc in0,4 04458 addwf Br_reg,f 04459 movlw BRIGHT2 04460 btfsc in0,5 04461 addwf Br_reg,f 04462 04463 clrf Bg_reg 04464 movlw BRIGHT1 04465 btfsc in1,4 04466 addwf Bg_reg,f 04467 movlw BRIGHT2 04468 btfsc in1,5 04469 addwf Bg_reg,f 04470 04471 clrf Bb_reg 04472 movlw BRIGHT1 04473 btfsc in2,4 04474 addwf Bb_reg,f 04475 movlw BRIGHT2 04476 btfsc in2,5 04477 addwf Bb_reg,f 04478 04479 clrf Cr_reg MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 123 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04480 movlw BRIGHT1 04481 btfsc in0,2 04482 addwf Cr_reg,f 04483 movlw BRIGHT2 04484 btfsc in0,3 04485 addwf Cr_reg,f 04486 04487 clrf Cg_reg 04488 movlw BRIGHT1 04489 btfsc in1,2 04490 addwf Cg_reg,f 04491 movlw BRIGHT2 04492 btfsc in1,3 04493 addwf Cg_reg,f 04494 04495 clrf Cb_reg 04496 movlw BRIGHT1 04497 btfsc in2,2 04498 addwf Cb_reg,f 04499 movlw BRIGHT2 04500 btfsc in2,3 04501 addwf Cb_reg,f 04502 04503 clrf Dr_reg 04504 movlw BRIGHT1 04505 btfsc in0,0 04506 addwf Dr_reg,f 04507 movlw BRIGHT2 04508 btfsc in0,1 04509 addwf Dr_reg,f 04510 04511 clrf Dg_reg 04512 movlw BRIGHT1 04513 btfsc in1,0 04514 addwf Dg_reg,f 04515 movlw BRIGHT2 04516 btfsc in1,1 04517 addwf Dg_reg,f 04518 04519 clrf Db_reg 04520 movlw BRIGHT1 04521 btfsc in2,0 04522 addwf Db_reg,f 04523 movlw BRIGHT2 04524 btfsc in2,1 04525 addwf Db_reg,f 04526 04527 #ifdef BADGE 04528 clrf Center_reg 04529 movlw BRIGHT1 04530 btfsc in3,6 04531 addwf Center_reg,f 04532 movlw BRIGHT2 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 124 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04533 btfsc in3,7 04534 addwf Center_reg,f 04535 #endif 04536 04537 movf speed,w 04538 call strobe_delay 04539 movf speed,w 04540 call strobe_delay 04541 movf speed,w 04542 call strobe_delay 04543 04544 return 04545 #endif 04546 04547 #define BRIGHT1H 0xA0 04548 #define BRIGHT2H 0x40 04549 04550 #ifdef DISPLAY_2BIT_D 04551 #include display_2bit_d 04552 #endif 04553 04554 #ifdef DISPLAY_2BIT_E 04555 #include display_2bit_e 04556 #endif 04557 04558 #ifdef DISPLAY_1BIT_E 04559 ;********************************************************************** 04560 display_1bit ; RGB Stick (14 * 3 = 42 LEDs 04561 ;********************************************************************** 04562 var temp4 04563 04564 movwf speed ;w has the speed/delay 04565 04566 ; set all var 0xA0 to 0xEF to zero 04567 movlw 0xA0 04568 movwf FSR 04569 04570 movlw 0x50 04571 movwf temp4 04572 04573 clr_loop 04574 04575 clrf INDF 04576 incf FSR,f 04577 decfsz temp4,f 04578 goto clr_loop 04579 04580 pageselw rgb_stick_expand 04581 call rgb_stick_expand 04582 pageselw display_1bit 04583 04584 movf speed,w 04585 call strobe_delay MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 125 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04586 04587 return 04588 #endif 04589 04590 ;********************************************************************** 04591 ; IR Tester 04592 ;********************************************************************** 0567 04593 IR_Tester 0567 04594 itop 0567 3002 04595 movlw 0x02 0568 0226 04596 subwf instate,w 0569 1C03 04597 btfss STATUS,C 056A 0103 04598 clrw 056B 00CF 04599 movwf in0 04600 056C 3000 04601 movlw 0x00 056D 00D0 04602 movwf in1 04603 056E 3001 04604 movlw 0x01 056F 24EB 04605 call display_1bit 04606 04607 ; 04608 ; Check for push button 04609 ; 0570 04610 ibutton 0570 082D 04611 movf button,w 0571 1903 04612 btfsc STATUS,Z 0572 2D83 04613 goto iloop1 0573 01A7 04614 clrf max_instate 0574 01A6 04615 clrf instate 04616 0575 083D 04617 movf scount,w ; if sending an IR command ignore button 0576 3E00 04618 addlw 0 ; not sure if needed 0577 1D03 04619 btfss STATUS,Z 0578 2D70 04620 goto ibutton 04621 0579 082D 04622 movf button,w ; 2st 8 bits are the buttons 057A 00D0 04623 movwf in1 057B 01CF 04624 clrf in0 ; next 8 are zero 04625 ; movlw 0x80 04626 ; movwf in2 ; led 17 is on 04627 04628 #ifdef M8X16 04629 movfw button 04630 movwf in3 04631 #endif 04632 057C 3001 04633 movlw 0x01 057D 24EB 04634 call display_1bit 04635 04636 ; send an IR signel 057E 01B5 04637 clrf out_address ; address 0x00 "TV remote" 04638 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 126 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04639 #ifdef M3X3 04640 04641 movlw 0x03 ; if button 3 & 4 presses 04642 subwf button,w 04643 btfsc STATUS,Z 04644 goto mode_loop 04645 04646 btfsc button,0 ; if button 3 pressed 04647 goto send_chan_up 04648 04649 btfsc button,1 ; if button 4 pressed 04650 goto send_chan_down 04651 04652 btfsc button,2 ; if button 1 pressed 04653 goto send_vol_up 04654 04655 btfsc button,3 ; if button 2 pressed 04656 goto send_vol_down 04657 04658 btfsc button,4 ; if button 5 pressed 04659 goto send_on_off 04660 04661 send_chan_up 04662 movlw 0x20 04663 movwf out_command ; code 0x0c (on/off) 04664 call rf_command_out 04665 goto ibutton 04666 04667 send_chan_down 04668 movlw 0x21 04669 movwf out_command ; code 0x0c (on/off) 04670 call rf_command_out 04671 goto ibutton 04672 04673 send_vol_up 04674 movlw 0x10 04675 movwf out_command ; code 0x0c (on/off) 04676 call rf_command_out 04677 goto ibutton 04678 04679 send_vol_down 04680 movlw 0x11 04681 movwf out_command ; code 0x0c (on/off) 04682 call rf_command_out 04683 goto ibutton 04684 04685 #endif 04686 057F 04687 send_on_off 057F 300C 04688 movlw 0x0c 0580 00B6 04689 movwf out_command ; code 0x0c (on/off) 0581 2369 04690 call rf_command_out 0582 2D70 04691 goto ibutton MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 127 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04692 04693 04694 ; 04695 ; Check for IR Command 04696 ; 0583 04697 iloop1 0583 1C30 04698 btfss IR_in_good,0 0584 2D67 04699 goto itop 0585 01B0 04700 clrf IR_in_good 04701 04702 ; flash all LEDs Red 0586 30F0 04703 movlw 0xF0 0587 00CF 04704 movwf in0 0588 01D0 04705 clrf in1 04706 0589 307F 04707 movlw 0x7f 058A 24EB 04708 call display_1bit 04709 04710 ; flash all LEDs off 058B 01CF 04711 clrf in0 058C 01D0 04712 clrf in1 04713 058D 303F 04714 movlw 0x3f 058E 24EB 04715 call display_1bit 04716 04717 ; flash all LEDs Red 058F 30F0 04718 movlw 0xF0 0590 00CF 04719 movwf in0 0591 01D0 04720 clrf in1 04721 0592 307F 04722 movlw 0x7f 0593 24EB 04723 call display_1bit 04724 04725 ; display command and address 0594 0829 04726 movf command,w 0595 00CF 04727 movwf in0 0596 082A 04728 movf address,w 0597 00D0 04729 movwf in1 04730 0598 30FF 04731 movlw 0xff 0599 24EB 04732 call display_1bit 059A 30FF 04733 movlw 0xff 059B 24EB 04734 call display_1bit 059C 01A7 04735 clrf max_instate 059D 01A6 04736 clrf instate 04737 059E 2D67 04738 goto itop 04739 04740 #ifdef M3X3 04741 ;********************************************************************** 04742 Dice 04743 ;********************************************************************** 04744 var temp MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 128 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04745 04746 call roll_dice 04747 dice_loop 04748 04749 movlw 0x03 ; if button 3 & 4 presses 04750 subwf button,w 04751 btfsc STATUS,Z 04752 goto mode_loop 04753 04754 btfsc button,0 ; if button 1 pressed 04755 call roll_dice 04756 04757 movlw 0x01 04758 subwf temp,w 04759 btfsc STATUS,Z 04760 goto diplay_1 04761 04762 movlw 0x02 04763 subwf temp,w 04764 btfsc STATUS,Z 04765 goto diplay_2 04766 04767 movlw 0x03 04768 subwf temp,w 04769 btfsc STATUS,Z 04770 goto diplay_3 04771 04772 movlw 0x04 04773 subwf temp,w 04774 btfsc STATUS,Z 04775 goto diplay_4 04776 04777 movlw 0x05 04778 subwf temp,w 04779 btfsc STATUS,Z 04780 goto diplay_5 04781 04782 movlw 0x06 04783 subwf temp,w 04784 btfsc STATUS,Z 04785 goto diplay_6 04786 04787 ; get random number 0-7 re-roll if we get a 0 or 7. 04788 call roll_dice 04789 goto dice_loop 04790 04791 04792 diplay_1 04793 clrf in0 04794 movlw b'11000000' 04795 movwf in1 04796 clrf in2 04797 goto dice_display_digit MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 129 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04798 04799 diplay_2 04800 movlw b'00001100' 04801 movwf in0 04802 movwf in1 04803 clrf in2 04804 goto dice_display_digit 04805 04806 diplay_3 04807 movlw b'00001100' 04808 movwf in0 04809 movlw b'11001100' 04810 movwf in1 04811 clrf in2 04812 goto dice_display_digit 04813 04814 diplay_4 04815 movlw b'11001100' 04816 movwf in0 04817 movwf in2 04818 movlw b'00001100' 04819 movwf in1 04820 goto dice_display_digit 04821 04822 diplay_5 04823 movlw b'11001100' 04824 movwf in0 04825 movwf in1 04826 movwf in1 04827 goto dice_display_digit 04828 04829 diplay_6 04830 movlw b'11001111' 04831 movwf in0 04832 movwf in2 04833 movlw b'00111100' 04834 movwf in1 04835 04836 dice_display_digit 04837 movlw 0xff 04838 call display_1bit 04839 04840 goto dice_loop 04841 04842 04843 roll_dice 04844 incf temp2,f 04845 call gen_random 04846 movlw b'01010101' 04847 movwf in0 04848 movwf in1 04849 movwf in2 04850 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 130 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04851 movlw 0xff 04852 call display_1bit 04853 04854 movlw b'10101010' 04855 movwf in0 04856 movwf in1 04857 movwf in2 04858 04859 movlw 0xff 04860 call display_1bit 04861 04862 btfsc button,0 ; if button 1 pressed 04863 goto roll_dice 04864 04865 movfw random 04866 addwf count1,w 04867 addwf temp2,w 04868 movwf temp 04869 rrf temp,f 04870 movlw 0x07 04871 andwf temp,f 04872 04873 return 04874 04875 #endif 04876 04877 ; 04878 ; M A I N 04879 ; 04880 ;********************************************************************** 059F 04881 main 04882 ;********************************************************************** 059F 0185 04883 clrf PORTA 05A0 0181 04884 clrf TMR0 05A1 01CD 04885 clrf pattern 04886 ; movlw 0x05 04887 ; movwf pattern 05A2 01BD 04888 clrf scount 05A3 01AB 04889 clrf toggle 05A4 01AA 04890 clrf address 05A5 01A9 04891 clrf command 05A6 01AC 04892 clrf IR_lhalf 05A7 01A6 04893 clrf instate 05A8 01A7 04894 clrf max_instate 05A9 01B0 04895 clrf IR_in_good 05AA 01A1 04896 clrf dcycle 05AB 01A2 04897 clrf count1 05AC 01A3 04898 clrf count2 05AD 01AD 04899 clrf button 04900 #ifdef PATTERN2 04901 clrf delay1 04902 clrf fad 04903 clrf color MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 131 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04904 #end 04905 #idndef C12 04906 #ifndef C19 04907 #ifndef M3X3 04908 #ifdef MONO 04909 clrf Br_reg 04910 clrf Bg_reg 04911 clrf Bb_reg 04912 clrf Dr_reg 04913 clrf Dg_reg 04914 clrf Db_reg 04915 #endif 04916 #endif 04917 #endif 04918 #endif 04919 05AE 1683 1303 04920 BANKSEL OSCCON 04921 #ifdef __16F886 05B0 3071 04922 movlw b'01110001' ;switch to 8 MHz clock 04923 #else 04924 movlw b'01110000' ;switch to 8 MHz clock 04925 #endif 05B1 048F 04926 iorwf OSCCON,f 04927 04928 #ifdef __16F886 05B2 1683 1703 04929 BANKSEL ANSEL 05B4 0188 04930 clrf ANSEL ;set pins to digital 05B5 0189 04931 clrf ANSELH ;set pins to digital 04932 #else 04933 BANKSEL ANSEL 04934 clrf ANSEL ;set pins to digital 04935 #endif 04936 04937 05B6 1683 1303 04938 BANKSEL OPTION_REG 04939 04940 ; set up TMR0 & pullups 04941 ; +---------- disable pullups (1) 04942 ; |+--------- interrupt edge select (don't care) 04943 ; ||+-------- TMR0 source = internal clock (0) 04944 ; |||+------- TMR0 source edge select (don't care) 04945 ; ||||+------ assign prescaler to TMR0 (0) 04946 ; |||||+++--- prescaler set to 8X (010) 04947 ; |||||||| 05B8 3082 04948 movlw b'10000010' 05B9 0081 04949 movwf OPTION_REG 04950 04951 #ifdef C19 04952 ; enable pullups on portA 04953 bcf OPTION_REG,NOT_RAPU 04954 04955 ; input on A5 04956 clrf WPUA ; disable all pullups MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 132 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04957 bsf WPUA,5 ; enable pullup A5 04958 #endif 04959 04960 #ifdef SRGB 04961 ; enable pullups on portA 04962 bcf OPTION_REG,NOT_RAPU 04963 04964 ; input on A5 04965 clrf WPUA ; disable all pullups 04966 bsf WPUA,5 ; enable pullup A5 04967 bsf WPUA,4 ; enable pullup A4 04968 #endif 04969 04970 #ifdef C12 04971 ; BANKSEL OPTION_REG 04972 ; bsf OPTION_REG, NOT_RBPU 04973 ; 04974 ; input C7,C5 buttons 04975 ; input C6 IR. 05BA 1683 1303 04976 BANKSEL TRISC 05BC 30E0 04977 movlw b'11100000' 05BD 0087 04978 movwf TRISC ; C7,C6,C5 input 04979 #endif 04980 04981 #ifdef M8X16 04982 ; E1 - IR/Button 04983 ; C2 - Button2 04984 ; C1 - IR out 04985 ; C3/C4 - I2C 04986 ; C0,C5,C6,C7 - strobe select output 04987 BANKSEL TRISC 04988 movlw b'00011100' 04989 movwf TRISC ; C7,C6,C5,C1,C0 output 04990 clrf TRISA ; all A output 04991 clrf TRISB ; all B output 04992 movlw b'00001000' 04993 movwf TRISE ; E3 input 04994 #endif 04995 04996 05BE 1283 1303 04997 BANKSEL button 05C0 01AD 04998 clrf button 04999 05000 #ifdef RANDOM 05C1 301D 05001 movlw 0x1D 05C2 00D9 05002 movwf random 05003 #endif 05004 05005 ; enable timer0 interupt 05C3 168B 05006 bsf INTCON,T0IE 05C4 178B 05007 bsf INTCON,GIE 05008 05C5 05009 loop_ddf MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 133 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05010 05011 05012 ; flash all LEDs on This kills some time, allowing us to sample the button and IR-Rx 05013 #ifdef M8X16 05014 movlw in0 05015 movwf FSR 05016 movlw 0x20 05017 movwf fcount1 05018 05019 movlw 0xFF 05020 loop_set_on 05021 movwf INDF 05022 incf FSR,f 05023 decfsz fcount1,f 05024 goto loop_set_on 05025 #else 05C5 30FF 05026 movlw b'11111111' 05027 05C6 00CF 05028 movwf in0 05C7 00D0 05029 movwf in1 05C8 00D1 05030 movwf in2 05031 #ifdef C19 05032 movwf in3 05033 movwf in4 05034 #endif 05035 #ifdef SRGB 05036 movwf in3 05037 movwf in4 05038 movwf in5 05039 #endif 05040 #endif 05041 05042 #ifdef C12a ; going to flash the config1 value! 05043 movfw config1 05044 movwf fcount1 ; flash 1 - mono single, 2 - mono dual 3 - bi single or 4 - bi dual 05045 incf fcount1,f 05046 05047 flash_loop 05048 movlw b'10101010' 05049 movwf in0 05050 movwf in1 05051 movwf in2 05052 movwf in3 05053 movwf in4 05054 05055 movlw 0xff 05056 call display_1bit 05057 movlw 0xff 05058 call display_1bit 05059 05060 movlw b'01010101' 05061 movwf in0 05062 movwf in1 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 134 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05063 movwf in2 05064 movwf in3 05065 movwf in4 05066 05067 movlw 0xff 05068 call display_1bit 05069 movlw 0xff 05070 call display_1bit 05071 05072 decfsz fcount1,f 05073 goto flash_loop 05074 05075 movlw b'11111111' 05076 movwf in0 05077 movwf in1 05078 movwf in2 05079 movwf in3 05080 movwf in4 05081 05082 #endif 05083 05C9 30FF 05084 movlw 0xff ; allways flash once 05CA 24EB 05085 call display_1bit 05CB 30FF 05086 movlw 0xff 05CC 24EB 05087 call display_1bit 05088 05089 #ifdef M3X3 ; have to wait for the IR to go high, and the buttons to de-bounce on 3x3 po werup 05090 movlw 0xff 05091 call display_1bit 05092 movlw 0xff 05093 call display_1bit 05094 #endif 05095 05096 05097 ; Trun all the LEDs off 05098 #ifdef M8X16 05099 movlw in0 05100 movwf FSR 05101 movlw 0x20 05102 movwf fcount1 05103 05104 movlw 0x00 05105 loop_set_off 05106 movwf INDF 05107 incf FSR,f 05108 decfsz fcount1,f 05109 goto loop_set_off 05110 #else 05CD 01CF 05111 clrf in0 05CE 01D0 05112 clrf in1 05CF 01D1 05113 clrf in2 05114 #ifdef C19 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 135 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05115 clrf in3 05116 clrf in4 05117 #endif 05118 #ifdef SRGB 05119 clrf in3 05120 clrf in4 05121 clrf in5 05122 #endif 05123 #endif 05D0 30FF 05124 movlw 0xff 05D1 24EB 05125 call display_1bit 05D2 30FF 05126 movlw 0xff 05D3 24EB 05127 call display_1bit 05D4 30FF 05128 movlw 0xff 05D5 24EB 05129 call display_1bit 05130 05D6 245A 05131 call read_demo_mode 05132 05D7 082D 05133 movfw button 05D8 00D0 05134 movwf in1 05D9 30FF 05135 movlw 0xff 05DA 24EB 05136 call display_1bit 05DB 30FF 05137 movlw 0xff 05DC 24EB 05138 call display_1bit 05139 05140 05141 #ifndef M3X3 05142 ; if button pressed durring powerup run IR_Tester 05143 ; else run pattern driver 05144 ; 05DD 1C2D 05145 btfss button,0 05DE 2C6C 05146 goto pattern_driver 05DF 245E 05147 call toggle_demo 05148 #ifdef ENABLE_IR 05E0 2D67 05149 goto IR_Tester 05150 #else 05151 goto pattern_driver 05152 #endif 05153 #else 05154 ; 05155 ; 3X3 mode selection logic 05156 ; 05157 var mode 05158 #define MAX_MODE 3 05159 clrf mode 05160 05161 movfw button ; if no button go to pattern mode. 05162 btfsc STATUS,Z 05163 goto pattern_driver 05164 05165 mode_loop 05166 05167 ; MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 136 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05168 ; Dsiplay the Mode in LEDs 7,8 and 9 05169 ; 05170 clrf in0 05171 incf mode,w 05172 movwf b2l_in_green 05173 clrf b2l_in_red 05174 call bin2led 05175 movf b2l_out_hi,w 05176 movwf in1 05177 movf b2l_out_low,w 05178 movwf in2 05179 rrf in1,f 05180 rrf in2,f 05181 rrf in1,f 05182 rrf in2,f 05183 rrf in1,f 05184 rrf in2,f 05185 rrf in1,f 05186 rrf in2,f 05187 05188 movlw 0xff 05189 call display_1bit 05190 05191 movlw 0xff 05192 call display_1bit 05193 05194 btfsc button,0 ; if button 1 pressed inc pattern 05195 call next_mode 05196 05197 btfsc button,1 ; if button 2 pressed dec pattern 05198 call past_mode 05199 ; 05200 ; missing bound check on up/down of pattern. 05201 ; 05202 btfsc button,4 ; if button 5 try to exit 05203 goto mode_loop2 05204 05205 goto mode_loop 05206 05207 mode_loop2 05208 05209 movlw 0x00 ; mode=0 05210 subwf mode,w 05211 btfsc STATUS,Z 05212 goto pattern_driver 05213 05214 movlw 0x01 ; mode=1 05215 subwf mode,w 05216 btfsc STATUS,Z 05217 goto IR_Tester 05218 05219 05220 movlw 0x02 ; mode=2 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 137 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05221 subwf mode,w 05222 btfsc STATUS,Z 05223 goto Dice 05224 05225 ; movlw 0x02 ; mode=3 05226 ; subwf mode,w 05227 ; btfsc STATUS,Z 05228 ; goto TicTacToe 05229 05230 goto mode_loop 05231 05232 ;********************************************************************** 05233 next_mode 05234 ;********************************************************************** 05235 incf mode,f 05236 movf mode,w 05237 sublw MAX_MODE ; max pattern? 05238 btfsc STATUS,2 ; z bit check 05239 clrf mode ; reset to zero 05240 return 05241 05242 ;********************************************************************** 05243 past_mode 05244 ;********************************************************************** 05245 decf mode,f 05246 movf mode,w 05247 addlw 1 ; max pattern? 05248 btfss STATUS,2 ; z bit check 05249 goto mode_past_exit 05250 movlw MAX_MODE-1 05251 movwf mode 05252 mode_past_exit 05253 return 05254 05255 05256 #endif 05257 05258 ;********************************************************************** 05E1 05259 table_lookup 05260 ;********************************************************************** 05E1 0848 05261 movf tbl_hi,w 05E2 008A 05262 movwf PCLATH 05E3 0879 05263 movf pindex,w 05E4 0749 05264 addwf tbl_low,w 05E5 1803 05265 btfsc STATUS,0 ; check carry flag 05E6 0A8A 05266 incf PCLATH,f 05E7 0082 05267 movwf PCL 05268 05269 ;********************************************************************** 05E8 05270 jump_address 05271 ;********************************************************************** 05272 ; Portability : clean 05273 ; MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 138 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05274 var offset_hi 0000005B M offset_hi equ mem 0000005C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 05275 var offset_low 0000005C M offset_low equ mem 0000005D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 05276 05E8 080A 05277 movf PCLATH,w 05E9 00CB 05278 movwf pclath_save 05EA 085B 05279 movf offset_hi,w 05EB 008A 05280 movwf PCLATH 05281 05EC 085C 05282 movf offset_low, w 05ED 0082 05283 movwf PCL 05284 05285 05286 ;********************************************************************** 05EE 05287 MasterTable 05288 ;********************************************************************** 05289 make_mtab NUM_TAB 0000 M local i = 0 M while i <= NUM_TAB 05EE 3408 34B7 M dt HIGH table0, LOW table0 00000001 M i += 1 05F0 3409 344A M dt HIGH table1, LOW table1 00000002 M i += 1 05F2 3409 345F M dt HIGH table2, LOW table2 00000003 M i += 1 05F4 3409 34F2 M dt HIGH table3, LOW table3 00000004 M i += 1 05F6 340A 340D M dt HIGH table4, LOW table4 00000005 M i += 1 05F8 340A 34A0 M dt HIGH table5, LOW table5 00000006 M i += 1 05FA 340A 34B5 M dt HIGH table6, LOW table6 00000007 M i += 1 05FC 340A 34EE M dt HIGH table7, LOW table7 00000008 M i += 1 05FE 340B 3403 M dt HIGH table8, LOW table8 00000009 M i += 1 0600 340B 3418 M dt HIGH table9, LOW table9 0000000A M i += 1 0602 340B 343F M dt HIGH table10, LOW table10 0000000B M i += 1 0604 340B 348A M dt HIGH table11, LOW table11 0000000C M i += 1 0606 340C 3429 M dt HIGH table12, LOW table12 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 139 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000000D M i += 1 0608 340D 3416 M dt HIGH table13, LOW table13 0000000E M i += 1 060A 340D 3461 M dt HIGH table14, LOW table14 0000000F M i += 1 M endw 05290 05291 05292 #ifdef PATTERN16 05293 #define BRIGHT1_lo 0x04 05294 #define BRIGHT2_lo 0x0A 05295 #define BRIGHT1_hi 0x40 05296 #define BRIGHT2_hi 0xA0 05297 05298 ;********************************************************************** 05299 table_type_16 05300 ;********************************************************************** 05301 ; 05302 ; 1 bytes 05303 ; 05304 ; ABBCCCCC 05305 ; 05306 ; A = shire Right/Left 05307 ; BB = two bit intensity to shift on 05308 ; CCCCC = Number of shifts to loop 05309 ; 05310 ; if CCCCC = 0x11111, specical case: turn all LEDs off. 05311 05312 var t7count 05313 var t17_loop 05314 05315 pageselw get_next_pattern_entry 05316 call get_next_pattern_entry 05317 movwf in0 05318 05319 call get_next_pattern_entry 05320 movwf in1 05321 pageselw table_type_16 05322 05323 movlw b'00011111' 05324 andwf in0,w 05325 movwf t7count 05326 05327 movlw b'00011111' ; if shiftcount is 31, then clear all LEDs 05328 subwf t7count,w 05329 btfss STATUS,Z 05330 goto t7_loop_red 05331 05332 clrf in0 ; quick way to clear all the LEDS. 05333 clrf in1 05334 clrf in2 05335 clrf in3 05336 clrf in4 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 140 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05337 clrf in5 05338 pageselw display_1bit 05339 call display_1bit 05340 pageselw table_type_16 05341 goto t7_return 05342 05343 t7_loop_red 05344 btfsc in0,7 05345 goto t7_set19_red 05346 05347 call red_up 05348 goto t7_loop_green 05349 05350 t7_set19_red 05351 05352 call red_down 05353 05354 t7_loop_green 05355 btfsc in0,6 05356 goto t7_set19_green 05357 05358 call green_up 05359 05360 goto t7_loop_blue 05361 ; 05362 ; set LED 19 05363 t7_set19_green 05364 05365 call green_down 05366 05367 t7_loop_blue 05368 05369 btfsc in0,5 05370 goto t7_set19_blue 05371 05372 call blue_up 05373 05374 goto t7_cont 05375 ; 05376 ; set LED 19 05377 t7_set19_blue 05378 call blue_dowm 05379 t7_cont 05380 pageselw strobe_delay 05381 movf pspeed,w 05382 call strobe_delay 05383 pageselw t7_cont 05384 ; 05385 ; This is a quick hack, because without this button presses are not seen for minutes 05386 ; This early exit might impact the pattern getting displayed. 05387 ; 05388 btfsc button,0 ; if putton pressed show pattern id 05389 goto t7_return MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 141 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05390 05391 btfsc IR_in_good,0 05392 goto t7_return 05393 05394 decfsz t7count,f 05395 goto t7_loop_red 05396 05397 t7_return 05398 return 05399 05400 ;********************************************************************** 05401 red_up 05402 ;********************************************************************** 05403 05404 movlw 0x0d 05405 movwf t17_loop 05406 05407 movlw A2_C1_reg ; index = 13 R 05408 movwf FSR 05409 05410 red_up_loop 05411 movfw INDF ; load R [index] 05412 incf FSR,f ; index ++ 05413 movwf INDF ; store R [index] 05414 05415 decf FSR,f ; index - 2 05416 decf FSR,f 05417 05418 decfsz t17_loop,f 05419 goto red_up_loop 05420 ; 05421 ; 01 Red 05422 ; 05423 incf FSR,f 05424 clrf INDF 05425 movlw BRIGHT1 05426 btfsc in1,6 05427 addwf INDF,f ;01 05428 movlw BRIGHT2 05429 btfsc in1,7 05430 addwf INDF,f ;01 05431 05432 return 05433 05434 ;********************************************************************** 05435 red_down 05436 ;********************************************************************** 05437 05438 movlw 0x0d 05439 movwf t17_loop 05440 05441 movlw C2_C3_reg ; index = 02 R 05442 movwf FSR MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 142 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05443 05444 red_down_loop 05445 movfw INDF ; load R [index] 05446 decf FSR,f ; index - 1 05447 movwf INDF ; store R [index] 05448 05449 incf FSR,f ; index + 2 05450 incf FSR,f 05451 05452 decfsz t17_loop,f 05453 goto red_down_loop 05454 ; 05455 ; 14 Red 05456 ; 05457 decf FSR,f 05458 clrf INDF 05459 movlw BRIGHT1 05460 btfsc in1,6 05461 addwf INDF,f ;01 05462 movlw BRIGHT2 05463 btfsc in1,7 05464 addwf INDF,f ;01 05465 05466 return 05467 05468 ;********************************************************************** 05469 green_up 05470 ;********************************************************************** 05471 05472 movlw 0x0d 05473 movwf t17_loop 05474 05475 movlw C4_C1_reg ; index = 13 G 05476 movwf FSR 05477 05478 green_up_loop 05479 movfw INDF ; load G [index] 05480 incf FSR,f ; index ++ 05481 movwf INDF ; store G [index] 05482 05483 decf FSR,f ; index - 2 05484 decf FSR,f 05485 05486 decfsz t17_loop,f 05487 goto green_up_loop 05488 ; 05489 ; 01 Green 05490 ; 05491 incf FSR,f 05492 clrf INDF 05493 movlw BRIGHT1 05494 btfsc in1,4 05495 addwf INDF,f ;01 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 143 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05496 movlw BRIGHT2 05497 btfsc in1,5 05498 addwf INDF,f ;01 05499 05500 return 05501 05502 ;********************************************************************** 05503 green_down 05504 ;********************************************************************** 05505 05506 movlw 0x0d 05507 movwf t17_loop 05508 05509 movlw C0_C3_reg ; index = 02 Green 05510 movwf FSR 05511 05512 green_down_loop 05513 movfw INDF ; load R [index] 05514 decf FSR,f ; index - 1 05515 movwf INDF ; store R [index] 05516 05517 incf FSR,f ; index + 2 05518 incf FSR,f 05519 05520 decfsz t17_loop,f 05521 goto green_down_loop 05522 ; 05523 ; 14 Green 05524 ; 05525 decf FSR,f 05526 clrf INDF 05527 movlw BRIGHT1 05528 btfsc in1,4 05529 addwf INDF,f ;01 05530 movlw BRIGHT2 05531 btfsc in1,5 05532 addwf INDF,f ;01 05533 05534 return 05535 05536 05537 ;********************************************************************** 05538 blue_up 05539 ;********************************************************************** 05540 05541 movlw 0x0d 05542 movwf t17_loop 05543 05544 movlw C2_C1_reg ; index = 13 G 05545 movwf FSR 05546 05547 blue_up_loop 05548 movfw INDF ; load G [index] MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 144 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05549 incf FSR,f ; index ++ 05550 movwf INDF ; store G [index] 05551 05552 decf FSR,f ; index - 2 05553 decf FSR,f 05554 05555 decfsz t17_loop,f 05556 goto blue_up_loop 05557 ; 05558 ; 01 blue 05559 ; 05560 incf FSR,f 05561 clrf INDF 05562 movlw BRIGHT1 05563 btfsc in1,2 05564 addwf INDF,f ;01 05565 movlw BRIGHT2 05566 btfsc in1,3 05567 addwf INDF,f ;01 05568 05569 return 05570 05571 05572 ;********************************************************************** 05573 blue_dowm 05574 ;********************************************************************** 05575 05576 movlw 0x0d 05577 movwf t17_loop 05578 05579 movlw C4_C3_reg ; index = 02 Blue 05580 movwf FSR 05581 05582 blue_down_loop 05583 movfw INDF ; load R [index] 05584 decf FSR,f ; index - 1 05585 movwf INDF ; store R [index] 05586 05587 incf FSR,f ; index + 2 05588 incf FSR,f 05589 05590 decfsz t17_loop,f 05591 goto blue_down_loop 05592 ; 05593 ; 14 Green 05594 ; 05595 decf FSR,f 05596 clrf INDF 05597 movlw BRIGHT1 05598 btfsc in1,2 05599 addwf INDF,f ;01 05600 movlw BRIGHT2 05601 btfsc in1,3 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 145 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05602 addwf INDF,f ;01 05603 05604 return 05605 #endif 05606 05607 ; 05608 ; These are down here for memory placement 05609 ; 05610 05611 #ifdef DISPLAY_1BIT_E 05612 #include display_1bit_e_part2 05613 #endif 05614 05615 #ifdef PATTERN17 05616 #include pattern_17_part2.asm 05617 #endif 05618 05619 #ifdef PATTERN18 05620 #include pattern_18.asm 05621 #endif 05622 05623 #ifdef PATTERN20 05624 #include pattern_20.asm 05625 #endif 05626 05627 #ifdef PATTERN21 05628 #include pattern_21.asm 05629 #endif 05630 05631 #ifdef C12 0800 05632 ORG 0x800 05633 #endif 05634 05635 #ifdef PATTERN27 05636 #include "pattern_27.asm" 00001 ;********************************************************************** 0800 00002 table_type_27 ; dual 12 circle fader 00003 ;********************************************************************** 00004 0800 00D5 00005 movwf speed ;w has the speed/delay 00006 ; 00007 ; going to break good coding rules for compact code, reorder or move 00008 ; the Led_xxx vars and you break the code! 00009 ; 00010 00011 dupvar p27_loop, b2l_out_low 0000003F M p27_loop equ b2l_out_low 00012 0801 3004 008A 00013 pageselw get_next_pattern_entry Message[306]: Crossing page boundary -- ensure page bits are set. 0803 2411 00014 call get_next_pattern_entry 0804 00CF 00015 movwf in0 00016 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 146 LOC OBJECT CODE LINE SOURCE TEXT VALUE Message[306]: Crossing page boundary -- ensure page bits are set. 0805 2411 00017 call get_next_pattern_entry 0806 00D0 00018 movwf in1 00019 Message[306]: Crossing page boundary -- ensure page bits are set. 0807 2411 00020 call get_next_pattern_entry 0808 00D1 00021 movwf in2 00022 Message[306]: Crossing page boundary -- ensure page bits are set. 0809 2411 00023 call get_next_pattern_entry 080A 00D2 00024 movwf in3 00025 Message[306]: Crossing page boundary -- ensure page bits are set. 080B 2411 00026 call get_next_pattern_entry 080C 00D3 00027 movwf in4 00028 Message[306]: Crossing page boundary -- ensure page bits are set. 080D 2411 00029 call get_next_pattern_entry 080E 00D4 00030 movwf in5 080F 3008 008A 00031 pageselw table_type_27 00032 00033 ; hardcode count to 64 0811 3064 00034 movlw 0x64 0812 00BF 00035 movwf p27_loop 00036 0813 00037 t27_loop2 00038 00039 #ifndef SINGLE 00040 movlw A3_A4_reg ; R1 00041 movwf FSR 00042 btfsc in3,7 00043 call p27_led_up 00044 btfss in3,7 00045 call p27_led_down 00046 00047 movlw A4_A5_reg ; R2 00048 movwf FSR 00049 btfsc in3,6 00050 call p27_led_up 00051 btfss in3,6 00052 call p27_led_down 00053 00054 movlw A3_A5_reg ; R3 00055 movwf FSR 00056 btfsc in3,5 00057 call p27_led_up 00058 btfss in3,5 00059 call p27_led_down 00060 00061 movlw A2_A4_reg ; R4 00062 movwf FSR 00063 btfsc in3,4 00064 call p27_led_up MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 147 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00065 btfss in3,4 00066 call p27_led_down 00067 00068 movlw A2_A3_reg ; R5 00069 movwf FSR 00070 btfsc in3,3 00071 call p27_led_up 00072 btfss in3,3 00073 call p27_led_down 00074 00075 movlw A0_A4_reg ; R6 00076 movwf FSR 00077 btfsc in3,2 00078 call p27_led_up 00079 btfss in3,2 00080 call p27_led_down 00081 00082 movlw A0_A5_reg ; R7 00083 movwf FSR 00084 btfsc in3,1 00085 call p27_led_up 00086 btfss in3,1 00087 call p27_led_down 00088 00089 movlw A1_A5_reg ; R8 00090 movwf FSR 00091 btfsc in3,0 00092 call p27_led_up 00093 btfss in3,0 00094 call p27_led_down 00095 00096 movlw A1_A3_reg ; R9 00097 movwf FSR 00098 btfsc in4,7 00099 call p27_led_up 00100 btfss in4,7 00101 call p27_led_down 00102 00103 movlw A1_A2_reg ; R10 00104 movwf FSR 00105 btfsc in4,6 00106 call p27_led_up 00107 btfss in4,6 00108 call p27_led_down 00109 00110 movlw A0_A2_reg ; R11 00111 movwf FSR 00112 btfsc in4,5 00113 call p27_led_up 00114 btfss in4,5 00115 call p27_led_down 00116 00117 movlw A0_A1_reg ; R12 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 148 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00118 movwf FSR 00119 btfsc in4,4 00120 call p27_led_up 00121 btfss in4,4 00122 call p27_led_down 00123 #ifndef MONO 00124 00125 movlw A4_A3_reg ; G1 00126 movwf FSR 00127 btfsc in4,3 00128 call p27_led_up 00129 btfss in4,3 00130 call p27_led_down 00131 00132 movlw A5_A4_reg ; G2 00133 movwf FSR 00134 btfsc in4,2 00135 call p27_led_up 00136 btfss in4,2 00137 call p27_led_down 00138 00139 movlw A5_A3_reg ; G3 00140 movwf FSR 00141 btfsc in4,1 00142 call p27_led_up 00143 btfss in4,1 00144 call p27_led_down 00145 00146 movlw A4_A2_reg ; G4 00147 movwf FSR 00148 btfsc in4,0 00149 call p27_led_up 00150 btfss in4,0 00151 call p27_led_down 00152 00153 movlw A3_A2_reg ; G5 00154 movwf FSR 00155 btfsc in5,7 00156 call p27_led_up 00157 btfss in5,7 00158 call p27_led_down 00159 00160 movlw A4_A0_reg ; G6 00161 movwf FSR 00162 btfsc in5,6 00163 call p27_led_up 00164 btfss in5,6 00165 call p27_led_down 00166 00167 movlw A5_A0_reg ; G7 00168 movwf FSR 00169 btfsc in5,5 00170 call p27_led_up MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 149 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00171 btfss in5,5 00172 call p27_led_down 00173 00174 movlw A5_A1_reg ; G8 00175 movwf FSR 00176 btfsc in5,4 00177 call p27_led_up 00178 btfss in5,4 00179 call p27_led_down 00180 00181 movlw A3_A1_reg ; G9 00182 movwf FSR 00183 btfsc in5,3 00184 call p27_led_up 00185 btfss in5,3 00186 call p27_led_down 00187 00188 movlw A2_A1_reg ; G10 00189 movwf FSR 00190 btfsc in5,2 00191 call p27_led_up 00192 btfss in5,2 00193 call p27_led_down 00194 00195 movlw A2_A0_reg ; G11 00196 movwf FSR 00197 btfsc in5,1 00198 call p27_led_up 00199 btfss in5,1 00200 call p27_led_down 00201 00202 movlw A1_A0_reg ; G12 00203 movwf FSR 00204 btfsc in5,0 00205 call p27_led_up 00206 btfss in5,0 00207 call p27_led_down 00208 #endif 00209 #endif 00210 00211 ;----- 00212 00213 00214 ; A0_A3_reg ; 00215 ; A1_A4_reg ; 00216 ; A2_A5_reg ; 00217 ; A3_A0_reg ; 00218 ; A4_A1_reg ; 00219 ; A5_A2_reg ; 00220 00221 ;---- 0813 30CC 00222 movlw B2_B7_reg ; R1 0814 0084 00223 movwf FSR MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 150 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0815 1BCF 00224 btfsc in0,7 0816 20AF 00225 call p27_led_up 0817 1FCF 00226 btfss in0,7 0818 20B3 00227 call p27_led_down 00228 0819 30C8 00229 movlw B3_B7_reg ; R2 081A 0084 00230 movwf FSR 081B 1B4F 00231 btfsc in0,6 081C 20AF 00232 call p27_led_up 081D 1F4F 00233 btfss in0,6 081E 20B3 00234 call p27_led_down 00235 081F 30C9 00236 movlw B3_B5_reg ; R3 0820 0084 00237 movwf FSR 0821 1ACF 00238 btfsc in0,5 0822 20AF 00239 call p27_led_up 0823 1ECF 00240 btfss in0,5 0824 20B3 00241 call p27_led_down 00242 0825 30CA 00243 movlw B3_B4_reg ; R4 0826 0084 00244 movwf FSR 0827 1A4F 00245 btfsc in0,4 0828 20AF 00246 call p27_led_up 0829 1E4F 00247 btfss in0,4 082A 20B3 00248 call p27_led_down 00249 082B 30CE 00250 movlw B2_B4_reg ; R5 082C 0084 00251 movwf FSR 082D 19CF 00252 btfsc in0,3 082E 20AF 00253 call p27_led_up 082F 1DCF 00254 btfss in0,3 0830 20B3 00255 call p27_led_down 00256 0831 30CF 00257 movlw B2_B3_reg ; R6 0832 0084 00258 movwf FSR 0833 194F 00259 btfsc in0,2 0834 20AF 00260 call p27_led_up 0835 1D4F 00261 btfss in0,2 0836 20B3 00262 call p27_led_down 00263 0837 30C1 00264 movlw B5_B6_reg ; R7 0838 0084 00265 movwf FSR 0839 18CF 00266 btfsc in0,1 083A 20AF 00267 call p27_led_up 083B 1CCF 00268 btfss in0,1 083C 20B3 00269 call p27_led_down 00270 083D 30BC 00271 movlw B6_B7_reg ; R8 083E 0084 00272 movwf FSR 083F 184F 00273 btfsc in0,0 0840 20AF 00274 call p27_led_up 0841 1C4F 00275 btfss in0,0 0842 20B3 00276 call p27_led_down MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 151 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00277 0843 30C0 00278 movlw B5_B7_reg ; R9 0844 0084 00279 movwf FSR 0845 1BD0 00280 btfsc in1,7 0846 20AF 00281 call p27_led_up 0847 1FD0 00282 btfss in1,7 0848 20B3 00283 call p27_led_down 00284 0849 30C4 00285 movlw B4_B6_reg ; R10 084A 0084 00286 movwf FSR 084B 1B50 00287 btfsc in1,6 084C 20AF 00288 call p27_led_up 084D 1F50 00289 btfss in1,6 084E 20B3 00290 call p27_led_down 00291 084F 30C5 00292 movlw B4_B5_reg ; R11 0850 0084 00293 movwf FSR 0851 1AD0 00294 btfsc in1,5 0852 20AF 00295 call p27_led_up 0853 1ED0 00296 btfss in1,5 0854 20B3 00297 call p27_led_down 00298 0855 30CD 00299 movlw B2_B6_reg ; R12 0856 0084 00300 movwf FSR 0857 1A50 00301 btfsc in1,4 0858 20AF 00302 call p27_led_up 0859 1E50 00303 btfss in1,4 085A 20B3 00304 call p27_led_down 00305 00306 #ifndef MONO 085B 30BB 00307 movlw B7_B2_reg ; G1 085C 0084 00308 movwf FSR 085D 19D0 00309 btfsc in1,3 085E 20AF 00310 call p27_led_up 085F 1DD0 00311 btfss in1,3 0860 20B3 00312 call p27_led_down 00313 0861 30BA 00314 movlw B7_B3_reg ; G2 0862 0084 00315 movwf FSR 0863 1950 00316 btfsc in1,2 0864 20AF 00317 call p27_led_up 0865 1D50 00318 btfss in1,2 0866 20B3 00319 call p27_led_down 00320 0867 30C3 00321 movlw B5_B3_reg ; G3 0868 0084 00322 movwf FSR 0869 18D0 00323 btfsc in1,1 086A 20AF 00324 call p27_led_up 086B 1CD0 00325 btfss in1,1 086C 20B3 00326 call p27_led_down 00327 086D 30C6 00328 movlw B4_B3_reg ; G4 086E 0084 00329 movwf FSR MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 152 LOC OBJECT CODE LINE SOURCE TEXT VALUE 086F 1850 00330 btfsc in1,0 0870 20AF 00331 call p27_led_up 0871 1C50 00332 btfss in1,0 0872 20B3 00333 call p27_led_down 00334 0873 30C7 00335 movlw B4_B2_reg ; G5 0874 0084 00336 movwf FSR 0875 1BD1 00337 btfsc in2,7 0876 20AF 00338 call p27_led_up 0877 1FD1 00339 btfss in2,7 0878 20B3 00340 call p27_led_down 00341 0879 30CB 00342 movlw B3_B2_reg ; G6 087A 0084 00343 movwf FSR 087B 1B51 00344 btfsc in2,6 087C 20AF 00345 call p27_led_up 087D 1F51 00346 btfss in2,6 087E 20B3 00347 call p27_led_down 087F 30BD 00348 movlw B6_B5_reg ; G7 0880 0084 00349 movwf FSR 0881 1AD1 00350 btfsc in2,5 0882 20AF 00351 call p27_led_up 0883 1ED1 00352 btfss in2,5 0884 20B3 00353 call p27_led_down 00354 0885 30B8 00355 movlw B7_B6_reg ; G8 0886 0084 00356 movwf FSR 0887 1A51 00357 btfsc in2,4 0888 20AF 00358 call p27_led_up 0889 1E51 00359 btfss in2,4 088A 20B3 00360 call p27_led_down 00361 088B 30B9 00362 movlw B7_B5_reg ; G9 088C 0084 00363 movwf FSR 088D 19D1 00364 btfsc in2,3 088E 20AF 00365 call p27_led_up 088F 1DD1 00366 btfss in2,3 0890 20B3 00367 call p27_led_down 00368 0891 30BE 00369 movlw B6_B4_reg ; G10 0892 0084 00370 movwf FSR 0893 1951 00371 btfsc in2,2 0894 20AF 00372 call p27_led_up 0895 1D51 00373 btfss in2,2 0896 20B3 00374 call p27_led_down 00375 0897 30C2 00376 movlw B5_B4_reg ; G11 0898 0084 00377 movwf FSR 0899 18D1 00378 btfsc in2,1 089A 20AF 00379 call p27_led_up 089B 1CD1 00380 btfss in2,1 089C 20B3 00381 call p27_led_down 00382 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 153 LOC OBJECT CODE LINE SOURCE TEXT VALUE 089D 30BF 00383 movlw B6_B2_reg ; G12 089E 0084 00384 movwf FSR 089F 1851 00385 btfsc in2,0 08A0 20AF 00386 call p27_led_up 08A1 1C51 00387 btfss in2,0 08A2 20B3 00388 call p27_led_down 00389 #endif 00390 00391 ; B6_B3_reg 00392 ; B5_B2_reg 00393 ; B4_B7_reg 00394 ; B3_B6_reg 00395 ; B2_B5_reg 00396 ; B7_B4_reg 00397 08A3 0855 00398 movf speed,w 08A4 3003 008A 00399 pageselw strobe_delay Message[306]: Crossing page boundary -- ensure page bits are set. 08A6 23E2 00400 call strobe_delay 00401 08A7 3008 008A 00402 pageselw t27_loop2 08A9 0BBF 00403 decfsz p27_loop,f 08AA 2813 00404 goto t27_loop2 00405 08AB 1383 00406 bcf STATUS,7 08AC 3004 008A 00407 pageselw pattern_return Message[306]: Crossing page boundary -- ensure page bits are set. 08AE 2CBB 00408 goto pattern_return 00409 00410 00411 ;********************************************************************** 08AF 00412 p27_led_up 00413 ;********************************************************************** 00414 08AF 0A80 00415 incf INDF,f 08B0 1903 00416 btfsc STATUS,Z 08B1 0980 00417 comf INDF,f 08B2 0008 00418 return 00419 00420 ;********************************************************************** 08B3 00421 p27_led_down 00422 ;********************************************************************** 00423 08B3 0880 00424 movf INDF,f 08B4 1D03 00425 btfss STATUS,Z 08B5 0380 00426 decf INDF,f 08B6 0008 00427 return 00428 05637 #endif 05638 05639 ; 05640 ; These are the pattern tables 05641 ; MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 154 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05642 05643 05644 #ifdef RGB4 05645 #include 05646 #endif 05647 05648 #ifdef SRGB 05649 #include 05650 #endif 05651 05652 #ifdef BI6 05653 #ifdef MONO 05654 #ifdef BADGE 05655 #include 05656 #else 05657 #include 05658 #endif 05659 #else 05660 #ifdef BADGE 05661 #include 05662 #else 05663 #include 05664 #endif 05665 #endif 05666 #endif 05667 05668 #ifdef M3X3 05669 #include 05670 #endif 05671 05672 #ifdef S19 05673 #include 05674 #endif 05675 05676 #ifdef C19 05677 #ifdef MONO 05678 #include 05679 #else 05680 #include 05681 #endif 05682 #endif 05683 05684 #ifdef M8X16 05685 #include 05686 #endif 05687 05688 #ifdef C12 05689 #include 00001 ;********************************************************************** 00002 ; Copyright (C) 2005,2006,2007,2008 Dwayne Forsyth 00003 ; 00004 ; This program is free software; you can redistribute it and/or 00005 ; modify it under the terms of the GNU General Public License MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 155 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00006 ; as published by the Free Software Foundation; either version 2 00007 ; of the License, or (at your option) any later version. 00008 ; 00009 ; This program is distributed in the hope that it will be useful, 00010 ; but WITHOUT ANY WARRANTY; without even the implied warranty of 00011 ; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00012 ; GNU General Public License for more details. 00013 ; 00014 ; You should have received a copy of the GNU General Public License 00015 ; along with this program; if not, write to the 00016 ; 00017 ; Free Software Foundation, Inc. 00018 ; 51 Franklin Street, Fifth Floor 00019 ; Boston, MA 02110-1301, USA. 00020 ; 00021 ;********************************************************************** 00022 00023 00024 ;********************************************************************** 00025 ; walking LED test 00026 ;********************************************************************** 00027 start_pattern 0x17, 0x10 M 08B7 M table0 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat0-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat0-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat0-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat0-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat0-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000018 M leng =(endpat0-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat0-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat0-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat0-$-3) M endif M endif M endif MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 156 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 08B7 3417 3410 3418 M dt 0x17,0x10,(leng) M else M de 0x17,0x10,(leng) M endif 00028 ; RRRRRRRR RRRRGGGG GGGGGGGG 00029 ; 00000000 01110000 00000111 00030 ; 12345678 90121234 56789012 08BA 3480 3400 3400 00031 dt b'10000000',b'00000000',b'00000000',b'10000000',b'00000000',b'00000000' 3480 3400 3400 08C0 3440 3400 3400 00032 dt b'01000000',b'00000000',b'00000000',b'01000000',b'00000000',b'00000000' 3440 3400 3400 08C6 3420 3400 3400 00033 dt b'00100000',b'00000000',b'00000000',b'00100000',b'00000000',b'00000000' 3420 3400 3400 08CC 3410 3400 3400 00034 dt b'00010000',b'00000000',b'00000000',b'00010000',b'00000000',b'00000000' 3410 3400 3400 08D2 3408 3400 3400 00035 dt b'00001000',b'00000000',b'00000000',b'00001000',b'00000000',b'00000000' 3408 3400 3400 08D8 3404 3400 3400 00036 dt b'00000100',b'00000000',b'00000000',b'00000100',b'00000000',b'00000000' 3404 3400 3400 08DE 3402 3400 3400 00037 dt b'00000010',b'00000000',b'00000000',b'00000010',b'00000000',b'00000000' 3402 3400 3400 08E4 3401 3400 3400 00038 dt b'00000001',b'00000000',b'00000000',b'00000001',b'00000000',b'00000000' 3401 3400 3400 08EA 3400 3480 3400 00039 dt b'00000000',b'10000000',b'00000000',b'00000000',b'10000000',b'00000000' 3400 3480 3400 08F0 3400 3440 3400 00040 dt b'00000000',b'01000000',b'00000000',b'00000000',b'01000000',b'00000000' 3400 3440 3400 08F6 3400 3420 3400 00041 dt b'00000000',b'00100000',b'00000000',b'00000000',b'00100000',b'00000000' 3400 3420 3400 08FC 3400 3410 3400 00042 dt b'00000000',b'00010000',b'00000000',b'00000000',b'00010000',b'00000000' 3400 3410 3400 00043 #ifndef MONO 0902 3400 3408 3400 00044 dt b'00000000',b'00001000',b'00000000',b'00000000',b'00001000',b'00000000' 3400 3408 3400 0908 3400 3404 3400 00045 dt b'00000000',b'00000100',b'00000000',b'00000000',b'00000100',b'00000000' 3400 3404 3400 090E 3400 3402 3400 00046 dt b'00000000',b'00000010',b'00000000',b'00000000',b'00000010',b'00000000' 3400 3402 3400 0914 3400 3401 3400 00047 dt b'00000000',b'00000001',b'00000000',b'00000000',b'00000001',b'00000000' 3400 3401 3400 091A 3400 3400 3480 00048 dt b'00000000',b'00000000',b'10000000',b'00000000',b'00000000',b'10000000' 3400 3400 3480 0920 3400 3400 3440 00049 dt b'00000000',b'00000000',b'01000000',b'00000000',b'00000000',b'01000000' 3400 3400 3440 0926 3400 3400 3420 00050 dt b'00000000',b'00000000',b'00100000',b'00000000',b'00000000',b'00100000' 3400 3400 3420 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 157 LOC OBJECT CODE LINE SOURCE TEXT VALUE 092C 3400 3400 3410 00051 dt b'00000000',b'00000000',b'00010000',b'00000000',b'00000000',b'00010000' 3400 3400 3410 0932 3400 3400 3408 00052 dt b'00000000',b'00000000',b'00001000',b'00000000',b'00000000',b'00001000' 3400 3400 3408 0938 3400 3400 3404 00053 dt b'00000000',b'00000000',b'00000100',b'00000000',b'00000000',b'00000100' 3400 3400 3404 093E 3400 3400 3402 00054 dt b'00000000',b'00000000',b'00000010',b'00000000',b'00000000',b'00000010' 3400 3400 3402 0944 3400 3400 3401 00055 dt b'00000000',b'00000000',b'00000001',b'00000000',b'00000000',b'00000001' 3400 3400 3401 00056 #endif 00057 end_pattern 094A M endpat0 00000001 M patternc = patternc + 1 00058 00059 ;********************************************************************** 00060 ; Color change 00061 ;********************************************************************** 00062 00063 start_pattern 0x17, 0x10 M 094A M table1 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat1-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat1-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat1-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat1-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat1-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000003 M leng =(endpat1-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat1-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat1-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat1-$-3) M endif M endif M endif M endif M endif MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 158 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif M endif M endif M expand M if ($ < 0x2100) 094A 3417 3410 3403 M dt 0x17,0x10,(leng) M else M de 0x17,0x10,(leng) M endif 00064 ; RRRRRRRR RRRRGGGG GGGGGGGG 00065 ; 00000000 01110000 00000111 00066 ; 12345678 90121234 56789012 094D 34FF 34FF 34FF 00067 dt b'11111111',b'11111111',b'11111111',b'11111111',b'11111111',b'11111111' ; all on 34FF 34FF 34FF 0953 34FF 34F0 3400 00068 dt b'11111111',b'11110000',b'00000000',b'11111111',b'11110000',b'00000000' ; all Red 34FF 34F0 3400 0959 3400 340F 34FF 00069 dt b'00000000',b'00001111',b'11111111',b'00000000',b'00001111',b'11111111' ; all Green 3400 340F 34FF 00070 00071 end_pattern 095F M endpat1 00000002 M patternc = patternc + 1 00072 00073 ; dt b'11111111',b'11111111',b'11111111',b'00000000',b'00000000',b'00000000' ; 1st board 00074 ; dt b'00000000',b'00000000',b'00000000',b'11111111',b'11111111',b'11111111' ; 2nd board 00075 00076 ;********************************************************************** 00077 ; moving 2 red down, 2 green down 00078 ;********************************************************************** 00079 00080 start_pattern 0x17, 0x03 M 095F M table2 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat2-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat2-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat2-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat2-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat2-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000018 M leng =(endpat2-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 159 LOC OBJECT CODE LINE SOURCE TEXT VALUE M leng = (endpat2-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat2-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat2-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 095F 3417 3403 3418 M dt 0x17,0x03,(leng) M else M de 0x17,0x03,(leng) M endif 00081 ; RRRRRRRR RRRRGGGG GGGGGGGG 00082 ; 00000000 01110000 00000111 00083 ; 12345678 90121234 56789012 0962 3480 3410 3400 00084 dt b'10000000',b'00010000',b'00000000',b'10000000',b'00010000',b'00000000' 3480 3410 3400 0968 3440 3420 3400 00085 dt b'01000000',b'00100000',b'00000000',b'01000000',b'00100000',b'00000000' 3440 3420 3400 096E 3420 3440 3400 00086 dt b'00100000',b'01000000',b'00000000',b'00100000',b'01000000',b'00000000' 3420 3440 3400 0974 3410 3480 3400 00087 dt b'00010000',b'10000000',b'00000000',b'00010000',b'10000000',b'00000000' 3410 3480 3400 097A 3409 3400 3400 00088 dt b'00001001',b'00000000',b'00000000',b'00001001',b'00000000',b'00000000' 3409 3400 3400 0980 3406 3400 3400 00089 dt b'00000110',b'00000000',b'00000000',b'00000110',b'00000000',b'00000000' 3406 3400 3400 0986 3480 3410 3400 00090 dt b'10000000',b'00010000',b'00000000',b'10000000',b'00010000',b'00000000' 3480 3410 3400 098C 3440 3420 3400 00091 dt b'01000000',b'00100000',b'00000000',b'01000000',b'00100000',b'00000000' 3440 3420 3400 0992 3420 3440 3400 00092 dt b'00100000',b'01000000',b'00000000',b'00100000',b'01000000',b'00000000' 3420 3440 3400 0998 3410 3480 3400 00093 dt b'00010000',b'10000000',b'00000000',b'00010000',b'10000000',b'00000000' 3410 3480 3400 099E 3409 3400 3400 00094 dt b'00001001',b'00000000',b'00000000',b'00001001',b'00000000',b'00000000' 3409 3400 3400 09A4 3406 3400 3400 00095 dt b'00000110',b'00000000',b'00000000',b'00000110',b'00000000',b'00000000' 3406 3400 3400 00096 00097 #ifndef MONO 09AA 3400 3408 3401 00098 dt b'00000000',b'00001000',b'00000001',b'00000000',b'00001000',b'00000001' 3400 3408 3401 09B0 3400 3404 3402 00099 dt b'00000000',b'00000100',b'00000010',b'00000000',b'00000100',b'00000010' 3400 3404 3402 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 160 LOC OBJECT CODE LINE SOURCE TEXT VALUE 09B6 3400 3402 3404 00100 dt b'00000000',b'00000010',b'00000100',b'00000000',b'00000010',b'00000100' 3400 3402 3404 09BC 3400 3401 3408 00101 dt b'00000000',b'00000001',b'00001000',b'00000000',b'00000001',b'00001000' 3400 3401 3408 09C2 3400 3400 3490 00102 dt b'00000000',b'00000000',b'10010000',b'00000000',b'00000000',b'10010000' 3400 3400 3490 09C8 3400 3400 3460 00103 dt b'00000000',b'00000000',b'01100000',b'00000000',b'00000000',b'01100000' 3400 3400 3460 09CE 3400 3408 3401 00104 dt b'00000000',b'00001000',b'00000001',b'00000000',b'00001000',b'00000001' 3400 3408 3401 09D4 3400 3404 3402 00105 dt b'00000000',b'00000100',b'00000010',b'00000000',b'00000100',b'00000010' 3400 3404 3402 09DA 3400 3402 3404 00106 dt b'00000000',b'00000010',b'00000100',b'00000000',b'00000010',b'00000100' 3400 3402 3404 09E0 3400 3401 3408 00107 dt b'00000000',b'00000001',b'00001000',b'00000000',b'00000001',b'00001000' 3400 3401 3408 09E6 3400 3400 3490 00108 dt b'00000000',b'00000000',b'10010000',b'00000000',b'00000000',b'10010000' 3400 3400 3490 09EC 3400 3400 3460 00109 dt b'00000000',b'00000000',b'01100000',b'00000000',b'00000000',b'01100000' 3400 3400 3460 00110 #endif 00111 end_pattern 09F2 M endpat2 00000003 M patternc = patternc + 1 00112 00113 ;********************************************************************** 00114 ; rotate around 00115 ;********************************************************************** 00116 00117 start_pattern 0x17, 0x10 M 09F2 M table3 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat3-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat3-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat3-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat3-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat3-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000004 M leng =(endpat3-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat3-$-3)/(9+4) ;tbltype1,speed,length MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 161 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat3-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat3-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 09F2 3417 3410 3404 M dt 0x17,0x10,(leng) M else M de 0x17,0x10,(leng) M endif 00118 ; RRRRRRRR RRRRGGGG GGGGGGGG 00119 ; 00000000 01110000 00000111 00120 ; 12345678 90121234 56789012 00121 #ifdef SINGLE 09F5 34FC 340F 34C0 00122 dt b'11111100',b'00001111',b'11000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 09FB 341F 3481 34F8 00123 dt b'00011111',b'10000001',b'11111000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A01 3403 34F0 343F 00124 dt b'00000011',b'11110000',b'00111111',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0A07 34E0 347E 3407 00125 dt b'11100000',b'01111110',b'00000111',b'00000000',b'00000000',b'00000000' 3400 3400 3400 00126 #else 00127 dt b'11111100',b'00001111',b'11000000',b'00000000',b'00000000',b'00000000' 00128 dt b'00000000',b'00000000',b'00000000',b'11111100',b'00001111',b'11000000' 00129 dt b'00000011',b'11110000',b'00111111',b'00000000',b'00000000',b'00000000' 00130 dt b'00000000',b'00000000',b'00000000',b'00000011',b'11110000',b'00111111' 00131 #endif 00132 00133 end_pattern 0A0D M endpat3 00000004 M patternc = patternc + 1 00134 00135 ;********************************************************************** 00136 ; Fader 00137 ;********************************************************************** 00138 00139 start_pattern 0x1b, 0x10 M 0A0D M table4 M if (0x1b == 1) || (0x1b == 6) || (0x1b == 0x15) M leng = (endpat4-$-3)/3 ;tbltype1,speed,length M else M if (0x1b == 3) || (0x1b == 0x0b) || (0x1b == 0x10) || (0x1b == 0x13) || (0x1b == 0x14)|| (0x1b MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 162 LOC OBJECT CODE LINE SOURCE TEXT VALUE == 0x18) M leng = (endpat4-$-3)/2 ;tbltype1,speed,length M else M if (0x1b == 9) || (0x1b == 0x0e) M leng =(endpat4-$-3)/5 ;tbltype1,speed,length M else M if (0x1b == 0x0a) M leng =(endpat4-$-3)/4 ;tbltype1,speed,length M else M if (0x1b == 0x0d) M leng =(endpat4-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x1b == 0x0f) || (0x1b == 0x12)|| (0x1b == 0x17)||(0x1b == 0x1b) 00000018 M leng =(endpat4-$-3)/(6) ;tbltype1,speed,length M else M if (0x1b == 0x11) M leng = (endpat4-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x1b == 0x16) || (0x1b == 0x1a) M leng = (endpat4-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat4-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0A0D 341B 3410 3418 M dt 0x1b,0x10,(leng) M else M de 0x1b,0x10,(leng) M endif 00140 ; RRRRRRRR RRRRGGGG GGGGGGGG 00141 ; 00000000 01110000 00000111 00142 ; 12345678 90121234 56789012 0A10 34FF 34FF 34FF 00143 dt b'11111111',b'11111111',b'11111111',b'11111111',b'11111111',b'11111111' ; all on 34FF 34FF 34FF 0A16 34FF 34FF 34FF 00144 dt b'11111111',b'11111111',b'11111111',b'11111111',b'11111111',b'11111111' ; all on 34FF 34FF 34FF 0A1C 34FF 34FF 34FF 00145 dt b'11111111',b'11111111',b'11111111',b'11111111',b'11111111',b'11111111' ; all on 34FF 34FF 34FF 0A22 34FF 34FF 34FF 00146 dt b'11111111',b'11111111',b'11111111',b'11111111',b'11111111',b'11111111' ; all on 34FF 34FF 34FF 0A28 3400 3400 3400 00147 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0A2E 3400 3400 3400 00148 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0A34 3400 3400 3400 00149 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 163 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0A3A 3400 3400 3400 00150 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0A40 34FF 34F0 3400 00151 dt b'11111111',b'11110000',b'00000000',b'11111111',b'11110000',b'00000000' ; all Red 34FF 34F0 3400 0A46 34FF 34F0 3400 00152 dt b'11111111',b'11110000',b'00000000',b'11111111',b'11110000',b'00000000' ; all Red 34FF 34F0 3400 0A4C 34FF 34F0 3400 00153 dt b'11111111',b'11110000',b'00000000',b'11111111',b'11110000',b'00000000' ; all Red 34FF 34F0 3400 0A52 34FF 34F0 3400 00154 dt b'11111111',b'11110000',b'00000000',b'11111111',b'11110000',b'00000000' ; all Red 34FF 34F0 3400 0A58 3400 3400 3400 00155 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0A5E 3400 3400 3400 00156 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0A64 3400 3400 3400 00157 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0A6A 3400 3400 3400 00158 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 00159 #ifndef MONO 0A70 3400 340F 34FF 00160 dt b'00000000',b'00001111',b'11111111',b'00000000',b'00001111',b'11111111' ; all Green 3400 340F 34FF 0A76 3400 340F 34FF 00161 dt b'00000000',b'00001111',b'11111111',b'00000000',b'00001111',b'11111111' ; all Green 3400 340F 34FF 0A7C 3400 340F 34FF 00162 dt b'00000000',b'00001111',b'11111111',b'00000000',b'00001111',b'11111111' ; all Green 3400 340F 34FF 0A82 3400 340F 34FF 00163 dt b'00000000',b'00001111',b'11111111',b'00000000',b'00001111',b'11111111' ; all Green 3400 340F 34FF 0A88 3400 3400 3400 00164 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0A8E 3400 3400 3400 00165 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0A94 3400 3400 3400 00166 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0A9A 3400 3400 3400 00167 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 00168 #endif 00169 end_pattern 0AA0 M endpat4 00000005 M patternc = patternc + 1 00170 00171 ;********************************************************************** 00172 ; all-on spinner ( rotate 11_11_11_11_ sequence around the circle ) 00173 ;********************************************************************** 00174 00175 start_pattern 0x17, 0x03 M 0AA0 M table5 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat5-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat5-$-3)/2 ;tbltype1,speed,length MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 164 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat5-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat5-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat5-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000003 M leng =(endpat5-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat5-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat5-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat5-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0AA0 3417 3403 3403 M dt 0x17,0x03,(leng) M else M de 0x17,0x03,(leng) M endif 00176 ; RRRRRRRR RRRRGGGG GGGGGGGG 00177 ; 00000000 01110000 00000111 00178 ; 12345678 90121234 56789012 0AA3 34DB 346D 34B6 00179 dt b'11011011',b'01101101',b'10110110',b'11011011',b'01101101',b'10110110' ; 110 34DB 346D 34B6 0AA9 346D 34B6 34DB 00180 dt b'01101101',b'10110110',b'11011011',b'01101101',b'10110110',b'11011011' ; 011 346D 34B6 34DB 0AAF 34B6 34DB 346D 00181 dt b'10110110',b'11011011',b'01101101',b'10110110',b'11011011',b'01101101' ; 101 34B6 34DB 346D 00182 end_pattern 0AB5 M endpat5 00000006 M patternc = patternc + 1 00183 00184 #ifdef SINGLE 00185 ;********************************************************************** 00186 ; animated smiley (did not look good in 3D) 00187 ;********************************************************************** 00188 00189 start_pattern 0x17, 0x02 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 165 LOC OBJECT CODE LINE SOURCE TEXT VALUE M 0AB5 M table6 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat6-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat6-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat6-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat6-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat6-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000009 M leng =(endpat6-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat6-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat6-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat6-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0AB5 3417 3402 3409 M dt 0x17,0x02,(leng) M else M de 0x17,0x02,(leng) M endif 00190 ; RRRRRRRR RRRRGGGG GGGGGGGG 00191 ; 00000000 01110000 00000111 00192 ; 12345678 90121234 56789012 00193 0AB8 344F 3424 34F2 00194 dt b'01001111',b'00100100',b'11110010',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0ABE 344F 3424 34F2 00195 dt b'01001111',b'00100100',b'11110010',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0AC4 344F 3424 34F2 00196 dt b'01001111',b'00100100',b'11110010',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0ACA 344F 3424 34F2 00197 dt b'01001111',b'00100100',b'11110010',b'00000000',b'00000000',b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 166 LOC OBJECT CODE LINE SOURCE TEXT VALUE 3400 3400 3400 0AD0 344F 3424 34F2 00198 dt b'01001111',b'00100100',b'11110010',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0AD6 344F 3424 34F2 00199 dt b'01001111',b'00100100',b'11110010',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0ADC 340F 3404 34F2 00200 dt b'00001111',b'00000100',b'11110010',b'00000000',b'00000000',b'00000000' ; eyes blink 3400 3400 3400 0AE2 344F 3424 34F2 00201 dt b'01001111',b'00100100',b'11110010',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0AE8 340F 3404 34F2 00202 dt b'00001111',b'00000100',b'11110010',b'00000000',b'00000000',b'00000000' ; eyes blink 3400 3400 3400 00203 00204 ; dt b'01001001',b'11100100',b'10011110',b'01001001',b'11100100',b'10011110' 00205 ; dt b'01001001',b'11100100',b'10011110',b'01001001',b'11100100',b'10011110' 00206 ; dt b'01001001',b'11100100',b'10011110',b'01001001',b'11100100',b'10011110' 00207 ; dt b'01001001',b'11100100',b'10011110',b'01001001',b'11100100',b'10011110' 00208 ; dt b'01001001',b'11100100',b'10011110',b'01001001',b'11100100',b'10011110' 00209 ; dt b'01001001',b'11100100',b'10011110',b'01001001',b'11100100',b'10011110' 00210 ; dt b'00000001',b'11100000',b'00011110',b'00000001',b'11100000',b'00011110' ; eyes blink 00211 ; dt b'01001001',b'11100100',b'10011110',b'01001001',b'11100100',b'10011110' 00212 ; dt b'00000001',b'11100000',b'00011110',b'00000001',b'11100000',b'00011110' ; eyes blink 00213 end_pattern 0AEE M endpat6 00000007 M patternc = patternc + 1 00214 #else 00215 ;********************************************************************** 00216 ; double down chase 00217 ;********************************************************************** 00218 start_pattern 0x17, 0x02 00219 ; RRRRRRRR RRRRGGGG GGGGGGGG 00220 ; 00000000 01110000 00000111 00221 ; 12345678 90121234 56789012 00222 dt b'10000000',b'00010000',b'00000000',b'10000000',b'00010000',b'00000000' 00223 dt b'01000000',b'00100000',b'00000000',b'01000000',b'00100000',b'00000000' 00224 dt b'10100000',b'01010000',b'00000000',b'10100000',b'01010000',b'00000000' 00225 dt b'01010000',b'10100000',b'00000000',b'01010000',b'10100000',b'00000000' 00226 dt b'00101001',b'01000000',b'00000000',b'00101001',b'01000000',b'00000000' 00227 dt b'00010110',b'10000000',b'00000000',b'00010110',b'10000000',b'00000000' 00228 dt b'00001001',b'00000000',b'00000000',b'00001001',b'00000000',b'00000000' 00229 dt b'00000110',b'00000000',b'00000000',b'00000110',b'00000000',b'00000000' 00230 #ifndef MONO 00231 dt b'00000000',b'00001000',b'00000001',b'00000000',b'00001000',b'00000001' 00232 dt b'00000000',b'00000100',b'00000010',b'00000000',b'00000100',b'00000010' 00233 dt b'00000000',b'00001010',b'00000101',b'00000000',b'00001010',b'00000101' 00234 dt b'00000000',b'00000101',b'00001010',b'00000000',b'00000101',b'00001010' 00235 dt b'00000000',b'00000010',b'10010100',b'00000000',b'00000010',b'10010100' 00236 dt b'00000000',b'00000001',b'01101000',b'00000000',b'00000001',b'01101000' 00237 dt b'00000000',b'00000000',b'10010000',b'00000000',b'00000000',b'10010000' 00238 dt b'00000000',b'00000000',b'01100000',b'00000000',b'00000000',b'01100000' 00239 #endif 00240 end_pattern 00241 00242 #endif MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 167 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00243 00244 ;********************************************************************** 00245 ; red spinner ( rotate Red-Red-off sequence: RR_RR_RR_RR_ ) 00246 ;********************************************************************** 00247 00248 start_pattern 0x17, 0x03 M 0AEE M table7 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat7-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat7-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat7-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat7-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat7-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000003 M leng =(endpat7-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat7-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat7-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat7-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0AEE 3417 3403 3403 M dt 0x17,0x03,(leng) M else M de 0x17,0x03,(leng) M endif 00249 ; RRRRRRRR RRRRGGGG GGGGGGGG 00250 ; 00000000 01110000 00000111 00251 ; 12345678 90121234 56789012 0AF1 34DB 3460 3400 00252 dt b'11011011',b'01100000',b'00000000',b'11011011',b'01100000',b'00000000' ; 110 Red 34DB 3460 3400 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 168 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0AF7 346D 34B0 3400 00253 dt b'01101101',b'10110000',b'00000000',b'01101101',b'10110000',b'00000000' ; 011 Red 346D 34B0 3400 0AFD 34B6 34D0 3400 00254 dt b'10110110',b'11010000',b'00000000',b'01101101',b'10110000',b'00000000' ; 101 Red 346D 34B0 3400 00255 end_pattern 0B03 M endpat7 00000008 M patternc = patternc + 1 00256 00257 #ifdef MONO 00258 ;********************************************************************** 00259 ; every 3nd 00260 ;********************************************************************** 00261 00262 start_pattern 0x17, 0x03 00263 ; RRRRRRRR RRRRGGGG GGGGGGGG 00264 ; 00000000 01110000 00000111 00265 ; 12345678 90121234 56789012 00266 dt b'10010010',b'01000000',b'00000000',b'10010010',b'01000000',b'00000000' ; 110 Green 00267 dt b'01001001',b'00100000',b'00000000',b'01001001',b'00100000',b'00000000' ; 011 Green 00268 dt b'00100100',b'10010000',b'00000000',b'00100100',b'10010000',b'00000000' ; 101 Green 00269 end_pattern 00270 #else 00271 ;********************************************************************** 00272 ; green spinner ( rotate Green-Green-off sequence: GG_GG_GG_GG_ ) 00273 ;********************************************************************** 00274 00275 start_pattern 0x17, 0x03 M 0B03 M table8 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat8-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat8-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat8-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat8-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat8-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000003 M leng =(endpat8-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat8-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat8-$-3)/0x20 ;tbltype1,speed,length MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 169 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M leng =(endpat8-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0B03 3417 3403 3403 M dt 0x17,0x03,(leng) M else M de 0x17,0x03,(leng) M endif 00276 ; RRRRRRRR RRRRGGGG GGGGGGGG 00277 ; 00000000 01110000 00000111 00278 ; 12345678 90121234 56789012 0B06 3400 340D 34B6 00279 dt b'00000000',b'00001101',b'10110110',b'00000000',b'00001101',b'10110110' ; 110 Green 3400 340D 34B6 0B0C 3400 3406 34DB 00280 dt b'00000000',b'00000110',b'11011011',b'00000000',b'00000110',b'11011011' ; 011 Green 3400 3406 34DB 0B12 3400 340B 346D 00281 dt b'00000000',b'00001011',b'01101101',b'00000000',b'00001011',b'01101101' ; 101 Green 3400 340B 346D 00282 end_pattern 0B18 M endpat8 00000009 M patternc = patternc + 1 00283 #endif 00284 00285 ;********************************************************************** 00286 ; alternating colors spinner ( rotate RR_GG_RR_GG_ sequence ) 00287 ;********************************************************************** 00288 00289 start_pattern 0x17, 0x03 M 0B18 M table9 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat9-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat9-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat9-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat9-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat9-$-3)/(9+1) ;tbltype1,speed,length M else MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 170 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 00000006 M leng =(endpat9-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat9-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat9-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat9-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0B18 3417 3403 3406 M dt 0x17,0x03,(leng) M else M de 0x17,0x03,(leng) M endif 00290 ; RRRRRRRR RRRRGGGG GGGGGGGG 00291 ; 00000000 01110000 00000111 00292 ; 12345678 90121234 56789012 0B1B 34C3 3401 3486 00293 dt b'11000011',b'00000001',b'10000110',b'11000011',b'00000001',b'10000110' ; 110000 R 000110 G 34C3 3401 3486 0B21 3461 3480 34C3 00294 dt b'01100001',b'10000000',b'11000011',b'01100001',b'10000000',b'11000011' ; 011000 R 000011 G 3461 3480 34C3 0B27 3430 34C8 3461 00295 dt b'00110000',b'11001000',b'01100001',b'00110000',b'11001000',b'01100001' ; 001100 R 100001 G 3430 34C8 3461 0B2D 3418 346C 3430 00296 dt b'00011000',b'01101100',b'00110000',b'00011000',b'01101100',b'00110000' ; 000110 R 110000 G 3418 346C 3430 0B33 340C 3436 3418 00297 dt b'00001100',b'00110110',b'00011000',b'00001100',b'00110110',b'00011000' ; 000011 R 011000 G 340C 3436 3418 0B39 3486 3413 340C 00298 dt b'10000110',b'00010011',b'00001100',b'10000110',b'00010011',b'00001100' ; 100001 R 001100 G 3486 3413 340C 00299 end_pattern 0B3F M endpat9 0000000A M patternc = patternc + 1 00300 00301 ;********************************************************************** 00302 ; fader Green down, Red up 00303 ;********************************************************************** 00304 00305 start_pattern 0x1b, 0x03 M 0B3F M table10 M if (0x1b == 1) || (0x1b == 6) || (0x1b == 0x15) M leng = (endpat10-$-3)/3 ;tbltype1,speed,length M else MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 171 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (0x1b == 3) || (0x1b == 0x0b) || (0x1b == 0x10) || (0x1b == 0x13) || (0x1b == 0x14)|| (0x1b == 0x18) M leng = (endpat10-$-3)/2 ;tbltype1,speed,length M else M if (0x1b == 9) || (0x1b == 0x0e) M leng =(endpat10-$-3)/5 ;tbltype1,speed,length M else M if (0x1b == 0x0a) M leng =(endpat10-$-3)/4 ;tbltype1,speed,length M else M if (0x1b == 0x0d) M leng =(endpat10-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x1b == 0x0f) || (0x1b == 0x12)|| (0x1b == 0x17)||(0x1b == 0x1b) 0000000C M leng =(endpat10-$-3)/(6) ;tbltype1,speed,length M else M if (0x1b == 0x11) M leng = (endpat10-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x1b == 0x16) || (0x1b == 0x1a) M leng = (endpat10-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat10-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0B3F 341B 3403 340C M dt 0x1b,0x03,(leng) M else M de 0x1b,0x03,(leng) M endif 00306 ; RRRRRRRR RRRRGGGG GGGGGGGG 00307 ; 00000000 01110000 00000111 00308 ; 12345678 90121234 56789012 00309 #ifdef SINGLE 0B42 3480 347E 3401 00310 dt b'10000000',b'01111110',b'00000001',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0B48 34C0 343C 3403 00311 dt b'11000000',b'00111100',b'00000011',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0B4E 34E0 3418 3407 00312 dt b'11100000',b'00011000',b'00000111',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 00313 #else 00314 dt b'10000000',b'00000000',b'00000001',b'00000000',b'00000000',b'00000000' ; all off 00315 dt b'11000000',b'00000000',b'00000011',b'00000000',b'00000000',b'00000000' ; all off 00316 dt b'11100000',b'00000000',b'00000111',b'00000000',b'00000000',b'00000000' ; all off 00317 #endif 0B54 34F0 3400 340F 00318 dt b'11110000',b'00000000',b'00001111',b'00000000',b'00000000',b'00000000' ; all off MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 172 LOC OBJECT CODE LINE SOURCE TEXT VALUE 3400 3400 3400 0B5A 3478 3400 341E 00319 dt b'01111000',b'00000000',b'00011110',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0B60 343C 3400 343C 00320 dt b'00111100',b'00000000',b'00111100',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0B66 341E 3400 3478 00321 dt b'00011110',b'00000000',b'01111000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0B6C 340F 3400 34F0 00322 dt b'00001111',b'00000000',b'11110000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0B72 3407 3481 34E0 00323 dt b'00000111',b'10000001',b'11100000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0B78 3403 34C3 34C0 00324 dt b'00000011',b'11000011',b'11000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0B7E 3401 34E7 3480 00325 dt b'00000001',b'11100111',b'10000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0B84 3400 34FF 3400 00326 dt b'00000000',b'11111111',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 00327 #ifndef SINGLE 00328 dt b'00000000',b'01111110',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00329 dt b'00000000',b'00111100',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00330 dt b'00000000',b'00011000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 00331 00332 dt b'00000000',b'00000000',b'00000000',b'10000000',b'00000000',b'00000001' ; all off 00333 dt b'00000000',b'00000000',b'00000000',b'11000000',b'00000000',b'00000011' ; all off 00334 dt b'00000000',b'00000000',b'00000000',b'11100000',b'00000000',b'00000111' ; all off 00335 dt b'00000000',b'00000000',b'00000000',b'11110000',b'00000000',b'00001111' ; all off 00336 dt b'00000000',b'00000000',b'00000000',b'01111000',b'00000000',b'00011110' ; all off 00337 dt b'00000000',b'00000000',b'00000000',b'00111100',b'00000000',b'00111100' ; all off 00338 dt b'00000000',b'00000000',b'00000000',b'00011110',b'00000000',b'01111000' ; all off 00339 dt b'00000000',b'00000000',b'00000000',b'00001111',b'00000000',b'11110000' ; all off 00340 dt b'00000000',b'00000000',b'00000000',b'00000111',b'10000001',b'11100000' ; all off 00341 dt b'00000000',b'00000000',b'00000000',b'00000011',b'11000011',b'11000000' ; all off 00342 dt b'00000001',b'00000000',b'00000000',b'00000001',b'11100111',b'10000000' ; all off 00343 dt b'00000000',b'00000000',b'00000000',b'00000000',b'11111111',b'00000000' ; all off 00344 dt b'00000000',b'00000000',b'00000000',b'00000000',b'01111110',b'00000000' ; all off 00345 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00111100',b'00000000' ; all off 00346 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00011000',b'00000000' ; all off 00347 #endif 00348 end_pattern 0B8A M endpat10 0000000B M patternc = patternc + 1 00349 00350 ;********************************************************************** 00351 ; fader Down 00352 ;********************************************************************** 00353 00354 start_pattern 0x1b, 0x03 M 0B8A M table11 M if (0x1b == 1) || (0x1b == 6) || (0x1b == 0x15) M leng = (endpat11-$-3)/3 ;tbltype1,speed,length M else M if (0x1b == 3) || (0x1b == 0x0b) || (0x1b == 0x10) || (0x1b == 0x13) || (0x1b == 0x14)|| (0x1b MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 173 LOC OBJECT CODE LINE SOURCE TEXT VALUE == 0x18) M leng = (endpat11-$-3)/2 ;tbltype1,speed,length M else M if (0x1b == 9) || (0x1b == 0x0e) M leng =(endpat11-$-3)/5 ;tbltype1,speed,length M else M if (0x1b == 0x0a) M leng =(endpat11-$-3)/4 ;tbltype1,speed,length M else M if (0x1b == 0x0d) M leng =(endpat11-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x1b == 0x0f) || (0x1b == 0x12)|| (0x1b == 0x17)||(0x1b == 0x1b) 0000001A M leng =(endpat11-$-3)/(6) ;tbltype1,speed,length M else M if (0x1b == 0x11) M leng = (endpat11-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x1b == 0x16) || (0x1b == 0x1a) M leng = (endpat11-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat11-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0B8A 341B 3403 341A M dt 0x1b,0x03,(leng) M else M de 0x1b,0x03,(leng) M endif 00355 ; RRRRRRRR RRRRGGGG GGGGGGGG 00356 ; 00000000 01110000 00000111 00357 ; 12345678 90121234 56789012 0B8D 3480 3410 3400 00358 dt b'10000000',b'00010000',b'00000000',b'10000000',b'00010000',b'00000000' ; all off 3480 3410 3400 0B93 34C0 3430 3400 00359 dt b'11000000',b'00110000',b'00000000',b'11000000',b'00110000',b'00000000' ; all off 34C0 3430 3400 0B99 34E0 3470 3400 00360 dt b'11100000',b'01110000',b'00000000',b'11100000',b'01110000',b'00000000' ; all off 34E0 3470 3400 0B9F 34F0 34F0 3400 00361 dt b'11110000',b'11110000',b'00000000',b'11110000',b'11110000',b'00000000' ; all off 34F0 34F0 3400 0BA5 3479 34E0 3400 00362 dt b'01111001',b'11100000',b'00000000',b'01111001',b'11100000',b'00000000' ; all off 3479 34E0 3400 0BAB 343F 34C0 3400 00363 dt b'00111111',b'11000000',b'00000000',b'00111101',b'11000000',b'00000000' ; all off 343D 34C0 3400 0BB1 341F 3480 3400 00364 dt b'00011111',b'10000000',b'00000000',b'00011111',b'10000000',b'00000000' ; all off 341F 3480 3400 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 174 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0BB7 340F 3400 3400 00365 dt b'00001111',b'00000000',b'00000000',b'00001111',b'00000000',b'00000000' ; all off 340F 3400 3400 0BBD 3406 3400 3400 00366 dt b'00000110',b'00000000',b'00000000',b'00000110',b'00000000',b'00000000' ; all off 3406 3400 3400 0BC3 3400 3400 3400 00367 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0BC9 3400 3400 3400 00368 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0BCF 3400 3400 3400 00369 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0BD5 3400 3400 3400 00370 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 00371 #ifndef MONO 0BDB 3400 3408 3401 00372 dt b'00000000',b'00001000',b'00000001',b'00000000',b'00001000',b'00000001' ; all off 3400 3408 3401 0BE1 3400 340C 3403 00373 dt b'00000000',b'00001100',b'00000011',b'00000000',b'00001100',b'00000011' ; all off 3400 340C 3403 0BE7 3400 340E 3407 00374 dt b'00000000',b'00001110',b'00000111',b'00000000',b'00001110',b'00000111' ; all off 3400 340E 3407 0BED 3400 340F 340F 00375 dt b'00000000',b'00001111',b'00001111',b'00000000',b'00001111',b'00001111' ; all off 3400 340F 340F 0BF3 3400 3407 349E 00376 dt b'00000000',b'00000111',b'10011110',b'00000000',b'00000111',b'10011110' ; all off 3400 3407 349E 0BF9 3400 3403 34FC 00377 dt b'00000000',b'00000011',b'11111100',b'00000000',b'00000011',b'11111100' ; all off 3400 3403 34FC 0BFF 3400 3401 34F8 00378 dt b'00000000',b'00000001',b'11111000',b'00000000',b'00000001',b'11111000' ; all off 3400 3401 34F8 0C05 3400 3400 34F0 00379 dt b'00000000',b'00000000',b'11110000',b'00000000',b'00000000',b'11110000' ; all off 3400 3400 34F0 0C0B 3400 3400 3460 00380 dt b'00000000',b'00000000',b'01100000',b'00000000',b'00000000',b'01100000' ; all off 3400 3400 3460 0C11 3400 3400 3400 00381 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0C17 3400 3400 3400 00382 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0C1D 3400 3400 3400 00383 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0C23 3400 3400 3400 00384 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 00385 #endif 00386 end_pattern 0C29 M endpat11 0000000C M patternc = patternc + 1 00387 00388 ;********************************************************************** 00389 ; fader up Red, up Green, up both 00390 ;********************************************************************** 00391 00392 start_pattern 0x1b, 0x03 M 0C29 M table12 M if (0x1b == 1) || (0x1b == 6) || (0x1b == 0x15) M leng = (endpat12-$-3)/3 ;tbltype1,speed,length MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 175 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (0x1b == 3) || (0x1b == 0x0b) || (0x1b == 0x10) || (0x1b == 0x13) || (0x1b == 0x14)|| (0x1b == 0x18) M leng = (endpat12-$-3)/2 ;tbltype1,speed,length M else M if (0x1b == 9) || (0x1b == 0x0e) M leng =(endpat12-$-3)/5 ;tbltype1,speed,length M else M if (0x1b == 0x0a) M leng =(endpat12-$-3)/4 ;tbltype1,speed,length M else M if (0x1b == 0x0d) M leng =(endpat12-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x1b == 0x0f) || (0x1b == 0x12)|| (0x1b == 0x17)||(0x1b == 0x1b) 00000027 M leng =(endpat12-$-3)/(6) ;tbltype1,speed,length M else M if (0x1b == 0x11) M leng = (endpat12-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x1b == 0x16) || (0x1b == 0x1a) M leng = (endpat12-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat12-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0C29 341B 3403 3427 M dt 0x1b,0x03,(leng) M else M de 0x1b,0x03,(leng) M endif 00393 ; RRRRRRRR RRRRGGGG GGGGGGGG 00394 ; 00000000 01110000 00000111 00395 ; 12345678 90121234 56789012 0C2C 3406 3400 3400 00396 dt b'00000110',b'00000000',b'00000000',b'00000110',b'00000000',b'00000000' ; all off 3406 3400 3400 0C32 340F 3400 3400 00397 dt b'00001111',b'00000000',b'00000000',b'00001111',b'00000000',b'00000000' ; all off 340F 3400 3400 0C38 341F 3480 3400 00398 dt b'00011111',b'10000000',b'00000000',b'00011111',b'10000000',b'00000000' ; all off 341F 3480 3400 0C3E 343F 34C0 3400 00399 dt b'00111111',b'11000000',b'00000000',b'00111101',b'11000000',b'00000000' ; all off 343D 34C0 3400 0C44 3479 34E0 3400 00400 dt b'01111001',b'11100000',b'00000000',b'01111001',b'11100000',b'00000000' ; all off 3479 34E0 3400 0C4A 34F0 34F0 3400 00401 dt b'11110000',b'11110000',b'00000000',b'11110000',b'11110000',b'00000000' ; all off 34F0 34F0 3400 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 176 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0C50 34E0 3470 3400 00402 dt b'11100000',b'01110000',b'00000000',b'11100000',b'01110000',b'00000000' ; all off 34E0 3470 3400 0C56 34C0 3430 3400 00403 dt b'11000000',b'00110000',b'00000000',b'11000000',b'00110000',b'00000000' ; all off 34C0 3430 3400 0C5C 3480 3410 3400 00404 dt b'10000000',b'00010000',b'00000000',b'10000000',b'00010000',b'00000000' ; all off 3480 3410 3400 0C62 3400 3400 3400 00405 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0C68 3400 3400 3400 00406 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0C6E 3400 3400 3400 00407 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0C74 3400 3400 3400 00408 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 00409 #ifndef MONO 0C7A 3400 3400 3460 00410 dt b'00000000',b'00000000',b'01100000',b'00000000',b'00000000',b'01100000' ; all off 3400 3400 3460 0C80 3400 3400 34F0 00411 dt b'00000000',b'00000000',b'11110000',b'00000000',b'00000000',b'11110000' ; all off 3400 3400 34F0 0C86 3400 3401 34F8 00412 dt b'00000000',b'00000001',b'11111000',b'00000000',b'00000001',b'11111000' ; all off 3400 3401 34F8 0C8C 3400 3403 34FC 00413 dt b'00000000',b'00000011',b'11111100',b'00000000',b'00000011',b'11111100' ; all off 3400 3403 34FC 0C92 3400 3407 349E 00414 dt b'00000000',b'00000111',b'10011110',b'00000000',b'00000111',b'10011110' ; all off 3400 3407 349E 0C98 3400 340F 340F 00415 dt b'00000000',b'00001111',b'00001111',b'00000000',b'00001111',b'00001111' ; all off 3400 340F 340F 0C9E 3400 340E 3407 00416 dt b'00000000',b'00001110',b'00000111',b'00000000',b'00001110',b'00000111' ; all off 3400 340E 3407 0CA4 3400 340C 3403 00417 dt b'00000000',b'00001100',b'00000011',b'00000000',b'00001100',b'00000011' ; all off 3400 340C 3403 0CAA 3400 3408 3401 00418 dt b'00000000',b'00001000',b'00000001',b'00000000',b'00001000',b'00000001' ; all off 3400 3408 3401 0CB0 3400 3400 3400 00419 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0CB6 3400 3400 3400 00420 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0CBC 3400 3400 3400 00421 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0CC2 3400 3400 3400 00422 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 00423 0CC8 3406 3400 3460 00424 dt b'00000110',b'00000000',b'01100000',b'00000110',b'00000000',b'01100000' ; all off 3406 3400 3460 0CCE 340F 3400 34F0 00425 dt b'00001111',b'00000000',b'11110000',b'00001111',b'00000000',b'11110000' ; all off 340F 3400 34F0 0CD4 341F 3481 34F8 00426 dt b'00011111',b'10000001',b'11111000',b'00011111',b'10000001',b'11111000' ; all off 341F 3481 34F8 0CDA 343F 34C3 34FC 00427 dt b'00111111',b'11000011',b'11111100',b'00111111',b'11000011',b'11111100' ; all off 343F 34C3 34FC 0CE0 3479 34E7 349E 00428 dt b'01111001',b'11100111',b'10011110',b'01111001',b'11100111',b'10011110' ; all off 3479 34E7 349E 0CE6 34F0 34FF 340F 00429 dt b'11110000',b'11111111',b'00001111',b'11110000',b'11111111',b'00001111' ; all off MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 177 LOC OBJECT CODE LINE SOURCE TEXT VALUE 34F0 34FF 340F 0CEC 34E0 347E 3407 00430 dt b'11100000',b'01111110',b'00000111',b'11100000',b'01111110',b'00000111' ; all off 34E0 347E 3407 0CF2 34C0 343C 3403 00431 dt b'11000000',b'00111100',b'00000011',b'11000000',b'00111100',b'00000011' ; all off 34C0 343C 3403 0CF8 3480 3418 3401 00432 dt b'10000000',b'00011000',b'00000001',b'10000000',b'00011000',b'00000001' ; all off 3480 3418 3401 0CFE 3400 3400 3400 00433 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0D04 3400 3400 3400 00434 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0D0A 3400 3400 3400 00435 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 0D10 3400 3400 3400 00436 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' ; all off 3400 3400 3400 00437 #endif 00438 end_pattern 0D16 M endpat12 0000000D M patternc = patternc + 1 00439 ;********************************************************************** 00440 ; even red, odd red, even green, odd green 00441 ;********************************************************************** 00442 00443 start_pattern 0x17, 0x03 M 0D16 M table13 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat13-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat13-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat13-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat13-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat13-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 0000000C M leng =(endpat13-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat13-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat13-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat13-$-3) M endif MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 178 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0D16 3417 3403 340C M dt 0x17,0x03,(leng) M else M de 0x17,0x03,(leng) M endif 00444 ; RRRRRRRR RRRRGGGG GGGGGGGG 00445 ; 00000000 01110000 00000111 00446 ; 12345678 90121234 56789012 0D19 3480 3410 3400 00447 dt b'10000000',b'00010000',b'00000000',b'10000000',b'00010000',b'00000000' 3480 3410 3400 0D1F 3420 3440 3400 00448 dt b'00100000',b'01000000',b'00000000',b'00100000',b'01000000',b'00000000' 3420 3440 3400 0D25 3409 3400 3400 00449 dt b'00001001',b'00000000',b'00000000',b'00001001',b'00000000',b'00000000' 3409 3400 3400 00450 00451 #ifndef MONO 0D2B 3400 3408 3401 00452 dt b'00000000',b'00001000',b'00000001',b'00000000',b'00001000',b'00000001' 3400 3408 3401 0D31 3400 3402 3404 00453 dt b'00000000',b'00000010',b'00000100',b'00000000',b'00000010',b'00000100' 3400 3402 3404 0D37 3400 3400 3490 00454 dt b'00000000',b'00000000',b'10010000',b'00000000',b'00000000',b'10010000' 3400 3400 3490 00455 #endif 00456 0D3D 3440 3420 3400 00457 dt b'01000000',b'00100000',b'00000000',b'01000000',b'00100000',b'00000000' 3440 3420 3400 0D43 3410 3480 3400 00458 dt b'00010000',b'10000000',b'00000000',b'00010000',b'10000000',b'00000000' 3410 3480 3400 0D49 3406 3400 3400 00459 dt b'00000110',b'00000000',b'00000000',b'00000110',b'00000000',b'00000000' 3406 3400 3400 00460 00461 #ifndef MONO 0D4F 3400 3404 3402 00462 dt b'00000000',b'00000100',b'00000010',b'00000000',b'00000100',b'00000010' 3400 3404 3402 0D55 3400 3401 3408 00463 dt b'00000000',b'00000001',b'00001000',b'00000000',b'00000001',b'00001000' 3400 3401 3408 0D5B 3400 3400 3460 00464 dt b'00000000',b'00000000',b'01100000',b'00000000',b'00000000',b'01100000' 3400 3400 3460 00465 #endif 00466 end_pattern 0D61 M endpat13 0000000E M patternc = patternc + 1 00467 00468 ;********************************************************************** 00469 ; Flashy MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 179 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00470 ;********************************************************************** 00471 00472 start_pattern 0x17, 0x01 M 0D61 M table14 M if (0x17 == 1) || (0x17 == 6) || (0x17 == 0x15) M leng = (endpat14-$-3)/3 ;tbltype1,speed,length M else M if (0x17 == 3) || (0x17 == 0x0b) || (0x17 == 0x10) || (0x17 == 0x13) || (0x17 == 0x14)|| (0x17 == 0x18) M leng = (endpat14-$-3)/2 ;tbltype1,speed,length M else M if (0x17 == 9) || (0x17 == 0x0e) M leng =(endpat14-$-3)/5 ;tbltype1,speed,length M else M if (0x17 == 0x0a) M leng =(endpat14-$-3)/4 ;tbltype1,speed,length M else M if (0x17 == 0x0d) M leng =(endpat14-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x17 == 0x0f) || (0x17 == 0x12)|| (0x17 == 0x17)||(0x17 == 0x1b) 0000002C M leng =(endpat14-$-3)/(6) ;tbltype1,speed,length M else M if (0x17 == 0x11) M leng = (endpat14-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x17 == 0x16) || (0x17 == 0x1a) M leng = (endpat14-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat14-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0D61 3417 3401 342C M dt 0x17,0x01,(leng) M else M de 0x17,0x01,(leng) M endif 00473 ; RRRRRRRR RRRRGGGG GGGGGGGG 00474 ; 00000000 01110000 00000111 00475 ; 12345678 90121234 56789012 00476 00477 #ifdef SINGLE 0D64 34E0 3400 3400 00478 dt b'11100000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0D6A 3400 3400 3400 00479 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 180 LOC OBJECT CODE LINE SOURCE TEXT VALUE 3400 3400 3400 0D70 34E0 3400 3400 00480 dt b'11100000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0D76 3400 3400 3400 00481 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0D7C 3400 340E 3400 00482 dt b'00000000',b'00001110',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0D82 3400 3400 3400 00483 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0D88 3400 340E 3400 00484 dt b'00000000',b'00001110',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0D8E 3400 3400 3400 00485 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0D94 3400 3400 3400 00486 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0D9A 3400 3400 3400 00487 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0DA0 3400 3400 3400 00488 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0DA6 341C 3400 3400 00489 dt b'00011100',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0DAC 3400 3400 3400 00490 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0DB2 341C 3400 3400 00491 dt b'00011100',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0DB8 3400 3400 3400 00492 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0DBE 3400 3401 34C0 00493 dt b'00000000',b'00000001',b'11000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0DC4 3400 3400 3400 00494 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0DCA 3400 3401 34C0 00495 dt b'00000000',b'00000001',b'11000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0DD0 3400 3400 3400 00496 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0DD6 3400 3400 3400 00497 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0DDC 3400 3400 3400 00498 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0DE2 3400 3400 3400 00499 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0DE8 3403 3480 3400 00500 dt b'00000011',b'10000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0DEE 3400 3400 3400 00501 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0DF4 3403 3480 3400 00502 dt b'00000011',b'10000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0DFA 3400 3400 3400 00503 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0E00 3400 3400 3438 00504 dt b'00000000',b'00000000',b'00111000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0E06 3400 3400 3400 00505 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 181 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0E0C 3400 3400 3438 00506 dt b'00000000',b'00000000',b'00111000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0E12 3400 3400 3400 00507 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0E18 3400 3400 3400 00508 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0E1E 3400 3400 3400 00509 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0E24 3400 3400 3400 00510 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0E2A 3400 3470 3400 00511 dt b'00000000',b'01110000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0E30 3400 3400 3400 00512 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0E36 3400 3470 3400 00513 dt b'00000000',b'01110000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0E3C 3400 3400 3400 00514 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0E42 3400 3400 3407 00515 dt b'00000000',b'00000000',b'00000111',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0E48 3400 3400 3400 00516 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0E4E 3400 3400 3407 00517 dt b'00000000',b'00000000',b'00000111',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0E54 3400 3400 3400 00518 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0E5A 3400 3400 3400 00519 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0E60 3400 3400 3400 00520 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 0E66 3400 3400 3400 00521 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 3400 3400 3400 00522 #else 00523 dt b'11000000',b'00110000',b'00000000',b'11000000',b'00110000',b'00000000' 00524 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00525 dt b'11000000',b'00110000',b'00000000',b'11000000',b'00110000',b'00000000' 00526 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00527 dt b'00000000',b'00001100',b'00000011',b'00000000',b'00001100',b'00000011' 00528 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00529 dt b'00000000',b'00001100',b'00000011',b'00000000',b'00001100',b'00000011' 00530 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00531 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00532 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00533 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00534 dt b'00110000',b'11000000',b'00000000',b'00110000',b'11000000',b'00000000' 00535 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00536 dt b'00110000',b'11000000',b'00000000',b'00110000',b'11000000',b'00000000' 00537 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00538 dt b'00000000',b'00000011',b'00001100',b'00000000',b'00000011',b'00001100' 00539 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00540 dt b'00000000',b'00000011',b'00001100',b'00000000',b'00000011',b'00001100' 00541 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00542 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 182 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00543 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00544 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00545 dt b'00001111',b'00000000',b'00000000',b'00001111',b'00000000',b'00000000' 00546 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00547 dt b'00001111',b'00000000',b'00000000',b'00001111',b'00000000',b'00000000' 00548 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00549 dt b'00000000',b'00000000',b'11110000',b'00000000',b'00000000',b'11110000' 00550 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00551 dt b'00000000',b'00000000',b'11110000',b'00000000',b'00000000',b'11110000' 00552 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00553 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00554 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00555 dt b'00000000',b'00000000',b'00000000',b'00000000',b'00000000',b'00000000' 00556 #endif 00557 end_pattern 0E6C M endpat14 0000000F M patternc = patternc + 1 00558 2100 00559 ORG 0x2100 ; data EEPROM location 00560 2100 00561 demo_store 2100 34FF 00562 dt 0xff 05690 #endif 05691 05692 05693 05694 END ; directive 'end of program' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 183 SYMBOL TABLE LABEL VALUE A0_A1_reg 000000A0 A0_A2_reg 000000A1 A0_A4_reg 000000A2 A0_A5_reg 000000A3 A1_A0_reg 000000A4 A1_A2_reg 000000A5 A1_A3_reg 000000A6 A1_A5_reg 000000A7 A2_A0_reg 000000A8 A2_A1_reg 000000A9 A2_A3_reg 000000AA A2_A4_reg 000000AB A3_A1_reg 000000AC A3_A2_reg 000000AD A3_A4_reg 000000AE A3_A5_reg 000000AF A4_A0_reg 000000B0 A4_A2_reg 000000B1 A4_A3_reg 000000B2 A4_A5_reg 000000B3 A5_A0_reg 000000B4 A5_A1_reg 000000B5 A5_A3_reg 000000B6 A5_A4_reg 000000B7 ABDEN 00000000 ABDOVF 00000007 ACKDT 00000005 ACKEN 00000004 ACKSTAT 00000006 ADCON0 0000001F ADCON1 0000009F ADCS0 00000006 ADCS1 00000007 ADDEN 00000003 ADFM 00000007 ADIE 00000006 ADIF 00000006 ADON 00000000 ADRESH 0000001E ADRESL 0000009E ANS0 00000000 ANS1 00000001 ANS10 00000002 ANS11 00000003 ANS12 00000004 ANS13 00000005 ANS2 00000002 ANS3 00000003 ANS4 00000004 ANS8 00000000 ANS9 00000001 ANSEL 00000188 ANSELH 00000189 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 184 SYMBOL TABLE LABEL VALUE Ax_dir 0000007B B2_B3_reg 000000CF B2_B4_reg 000000CE B2_B6_reg 000000CD B2_B7_reg 000000CC B3_B2_reg 000000CB B3_B4_reg 000000CA B3_B5_reg 000000C9 B3_B7_reg 000000C8 B4_B2_reg 000000C7 B4_B3_reg 000000C6 B4_B5_reg 000000C5 B4_B6_reg 000000C4 B5_B3_reg 000000C3 B5_B4_reg 000000C2 B5_B6_reg 000000C1 B5_B7_reg 000000C0 B6_B2_reg 000000BF B6_B4_reg 000000BE B6_B5_reg 000000BD B6_B7_reg 000000BC B7_B2_reg 000000BB B7_B3_reg 000000BA B7_B5_reg 000000B9 B7_B6_reg 000000B8 BAUDCTL 00000187 BCLIE 00000003 BCLIF 00000003 BF 00000000 BIN2LED BRG0 00000000 BRG1 00000001 BRG10 00000002 BRG11 00000003 BRG12 00000004 BRG13 00000005 BRG14 00000006 BRG15 00000007 BRG16 00000003 BRG2 00000002 BRG3 00000003 BRG4 00000004 BRG5 00000005 BRG6 00000006 BRG7 00000007 BRG8 00000000 BRG9 00000001 BRGH 00000002 BRIGHT1 0x40 BRIGHT1H 0xA0 BRIGHT2 0xA0 BRIGHT2H 0x40 Bx_dir 0000007A MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 185 SYMBOL TABLE LABEL VALUE C 00000000 C12 C12_SINGLE C1CH0 00000000 C1CH1 00000001 C1IE 00000005 C1IF 00000005 C1OE 00000005 C1ON 00000007 C1OUT 00000006 C1POL 00000004 C1R 00000002 C1RSEL 00000005 C1SEN 00000005 C2CH0 00000000 C2CH1 00000001 C2IE 00000006 C2IF 00000006 C2OE 00000005 C2ON 00000007 C2OUT 00000006 C2POL 00000004 C2R 00000002 C2REN 00000004 C2RSEL 00000004 C2SYNC 00000000 CCP1CON 00000017 CCP1IE 00000002 CCP1IF 00000002 CCP1M0 00000000 CCP1M1 00000001 CCP1M2 00000002 CCP1M3 00000003 CCP1X 00000005 CCP1Y 00000004 CCP2CON 0000001D CCP2IE 00000000 CCP2IF 00000000 CCP2M0 00000000 CCP2M1 00000001 CCP2M2 00000002 CCP2M3 00000003 CCP2X 00000005 CCP2Y 00000004 CCPR1H 00000016 CCPR1L 00000015 CCPR2H 0000001C CCPR2L 0000001B CHS0 00000002 CHS1 00000003 CHS2 00000004 CHS3 00000005 CKE 00000006 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 186 SYMBOL TABLE LABEL VALUE CKP 00000004 CM1CON0 00000107 CM2CON0 00000108 CM2CON1 00000109 CREN 00000004 CSRC 00000007 D 00000005 DATA_ADDRESS 00000005 DC 00000001 DC1B0 00000004 DC1B1 00000005 DC2B0 00000004 DC2B1 00000005 DEBOUNCE 0x10 DEDICATED_BUTTON DEDICATED_BUTTON2 DISPLAY_1BIT_H D_A 00000005 ECCPAS 0000009C ECCPAS0 00000004 ECCPAS1 00000005 ECCPAS2 00000006 ECCPASE 00000007 EEADR 0000010D EEADRH 0000010F EECON1 0000018C EECON2 0000018D EEDAT 0000010C EEDATA 0000010C EEDATH 0000010E EEIE 00000004 EEIF 00000004 EEPGD 00000007 ENABLE_IR F 00000001 FERR 00000002 FLIPBYTE FSR 00000004 FVREN 00000000 GCEN 00000007 GIE 00000007 GO 00000001 GO_DONE 00000001 HTS 00000002 I2C_DATA 00000005 I2C_READ 00000002 I2C_START 00000003 I2C_STOP 00000004 INDF 00000000 INTCON 0000000B INTE 00000004 INTEDG 00000006 INTF 00000001 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 187 SYMBOL TABLE LABEL VALUE IOCB 00000096 IOCB0 00000000 IOCB1 00000001 IOCB2 00000002 IOCB3 00000003 IOCB4 00000004 IOCB5 00000005 IOCB6 00000006 IOCB7 00000007 IRBIT 2 IRCF0 00000004 IRCF1 00000005 IRCF2 00000006 IRP 00000007 IRPORT PORTB IR_Tester 00000567 IR_in 00000028 IR_in_good 00000030 IR_lhalf 0000002C LTS 00000001 Lcontinue 00000348 LedOut LedOutH LedOutInd LedOutIndP LedOutL Lstate0 00000247 Lstate0a 0000024F Lstate1 00000252 Lstate10 0000029A Lstate10a 000002A0 Lstate11 000002A6 Lstate12 000002AA Lstate12a 000002B0 Lstate13 000002B6 Lstate14 000002BA Lstate14a 000002C0 Lstate15 000002C6 Lstate16 000002CA Lstate16a 000002D0 Lstate17 000002D6 Lstate18 000002DA Lstate18a 000002E0 Lstate19 000002E6 Lstate1a 00000257 Lstate2 0000025A Lstate20 000002EA Lstate20a 000002F0 Lstate21 000002F6 Lstate22 000002FA Lstate22a 00000300 Lstate23 00000306 Lstate24 0000030A MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 188 SYMBOL TABLE LABEL VALUE Lstate24a 00000310 Lstate25 00000316 Lstate26 0000031A Lstate26a 00000320 Lstate27 00000326 Lstate28 0000032A Lstate28a 00000330 Lstate29 00000336 Lstate2a 0000025F Lstate3 00000262 Lstate30 0000033A Lstate30a 00000340 Lstate31 00000346 Lstate3a 00000267 Lstate4 0000026A Lstate4a 0000026F Lstate5 00000272 Lstate5a 00000277 Lstate6 0000027A Lstate6a 00000284 Lstate6b 00000282 Lstate7 00000286 Lstate8 0000028A Lstate8a 00000290 Lstate9 00000296 MC1OUT 00000007 MC2OUT 00000006 MSK 00000093 MasterTable 000005EE NOT_A 00000005 NOT_ADDRESS 00000005 NOT_BO 00000000 NOT_BOR 00000000 NOT_DONE 00000001 NOT_PD 00000003 NOT_POR 00000001 NOT_RBPU 00000007 NOT_RC8 00000006 NOT_T1SYNC 00000002 NOT_TO 00000004 NOT_TX8 00000006 NOT_W 00000002 NOT_WRITE 00000002 NUM_TAB 0000000E OERR 00000001 OPTION_REG 00000081 OSCCON 0000008F OSCTUNE 00000090 OSFIE 00000007 OSFIF 00000007 OSTS 00000003 P 00000004 P1M0 00000006 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 189 SYMBOL TABLE LABEL VALUE P1M1 00000007 PATTERN23 PATTERN27 PCL 00000002 PCLATH 0000000A PCON 0000008E PDC0 00000000 PDC1 00000001 PDC2 00000002 PDC3 00000003 PDC4 00000004 PDC5 00000005 PDC6 00000006 PEIE 00000006 PEN 00000002 PIE1 0000008C PIE2 0000008D PIR1 0000000C PIR2 0000000D PORTA 00000005 PORTB 00000006 PORTC 00000007 PORTE 00000009 PR2 00000092 PRSEN 00000007 PS0 00000000 PS1 00000001 PS2 00000002 PSA 00000003 PSSAC0 00000002 PSSAC1 00000003 PSSBD0 00000000 PSSBD1 00000001 PSTRCON 0000009D PULSR 00000002 PULSS 00000003 PWM1CON 0000009B R 00000002 RANDOM RBIE 00000003 RBIF 00000000 RC8_9 00000006 RC9 00000006 RCD8 00000000 RCEN 00000003 RCIDL 00000006 RCIE 00000005 RCIF 00000005 RCREG 0000001A RCSTA 00000018 RD 00000000 READ_WRITE 00000002 RP0 00000005 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 190 SYMBOL TABLE LABEL VALUE RP1 00000006 RSEN 00000001 RX9 00000006 RX9D 00000000 R_W 00000002 S 00000003 SBOREN 00000004 SCKP 00000004 SCS 00000000 SEN 00000000 SENDB 00000003 SINGLE SMP 00000007 SPBRG 00000099 SPBRGH 0000009A SPEN 00000007 SR0 00000006 SR1 00000007 SRCON 00000185 SREN 00000005 SSPADD 00000093 SSPBUF 00000013 SSPCON 00000014 SSPCON2 00000091 SSPEN 00000005 SSPIE 00000003 SSPIF 00000003 SSPM0 00000000 SSPM1 00000001 SSPM2 00000002 SSPM3 00000003 SSPMSK 00000093 SSPOV 00000006 SSPSTAT 00000094 STATUS 00000003 STRA 00000000 STRB 00000001 STRC 00000002 STRD 00000003 STRSYNC 00000004 SWDTEN 00000000 SYNC 00000004 T0CS 00000005 T0IE 00000005 T0IF 00000002 T0SE 00000004 T1CKPS0 00000004 T1CKPS1 00000005 T1CON 00000010 T1GIV 00000007 T1GSS 00000001 T1INSYNC 00000002 T1OSCEN 00000003 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 191 SYMBOL TABLE LABEL VALUE T1SYNC 00000002 T2CKPS0 00000000 T2CKPS1 00000001 T2CON 00000012 TICK_VALUE D'35' TMR0 00000001 TMR0IE 00000005 TMR0IF 00000002 TMR1CS 00000001 TMR1GE 00000006 TMR1H 0000000F TMR1IE 00000000 TMR1IF 00000000 TMR1L 0000000E TMR1ON 00000000 TMR2 00000011 TMR2IE 00000001 TMR2IF 00000001 TMR2ON 00000002 TOUTPS0 00000003 TOUTPS1 00000004 TOUTPS2 00000005 TOUTPS3 00000006 TRISA 00000085 TRISB 00000086 TRISC 00000087 TRISE 00000089 TRMT 00000001 TUN0 00000000 TUN1 00000001 TUN2 00000002 TUN3 00000003 TUN4 00000004 TX8_9 00000006 TX9 00000006 TX9D 00000000 TXD8 00000000 TXEN 00000005 TXIE 00000004 TXIF 00000004 TXREG 00000019 TXSTA 00000098 UA 00000001 ULPWUE 00000005 ULPWUIE 00000002 ULPWUIF 00000002 VCFG0 00000004 VCFG1 00000005 VR0 00000000 VR1 00000001 VR2 00000002 VR3 00000003 VRCON 00000097 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 192 SYMBOL TABLE LABEL VALUE VREN 00000007 VROE 00000006 VRR 00000005 VRSS 00000004 W 00000000 WCOL 00000007 WDTCON 00000105 WDTPS0 00000001 WDTPS1 00000002 WDTPS2 00000003 WDTPS3 00000004 WPUB 00000095 WPUB0 00000000 WPUB1 00000001 WPUB2 00000002 WPUB3 00000003 WPUB4 00000004 WPUB5 00000005 WPUB6 00000006 WPUB7 00000007 WR 00000001 WREN 00000002 WRERR 00000003 WUE 00000001 Z 00000002 _BOR21V 00003EFF _BOR40V 00003FFF _BOR_NSLEEP 00003EFF _BOR_OFF 00003CFF _BOR_ON 00003FFF _BOR_SBODEN 00003DFF _CONFIG1 00002007 _CONFIG2 00002008 _CPD_OFF 00003FFF _CPD_ON 00003F7F _CP_OFF 00003FFF _CP_ON 00003FBF _DEBUG_OFF 00003FFF _DEBUG_ON 00001FFF _EC_OSC 00003FFB _EXTRC 00003FFF _EXTRCIO 00003FFE _EXTRC_OSC_CLKOUT 00003FFF _EXTRC_OSC_NOCLKOUT 00003FFE _FCMEN_OFF 000037FF _FCMEN_ON 00003FFF _HS_OSC 00003FFA _IESO_OFF 00003BFF _IESO_ON 00003FFF _INTOSC 00003FFD _INTOSCIO 00003FFC _INTRC_OSC_CLKOUT 00003FFD _INTRC_OSC_NOCLKOUT 00003FFC MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 193 SYMBOL TABLE LABEL VALUE _LP_OSC 00003FF8 _LVP_OFF 00002FFF _LVP_ON 00003FFF _MCLRE_OFF 00003FDF _MCLRE_ON 00003FFF _PWRTE_OFF 00003FFF _PWRTE_ON 00003FEF _WDT_OFF 00003FF7 _WDT_ON 00003FFF _WRT_1FOURTH 00003BFF _WRT_256 00003DFF _WRT_HALF 000039FF _WRT_OFF 00003FFF _XT_OSC 00003FF9 __16F886 00000001 address 0000002A b2l_in_green 00000042 b2l_in_red 00000041 b2l_lcount 00000040 b2l_loop 000003A6 b2l_out_hi 0000003E b2l_out_low 0000003F bin2led 000003A2 blinkie_check 00000479 butcount 00000031 button 0000002D button_check 00000495 command 00000029 count1 00000022 count2 00000023 dcycle 00000021 delay 000003BB delay_count 00000046 delay_loop 000003BC delay_loop2 00000366 demo_mode 00000057 demo_store 00002100 display_1bit 000004EB display_cycle0 00000069 display_cycle1 000000AA display_cycle2 000000EB display_cycle3 0000012C display_cycle4 0000016D display_cycle5 000001AE display_pattern_id 000003E9 drive_main_leds 0000003E dupvar end_pattern endpat0 0000094A endpat1 0000095F endpat10 00000B8A endpat11 00000C29 endpat12 00000D16 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 194 SYMBOL TABLE LABEL VALUE endpat13 00000D61 endpat14 00000E6C endpat2 000009F2 endpat3 00000A0D endpat4 00000AA0 endpat5 00000AB5 endpat6 00000AEE endpat7 00000B03 endpat8 00000B18 endpat9 00000B3F entry exit_int 0000005F exit_tx 0000005E fbyte_loop 000003B4 fcount 00000025 flip_in 00000043 flip_lcount 00000045 flip_out 00000044 flipbyte 000003B0 fsr_save 0000007D gen_random 000004CE get_next_pattern_entry 00000411 get_next_tx_bit 0000035B get_state_tbl_hi_address 000001EF get_state_tbl_low_address 000001F5 glabel1 00000419 go_state_table 00000203 greturn 0000042B gskip 0000042E here 0000000B ibutton 00000570 iloop1 00000583 in0 0000004F in1 00000050 in2 00000051 in3 00000052 in4 00000053 in5 00000054 input 00000077 instate 00000026 itop 00000567 jump_address 000005E8 leng 0000002C loop_ddf 000005C5 main 0000059F make_mtab make_state_jump_table max_instate 00000027 mem 0000005D mem2 00000076 mem3 000000D0 mult_nop next_pattern 000003C0 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 195 SYMBOL TABLE LABEL VALUE nextf 00000020 offset_hi 0000005B offset_low 0000005C out0 00000039 out1 0000003A out2 0000003B out3 0000003C out_address 00000035 out_command 00000036 out_pattern 00000038 out_toggle 00000037 p27_led_down 000008B3 p27_led_up 000008AF p27_loop 0000003F p2count 0000005A p2loop 000004E6 past_exit 000003D2 past_pattern 000003CA pattern 0000004D pattern_driver 0000046C pattern_return 000004BB patternc 0000000F pclath_save 0000004B pclath_temp 0000007C pindex 00000079 pindex1 00000078 pindex2 0000002F ploop0 00000477 ploop1a 0000049A ploop1down 000004A7 ploop1up 000004A3 ploop2 000004AB ploop2a 000004C6 ploop3 000004CB psize 00000058 pspeed 00000056 ptop 0000046C qcount 00000034 qdelay 00000365 random 00000059 read_button_in 00000349 read_demo_mode 0000045A read_eeprom 00000446 read_ir_in 00000350 remote_check 00000480 repeat 00000024 repeat_loop 00000030 rf_command_out 00000369 scount 0000003D send_nothing 0000003C send_on_off 0000057F send_one 00000022 send_zero 0000003A MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 196 SYMBOL TABLE LABEL VALUE set_exit 000003DF set_loop 000003D8 set_max_state 00000354 set_pattern 000003D5 setbank0 setbank1 setup_pattern_table 000003FC skip1 0000001C smi_l1 0000035A speed 00000055 sreturn 00000410 start_pattern state2_tbl state_jump_table 00000207 state_tbl status_temp 0000007E storedata strobe_count 00000047 strobe_delay 000003E2 strobe_delay1 000003E3 strobe_delay2 000003E4 t27_loop2 00000813 table0 000008B7 table1 0000094A table10 00000B3F table11 00000B8A table12 00000C29 table13 00000D16 table14 00000D61 table2 0000095F table3 000009F2 table4 00000A0D table5 00000AA0 table6 00000AB5 table7 00000AEE table8 00000B03 table9 00000B18 table_lookup 000005E1 table_lookup2 000001FC table_type_23 000004D8 table_type_27 00000800 tbl2_hi 00000032 tbl2_low 00000033 tbl_hi 00000048 tbl_low 00000049 tbltype 0000004E tbltype1 tdemo_cont 00000464 tdemo_on 00000463 temp2 0000004C temp_high 0000004A toggle 0000002B toggle_demo 0000045E MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 197 SYMBOL TABLE LABEL VALUE tx_1 0000002E var var_all_bank var_bank2 w_temp 0000007F write_eeprom 0000042F MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0000 : X---XXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0040 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0080 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 00C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0100 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0140 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0180 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 01C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0200 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0240 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0280 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 02C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0300 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0340 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0380 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 03C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0400 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0440 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0480 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 04C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0500 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0540 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0580 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 05C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0600 : XXXXXXXXXXXX---- ---------------- ---------------- ---------------- 0800 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0840 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0880 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 08C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0900 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0940 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0980 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 09C0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0A00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0A40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0A80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:35:58 PAGE 198 MEMORY USAGE MAP ('X' = Used, '-' = Unused) 0AC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0B00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0B40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0B80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0BC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0C00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0C40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0C80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0CC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0D00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0D40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0D80 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0DC0 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0E00 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX 0E40 : XXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXX XXXXXXXXXXXX---- ---------------- 2000 : -------XX------- ---------------- ---------------- ---------------- 2100 : X--------------- ---------------- ---------------- ---------------- All other memory blocks unused. Program Memory Words Used: 3189 Program Memory Words Free: 5003 Errors : 0 Warnings : 0 reported, 0 suppressed Messages : 9 reported, 31 suppressed