MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 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:18:48 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:18:48 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:18:48 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:18:48 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:18:48 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:18:48 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 00001 LIST 00002 ; P16F886.INC Standard Header File, Version 1.00 Microchip Technology, Inc. MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 8 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00614 LIST 00368 LIST P=PIC16F886 00000012 00369 NUM_TAB equ d'18' ;highest pattern table number 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 9 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00420 #define SINGLE 00421 #define PATTERN23 00422 #define PATTERN27 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 00432 LIST P=PIC16F886 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:18:48 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:18:48 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:18:48 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:18:48 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:18:48 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 2EBC 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:18:48 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:18:48 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:18:48 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 0012 3010 00814 movlw 0x10 00815 #else 00816 #ifdef C12 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 2836 00848 goto send_nothing ; F25 00849 0020 1C2E 00850 btfss tx_1,0 ; F26 0021 2834 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:18:48 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 00867 movlw b'11011011' ;set B2 & B5 led to output 00868 movwf TRISB 00869 setbank0 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 0022 0187 00897 clrf IRPORT 0023 1487 00898 bsf IRPORT,IRBIT ; A01 00899 0024 2314 00900 call get_next_tx_bit ; 2 + 11 cycles A04-A16 00901 ; mult_nop d'9' ; A17-A25 0025 3001 00902 movlw 01h 0026 231E 00903 call qdelay ; 6 + (1 * 3) = 9 ; A17-A25 0027 0000 00904 nop 00905 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 19 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0028 301E 00906 movlw 0x1E ; C26 (23) 0029 00A4 00907 movwf repeat ; C27 002A 00908 repeat_loop 002A 1087 00909 bcf IRPORT,IRBIT ; D01 00910 00911 ; mult_nop d'26' ; D02-D27 002B 3007 00912 movlw 07h 002C 231E 00913 call qdelay ; 6 + (7 * 3) = 27 ; D02-D27 00914 002D 1487 00915 bsf IRPORT,IRBIT ; E01 (27) 00916 00917 ; mult_nop d'23' ; E02-E24 002E 3006 00918 movlw 06h ; 6+(6 * 3) = 22 ; E02-E24 002F 231E 00919 call qdelay 00920 0030 0BA4 00921 decfsz repeat,f ; E25 (24) 0031 282A 00922 goto repeat_loop ; E26/E27 00923 0032 1087 00924 bcf IRPORT,IRBIT 0033 287E 00925 goto exit_tx 00926 00927 ;-------------------------------------------------------------------------------------- 0034 00928 send_zero ; we are going to release all the CPU time to the main line for display. 00929 ;-------------------------------------------------------------------------------------- 00930 0034 2314 00931 call get_next_tx_bit ; 2 + 11 cycles A04-A16 0035 2838 00932 goto drive_main_leds 00933 00934 ;-------------------------------------------------------------------------------------- 0036 00935 send_nothing ; Drive the main LEDs. 00936 ;-------------------------------------------------------------------------------------- 00937 0036 2309 00938 call read_ir_in 00939 #ifdef DEDICATED_BUTTON 0037 2305 00940 call read_button_in 00941 #endif 00942 ; goto drive_main_leds 00943 00944 ;-------------------------------------------------------------------------------------- 0038 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 00950 #ifndef SRGB 00951 #ifndef M3X3 00952 #ifndef M8X16 00953 #ifndef C12 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 20 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 01003 var A1_A0_reg 01004 var A1_A2_reg 01005 var A1_A4_reg 01006 var A1_A5_reg MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 21 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 01056 var_bank2 C2_A0_reg 01057 var_bank2 C2_A1_reg 01058 var_bank2 C2_A2_reg 01059 var_bank2 C2_C0_reg MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 22 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 23 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 000000B0 01124 Led_G00 equ 0x0b0 000000B1 01125 Led_G01 equ 0x0b1 000000B2 01126 Led_G02 equ 0x0b2 000000B3 01127 Led_G03 equ 0x0b3 000000B4 01128 Led_G04 equ 0x0b4 000000B5 01129 Led_G05 equ 0x0b5 000000B6 01130 Led_G06 equ 0x0b6 000000B7 01131 Led_G07 equ 0x0b7 01132 000000B8 01133 Led_G10 equ 0x0b8 000000B9 01134 Led_G11 equ 0x0b9 000000BA 01135 Led_G12 equ 0x0ba 000000BB 01136 Led_G13 equ 0x0bb 000000BC 01137 Led_G14 equ 0x0bc 000000BD 01138 Led_G15 equ 0x0bd 000000BE 01139 Led_G16 equ 0x0be 000000BF 01140 Led_G17 equ 0x0bf 01141 000000C0 01142 Led_G20 equ 0x0c0 000000C1 01143 Led_G21 equ 0x0c1 000000C2 01144 Led_G22 equ 0x0c2 000000C3 01145 Led_G23 equ 0x0c3 000000C4 01146 Led_G24 equ 0x0c4 000000C5 01147 Led_G25 equ 0x0c5 000000C6 01148 Led_G26 equ 0x0c6 000000C7 01149 Led_G27 equ 0x0c7 01150 000000C8 01151 Led_G30 equ 0x0c8 000000C9 01152 Led_G31 equ 0x0c9 000000CA 01153 Led_G32 equ 0x0ca 000000CB 01154 Led_G33 equ 0x0cb 000000CC 01155 Led_G34 equ 0x0cc 000000CD 01156 Led_G35 equ 0x0cd 000000CE 01157 Led_G36 equ 0x0ce 000000CF 01158 Led_G37 equ 0x0cf 01159 01160 ; Bank 2 00000110 01161 Led_G40 equ 0x110 00000111 01162 Led_G41 equ 0x111 00000112 01163 Led_G42 equ 0x112 00000113 01164 Led_G43 equ 0x113 00000114 01165 Led_G44 equ 0x114 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 24 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000115 01166 Led_G45 equ 0x115 00000116 01167 Led_G46 equ 0x116 00000117 01168 Led_G47 equ 0x117 01169 00000118 01170 Led_G50 equ 0x118 00000119 01171 Led_G51 equ 0x119 0000011A 01172 Led_G52 equ 0x11a 0000011B 01173 Led_G53 equ 0x11b 0000011C 01174 Led_G54 equ 0x11c 0000011D 01175 Led_G55 equ 0x11d 0000011E 01176 Led_G56 equ 0x11e 0000011F 01177 Led_G57 equ 0x11f 01178 00000120 01179 Led_G60 equ 0x120 00000121 01180 Led_G61 equ 0x121 00000122 01181 Led_G62 equ 0x122 00000123 01182 Led_G63 equ 0x123 00000124 01183 Led_G64 equ 0x124 00000125 01184 Led_G65 equ 0x125 00000126 01185 Led_G66 equ 0x126 00000127 01186 Led_G67 equ 0x127 01187 00000128 01188 Led_G70 equ 0x128 00000129 01189 Led_G71 equ 0x129 0000012A 01190 Led_G72 equ 0x12a 0000012B 01191 Led_G73 equ 0x12b 0000012C 01192 Led_G74 equ 0x12c 0000012D 01193 Led_G75 equ 0x12d 0000012E 01194 Led_G76 equ 0x12e 0000012F 01195 Led_G77 equ 0x12f 01196 00000130 01197 Led_G80 equ 0x130 00000131 01198 Led_G81 equ 0x131 00000132 01199 Led_G82 equ 0x132 00000133 01200 Led_G83 equ 0x133 00000134 01201 Led_G84 equ 0x134 00000135 01202 Led_G85 equ 0x135 00000136 01203 Led_G86 equ 0x136 00000137 01204 Led_G87 equ 0x137 01205 00000138 01206 Led_G90 equ 0x138 00000139 01207 Led_G91 equ 0x139 0000013A 01208 Led_G92 equ 0x13a 0000013B 01209 Led_G93 equ 0x13b 0000013C 01210 Led_G94 equ 0x13c 0000013D 01211 Led_G95 equ 0x13d 0000013E 01212 Led_G96 equ 0x13e 0000013F 01213 Led_G97 equ 0x13f 01214 00000140 01215 Led_GA0 equ 0x140 00000141 01216 Led_GA1 equ 0x141 00000142 01217 Led_GA2 equ 0x142 00000143 01218 Led_GA3 equ 0x143 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 25 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000144 01219 Led_GA4 equ 0x144 00000145 01220 Led_GA5 equ 0x145 00000146 01221 Led_GA6 equ 0x146 00000147 01222 Led_GA7 equ 0x147 01223 00000148 01224 Led_GB0 equ 0x148 00000149 01225 Led_GB1 equ 0x149 0000014A 01226 Led_GB2 equ 0x14a 0000014B 01227 Led_GB3 equ 0x14b 0000014C 01228 Led_GB4 equ 0x14c 0000014D 01229 Led_GB5 equ 0x14d 0000014E 01230 Led_GB6 equ 0x14e 0000014F 01231 Led_GB7 equ 0x14f 01232 00000150 01233 Led_GC0 equ 0x150 00000151 01234 Led_GC1 equ 0x151 00000152 01235 Led_GC2 equ 0x152 00000153 01236 Led_GC3 equ 0x153 00000154 01237 Led_GC4 equ 0x154 00000155 01238 Led_GC5 equ 0x155 00000156 01239 Led_GC6 equ 0x156 00000157 01240 Led_GC7 equ 0x157 01241 00000158 01242 Led_GD0 equ 0x158 00000159 01243 Led_GD1 equ 0x159 0000015A 01244 Led_GD2 equ 0x15a 0000015B 01245 Led_GD3 equ 0x15b 0000015C 01246 Led_GD4 equ 0x15c 0000015D 01247 Led_GD5 equ 0x15d 0000015E 01248 Led_GD6 equ 0x15e 0000015F 01249 Led_GD7 equ 0x15f 01250 00000160 01251 Led_GE0 equ 0x160 00000161 01252 Led_GE1 equ 0x161 00000162 01253 Led_GE2 equ 0x162 00000163 01254 Led_GE3 equ 0x163 00000164 01255 Led_GE4 equ 0x164 00000165 01256 Led_GE5 equ 0x165 00000166 01257 Led_GE6 equ 0x166 00000167 01258 Led_GE7 equ 0x167 01259 00000168 01260 Led_GF0 equ 0x168 00000169 01261 Led_GF1 equ 0x169 0000016A 01262 Led_GF2 equ 0x16a 0000016B 01263 Led_GF3 equ 0x16b 0000016C 01264 Led_GF4 equ 0x16c 0000016D 01265 Led_GF5 equ 0x16d 0000016E 01266 Led_GF6 equ 0x16e 0000016F 01267 Led_GF7 equ 0x16f 01268 01269 ; Bank 1 000000D0 01270 Led_R00 equ 0x0d0 000000D1 01271 Led_R01 equ 0x0d1 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 26 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000000D2 01272 Led_R02 equ 0x0d2 000000D3 01273 Led_R03 equ 0x0d3 000000D4 01274 Led_R04 equ 0x0d4 000000D5 01275 Led_R05 equ 0x0d5 000000D6 01276 Led_R06 equ 0x0d6 000000D7 01277 Led_R07 equ 0x0d7 01278 000000D8 01279 Led_R10 equ 0x0d8 000000D9 01280 Led_R11 equ 0x0d9 000000DA 01281 Led_R12 equ 0x0da 000000DB 01282 Led_R13 equ 0x0db 000000DC 01283 Led_R14 equ 0x0dc 000000DD 01284 Led_R15 equ 0x0dd 000000DE 01285 Led_R16 equ 0x0de 000000DF 01286 Led_R17 equ 0x0df 01287 000000E0 01288 Led_R20 equ 0x0e0 000000E1 01289 Led_R21 equ 0x0e1 000000E2 01290 Led_R22 equ 0x0e2 000000E3 01291 Led_R23 equ 0x0e3 000000E4 01292 Led_R24 equ 0x0e4 000000E5 01293 Led_R25 equ 0x0e5 000000E6 01294 Led_R26 equ 0x0e6 000000E7 01295 Led_R27 equ 0x0e7 01296 000000E8 01297 Led_R30 equ 0x0e8 000000E9 01298 Led_R31 equ 0x0e9 000000EA 01299 Led_R32 equ 0x0ea 000000EB 01300 Led_R33 equ 0x0eb 000000EC 01301 Led_R34 equ 0x0ec 000000ED 01302 Led_R35 equ 0x0ed 000000EE 01303 Led_R36 equ 0x0ee 000000EF 01304 Led_R37 equ 0x0ef 01305 01306 ; bank 3 00000190 01307 Led_R40 equ 0x190 00000191 01308 Led_R41 equ 0x191 00000192 01309 Led_R42 equ 0x192 00000193 01310 Led_R43 equ 0x193 00000194 01311 Led_R44 equ 0x194 00000195 01312 Led_R45 equ 0x195 00000196 01313 Led_R46 equ 0x196 00000197 01314 Led_R47 equ 0x197 01315 00000198 01316 Led_R50 equ 0x198 00000199 01317 Led_R51 equ 0x199 0000019A 01318 Led_R52 equ 0x19a 0000019B 01319 Led_R53 equ 0x19b 0000019C 01320 Led_R54 equ 0x19c 0000019D 01321 Led_R55 equ 0x19d 0000019E 01322 Led_R56 equ 0x19e 0000019F 01323 Led_R57 equ 0x19f 01324 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 27 LOC OBJECT CODE LINE SOURCE TEXT VALUE 000001A0 01325 Led_R60 equ 0x1a0 000001A1 01326 Led_R61 equ 0x1a1 000001A2 01327 Led_R62 equ 0x1a2 000001A3 01328 Led_R63 equ 0x1a3 000001A4 01329 Led_R64 equ 0x1a4 000001A5 01330 Led_R65 equ 0x1a5 000001A6 01331 Led_R66 equ 0x1a6 000001A7 01332 Led_R67 equ 0x1a7 01333 000001A8 01334 Led_R70 equ 0x1a8 000001A9 01335 Led_R71 equ 0x1a9 000001AA 01336 Led_R72 equ 0x1aa 000001AB 01337 Led_R73 equ 0x1ab 000001AC 01338 Led_R74 equ 0x1ac 000001AD 01339 Led_R75 equ 0x1ad 000001AE 01340 Led_R76 equ 0x1ae 000001AF 01341 Led_R77 equ 0x1af 01342 000001B0 01343 Led_R80 equ 0x1b0 000001B1 01344 Led_R81 equ 0x1b1 000001B2 01345 Led_R82 equ 0x1b2 000001B3 01346 Led_R83 equ 0x1b3 000001B4 01347 Led_R84 equ 0x1b4 000001B5 01348 Led_R85 equ 0x1b5 000001B6 01349 Led_R86 equ 0x1b6 000001B7 01350 Led_R87 equ 0x1b7 01351 000001B8 01352 Led_R90 equ 0x1b8 000001B9 01353 Led_R91 equ 0x1b9 000001BA 01354 Led_R92 equ 0x1ba 000001BB 01355 Led_R93 equ 0x1bb 000001BC 01356 Led_R94 equ 0x1bc 000001BD 01357 Led_R95 equ 0x1bd 000001BE 01358 Led_R96 equ 0x1be 000001BF 01359 Led_R97 equ 0x1bf 01360 000001C0 01361 Led_RA0 equ 0x1c0 000001C1 01362 Led_RA1 equ 0x1c1 000001C2 01363 Led_RA2 equ 0x1c2 000001C3 01364 Led_RA3 equ 0x1c3 000001C4 01365 Led_RA4 equ 0x1c4 000001C5 01366 Led_RA5 equ 0x1c5 000001C6 01367 Led_RA6 equ 0x1c6 000001C7 01368 Led_RA7 equ 0x1c7 01369 000001C8 01370 Led_RB0 equ 0x1c8 000001C9 01371 Led_RB1 equ 0x1c9 000001CA 01372 Led_RB2 equ 0x1ca 000001CB 01373 Led_RB3 equ 0x1cb 000001CC 01374 Led_RB4 equ 0x1cc 000001CD 01375 Led_RB5 equ 0x1cd 000001CE 01376 Led_RB6 equ 0x1ce 000001CF 01377 Led_RB7 equ 0x1cf MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 28 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01378 000001D0 01379 Led_RC0 equ 0x1d0 000001D1 01380 Led_RC1 equ 0x1d1 000001D2 01381 Led_RC2 equ 0x1d2 000001D3 01382 Led_RC3 equ 0x1d3 000001D4 01383 Led_RC4 equ 0x1d4 000001D5 01384 Led_RC5 equ 0x1d5 000001D6 01385 Led_RC6 equ 0x1d6 000001D7 01386 Led_RC7 equ 0x1d7 01387 000001D8 01388 Led_RD0 equ 0x1d8 000001D9 01389 Led_RD1 equ 0x1d9 000001DA 01390 Led_RD2 equ 0x1da 000001DB 01391 Led_RD3 equ 0x1db 000001DC 01392 Led_RD4 equ 0x1dc 000001DD 01393 Led_RD5 equ 0x1dd 000001DE 01394 Led_RD6 equ 0x1de 000001DF 01395 Led_RD7 equ 0x1df 01396 000001E0 01397 Led_RE0 equ 0x1e0 000001E1 01398 Led_RE1 equ 0x1e1 000001E2 01399 Led_RE2 equ 0x1e2 000001E3 01400 Led_RE3 equ 0x1e3 000001E4 01401 Led_RE4 equ 0x1e4 000001E5 01402 Led_RE5 equ 0x1e5 000001E6 01403 Led_RE6 equ 0x1e6 000001E7 01404 Led_RE7 equ 0x1e7 01405 000001E8 01406 Led_RF0 equ 0x1e8 000001E9 01407 Led_RF1 equ 0x1e9 000001EA 01408 Led_RF2 equ 0x1ea 000001EB 01409 Led_RF3 equ 0x1eb 000001EC 01410 Led_RF4 equ 0x1ec 000001ED 01411 Led_RF5 equ 0x1ed 000001EE 01412 Led_RF6 equ 0x1ee 000001EF 01413 Led_RF7 equ 0x1ef 01414 #endif 01415 01416 #ifdef C12 01417 var_bank2 A0_A1_reg 01418 var_bank2 A0_A2_reg 01419 ; var_bank2 A0_A3_reg 01420 var_bank2 A0_A4_reg 01421 var_bank2 A0_A5_reg 01422 01423 var_bank2 A1_A0_reg 01424 var_bank2 A1_A2_reg 01425 var_bank2 A1_A3_reg 01426 ; var_bank2 A1_A4_reg 01427 var_bank2 A1_A5_reg 01428 01429 var_bank2 A2_A0_reg 01430 var_bank2 A2_A1_reg MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 29 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01431 var_bank2 A2_A3_reg 01432 var_bank2 A2_A4_reg 01433 ; var_bank2 A2_A5_reg 01434 01435 ; var_bank2 A3_A0_reg 01436 var_bank2 A3_A1_reg 01437 var_bank2 A3_A2_reg 01438 var_bank2 A3_A4_reg 01439 var_bank2 A3_A5_reg 01440 01441 var_bank2 A4_A0_reg 01442 ; var_bank2 A4_A1_reg 01443 var_bank2 A4_A2_reg 01444 var_bank2 A4_A3_reg 01445 var_bank2 A4_A5_reg 01446 01447 var_bank2 A5_A0_reg 01448 var_bank2 A5_A1_reg 01449 ; var_bank2 A5_A2_reg 01450 var_bank2 A5_A3_reg 01451 var_bank2 A5_A4_reg 01452 01453 var_bank2 B7_B6_reg 01454 var_bank2 B7_B5_reg 01455 ; var_bank2 B7_B4_reg 01456 var_bank2 B7_B3_reg 01457 var_bank2 B7_B2_reg 01458 01459 var_bank2 B6_B7_reg 01460 var_bank2 B6_B5_reg 01461 var_bank2 B6_B4_reg 01462 ; var_bank2 B6_B3_reg 01463 var_bank2 B6_B2_reg 01464 01465 var_bank2 B5_B7_reg 01466 var_bank2 B5_B6_reg 01467 var_bank2 B5_B4_reg 01468 var_bank2 B5_B3_reg 01469 ; var_bank2 B5_B2_reg 01470 01471 ; var_bank2 B4_B7_reg 01472 var_bank2 B4_B6_reg 01473 var_bank2 B4_B5_reg 01474 var_bank2 B4_B3_reg 01475 var_bank2 B4_B2_reg 01476 01477 var_bank2 B3_B7_reg 01478 ; var_bank2 B3_B6_reg 01479 var_bank2 B3_B5_reg 01480 var_bank2 B3_B4_reg 01481 var_bank2 B3_B2_reg 01482 01483 var_bank2 B2_B7_reg MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 30 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01484 var_bank2 B2_B6_reg 01485 ; var_bank2 B2_B5_reg 01486 var_bank2 B2_B4_reg 01487 var_bank2 B2_B3_reg 01488 #endif 01489 01490 #ifndef M8X16 01491 var_all_bank Ax_dir 01492 #endif 01493 #ifdef C19 01494 var_all_bank Cx_dir 01495 #endif 01496 #ifdef SRGB 01497 var_all_bank Cx_dir 01498 #endif 01499 #ifdef C12 01500 var_all_bank Bx_dir 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 0038 300A 01527 movlw 0x0a 01528 #else 01529 #ifdef C12 01530 movlw 0x14 01531 #else 01532 error "unknown board delaytimer" 01533 #endif 01534 #endif 01535 #endif MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 31 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01536 #endif 01537 #endif 01538 #endif 01539 #endif 01540 #endif 01541 01542 01543 0039 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 01557 clrf Ax_dir ;set LED matrix pins to input (tri-stated) 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 003A 21AB 01568 call get_state_tbl_hi_address 003B 21B1 01569 call get_state_tbl_low_address 003C 21BF 01570 call go_state_table 003D 230D 01571 call set_max_state 01572 01573 ; turn off the LEDs DDF 003E 0185 01574 clrf PORTA 01575 ; clrf PORTB 01576 003F 0821 01577 movf dcycle,w ; testing for 0 0040 1903 01578 btfsc STATUS,Z 0041 2089 01579 call display_cycle0 01580 0042 3001 01581 movlw 0x01 ; testing for 1 0043 0221 01582 subwf dcycle,w 0044 1903 01583 btfsc STATUS,Z 0045 2096 01584 call display_cycle1 01585 0046 3002 01586 movlw 0x02 ; testing for 2 0047 0221 01587 subwf dcycle,w 0048 1903 01588 btfsc STATUS,Z MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 32 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0049 20A3 01589 call display_cycle2 01590 004A 3003 01591 movlw 0x03 ; testing for 3 004B 0221 01592 subwf dcycle,w 004C 1903 01593 btfsc STATUS,Z 004D 20B0 01594 call display_cycle3 01595 01596 #ifndef BI6 01597 #ifndef RGB4 004E 3004 01598 movlw 0x04 ; testing for 4 004F 0221 01599 subwf dcycle,w 0050 1903 01600 btfsc STATUS,Z 0051 20BD 01601 call display_cycle4 01602 01603 #ifndef S19 01604 #ifndef M3X3 0052 3005 01605 movlw 0x05 ; testing for 5 0053 0221 01606 subwf dcycle,w 0054 1903 01607 btfsc STATUS,Z 0055 20CA 01608 call display_cycle5 01609 01610 #ifndef C12 0056 3006 01611 movlw 0x06 ; testing for 6 0057 0221 01612 subwf dcycle,w 0058 1903 01613 btfsc STATUS,Z 0059 20D7 01614 call display_cycle6 01615 01616 #ifndef C19 01617 #ifndef SRGB 005A 3007 01618 movlw 0x07 ; testing for 7 005B 0221 01619 subwf dcycle,w 005C 1903 01620 btfsc STATUS,Z 005D 20E4 01621 call display_cycle7 01622 005E 3008 01623 movlw 0x08 ; testing for 8 005F 0221 01624 subwf dcycle,w 0060 1903 01625 btfsc STATUS,Z 0061 20F1 01626 call display_cycle8 01627 0062 3009 01628 movlw 0x09 ; testing for 9 0063 0221 01629 subwf dcycle,w 0064 1903 01630 btfsc STATUS,Z 0065 20FE 01631 call display_cycle9 01632 0066 300A 01633 movlw 0x0a ; testing for 10 0067 0221 01634 subwf dcycle,w 0068 1903 01635 btfsc STATUS,Z 0069 210B 01636 call display_cycle10 01637 006A 300B 01638 movlw 0x0b ; testing for 11 006B 0221 01639 subwf dcycle,w 006C 1903 01640 btfsc STATUS,Z 006D 2118 01641 call display_cycle11 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 33 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01642 006E 300C 01643 movlw 0x0c ; testing for 12 006F 0221 01644 subwf dcycle,w 0070 1903 01645 btfsc STATUS,Z 0071 2125 01646 call display_cycle12 01647 0072 300D 01648 movlw 0x0d ; testing for 13 0073 0221 01649 subwf dcycle,w 0074 1903 01650 btfsc STATUS,Z 0075 2132 01651 call display_cycle13 01652 0076 300E 01653 movlw 0x0e ; testing for 14 0077 0221 01654 subwf dcycle,w 0078 1903 01655 btfsc STATUS,Z 0079 213F 01656 call display_cycle14 01657 007A 300F 01658 movlw 0x0f ; testing for 15 007B 0221 01659 subwf dcycle,w 007C 1903 01660 btfsc STATUS,Z 007D 214C 01661 call display_cycle15 01662 #endif 01663 #endif 01664 #endif 01665 #endif 01666 #endif 01667 #endif 01668 #endif 01669 01670 ;-------------------------------------------------------------------------------------- 007E 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 007E 110B 01691 bcf INTCON,T0IF 01692 01693 ; restore state, return form interupt 01694 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 34 LOC OBJECT CODE LINE SOURCE TEXT VALUE 007F 01695 exit_int 007F 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 0080 087D 01703 movf fsr_save,w 0081 0084 01704 movwf FSR 0082 087C 01705 movf pclath_temp,w ; retrieve copy of PCLATH register 0083 008A 01706 movwf PCLATH ; restore pre-isr PCLATH register contents 0084 087E 01707 movf status_temp,w ; retrieve copy of STATUS register 0085 0083 01708 movwf STATUS ; restore pre-isr STATUS register contents 0086 0EFF 01709 swapf w_temp,f 0087 0E7F 01710 swapf w_temp,w ; restore pre-isr W register content 01711 #endif 0088 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 00001 00002 ;-------------------------------------------------------------------------------------- 0089 00003 display_cycle0 00004 ;-------------------------------------------------------------------------------------- 00005 00006 ; C7,C6,C5,C0 = 16 bit column select 0089 3000 00007 MOVLW b'00000000' 008A 0087 00008 MOVWF PORTC 00009 008B 00010 display_cycle0l MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 35 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00011 00012 ; B0-7, A0-7 is row data 00013 008B 30B0 00014 movlw (Led_G00 & 0xff) 008C 0084 00015 movwf FSR 008D 1383 00016 bcf STATUS,IRP 00017 008E 2182 00018 call common_strobe_B 00019 008F 3030 00020 movlw (Led_G80 & 0xff) 0090 0084 00021 movwf FSR 0091 1783 00022 bsf STATUS,IRP 00023 0092 2159 00024 call common_strobe_A 00025 0093 0BA5 00026 decfsz fcount,f 0094 288B 00027 goto display_cycle0l 00028 0095 0008 00029 return 00030 00031 00032 ;-------------------------------------------------------------------------------------- 0096 00033 display_cycle1 00034 ;-------------------------------------------------------------------------------------- 00035 00036 ; C7,C6,C5,C0 = 16 bit column select 0096 3001 00037 MOVLW b'00000001' 0097 0087 00038 MOVWF PORTC 00039 0098 00040 display_cycle1l 00041 00042 ; B0-7, A0-7 is row data 00043 0098 30D0 00044 movlw (Led_R00 & 0xff) 0099 0084 00045 movwf FSR 009A 1383 00046 bcf STATUS,IRP 00047 009B 2182 00048 call common_strobe_B 00049 009C 30B0 00050 movlw (Led_R80 & 0xff) 009D 0084 00051 movwf FSR 009E 1783 00052 bsf STATUS,IRP 00053 009F 2159 00054 call common_strobe_A 00055 00A0 0BA5 00056 decfsz fcount,f 00A1 2898 00057 goto display_cycle1l 00058 00A2 0008 00059 return 00060 00061 ;-------------------------------------------------------------------------------------- 00A3 00062 display_cycle2 00063 ;-------------------------------------------------------------------------------------- MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 36 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00064 00065 00066 ; C7,C6,C5,C0 = 16 bit column select 00A3 3020 00067 MOVLW b'00100000' 00A4 0087 00068 MOVWF PORTC 00069 00A5 00070 display_cycle2l 00071 00072 ; B0-7, A0-7 is row data 00073 00A5 30B8 00074 movlw (Led_G10 & 0xff) 00A6 0084 00075 movwf FSR 00A7 1383 00076 bcf STATUS,IRP 00077 00A8 2182 00078 call common_strobe_B 00079 00A9 3038 00080 movlw (Led_G90 & 0xff) 00AA 0084 00081 movwf FSR 00AB 1783 00082 bsf STATUS,IRP 00083 00AC 2159 00084 call common_strobe_A 00085 00AD 0BA5 00086 decfsz fcount,f 00AE 28A5 00087 goto display_cycle2l 00088 00AF 0008 00089 return 00090 00091 ;-------------------------------------------------------------------------------------- 00B0 00092 display_cycle3 00093 ;-------------------------------------------------------------------------------------- 00094 00095 00096 ; C7,C6,C5,C0 = 16 bit column select 00B0 3021 00097 MOVLW b'00100001' 00B1 0087 00098 MOVWF PORTC 00099 00B2 00100 display_cycle3l 00101 00102 ; B0-7, A0-7 is row data 00103 00B2 30D8 00104 movlw (Led_R10 & 0xff) 00B3 0084 00105 movwf FSR 00B4 1383 00106 bcf STATUS,IRP 00107 00B5 2182 00108 call common_strobe_B 00109 00B6 30B8 00110 movlw (Led_R90 & 0xff) 00B7 0084 00111 movwf FSR 00B8 1783 00112 bsf STATUS,IRP 00113 00B9 2159 00114 call common_strobe_A 00115 00BA 0BA5 00116 decfsz fcount,f MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 37 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00BB 28B2 00117 goto display_cycle3l 00118 00BC 0008 00119 return 00120 00121 ;-------------------------------------------------------------------------------------- 00BD 00122 display_cycle4 00123 ;------------------------------------------------------------------------------------- 00124 00125 00126 ; C7,C6,C5,C0 = 16 bit column select 00BD 3040 00127 MOVLW b'01000000' 00BE 0087 00128 MOVWF PORTC 00129 00BF 00130 display_cycle4l 00131 00132 ; B0-7, A0-7 is row data 00133 00BF 30C0 00134 movlw (Led_G20 & 0xff) 00C0 0084 00135 movwf FSR 00C1 1383 00136 bcf STATUS,IRP 00137 00C2 2182 00138 call common_strobe_B 00139 00C3 3040 00140 movlw (Led_GA0 & 0xff) 00C4 0084 00141 movwf FSR 00C5 1783 00142 bsf STATUS,IRP 00143 00C6 2159 00144 call common_strobe_A 00145 00C7 0BA5 00146 decfsz fcount,f 00C8 28BF 00147 goto display_cycle4l 00148 00C9 0008 00149 return 00150 00151 ;-------------------------------------------------------------------------------------- 00CA 00152 display_cycle5 00153 ;-------------------------------------------------------------------------------------- 00154 00155 00156 ; C7,C6,C5,C0 = 16 bit column select 00CA 3041 00157 MOVLW b'01000001' 00CB 0087 00158 MOVWF PORTC 00159 00CC 00160 display_cycle5l 00161 00162 ; B0-7, A0-7 is row data 00163 00CC 30E0 00164 movlw (Led_R20 & 0xff) 00CD 0084 00165 movwf FSR 00CE 1383 00166 bcf STATUS,IRP 00167 00CF 2182 00168 call common_strobe_B 00169 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 38 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00D0 30C0 00170 movlw (Led_RA0 & 0xff) 00D1 0084 00171 movwf FSR 00D2 1783 00172 bsf STATUS,IRP 00173 00D3 2159 00174 call common_strobe_A 00175 00D4 0BA5 00176 decfsz fcount,f 00D5 28CC 00177 goto display_cycle5l 00178 00D6 0008 00179 return 00180 00181 ;-------------------------------------------------------------------------------------- 00D7 00182 display_cycle6 00183 ;-------------------------------------------------------------------------------------- 00184 00185 00186 ; C7,C6,C5,C0 = 16 bit column select 00D7 3060 00187 MOVLW b'01100000' 00D8 0087 00188 MOVWF PORTC 00189 00D9 00190 display_cycle6l 00191 00192 ; B0-7, A0-7 is row data 00193 00D9 30C8 00194 movlw (Led_G30 & 0xff) 00DA 0084 00195 movwf FSR 00DB 1383 00196 bcf STATUS,IRP 00197 00DC 2182 00198 call common_strobe_B 00199 00DD 3048 00200 movlw (Led_GB0 & 0xff) 00DE 0084 00201 movwf FSR 00DF 1783 00202 bsf STATUS,IRP 00203 00E0 2159 00204 call common_strobe_A 00205 00E1 0BA5 00206 decfsz fcount,f 00E2 28D9 00207 goto display_cycle6l 00208 00E3 0008 00209 return 00210 00211 ;-------------------------------------------------------------------------------------- 00E4 00212 display_cycle7 00213 ;-------------------------------------------------------------------------------------- 00214 00215 00216 ; C7,C6,C5,C0 = 16 bit column select 00E4 3061 00217 MOVLW b'01100001' 00E5 0087 00218 MOVWF PORTC 00219 00E6 00220 display_cycle7l 00221 00222 ; B0-7, A0-7 is row data MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 39 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00223 00E6 30E8 00224 movlw (Led_R30 & 0xff) 00E7 0084 00225 movwf FSR 00E8 1383 00226 bcf STATUS,IRP 00227 00E9 2182 00228 call common_strobe_B 00229 00EA 30C8 00230 movlw (Led_RB0 & 0xff) 00EB 0084 00231 movwf FSR 00EC 1783 00232 bsf STATUS,IRP 00233 00ED 2159 00234 call common_strobe_A 00235 00EE 0BA5 00236 decfsz fcount,f 00EF 28E6 00237 goto display_cycle7l 00238 00F0 0008 00239 return 00240 00241 ;-------------------------------------------------------------------------------------- 00F1 00242 display_cycle8 00243 ;-------------------------------------------------------------------------------------- 00244 00245 00246 ; C7,C6,C5,C0 = 16 bit column select 00F1 3080 00247 MOVLW b'10000000' 00F2 0087 00248 MOVWF PORTC 00249 00F3 00250 display_cycle8l 00251 00252 ; B0-7, A0-7 is row data 00253 00F3 3010 00254 movlw (Led_G40 & 0xff) 00F4 0084 00255 movwf FSR 00F5 1783 00256 bsf STATUS,IRP 00257 00F6 2182 00258 call common_strobe_B 00259 00F7 3050 00260 movlw (Led_GC0 & 0xff) 00F8 0084 00261 movwf FSR 00F9 1783 00262 bsf STATUS,IRP 00263 00FA 2159 00264 call common_strobe_A 00265 00FB 0BA5 00266 decfsz fcount,f 00FC 28F3 00267 goto display_cycle8l 00268 00FD 0008 00269 return 00270 00271 ;-------------------------------------------------------------------------------------- 00FE 00272 display_cycle9 00273 ;-------------------------------------------------------------------------------------- 00274 00275 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 40 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00276 ; C7,C6,C5,C0 = 16 bit column select 00FE 3081 00277 MOVLW b'10000001' 00FF 0087 00278 MOVWF PORTC 00279 0100 00280 display_cycle9l 00281 00282 ; B0-7, A0-7 is row data 00283 0100 3090 00284 movlw (Led_R40 & 0xff) 0101 0084 00285 movwf FSR 0102 1783 00286 bsf STATUS,IRP 00287 0103 2182 00288 call common_strobe_B 00289 0104 30D0 00290 movlw (Led_RC0 & 0xff) 0105 0084 00291 movwf FSR 0106 1783 00292 bsf STATUS,IRP 00293 0107 2159 00294 call common_strobe_A 00295 0108 0BA5 00296 decfsz fcount,f 0109 2900 00297 goto display_cycle9l 00298 010A 0008 00299 return 00300 00301 ;-------------------------------------------------------------------------------------- 010B 00302 display_cycle10 00303 ;-------------------------------------------------------------------------------------- 00304 00305 00306 ; C7,C6,C5,C0 = 16 bit column select 010B 30A0 00307 MOVLW b'10100000' 010C 0087 00308 MOVWF PORTC 00309 010D 00310 display_cycle10l 00311 00312 ; B0-7, A0-7 is row data 00313 010D 3018 00314 movlw (Led_G50 & 0xff) 010E 0084 00315 movwf FSR 010F 1783 00316 bsf STATUS,IRP 00317 0110 2182 00318 call common_strobe_B 00319 0111 3058 00320 movlw (Led_GD0 & 0xff) 0112 0084 00321 movwf FSR 0113 1783 00322 bsf STATUS,IRP 00323 0114 2159 00324 call common_strobe_A 00325 0115 0BA5 00326 decfsz fcount,f 0116 290D 00327 goto display_cycle10l 00328 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 41 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0117 0008 00329 return 00330 00331 ;-------------------------------------------------------------------------------------- 0118 00332 display_cycle11 00333 ;-------------------------------------------------------------------------------------- 00334 00335 00336 ; C7,C6,C5,C0 = 16 bit column select 0118 30A1 00337 MOVLW b'10100001' 0119 0087 00338 MOVWF PORTC 00339 011A 00340 display_cycle11l 00341 00342 ; B0-7, A0-7 is row data 00343 011A 3098 00344 movlw (Led_R50 & 0xff) 011B 0084 00345 movwf FSR 011C 1783 00346 bsf STATUS,IRP 00347 011D 2182 00348 call common_strobe_B 00349 011E 30D8 00350 movlw (Led_RD0 & 0xff) 011F 0084 00351 movwf FSR 0120 1783 00352 bsf STATUS,IRP 00353 0121 2159 00354 call common_strobe_A 00355 0122 0BA5 00356 decfsz fcount,f 0123 291A 00357 goto display_cycle11l 00358 0124 0008 00359 return 00360 00361 ;-------------------------------------------------------------------------------------- 0125 00362 display_cycle12 00363 ;-------------------------------------------------------------------------------------- 00364 00365 00366 ; C7,C6,C5,C0 = 16 bit column select 0125 30C0 00367 MOVLW b'11000000' 0126 0087 00368 MOVWF PORTC 00369 0127 00370 display_cycle12l 00371 00372 ; B0-7, A0-7 is row data 00373 0127 3020 00374 movlw (Led_G60 & 0xff) 0128 0084 00375 movwf FSR 0129 1783 00376 bsf STATUS,IRP 00377 012A 2182 00378 call common_strobe_B 00379 012B 3060 00380 movlw (Led_GE0 & 0xff) 012C 0084 00381 movwf FSR MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 42 LOC OBJECT CODE LINE SOURCE TEXT VALUE 012D 1783 00382 bsf STATUS,IRP 00383 012E 2159 00384 call common_strobe_A 00385 012F 0BA5 00386 decfsz fcount,f 0130 2927 00387 goto display_cycle12l 00388 0131 0008 00389 return 00390 00391 ;-------------------------------------------------------------------------------------- 0132 00392 display_cycle13 00393 ;-------------------------------------------------------------------------------------- 00394 00395 00396 ; C7,C6,C5,C0 = 16 bit column select 0132 30C1 00397 MOVLW b'11000001' 0133 0087 00398 MOVWF PORTC 00399 0134 00400 display_cycle13l 00401 00402 ; B0-7, A0-7 is row data 00403 0134 30A0 00404 movlw (Led_R60 & 0xff) 0135 0084 00405 movwf FSR 0136 1783 00406 bsf STATUS,IRP 00407 0137 2182 00408 call common_strobe_B 00409 0138 30E0 00410 movlw (Led_RE0 & 0xff) 0139 0084 00411 movwf FSR 013A 1783 00412 bsf STATUS,IRP 00413 013B 2159 00414 call common_strobe_A 00415 013C 0BA5 00416 decfsz fcount,f 013D 2934 00417 goto display_cycle13l 00418 013E 0008 00419 return 00420 00421 ;-------------------------------------------------------------------------------------- 013F 00422 display_cycle14 00423 ;-------------------------------------------------------------------------------------- 00424 00425 00426 ; C7,C6,C5,C0 = 16 bit column select 013F 30E0 00427 MOVLW b'11100000' 0140 0087 00428 MOVWF PORTC 00429 0141 00430 display_cycle14l 00431 00432 ; B0-7, A0-7 is row data 00433 0141 3028 00434 movlw (Led_G70 & 0xff) MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 43 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0142 0084 00435 movwf FSR 0143 1783 00436 bsf STATUS,IRP 00437 0144 2182 00438 call common_strobe_B 00439 0145 3068 00440 movlw (Led_GF0 & 0xff) 0146 0084 00441 movwf FSR 0147 1783 00442 bsf STATUS,IRP 00443 0148 2159 00444 call common_strobe_A 00445 0149 0BA5 00446 decfsz fcount,f 014A 2941 00447 goto display_cycle14l 00448 014B 0008 00449 return 00450 00451 ;-------------------------------------------------------------------------------------- 014C 00452 display_cycle15 00453 ;-------------------------------------------------------------------------------------- 00454 00455 00456 ; C7,C6,C5,C0 = 16 bit column select 014C 30E1 00457 MOVLW b'11100001' 014D 0087 00458 MOVWF PORTC 00459 014E 00460 display_cycle15l 00461 00462 ; B0-7, A0-7 is row data 00463 014E 30A8 00464 movlw (Led_R70 & 0xff) 014F 0084 00465 movwf FSR 0150 1783 00466 bsf STATUS,IRP 00467 0151 2182 00468 call common_strobe_B 00469 0152 30E8 00470 movlw (Led_RF0 & 0xff) 0153 0084 00471 movwf FSR 0154 1783 00472 bsf STATUS,IRP 00473 0155 2159 00474 call common_strobe_A 00475 0156 0BA5 00476 decfsz fcount,f 0157 294E 00477 goto display_cycle15l 00478 0158 0008 00479 return 00480 00481 00482 ;-------------------------------------------------------------------------------------- 0159 00483 common_strobe_A 00484 ;-------------------------------------------------------------------------------------- 00485 0159 0185 00486 clrf PORTA 00487 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 44 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00488 015A 0801 00489 movfw TMR0 015B 0200 00490 subwf INDF,w 015C 1803 00491 btfsc STATUS,C 015D 1405 00492 bsf PORTA, 0 00493 015E 0A84 00494 incf FSR,f 00495 015F 0801 00496 movfw TMR0 0160 0200 00497 subwf INDF,w 0161 1803 00498 btfsc STATUS,C 0162 1485 00499 bsf PORTA, 1 00500 0163 0A84 00501 incf FSR,f 00502 0164 0801 00503 movfw TMR0 0165 0200 00504 subwf INDF,w 0166 1803 00505 btfsc STATUS,C 0167 1505 00506 bsf PORTA, 2 00507 0168 0A84 00508 incf FSR,f 00509 0169 0801 00510 movfw TMR0 016A 0200 00511 subwf INDF,w 016B 1803 00512 btfsc STATUS,C 016C 1585 00513 bsf PORTA, 3 00514 016D 0A84 00515 incf FSR,f 00516 016E 0801 00517 movfw TMR0 016F 0200 00518 subwf INDF,w 0170 1803 00519 btfsc STATUS,C 0171 1605 00520 bsf PORTA, 4 00521 0172 0A84 00522 incf FSR,f 00523 0173 0801 00524 movfw TMR0 0174 0200 00525 subwf INDF,w 0175 1803 00526 btfsc STATUS,C 0176 1685 00527 bsf PORTA, 5 00528 0177 0A84 00529 incf FSR,f 00530 0178 0801 00531 movfw TMR0 0179 0200 00532 subwf INDF,w 017A 1803 00533 btfsc STATUS,C 017B 1705 00534 bsf PORTA, 6 00535 017C 0A84 00536 incf FSR,f 00537 017D 0801 00538 movfw TMR0 017E 0200 00539 subwf INDF,w 017F 1803 00540 btfsc STATUS,C MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 45 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0180 1785 00541 bsf PORTA, 7 00542 0181 0008 00543 return 00544 00545 ;-------------------------------------------------------------------------------------- 0182 00546 common_strobe_B 00547 ;-------------------------------------------------------------------------------------- 00548 0182 0186 00549 clrf PORTB 00550 0183 0801 00551 movfw TMR0 0184 0200 00552 subwf INDF,w 0185 1803 00553 btfsc STATUS,C 0186 1406 00554 bsf PORTB, 0 00555 0187 0A84 00556 incf FSR,f 00557 0188 0801 00558 movfw TMR0 0189 0200 00559 subwf INDF,w 018A 1803 00560 btfsc STATUS,C 018B 1486 00561 bsf PORTB, 1 00562 018C 0A84 00563 incf FSR,f 00564 018D 0801 00565 movfw TMR0 018E 0200 00566 subwf INDF,w 018F 1803 00567 btfsc STATUS,C 0190 1506 00568 bsf PORTB, 2 00569 0191 0A84 00570 incf FSR,f 00571 0192 0801 00572 movfw TMR0 0193 0200 00573 subwf INDF,w 0194 1803 00574 btfsc STATUS,C 0195 1586 00575 bsf PORTB, 3 00576 0196 0A84 00577 incf FSR,f 00578 0197 0801 00579 movfw TMR0 0198 0200 00580 subwf INDF,w 0199 1803 00581 btfsc STATUS,C 019A 1606 00582 bsf PORTB, 4 00583 019B 0A84 00584 incf FSR,f 00585 019C 0801 00586 movfw TMR0 019D 0200 00587 subwf INDF,w 019E 1803 00588 btfsc STATUS,C 019F 1686 00589 bsf PORTB, 5 00590 01A0 0A84 00591 incf FSR,f 00592 01A1 0801 00593 movfw TMR0 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 46 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01A2 0200 00594 subwf INDF,w 01A3 1803 00595 btfsc STATUS,C 01A4 1706 00596 bsf PORTB, 6 00597 01A5 0A84 00598 incf FSR,f 00599 01A6 0801 00600 movfw TMR0 01A7 0200 00601 subwf INDF,w 01A8 1803 00602 btfsc STATUS,C 01A9 1786 00603 bsf PORTB, 7 00604 01AA 0008 00605 return 00606 01738 #else 01739 #ifdef C12 01740 #include 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 47 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 48 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 ;-------------------------------------------------------------------------------------- 01AB 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 01AB 1003 01784 bcf STATUS,0 ; clear carry flag ; 1 01AC 0D26 01785 rlf instate,w ; entry = table * 2 ; 2 01AD 00AF 01786 movwf pindex2 ; 3 01AE 21B8 01787 call table_lookup2 ; 14 (9+2) 01AF 00B2 01788 movwf tbl2_hi ; 15 01B0 0008 01789 return ; 16/17 01790 01791 ;-------------------------------------------------------------------------------------- 01B1 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 01B1 1003 01796 bcf STATUS,0 ; clear carry flag (just in case) ; 1 01B2 0D26 01797 rlf instate,w ; entry = table * 2 + 1 ; 2 01B3 3E01 01798 addlw 1 ; 3 01B4 00AF 01799 movwf pindex2 ; 4 01B5 21B8 01800 call table_lookup2 ; 15 (9+2) 01B6 00B3 01801 movwf tbl2_low ; 16 01B7 0008 01802 return ; 17/18 01803 01804 ;********************************************************************** 01B8 01805 table_lookup2 ; 9 cycles 01806 ;********************************************************************** 01B8 3001 01807 movlw HIGH state_jump_table ; 1 01B9 008A 01808 movwf PCLATH ; 2 01BA 082F 01809 movf pindex2,w ; 3 01BB 3EC3 01810 addlw LOW state_jump_table ; 4 01BC 1803 01811 btfsc STATUS,0 ; check carry flag ; 5 01BD 0A8A 01812 incf PCLATH,f ; 6 01BE 0082 01813 movwf PCL ; 7 + 2 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 49 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01814 01815 ;********************************************************************** 01BF 01816 go_state_table ; 18 cycles 01817 ;********************************************************************** 01818 01BF 0832 01819 movf tbl2_hi,w ; 1 01C0 008A 01820 movwf PCLATH ; 2 01C1 0833 01821 movf tbl2_low,w ; 3 01C2 0082 01822 movwf PCL ; 4 01823 01824 ;********************************************************************** 01C3 01825 state_jump_table 01826 ;********************************************************************** 01827 make_state_jump_table d'31' 0000 M local i = 0 M while i <= d'31' 01C3 3402 3403 M dt HIGH Lstate0, LOW Lstate0 00000001 M i += 1 01C5 3402 340E M dt HIGH Lstate1, LOW Lstate1 00000002 M i += 1 01C7 3402 3416 M dt HIGH Lstate2, LOW Lstate2 00000003 M i += 1 01C9 3402 341E M dt HIGH Lstate3, LOW Lstate3 00000004 M i += 1 01CB 3402 3426 M dt HIGH Lstate4, LOW Lstate4 00000005 M i += 1 01CD 3402 342E M dt HIGH Lstate5, LOW Lstate5 00000006 M i += 1 01CF 3402 3436 M dt HIGH Lstate6, LOW Lstate6 00000007 M i += 1 01D1 3402 3442 M dt HIGH Lstate7, LOW Lstate7 00000008 M i += 1 01D3 3402 3446 M dt HIGH Lstate8, LOW Lstate8 00000009 M i += 1 01D5 3402 3452 M dt HIGH Lstate9, LOW Lstate9 0000000A M i += 1 01D7 3402 3456 M dt HIGH Lstate10, LOW Lstate10 0000000B M i += 1 01D9 3402 3462 M dt HIGH Lstate11, LOW Lstate11 0000000C M i += 1 01DB 3402 3466 M dt HIGH Lstate12, LOW Lstate12 0000000D M i += 1 01DD 3402 3472 M dt HIGH Lstate13, LOW Lstate13 0000000E M i += 1 01DF 3402 3476 M dt HIGH Lstate14, LOW Lstate14 0000000F M i += 1 01E1 3402 3482 M dt HIGH Lstate15, LOW Lstate15 00000010 M i += 1 01E3 3402 3486 M dt HIGH Lstate16, LOW Lstate16 00000011 M i += 1 01E5 3402 3492 M dt HIGH Lstate17, LOW Lstate17 00000012 M i += 1 01E7 3402 3496 M dt HIGH Lstate18, LOW Lstate18 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 50 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000013 M i += 1 01E9 3402 34A2 M dt HIGH Lstate19, LOW Lstate19 00000014 M i += 1 01EB 3402 34A6 M dt HIGH Lstate20, LOW Lstate20 00000015 M i += 1 01ED 3402 34B2 M dt HIGH Lstate21, LOW Lstate21 00000016 M i += 1 01EF 3402 34B6 M dt HIGH Lstate22, LOW Lstate22 00000017 M i += 1 01F1 3402 34C2 M dt HIGH Lstate23, LOW Lstate23 00000018 M i += 1 01F3 3402 34C6 M dt HIGH Lstate24, LOW Lstate24 00000019 M i += 1 01F5 3402 34D2 M dt HIGH Lstate25, LOW Lstate25 0000001A M i += 1 01F7 3402 34D6 M dt HIGH Lstate26, LOW Lstate26 0000001B M i += 1 01F9 3402 34E2 M dt HIGH Lstate27, LOW Lstate27 0000001C M i += 1 01FB 3402 34E6 M dt HIGH Lstate28, LOW Lstate28 0000001D M i += 1 01FD 3402 34F2 M dt HIGH Lstate29, LOW Lstate29 0000001E M i += 1 01FF 3402 34F6 M dt HIGH Lstate30, LOW Lstate30 0000001F M i += 1 0201 3403 3402 M dt HIGH Lstate31, LOW Lstate31 00000020 M i += 1 M endw 01828 01829 state_tbl 0, 6, 1, 0 0203 M Lstate0 M #ifndef MULTIBUTTON M if (0 == 0) 0203 102D M bcf button,0 0204 3030 M movlw 0x30 0205 00B1 M movwf butcount M endif M if (0 == 1) M bsf button,0 M endif M #endif 0206 1828 M btfsc IR_in,0 0207 2A0B M goto Lstate0a M 0208 3006 M movlw 6 0209 00A6 M movwf instate M 020A 2B04 M goto Lcontinue M 020B M Lstate0a 020B 3001 M movlw 1 020C 00A6 M movwf instate M MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 51 LOC OBJECT CODE LINE SOURCE TEXT VALUE 020D 2B04 M goto Lcontinue 01830 state_tbl 1, 0, 2, -1 020E 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 020E 1828 M btfsc IR_in,0 020F 2A13 M goto Lstate1a M 0210 3000 M movlw 0 0211 00A6 M movwf instate M 0212 2B04 M goto Lcontinue M 0213 M Lstate1a 0213 3002 M movlw 2 0214 00A6 M movwf instate M 0215 2B04 M goto Lcontinue 01831 state_tbl 2, 0, 3, -1 0216 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 0216 1828 M btfsc IR_in,0 0217 2A1B M goto Lstate2a M 0218 3000 M movlw 0 0219 00A6 M movwf instate M 021A 2B04 M goto Lcontinue M 021B M Lstate2a 021B 3003 M movlw 3 021C 00A6 M movwf instate M 021D 2B04 M goto Lcontinue 01832 state_tbl 3, 4, 3, -1 021E M Lstate3 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 52 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 021E 1828 M btfsc IR_in,0 021F 2A23 M goto Lstate3a M 0220 3004 M movlw 4 0221 00A6 M movwf instate M 0222 2B04 M goto Lcontinue M 0223 M Lstate3a 0223 3003 M movlw 3 0224 00A6 M movwf instate M 0225 2B04 M goto Lcontinue 01833 state_tbl 4, 0, 5, -1 0226 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 0226 1828 M btfsc IR_in,0 0227 2A2B M goto Lstate4a M 0228 3000 M movlw 0 0229 00A6 M movwf instate M 022A 2B04 M goto Lcontinue M 022B M Lstate4a 022B 3005 M movlw 5 022C 00A6 M movwf instate M 022D 2B04 M goto Lcontinue 01834 state_tbl 5, 7, 0, -1 022E M Lstate5 M #ifndef MULTIBUTTON M if (-1 == 0) M bcf button,0 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 53 LOC OBJECT CODE LINE SOURCE TEXT VALUE M movlw 0x30 M movwf butcount M endif M if (-1 == 1) M bsf button,0 M endif M #endif 022E 1828 M btfsc IR_in,0 022F 2A33 M goto Lstate5a M 0230 3007 M movlw 7 0231 00A6 M movwf instate M 0232 2B04 M goto Lcontinue M 0233 M Lstate5a 0233 3000 M movlw 0 0234 00A6 M movwf instate M 0235 2B04 M goto Lcontinue 01835 0236 01836 Lstate6 01837 0236 1828 01838 btfsc IR_in,0 0237 2A40 01839 goto Lstate6a 01840 0238 3000 01841 movlw 0 0239 0731 01842 addwf butcount,w 023A 1903 01843 btfsc STATUS,Z 023B 2A3E 01844 goto Lstate6b 01845 023C 0BB1 01846 decfsz butcount,f 023D 2B04 01847 goto Lcontinue 01848 023E 01849 Lstate6b 01850 01851 #ifndef MULTIBUTTON 023E 142D 01852 bsf button,0 01853 #endif 023F 2B04 01854 goto Lcontinue 01855 0240 01856 Lstate6a 0240 01A6 01857 clrf instate 0241 2B04 01858 goto Lcontinue 01859 01860 state2_tbl 7, toggle, 0 0242 M Lstate7 M ; save the 1st half of word 0242 0828 M movf IR_in,w ; save 1st half 0243 00AC M movwf IR_lhalf 0244 0AA6 M incf instate,f M 0245 2B04 M goto Lcontinue MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 54 LOC OBJECT CODE LINE SOURCE TEXT VALUE M 0246 M Lstate8 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0246 082C M movf IR_lhalf,w 0247 0628 M xorwf IR_in,w 0248 1D03 M btfss STATUS,Z 0249 2A4C M goto Lstate8a 024A 01A6 M clrf instate ; error state = zero M 024B 2B04 M goto Lcontinue M M ; set the correct bit in output vars. 024C M Lstate8a 024C 1828 M btfsc IR_in,0 024D 102B M bcf toggle,0 024E 1C28 M btfss IR_in,0 024F 142B M bsf toggle,0 M 0250 0AA6 M incf instate,f 0251 2B04 M goto Lcontinue 01861 state2_tbl 9, address, 4 0252 M Lstate9 M ; save the 1st half of word 0252 0828 M movf IR_in,w ; save 1st half 0253 00AC M movwf IR_lhalf 0254 0AA6 M incf instate,f M 0255 2B04 M goto Lcontinue M 0256 M Lstate10 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0256 082C M movf IR_lhalf,w 0257 0628 M xorwf IR_in,w 0258 1D03 M btfss STATUS,Z 0259 2A5C M goto Lstate10a 025A 01A6 M clrf instate ; error state = zero M 025B 2B04 M goto Lcontinue M M ; set the correct bit in output vars. 025C M Lstate10a 025C 1828 M btfsc IR_in,0 025D 122A M bcf address,4 025E 1C28 M btfss IR_in,0 025F 162A M bsf address,4 M 0260 0AA6 M incf instate,f 0261 2B04 M goto Lcontinue 01862 state2_tbl d'11', address, 3 0262 M Lstate11 M ; save the 1st half of word MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 55 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0262 0828 M movf IR_in,w ; save 1st half 0263 00AC M movwf IR_lhalf 0264 0AA6 M incf instate,f M 0265 2B04 M goto Lcontinue M 0266 M Lstate12 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0266 082C M movf IR_lhalf,w 0267 0628 M xorwf IR_in,w 0268 1D03 M btfss STATUS,Z 0269 2A6C M goto Lstate12a 026A 01A6 M clrf instate ; error state = zero M 026B 2B04 M goto Lcontinue M M ; set the correct bit in output vars. 026C M Lstate12a 026C 1828 M btfsc IR_in,0 026D 11AA M bcf address,3 026E 1C28 M btfss IR_in,0 026F 15AA M bsf address,3 M 0270 0AA6 M incf instate,f 0271 2B04 M goto Lcontinue 01863 state2_tbl d'13', address, 2 0272 M Lstate13 M ; save the 1st half of word 0272 0828 M movf IR_in,w ; save 1st half 0273 00AC M movwf IR_lhalf 0274 0AA6 M incf instate,f M 0275 2B04 M goto Lcontinue M 0276 M Lstate14 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0276 082C M movf IR_lhalf,w 0277 0628 M xorwf IR_in,w 0278 1D03 M btfss STATUS,Z 0279 2A7C M goto Lstate14a 027A 01A6 M clrf instate ; error state = zero M 027B 2B04 M goto Lcontinue M M ; set the correct bit in output vars. 027C M Lstate14a 027C 1828 M btfsc IR_in,0 027D 112A M bcf address,2 027E 1C28 M btfss IR_in,0 027F 152A M bsf address,2 M MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 56 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0280 0AA6 M incf instate,f 0281 2B04 M goto Lcontinue 01864 state2_tbl d'15', address, 1 0282 M Lstate15 M ; save the 1st half of word 0282 0828 M movf IR_in,w ; save 1st half 0283 00AC M movwf IR_lhalf 0284 0AA6 M incf instate,f M 0285 2B04 M goto Lcontinue M 0286 M Lstate16 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0286 082C M movf IR_lhalf,w 0287 0628 M xorwf IR_in,w 0288 1D03 M btfss STATUS,Z 0289 2A8C M goto Lstate16a 028A 01A6 M clrf instate ; error state = zero M 028B 2B04 M goto Lcontinue M M ; set the correct bit in output vars. 028C M Lstate16a 028C 1828 M btfsc IR_in,0 028D 10AA M bcf address,1 028E 1C28 M btfss IR_in,0 028F 14AA M bsf address,1 M 0290 0AA6 M incf instate,f 0291 2B04 M goto Lcontinue 01865 state2_tbl d'17', address, 0 0292 M Lstate17 M ; save the 1st half of word 0292 0828 M movf IR_in,w ; save 1st half 0293 00AC M movwf IR_lhalf 0294 0AA6 M incf instate,f M 0295 2B04 M goto Lcontinue M 0296 M Lstate18 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 0296 082C M movf IR_lhalf,w 0297 0628 M xorwf IR_in,w 0298 1D03 M btfss STATUS,Z 0299 2A9C M goto Lstate18a 029A 01A6 M clrf instate ; error state = zero M 029B 2B04 M goto Lcontinue M M ; set the correct bit in output vars. 029C M Lstate18a MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 57 LOC OBJECT CODE LINE SOURCE TEXT VALUE 029C 1828 M btfsc IR_in,0 029D 102A M bcf address,0 029E 1C28 M btfss IR_in,0 029F 142A M bsf address,0 M 02A0 0AA6 M incf instate,f 02A1 2B04 M goto Lcontinue 01866 state2_tbl d'19', command, 5 02A2 M Lstate19 M ; save the 1st half of word 02A2 0828 M movf IR_in,w ; save 1st half 02A3 00AC M movwf IR_lhalf 02A4 0AA6 M incf instate,f M 02A5 2B04 M goto Lcontinue M 02A6 M Lstate20 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02A6 082C M movf IR_lhalf,w 02A7 0628 M xorwf IR_in,w 02A8 1D03 M btfss STATUS,Z 02A9 2AAC M goto Lstate20a 02AA 01A6 M clrf instate ; error state = zero M 02AB 2B04 M goto Lcontinue M M ; set the correct bit in output vars. 02AC M Lstate20a 02AC 1828 M btfsc IR_in,0 02AD 12A9 M bcf command,5 02AE 1C28 M btfss IR_in,0 02AF 16A9 M bsf command,5 M 02B0 0AA6 M incf instate,f 02B1 2B04 M goto Lcontinue 01867 state2_tbl d'21', command, 4 02B2 M Lstate21 M ; save the 1st half of word 02B2 0828 M movf IR_in,w ; save 1st half 02B3 00AC M movwf IR_lhalf 02B4 0AA6 M incf instate,f M 02B5 2B04 M goto Lcontinue M 02B6 M Lstate22 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02B6 082C M movf IR_lhalf,w 02B7 0628 M xorwf IR_in,w 02B8 1D03 M btfss STATUS,Z 02B9 2ABC M goto Lstate22a 02BA 01A6 M clrf instate ; error state = zero MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 58 LOC OBJECT CODE LINE SOURCE TEXT VALUE M 02BB 2B04 M goto Lcontinue M M ; set the correct bit in output vars. 02BC M Lstate22a 02BC 1828 M btfsc IR_in,0 02BD 1229 M bcf command,4 02BE 1C28 M btfss IR_in,0 02BF 1629 M bsf command,4 M 02C0 0AA6 M incf instate,f 02C1 2B04 M goto Lcontinue 01868 state2_tbl d'23', command, 3 02C2 M Lstate23 M ; save the 1st half of word 02C2 0828 M movf IR_in,w ; save 1st half 02C3 00AC M movwf IR_lhalf 02C4 0AA6 M incf instate,f M 02C5 2B04 M goto Lcontinue M 02C6 M Lstate24 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02C6 082C M movf IR_lhalf,w 02C7 0628 M xorwf IR_in,w 02C8 1D03 M btfss STATUS,Z 02C9 2ACC M goto Lstate24a 02CA 01A6 M clrf instate ; error state = zero M 02CB 2B04 M goto Lcontinue M M ; set the correct bit in output vars. 02CC M Lstate24a 02CC 1828 M btfsc IR_in,0 02CD 11A9 M bcf command,3 02CE 1C28 M btfss IR_in,0 02CF 15A9 M bsf command,3 M 02D0 0AA6 M incf instate,f 02D1 2B04 M goto Lcontinue 01869 state2_tbl d'25', command, 2 02D2 M Lstate25 M ; save the 1st half of word 02D2 0828 M movf IR_in,w ; save 1st half 02D3 00AC M movwf IR_lhalf 02D4 0AA6 M incf instate,f M 02D5 2B04 M goto Lcontinue M 02D6 M Lstate26 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 59 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02D6 082C M movf IR_lhalf,w 02D7 0628 M xorwf IR_in,w 02D8 1D03 M btfss STATUS,Z 02D9 2ADC M goto Lstate26a 02DA 01A6 M clrf instate ; error state = zero M 02DB 2B04 M goto Lcontinue M M ; set the correct bit in output vars. 02DC M Lstate26a 02DC 1828 M btfsc IR_in,0 02DD 1129 M bcf command,2 02DE 1C28 M btfss IR_in,0 02DF 1529 M bsf command,2 M 02E0 0AA6 M incf instate,f 02E1 2B04 M goto Lcontinue 01870 state2_tbl d'27', command, 1 02E2 M Lstate27 M ; save the 1st half of word 02E2 0828 M movf IR_in,w ; save 1st half 02E3 00AC M movwf IR_lhalf 02E4 0AA6 M incf instate,f M 02E5 2B04 M goto Lcontinue M 02E6 M Lstate28 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02E6 082C M movf IR_lhalf,w 02E7 0628 M xorwf IR_in,w 02E8 1D03 M btfss STATUS,Z 02E9 2AEC M goto Lstate28a 02EA 01A6 M clrf instate ; error state = zero M 02EB 2B04 M goto Lcontinue M M ; set the correct bit in output vars. 02EC M Lstate28a 02EC 1828 M btfsc IR_in,0 02ED 10A9 M bcf command,1 02EE 1C28 M btfss IR_in,0 02EF 14A9 M bsf command,1 M 02F0 0AA6 M incf instate,f 02F1 2B04 M goto Lcontinue 01871 state2_tbl d'29', command, 0 02F2 M Lstate29 M ; save the 1st half of word 02F2 0828 M movf IR_in,w ; save 1st half 02F3 00AC M movwf IR_lhalf 02F4 0AA6 M incf instate,f M MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 60 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02F5 2B04 M goto Lcontinue M 02F6 M Lstate30 M ; save the 2nd half of word M ; check for protocal error should get 01 or 10 02F6 082C M movf IR_lhalf,w 02F7 0628 M xorwf IR_in,w 02F8 1D03 M btfss STATUS,Z 02F9 2AFC M goto Lstate30a 02FA 01A6 M clrf instate ; error state = zero M 02FB 2B04 M goto Lcontinue M M ; set the correct bit in output vars. 02FC M Lstate30a 02FC 1828 M btfsc IR_in,0 02FD 1029 M bcf command,0 02FE 1C28 M btfss IR_in,0 02FF 1429 M bsf command,0 M 0300 0AA6 M incf instate,f 0301 2B04 M goto Lcontinue 01872 0302 01873 Lstate31 0302 01A6 01874 clrf instate 0303 1430 01875 bsf IR_in_good,0 01876 0304 01877 Lcontinue 0304 0008 01878 return 01879 01880 ;-------------------------------------------------------------------------------------- 0305 01881 read_button_in ; 5 cycles 01882 ;-------------------------------------------------------------------------------------- 01883 ; Portability : hardcoded button port 01884 ; 01885 #ifndef SIM_DEBUG 01886 #ifdef M8X16 0305 10AD 01887 bcf button,1 ; 1 0306 1D07 01888 btfss PORTC,2 ; 2 0307 14AD 01889 bsf button,1 ; 3 01890 #else ; M8X16 01891 #ifndef MULTIBUTTON 01892 bcf button,0 ; 1 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 01901 btfss PORTC,5 ; 2 ; Dual 12C has 2 buttons. 01902 bsf button,0 ; 3 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 61 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01903 btfss PORTC,7 ; 2 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 0308 0008 01913 return 01914 01915 ;-------------------------------------------------------------------------------------- 0309 01916 read_ir_in ; 5 cycles 01917 ;-------------------------------------------------------------------------------------- 01918 0309 1028 01919 bcf IR_in,0 ; 1 01920 #ifndef SIM_DEBUG 01921 #ifdef C12 01922 btfsc PORTC,6 ; 2 01923 #else 01924 #ifdef M8X16 030A 1989 01925 btfsc PORTE,3 ; 2 01926 #else 01927 btfsc PORTA,3 ; 2 01928 #endif 01929 #endif 01930 #endif 01931 030B 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 030C 0008 01937 return ; 4/5 01938 01939 ;-------------------------------------------------------------------------------------- 030D 01940 set_max_state ; 5-7 cycles 01941 ;-------------------------------------------------------------------------------------- 030D 0827 01942 movf max_instate,w 030E 0226 01943 subwf instate,w 030F 1C03 01944 btfss STATUS,C 0310 2B13 01945 goto smi_l1 0311 0826 01946 movf instate,w 0312 00A7 01947 movwf max_instate 0313 01948 smi_l1 0313 0008 01949 return 01950 01951 ;-------------------------------------------------------------------------------------- 0314 01952 get_next_tx_bit ; 11 cycles 01953 ;-------------------------------------------------------------------------------------- 01954 0314 102E 01955 bcf tx_1,0 ;1 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 62 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0315 03BD 01956 decf scount,f ;2 0316 1003 01957 bcf STATUS, C ; clear carry bit ;3 0317 0CBC 01958 rrf out3,f ;4 0318 0CBB 01959 rrf out2,f ;5 0319 0CBA 01960 rrf out1,f ;6 031A 0CB9 01961 rrf out0,f ;7 031B 1803 01962 btfsc STATUS, C ;8 031C 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 031D 0008 01970 return ;10/11 01971 01972 ;********************************************************************** 031E 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 031E 00B4 01977 movwf qcount 031F 01978 delay_loop2 031F 0BB4 01979 decfsz qcount,1 0320 2B1F 01980 goto delay_loop2 0321 0008 01981 return 01982 ;********************************************************************** 0322 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 63 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 0322 01BA 01996 clrf out1 0323 01BB 01997 clrf out2 0324 01BC 01998 clrf out3 01999 02000 ; start flag 0325 30A0 02001 movlw B'10100000' 0326 00B9 02002 movwf out0 02003 02004 02005 ; toggle bit 0327 09B7 02006 comf out_toggle,f ; toggle the toggle flag 0328 1C37 02007 btfss out_toggle,0 0329 143A 02008 bsf out1,0 032A 1837 02009 btfsc out_toggle,0 032B 14BA 02010 bsf out1,1 02011 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 64 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02012 ; address bits 032C 1E35 02013 btfss out_address,4 032D 153A 02014 bsf out1,2 032E 1A35 02015 btfsc out_address,4 032F 15BA 02016 bsf out1,3 02017 0330 1DB5 02018 btfss out_address,3 0331 163A 02019 bsf out1,4 0332 19B5 02020 btfsc out_address,3 0333 16BA 02021 bsf out1,5 02022 0334 1D35 02023 btfss out_address,2 0335 173A 02024 bsf out1,6 0336 1935 02025 btfsc out_address,2 0337 17BA 02026 bsf out1,7 02027 0338 1CB5 02028 btfss out_address,1 0339 143B 02029 bsf out2,0 033A 18B5 02030 btfsc out_address,1 033B 14BB 02031 bsf out2,1 02032 033C 1C35 02033 btfss out_address,0 033D 153B 02034 bsf out2,2 033E 1835 02035 btfsc out_address,0 033F 15BB 02036 bsf out2,3 02037 02038 ; command bits 0340 1EB6 02039 btfss out_command,5 0341 163B 02040 bsf out2,4 0342 1AB6 02041 btfsc out_command,5 0343 16BB 02042 bsf out2,5 02043 0344 1E36 02044 btfss out_command,4 0345 173B 02045 bsf out2,6 0346 1A36 02046 btfsc out_command,4 0347 17BB 02047 bsf out2,7 02048 0348 1DB6 02049 btfss out_command,3 0349 143C 02050 bsf out3,0 034A 19B6 02051 btfsc out_command,3 034B 14BC 02052 bsf out3,1 02053 034C 1D36 02054 btfss out_command,2 034D 153C 02055 bsf out3,2 034E 1936 02056 btfsc out_command,2 034F 15BC 02057 bsf out3,3 02058 0350 1CB6 02059 btfss out_command,1 0351 163C 02060 bsf out3,4 0352 18B6 02061 btfsc out_command,1 0353 16BC 02062 bsf out3,5 02063 0354 1C36 02064 btfss out_command,0 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 65 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0355 173C 02065 bsf out3,6 0356 1836 02066 btfsc out_command,0 0357 17BC 02067 bsf out3,7 02068 0358 3021 02069 movlw 0x21 0359 00BD 02070 movwf scount 02071 035A 0008 02072 return 02073 02074 #ifdef BIN2LED 02075 ;********************************************************************** 035B 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' M endif 02083 035B 01BE 02084 clrf b2l_out_hi 035C 01BF 02085 clrf b2l_out_low 035D 3008 02086 movlw 0x08 035E 00C0 02087 movwf b2l_lcount 035F 02088 b2l_loop 035F 1003 02089 bcf STATUS, C 0360 0CC2 02090 rrf b2l_in_green,f 0361 0DBF 02091 rlf b2l_out_low,f 0362 0DBE 02092 rlf b2l_out_hi,f MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 66 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0363 0CC1 02093 rrf b2l_in_red,f 0364 0DBF 02094 rlf b2l_out_low,f 0365 0DBE 02095 rlf b2l_out_hi,f 02096 0366 0BC0 02097 decfsz b2l_lcount,f 0367 2B5F 02098 goto b2l_loop 0368 0008 02099 return 02100 #endif 02101 02102 #ifdef FLIPBYTE 02103 ;********************************************************************** 02104 flipbyte 02105 ;********************************************************************** 02106 var flip_in 02107 var flip_out 02108 var flip_lcount 02109 02110 movwf flip_in 02111 clrf flip_out 02112 movlw 0x08 02113 movwf flip_lcount 02114 fbyte_loop 02115 bcf STATUS, C 02116 rrf flip_in,f 02117 rlf flip_out,f 02118 02119 decfsz flip_lcount,f 02120 goto fbyte_loop 02121 02122 movfw flip_out 02123 return 02124 #endif 02125 02126 ;********************************************************************** 0369 02127 delay 02128 ;********************************************************************** 02129 02130 var delay_count 00000043 M delay_count equ mem 00000044 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02131 02132 ; movlw 0ffh 0369 00C3 02133 movwf delay_count 036A 02134 delay_loop 036A 0000 02135 nop 036B 0BC3 02136 decfsz delay_count,1 036C 2B6A 02137 goto delay_loop 036D 0008 02138 return 02139 02140 ;********************************************************************** MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 67 LOC OBJECT CODE LINE SOURCE TEXT VALUE 036E 02141 next_pattern 02142 ;********************************************************************** 036E 0ACD 02143 incf pattern,f 036F 084D 02144 movf pattern,w 0370 3C13 02145 sublw NUM_TAB+1 ; max pattern? 0371 1903 02146 btfsc STATUS,2 ; z bit check 0372 01CD 02147 clrf pattern ; reset to zero 0373 084D 02148 movfw pattern 0374 00B8 02149 movwf out_pattern 0375 01FB 02150 clrf pindex 0376 01FA 02151 clrf pindex1 0377 0008 02152 return 02153 02154 ;********************************************************************** 0378 02155 past_pattern 02156 ;********************************************************************** 0378 03CD 02157 decf pattern,f 0379 084D 02158 movf pattern,w 037A 3E01 02159 addlw 1 ; max pattern? 037B 1D03 02160 btfss STATUS,2 ; z bit check 037C 2B80 02161 goto past_exit 037D 3012 02162 movlw NUM_TAB 037E 00CD 02163 movwf pattern 037F 00B8 02164 movwf out_pattern 0380 02165 past_exit 0380 01FB 02166 clrf pindex 0381 01FA 02167 clrf pindex1 0382 0008 02168 return 02169 02170 ;********************************************************************** 0383 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 0383 0829 02181 movfw command 0384 00CD 02182 movwf pattern 0385 00B8 02183 movwf out_pattern 0386 02184 set_loop 0386 3EED 02185 addlw 0xff-NUM_TAB 0387 1C03 02186 btfss STATUS, C 0388 2B8D 02187 goto set_exit 02188 0389 3012 02189 movlw NUM_TAB 038A 02CD 02190 subwf pattern,f 038B 084D 02191 movfw pattern 038C 2B86 02192 goto set_loop 02193 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 68 LOC OBJECT CODE LINE SOURCE TEXT VALUE 038D 02194 set_exit 038D 01FB 02195 clrf pindex 038E 01FA 02196 clrf pindex1 038F 0008 02197 return 02198 02199 ;********************************************************************** 0390 02200 strobe_delay 02201 ;********************************************************************** 02202 02203 var strobe_count 00000044 M strobe_count equ mem 00000045 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02204 0390 00C4 02205 movwf strobe_count 0391 02206 strobe_delay1 0391 1020 02207 bcf nextf,0 02208 0392 02209 strobe_delay2 0392 1C20 02210 btfss nextf,0 0393 2B92 02211 goto strobe_delay2 02212 0394 0BC4 02213 decfsz strobe_count,f 0395 2B91 02214 goto strobe_delay1 02215 0396 0008 02216 return 02217 02218 #ifdef M8X16 02219 #include display_pattern_id_8x16.asm 00001 ;********************************************************************** 0397 00002 display_pattern_id 00003 ;********************************************************************** 00004 00005 var tens 00000045 M tens equ mem 00000046 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00006 var ones 00000046 M ones equ mem 00000047 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 00007 var dpif_count ; ones 00000047 M dpif_count equ mem 00000048 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:18:48 PAGE 69 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00008 00009 ; clear the display 00010 ; clear all the inxx vars (32 of themn) 0397 304F 00011 movlw in0 0398 0084 00012 movwf FSR 0399 1383 00013 bcf STATUS,IRP 00014 039A 3020 00015 movlw 0x20 039B 00C7 00016 movwf dpif_count 00017 039C 00018 dpid_loop1 039C 0180 00019 clrf INDF 039D 0A84 00020 incf FSR,f 039E 0BC7 00021 decfsz dpif_count,f 039F 2B9C 00022 goto dpid_loop1 00023 00024 03A0 01C5 00025 clrf tens 03A1 0A4D 00026 incf pattern,w ; W = pattern + 1 03A2 00C6 00027 movwf ones 00028 00029 ; 00030 ; split pattern into tens and ones digits. 00031 ; 03A3 00032 dpid_loop2 03A3 300A 00033 movlw 0x0a ; less then 10? 03A4 0246 00034 subwf ones,w 03A5 1C03 00035 btfss STATUS,C 03A6 2BAB 00036 goto dpid2 00037 03A7 300A 00038 movlw 0x0a 03A8 02C6 00039 subwf ones,f 03A9 0AC5 00040 incf tens,f 03AA 2BA3 00041 goto dpid_loop2 00042 ; 00043 ; add 10 to ones and tens for digit placement in char table 03AB 00044 dpid2 03AB 3010 00045 movlw 0x10 03AC 07C6 00046 addwf ones,f 03AD 07C5 00047 addwf tens,f 00048 03AE 1C71 00049 btfss demo_mode,0 03AF 2BB5 00050 goto dpid3 00051 ; 00052 ; print out "D" for demo 00053 ; 03B0 304F 00054 movlw in0 03B1 0084 00055 movwf FSR 03B2 1383 00056 bcf STATUS,IRP 03B3 3024 00057 movlw 0x24 ; (D - 0x20) 03B4 23C3 00058 call display_char 00059 03B5 00060 dpid3 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 70 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00061 ; 00062 ; print tens digit 00063 ; 00064 03B5 3055 00065 movlw in6 03B6 0084 00066 movwf FSR 03B7 1383 00067 bcf STATUS,IRP 03B8 0845 00068 movfw tens 03B9 23C3 00069 call display_char 00070 00071 ; 00072 ; print ones digit 00073 ; 00074 03BA 0A84 00075 incf FSR,f 03BB 1383 00076 bcf STATUS,IRP 00077 03BC 0846 00078 movfw ones 03BD 23C3 00079 call display_char 00080 ; 00081 ; display it 00082 ; 00083 00084 03BE 30FF 00085 movlw 0xff 03BF 260F 00086 call display_1bit 03C0 30FF 00087 movlw 0xff 03C1 260F 00088 call display_1bit 00089 03C2 0008 00090 return 00091 00092 00093 00094 ;********************************************************************** 03C3 00095 display_char 00096 ;********************************************************************** 00097 ; 00098 ; FSR = location 00099 ; w = char to display 00100 ; 00101 ; offset_low 00102 ; offset_hi 00103 ; char_in b2l_out_hi 00104 ; char_words b2l_in_red 00105 ; tentry b2l_lcount 00106 ; 00107 03C3 00BE 00108 movwf char_in 00109 00110 ; offset = chartabel 03C4 304A 00111 movlw LOW chartable 03C5 00F6 00112 movwf offset_low 03C6 3017 00113 movlw HIGH chartable MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 71 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03C7 00F5 00114 movwf offset_hi 00115 00116 ; offset = offset + char_in <<1 03C8 083E 00117 movf char_in,w 03C9 1003 00118 bcf STATUS, C ; clear carry flag just in case 03CA 0D3E 00119 rlf char_in,w 03CB 07F6 00120 addwf offset_low, f 03CC 1803 00121 btfsc STATUS,C ; check carry flag 03CD 0AF5 00122 incf offset_hi,f 00123 00124 ; char_in << 2 ; if carry offset_hi++ 03CE 1003 00125 bcf STATUS, C ; clear carry flag just in case 03CF 0DBE 00126 rlf char_in, f 03D0 0DBE 00127 rlf char_in, f 03D1 1803 00128 btfsc STATUS,C ; check carry flag 03D2 0AF5 00129 incf offset_hi,f 00130 00131 ; offset = offset + char_in 03D3 083E 00132 movf char_in,w ; offset = offset + char_in 03D4 07F6 00133 addwf offset_low, f 03D5 1803 00134 btfsc STATUS,C ; check carry flag 03D6 0AF5 00135 incf offset_hi,f 00136 03D7 138B 00137 bcf INTCON, GIE ; disable INTs 03D8 2714 00138 call jump_address 03D9 00C1 00139 movwf char_words 00140 03DA 084B 00141 movf pclath_save,w 03DB 008A 00142 movwf PCLATH 03DC 178B 00143 bsf INTCON, GIE ; enable INTs 00144 00145 ; offset = offset + 1 03DD 3001 00146 movlw 1 03DE 07F6 00147 addwf offset_low, f 03DF 1803 00148 btfsc STATUS,C ; check carry flag 03E0 0AF5 00149 incf offset_hi,f 00150 03E1 00151 dc_looper 00152 03E1 138B 00153 bcf INTCON, GIE ; disable INTs 03E2 2714 00154 call jump_address 03E3 00C0 00155 movwf tentry 00156 03E4 084B 00157 movf pclath_save,w 03E5 008A 00158 movwf PCLATH 03E6 178B 00159 bsf INTCON, GIE ; enable INTs 00160 00161 00162 03E7 0840 00163 movf tentry, w 03E8 0080 00164 movwf INDF 03E9 0A84 00165 incf FSR,f 00166 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 72 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00167 ; offset = offset + 1 03EA 3001 00168 movlw 1 03EB 07F6 00169 addwf offset_low, f 03EC 1803 00170 btfsc STATUS,C ; check carry flag 03ED 0AF5 00171 incf offset_hi,f 00172 03EE 0BC1 00173 decfsz char_words,f 03EF 2BE1 00174 goto dc_looper 00175 03F0 0008 00176 return 02220 #else 02221 ;********************************************************************** 02222 display_pattern_id 02223 ;********************************************************************** 02224 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 02235 call flipbyte 02236 movwf in0 02237 clrf in1 02238 clrf in2 02239 clrf in3 02240 clrf in4 02241 clrf in5 02242 movlw b'01110000' 02243 btfsc demo_mode,0 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 73 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02263 movwf in0 02264 movf b2l_out_low,w 02265 movwf in1 02266 #endif 02267 #endif 02268 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 74 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02316 clrf in2 02317 02318 movlw b'11100000' 02319 btfsc demo_mode,0 02320 movwf in2 02321 #else 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 02343 movlw 0xFF 02344 call display_1bit 02345 02346 clrf in0 02347 clrf in1 02348 clrf in2 02349 movlw 0x01 02350 call display_1bit 02351 return 02352 #endif 02353 ;********************************************************************** 03F1 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 75 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 02360 ;slabel1 02361 ; 02362 ; Set the pattern (table) 02363 ; 03F1 3007 02364 movlw HIGH MasterTable 03F2 00C8 02365 movwf tbl_hi 03F3 301A 02366 movlw LOW MasterTable 03F4 00C9 02367 movwf tbl_low 02368 02369 ; get the high address for the pattern table 03F5 1003 02370 bcf STATUS,0 ; clear carry flag 03F6 0D4D 02371 rlf pattern,w ; entry = table * 2 03F7 00FB 02372 movwf pindex 03F8 138B 02373 bcf INTCON, GIE ; disable INTs 03F9 270D 02374 call table_lookup 03FA 178B 02375 bsf INTCON, GIE ; enable INTs 03FB 00CA 02376 movwf temp_high ; can't put it in tbl_high yet 02377 02378 ; get the low address for the pattern table 03FC 1403 02379 bsf STATUS,0 ; set carry 03FD 0D4D 02380 rlf pattern,w ; entry = table * 2 + 1 03FE 00FB 02381 movwf pindex 03FF 138B 02382 bcf INTCON, GIE ; disable INTs 0400 270D 02383 call table_lookup 0401 178B 02384 bsf INTCON, GIE ; enable INTs 0402 00C9 02385 movwf tbl_low 02386 0403 084A 02387 movf temp_high,w 0404 00C8 02388 movwf tbl_hi 02389 0405 02390 sreturn 0405 0008 02391 return 02392 02393 ;********************************************************************** 0406 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' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 76 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif 02398 02399 #ifndef NOEEPROM 02400 ; if hi address is 0x21 pattern is in eeprom 0406 3021 02401 movlw 0x21 0407 0248 02402 subwf tbl_hi,w 0408 1D03 02403 btfss STATUS,Z 0409 2C0E 02404 goto glabel1 02405 02406 ; table in eeprom 040A 0849 02407 movfw tbl_low 040B 077B 02408 addwf pindex,w 02409 040C 243B 02410 call read_eeprom 02411 040D 2C20 02412 goto greturn 02413 #endif 02414 02415 ; table in program memory 040E 02416 glabel1 040E 138B 02417 bcf INTCON, GIE ; disable INTs 040F 080A 02418 movfw PCLATH 0410 00CB 02419 movwf pclath_save 02420 0411 0848 02421 movfw tbl_hi 0412 077A 02422 addwf pindex1,w 0413 00F5 02423 movwf offset_hi 02424 0414 1003 02425 bcf STATUS,C 0415 0849 02426 movfw tbl_low 0416 077B 02427 addwf pindex,w 0417 00F6 02428 movwf offset_low 02429 0418 1803 02430 btfsc STATUS,C 0419 0AF5 02431 incf offset_hi,f 041A 2714 02432 call jump_address 02433 041B 00CC 02434 movwf temp2 041C 084B 02435 movfw pclath_save 041D 008A 02436 movwf PCLATH 041E 084C 02437 movfw temp2 041F 178B 02438 bsf INTCON, GIE ; enable INTs 02439 0420 02440 greturn 0420 0FFB 02441 incfsz pindex,f 0421 2C23 02442 goto gskip 0422 0AFA 02443 incf pindex1,f 0423 02444 gskip 0423 0008 02445 return 02446 02447 #ifndef NOEEPROM 02448 02449 ;********************************************************************** MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 77 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0424 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 ;********************************************************************** 0424 1683 1703 02454 BANKSEL EECON1 02455 0426 188C 02456 btfsc EECON1,WR ;wait for WR to clear 0427 2C26 02457 goto $-1 02458 0428 138B 02459 bcf INTCON, GIE ; disable INTs 0429 150C 02460 bsf EECON1,WREN ;enable writes 042A 1283 1703 02461 BANKSEL EEADR 042C 087B 02462 movf pindex,w ;set address 042D 008D 02463 movwf EEADR 042E 0879 02464 movf input,w ;set data 042F 008C 02465 movwf EEDAT 0430 1683 1703 02466 BANKSEL EECON1 0432 3055 02467 movlw 0x55 ;EECON2 = 0x55 ;unlock sequence 0433 008D 02468 movwf EECON2 0434 30AA 02469 movlw 0xAA ;EECON2 = 0xAA ;unlock sequence 0435 008D 02470 movwf EECON2 0436 148C 02471 bsf EECON1,WR ;initiate a write cycle 0437 178B 02472 bsf INTCON, GIE ; enable INT 02473 02474 setbank0 0438 1283 M bcf STATUS,RP0 ; select bank 0 0439 1303 M bcf STATUS,RP1 043A 0008 02475 return 02476 02477 02478 ;********************************************************************** 043B 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 ;********************************************************************** 043B 138B 02484 bcf INTCON, GIE ; disable INTs 02485 043C 1683 1703 02486 BANKSEL EECON1 043E 188C 02487 btfsc EECON1,WR ;wait for WR to clear 043F 2C3E 02488 goto $-1 02489 0440 110C 02490 bcf EECON1,WREN ;disable writes 0441 1283 1703 02491 BANKSEL EEADR 0443 008D 02492 movwf EEADR ;EEADR = W 0444 1683 1703 02493 BANKSEL EECON1 0446 138C 02494 bcf EECON1,7 ;clear EEPGD 0447 140C 02495 bsf EECON1,RD ;initiate a read cycle 0448 1283 1703 02496 BANKSEL EEDAT 044A 080C 02497 movf EEDAT,w ;W = EEDAT 02498 02499 setbank0 044B 1283 M bcf STATUS,RP0 ; select bank 0 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 78 LOC OBJECT CODE LINE SOURCE TEXT VALUE 044C 1303 M bcf STATUS,RP1 044D 178B 02500 bsf INTCON, GIE ; enable INT 044E 0008 02501 return 02502 #endif 02503 02504 ;********************************************************************** 044F 02505 read_demo_mode 02506 ;********************************************************************** 02507 #ifndef NOEEPROM 044F 3001 02508 movlw LOW demo_store 0450 243B 02509 call read_eeprom 02510 #else 02511 movlw 0x00 02512 #endif 0451 00F1 02513 movwf demo_mode 0452 0008 02514 return 02515 02516 ;********************************************************************** 0453 02517 toggle_demo 02518 ;********************************************************************** 0453 244F 02519 call read_demo_mode 02520 #ifndef NOEEPROM 0454 1C71 02521 btfss demo_mode,0 ; 0455 2C58 02522 goto tdemo_on 02523 02524 ; toggle off 0456 1071 02525 bcf demo_mode,0 0457 2C59 02526 goto tdemo_cont 02527 0458 02528 tdemo_on 0458 1471 02529 bsf demo_mode,0 02530 0459 02531 tdemo_cont 0459 3001 02532 movlw LOW demo_store 045A 00FB 02533 movwf pindex 045B 0871 02534 movfw demo_mode 045C 00F9 02535 movwf input 045D 2424 02536 call write_eeprom 02537 045E 2397 02538 call display_pattern_id 045F 2397 02539 call display_pattern_id 02540 #endif 0460 0008 02541 return 02542 02543 ;********************************************************************** 0461 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' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 79 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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' 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 02554 var in4 02555 var in5 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 80 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02580 #endif 02581 #ifdef M8X16 02582 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 02583 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 02584 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 02585 var in6 00000055 M in6 equ mem 00000056 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02586 var in7 00000056 M in7 equ mem 00000057 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02587 var in8 00000057 M in8 equ mem 00000058 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02588 var in9 00000058 M in9 equ mem 00000059 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02589 var ina 00000059 M ina equ mem 0000005A M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02590 var inb 0000005A M inb equ mem 0000005B M mem = mem + 1 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 81 LOC OBJECT CODE LINE SOURCE TEXT VALUE M if (mem >= mem2) M error 'Too much var space used' M endif 02591 var inc 0000005B M inc equ mem 0000005C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02592 var ind 0000005C M ind equ mem 0000005D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02593 var ine 0000005D M ine equ mem 0000005E M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02594 var inf 0000005E M inf equ mem 0000005F M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02595 var in10 0000005F M in10 equ mem 00000060 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02596 var in11 00000060 M in11 equ mem 00000061 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02597 var in12 00000061 M in12 equ mem 00000062 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02598 var in13 00000062 M in13 equ mem 00000063 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02599 var in14 00000063 M in14 equ mem MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 82 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000064 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02600 var in15 00000064 M in15 equ mem 00000065 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02601 var in16 00000065 M in16 equ mem 00000066 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02602 var in17 00000066 M in17 equ mem 00000067 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02603 var in18 00000067 M in18 equ mem 00000068 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02604 var in19 00000068 M in19 equ mem 00000069 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02605 var in1a 00000069 M in1a equ mem 0000006A M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02606 var in1b 0000006A M in1b equ mem 0000006B M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02607 var in1c 0000006B M in1c equ mem 0000006C M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02608 var in1d MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 83 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0000006C M in1d equ mem 0000006D M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02609 var in1e 0000006D M in1e equ mem 0000006E M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02610 var in1f 0000006E M in1f equ mem 0000006F M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02611 #endif 02612 var speed 0000006F M speed equ mem 00000070 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02613 var pspeed 00000070 M pspeed equ mem 00000071 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02614 var demo_mode 00000071 M demo_mode equ mem 00000072 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 02615 var psize 00000072 M psize equ mem 00000073 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 0000007B M pindex equ mem2 0000007A M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 02619 var_all_bank pindex1 ; pattern index 0000007A M pindex1 equ mem2 00000079 M mem2 = mem2 - 1 M if (mem >= mem2) MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 84 LOC OBJECT CODE LINE SOURCE TEXT VALUE M error 'Too much var space used' 02620 var_all_bank input 00000079 M input equ mem2 00000078 M mem2 = mem2 - 1 M if (mem >= mem2) M error 'Too much var space used' 02621 0461 02622 ptop 02623 02624 0461 23F1 02625 call setup_pattern_table 02626 0462 01FB 02627 clrf pindex 0463 01FA 02628 clrf pindex1 02629 02630 ; load the table type (Currently only 1 type) 0464 2406 02631 call get_next_pattern_entry 0465 00CE 02632 movwf tbltype 0466 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.) 0467 2406 02636 call get_next_pattern_entry 0468 00F0 02637 movwf pspeed 0469 0AF0 02638 incf pspeed,f ; adjust so 0 is fastest, not treated like speed 256 02639 02640 ; load the table size 046A 2406 02641 call get_next_pattern_entry ;4rgb 046B 00F2 02642 movwf psize ;4rgb 02643 046C 02644 ploop0 02645 ; 02646 ; Check for IR command in 02647 ; 046C 1C30 02648 btfss IR_in_good,0 046D 2C8A 02649 goto button_check 02650 046E 02651 blinkie_check 046E 3007 02652 movlw 0x07 ; blinkines use address 0x07 (Experimental) 046F 022A 02653 subwf address,w 0470 1D03 02654 btfss STATUS,Z 0471 2C75 02655 goto remote_check 02656 0472 2383 02657 call set_pattern 0473 01B0 02658 clrf IR_in_good 0474 2C61 02659 goto ptop 02660 0475 02661 remote_check 0475 08AA 02662 movf address,f ; remote giving "0" for address (TV)? 0476 1D03 02663 btfss STATUS,Z 0477 2C8A 02664 goto button_check 02665 0478 3020 02666 movlw 0x20 ; remote curser right (pattern ++) 0479 0229 02667 subwf command,w MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 85 LOC OBJECT CODE LINE SOURCE TEXT VALUE 047A 1903 02668 btfsc STATUS,Z 047B 236E 02669 call next_pattern 02670 047C 3021 02671 movlw 0x21 ; remote curser left (pattern --) 047D 0229 02672 subwf command,w 047E 1903 02673 btfsc STATUS,Z 047F 2378 02674 call past_pattern 02675 0480 3000 02676 movlw 0x00 ; remote "0" key (pattern = 0) 0481 0229 02677 subwf command,w 0482 1903 02678 btfsc STATUS,Z 0483 01CD 02679 clrf pattern 02680 0484 300C 02681 movlw 0x0c ; remote on/off key (togle demo mode!) 0485 0229 02682 subwf command,w 0486 1903 02683 btfsc STATUS,Z 0487 2453 02684 call toggle_demo 02685 0488 01B0 02686 clrf IR_in_good 0489 2C61 02687 goto ptop 02688 048A 02689 button_check 02690 ; ploop1 02691 048A 082D 02692 movfw button ; if any putton pressed show pattern id 048B 1903 02693 btfsc STATUS,Z 048C 2CA0 02694 goto ploop2 02695 048D 2397 02696 call display_pattern_id 048E 2397 02697 call display_pattern_id 02698 048F 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 048F 3003 02715 movlw 0x03 ; if both buttons pressed 0490 022D 02716 subwf button,w 0491 1903 02717 btfsc STATUS,Z 0492 2453 02718 call toggle_demo 02719 #endif 02720 #ifdef C12 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 86 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02721 movlw 0x03 ; if both buttons pressed 02722 subwf button,w 02723 btfsc STATUS,Z 02724 call toggle_demo 02725 #endif 02726 02727 0493 182D 02728 btfsc button,0 ; if button 3 pressed inc pattern 0494 2C98 02729 goto ploop1up 02730 0495 18AD 02731 btfsc button,1 ; if button 4 pressed dec pattern 0496 2C9C 02732 goto ploop1down 02733 0497 2C61 02734 goto ptop 02735 0498 02736 ploop1up 0498 236E 02737 call next_pattern 0499 2397 02738 call display_pattern_id 049A 2397 02739 call display_pattern_id 049B 2C8F 02740 goto ploop1a 02741 049C 02742 ploop1down 049C 2378 02743 call past_pattern 049D 2397 02744 call display_pattern_id 049E 2397 02745 call display_pattern_id 049F 2C8F 02746 goto ploop1a 04A0 02747 ploop2 02748 02749 #ifdef PATTERN1 02750 movlw 0x01 ; pattern1 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 87 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 88 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04A0 300C 02827 movlw 0x0C ; pattern12 04A1 024E 02828 subwf tbltype,w 04A2 1903 02829 btfsc STATUS,Z 04A3 24E1 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 89 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 04A4 3016 02907 movlw 0x16 ; pattern22 04A5 024E 02908 subwf tbltype,w 04A6 3004 008A 02909 pageselw table_type_22 04A8 1903 02910 btfsc STATUS,Z 04A9 24F2 02911 call table_type_22 04AA 3004 008A 02912 pageselw pattern_driver 02913 #endif 02914 02915 #ifdef PATTERN23 02916 movlw 0x17 ; pattern23 02917 subwf tbltype,w 02918 pageselw table_type_23 02919 btfsc STATUS,Z 02920 call table_type_23 02921 pageselw pattern_driver 02922 #endif 02923 02924 #ifdef PATTERN24 04AC 3018 02925 movlw 0x18 ; pattern24 04AD 024E 02926 subwf tbltype,w 04AE 3005 008A 02927 pageselw table_type_24 04B0 1903 02928 btfsc STATUS,Z 04B1 2512 02929 call table_type_24 04B2 3004 008A 02930 pageselw pattern_driver 02931 #endif 02932 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 90 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02933 #ifdef PATTERN25 04B4 3019 02934 movlw 0x19 ; pattern25 04B5 024E 02935 subwf tbltype,w 04B6 3005 008A 02936 pageselw table_type_25 04B8 1903 02937 btfsc STATUS,Z 04B9 2524 02938 call table_type_25 04BA 3004 008A 02939 pageselw pattern_driver 02940 #endif 02941 02942 #ifdef PATTERN26 04BC 301A 02943 movlw 0x1a ; pattern26 04BD 024E 02944 subwf tbltype,w 04BE 3005 008A 02945 pageselw table_type_26 04C0 1903 02946 btfsc STATUS,Z 04C1 2D7E 02947 goto table_type_26 04C2 3004 008A 02948 pageselw pattern_driver 02949 #endif 02950 02951 #ifdef PATTERN27 02952 movlw 0x1b ; pattern27 02953 subwf tbltype,w 02954 pageselw table_type_27 02955 btfsc STATUS,Z 02956 goto table_type_27 02957 pageselw pattern_driver 02958 #endif 02959 04C4 02960 pattern_return 02961 02962 ; make sure we are not sending a IR signel 04C4 083D 02963 movf scount,w ; F22 04C5 3E00 02964 addlw 0 ; F23 04C6 1D03 02965 btfss STATUS,Z ; F24 04C7 2CD4 02966 goto ploop3 02967 02968 ; count down till net IR signel 04C8 1CA0 02969 btfss nextf,1 04C9 2CD4 02970 goto ploop3 02971 04CA 10A0 02972 bcf nextf,1 04CB 1C71 02973 btfss demo_mode,0 04CC 2CCF 02974 goto ploop2a 02975 04CD 236E 02976 call next_pattern 04CE 2C61 02977 goto ptop 02978 04CF 02979 ploop2a 02980 ; send an IR signel 02981 #ifdef ENABLE_IR 04CF 3007 02982 movlw 0x07 ; address 0x07 "Experimental" 04D0 00B5 02983 movwf out_address 04D1 0838 02984 movfw out_pattern 04D2 00B6 02985 movwf out_command ; copy out_pettern MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 91 LOC OBJECT CODE LINE SOURCE TEXT VALUE 02986 04D3 2322 02987 call rf_command_out 02988 #endif 02989 04D4 02990 ploop3 04D4 0BF2 02991 decfsz psize,f ;check for end of pattern (4rgb) 04D5 2C6C 02992 goto ploop0 02993 04D6 2C61 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 92 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 93 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 94 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 95 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 96 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 97 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 ;********************************************************************** 04D7 03326 gen_random 03327 ;********************************************************************** 03328 03329 var random 00000073 M random equ mem 00000074 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 03330 04D7 0D73 03331 RLF random,W 04D8 0D73 03332 RLF random,W 04D9 1A73 03333 BTFSC random,4 04DA 3A01 03334 XORLW 1 04DB 1AF3 03335 BTFSC random,5 04DC 3A01 03336 XORLW 1 04DD 19F3 03337 BTFSC random,3 04DE 3A01 03338 XORLW 1 04DF 00F3 03339 MOVWF random 04E0 0008 03340 return 03341 #endif 03342 03343 #ifdef PATTERN12 03344 ;********************************************************************** 04E1 03345 table_type_12 03346 ;********************************************************************** 03347 ; 03348 dupvar p12_count, b2l_out_hi 0000003E M p12_count equ b2l_out_hi 03349 04E1 304F 03350 movlw in0 ; shift down in1f->in0 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 98 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04E2 0084 03351 movwf FSR 04E3 1383 03352 bcf STATUS,IRP 03353 03354 #ifdef M8X16 04E4 3020 03355 movlw 0x20 03356 #else 03357 movlw 0x04 03358 #endif 03359 04E5 00BE 03360 movwf p12_count 03361 04E6 03362 p12_loop 04E6 24D7 03363 call gen_random 04E7 24D7 03364 call gen_random 04E8 24D7 03365 call gen_random 04E9 24D7 03366 call gen_random 04EA 24D7 03367 call gen_random 04EB 0080 03368 movwf INDF 04EC 0A84 03369 incf FSR,f 03370 04ED 0BBE 03371 decfsz p12_count,f 04EE 2CE6 03372 goto p12_loop 03373 04EF 0870 03374 movfw pspeed 04F0 260F 03375 call display_1bit 03376 04F1 0008 03377 return 03378 #endif ; PATTERN12 03379 03380 #ifdef PATTERN13 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 99 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 100 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 101 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 ;********************************************************************** 04F2 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 00000074 M fcount1 equ mem 00000075 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 03554 04F2 304F 03555 movlw in0 04F3 0084 03556 movwf FSR 04F4 1383 03557 bcf STATUS,IRP MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 102 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03558 04F5 3020 03559 movlw 0x20 04F6 00F4 03560 movwf fcount1 03561 04F7 03562 t22_loop 04F7 2406 03563 call get_next_pattern_entry 04F8 0080 03564 movwf INDF 04F9 0A84 03565 incf FSR,f 04FA 0BF4 03566 decfsz fcount1,f 04FB 2CF7 03567 goto t22_loop 03568 04FC 0870 03569 movfw pspeed 04FD 260F 03570 call display_1bit 04FE 0870 03571 movfw pspeed 04FF 260F 03572 call display_1bit 0500 0870 03573 movfw pspeed 0501 260F 03574 call display_1bit 0502 0870 03575 movfw pspeed 0503 260F 03576 call display_1bit 03577 0504 0008 03578 return 03579 #endif 03580 03581 #ifdef PATTERN23 03582 ;********************************************************************** 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 03593 var p2count 03594 03595 call get_next_pattern_entry 03596 movwf in0 03597 03598 call get_next_pattern_entry 03599 movwf in1 03600 03601 call get_next_pattern_entry 03602 movwf in2 03603 03604 call get_next_pattern_entry 03605 movwf in3 03606 03607 call get_next_pattern_entry 03608 movwf in4 03609 03610 call get_next_pattern_entry MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 103 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03611 movwf in5 03612 03613 movlw 0x30 03614 movwf p2count 03615 03616 p2loop 03617 movfw pspeed 03618 call display_1bit 03619 03620 decfsz p2count,f 03621 goto p2loop 03622 03623 return 03624 #endif 03625 03626 #ifdef M8X16 03627 ;********************************************************************** 0505 03628 shift_left 03629 ;********************************************************************** 03630 ; 03631 ; shift the in1f->in1e->in1d->....->in1->in0 03632 ; 03633 0505 304F 03634 movlw in0 ; shift down in1f->in0 0506 0084 03635 movwf FSR 0507 1383 03636 bcf STATUS,IRP 03637 0508 301F 03638 movlw 0x1f 0509 00F4 03639 movwf fcount1 03640 050A 03641 t23_loop 050A 0A84 03642 incf FSR,f 050B 0800 03643 movfw INDF ; get n 050C 0384 03644 decf FSR,f 050D 0080 03645 movwf INDF ; put n+1 050E 0A84 03646 incf FSR,f 03647 050F 0BF4 03648 decfsz fcount1,f 0510 2D0A 03649 goto t23_loop 03650 0511 0008 03651 return 03652 #endif 03653 03654 #ifdef PATTERN24 03655 ;********************************************************************** 0512 03656 table_type_24 03657 ;********************************************************************** 03658 ; 03659 ; 2 bytes 03660 ; 03661 ; shift_left 03662 ; load new in1f and inf 03663 ; display MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 104 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03664 ; 03665 0512 2505 03666 call shift_left 03667 0513 305E 03668 movlw inf ; load new inf 0514 0084 03669 movwf FSR 0515 2406 03670 call get_next_pattern_entry 0516 0080 03671 movwf INDF 03672 0517 306E 03673 movlw in1f ; load new in1f 0518 0084 03674 movwf FSR 0519 2406 03675 call get_next_pattern_entry 051A 0080 03676 movwf INDF 03677 051B 0870 03678 movfw pspeed ; display 051C 260F 03679 call display_1bit 051D 0870 03680 movfw pspeed 051E 260F 03681 call display_1bit 051F 0870 03682 movfw pspeed 0520 260F 03683 call display_1bit 0521 0870 03684 movfw pspeed 0522 260F 03685 call display_1bit 03686 0523 0008 03687 return 03688 #endif 03689 03690 #ifdef PATTERN25 03691 ;********************************************************************** 0524 03692 table_type_25 03693 ;********************************************************************** 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 0000003E M char_in equ b2l_out_hi 03706 dupvar char_color, b2l_out_low 0000003F M char_color equ b2l_out_low 03707 dupvar tentry, b2l_lcount 00000040 M tentry equ b2l_lcount 03708 dupvar char_words, b2l_in_red 00000041 M char_words equ 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 105 LOC OBJECT CODE LINE SOURCE TEXT VALUE 03713 ; 12 bit 12 bit 7 bit 9 bit 4 bit 03714 0524 2406 03715 call get_next_pattern_entry 03716 0525 00BE 03717 movwf char_in 0526 08BE 03718 movf char_in,f ; test for zero 03719 0527 3020 03720 movlw 0x20 ; color code? 0528 023E 03721 subwf char_in,w 03722 0529 1803 03723 btfsc STATUS,C 052A 2D2E 03724 goto skipt3 03725 052B 083E 03726 movf char_in,w ; get color, then pull next entry 052C 00BF 03727 movwf char_color 052D 2D7D 03728 goto p25_return 03729 052E 03730 skipt3 03731 ; char_in = char_in - 0x20 052E 3020 03732 movlw 0x20 052F 02BE 03733 subwf char_in,f 03734 03735 ; offset = chartabel 0530 304A 03736 movlw LOW chartable 0531 00F6 03737 movwf offset_low 0532 3017 03738 movlw HIGH chartable 0533 00F5 03739 movwf offset_hi 03740 03741 ; offset = offset + char_in <<1 0534 083E 03742 movf char_in,w 0535 1003 03743 bcf STATUS, C ; clear carry flag just in case 0536 0D3E 03744 rlf char_in,w 0537 07F6 03745 addwf offset_low, f 0538 1803 03746 btfsc STATUS,C ; check carry flag 0539 0AF5 03747 incf offset_hi,f 03748 03749 ; char_in << 2 ; if carry offset_hi++ 053A 1003 03750 bcf STATUS, C ; clear carry flag just in case 053B 0DBE 03751 rlf char_in, f 053C 0DBE 03752 rlf char_in, f 053D 1803 03753 btfsc STATUS,C ; check carry flag 053E 0AF5 03754 incf offset_hi,f 03755 03756 ; offset = offset + char_in 053F 083E 03757 movf char_in,w ; offset = offset + char_in 0540 07F6 03758 addwf offset_low, f 0541 1803 03759 btfsc STATUS,C ; check carry flag 0542 0AF5 03760 incf offset_hi,f 03761 0543 138B 03762 bcf INTCON, GIE ; disable INTs 0544 2714 03763 call jump_address 0545 00C1 03764 movwf char_words 03765 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 106 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0546 084B 03766 movf pclath_save,w 0547 008A 03767 movwf PCLATH 0548 178B 03768 bsf INTCON, GIE ; enable INTs 03769 03770 ; offset = offset + 1 0549 3001 03771 movlw 1 054A 07F6 03772 addwf offset_low, f 054B 1803 03773 btfsc STATUS,C ; check carry flag 054C 0AF5 03774 incf offset_hi,f 03775 054D 03776 p25_looper 03777 054D 138B 03778 bcf INTCON, GIE ; disable INTs 054E 2714 03779 call jump_address 054F 00C0 03780 movwf tentry 03781 0550 084B 03782 movf pclath_save,w 0551 008A 03783 movwf PCLATH 0552 178B 03784 bsf INTCON, GIE ; enable INTs 03785 03786 ; ------------------- 0553 2505 03787 call shift_left 03788 0554 0840 03789 movf tentry, w 0555 00EE 03790 movwf in1f 03791 0556 0840 03792 movf tentry, w 0557 00DE 03793 movwf inf 03794 0558 1C3F 03795 btfss char_color,0 ; color adjust 0559 01EE 03796 clrf in1f 03797 055A 1D3F 03798 btfss char_color,2 055B 01DE 03799 clrf inf 03800 055C 18BF 03801 btfsc char_color,1 ; color adjust 055D 09EE 03802 comf in1f,f 03803 055E 19BF 03804 btfsc char_color,3 055F 09DE 03805 comf inf,f 03806 03807 ; ------------------ 03808 03809 ; offset = offset + 1 0560 3001 03810 movlw 1 0561 07F6 03811 addwf offset_low, f 0562 1803 03812 btfsc STATUS,C ; check carry flag 0563 0AF5 03813 incf offset_hi,f 03814 0564 0870 03815 movfw pspeed ; display 0565 260F 03816 call display_1bit 0566 0870 03817 movfw pspeed 0567 260F 03818 call display_1bit MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 107 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0568 0870 03819 movfw pspeed 0569 260F 03820 call display_1bit 056A 0870 03821 movfw pspeed 056B 260F 03822 call display_1bit 03823 056C 0BC1 03824 decfsz char_words,f 056D 2D4D 03825 goto p25_looper 03826 03827 ; add a blank line after the char and display (spacing) 056E 2505 03828 call shift_left 056F 01EE 03829 clrf in1f 0570 01DE 03830 clrf inf 03831 0571 18BF 03832 btfsc char_color,1 ; color adjust 0572 09EE 03833 comf in1f,f 03834 0573 19BF 03835 btfsc char_color,3 0574 09DE 03836 comf inf,f 03837 ;-- 03838 0575 0870 03839 movfw pspeed ; display 0576 260F 03840 call display_1bit 0577 0870 03841 movfw pspeed 0578 260F 03842 call display_1bit 0579 0870 03843 movfw pspeed 057A 260F 03844 call display_1bit 057B 0870 03845 movfw pspeed 057C 260F 03846 call display_1bit 03847 057D 03848 p25_return 057D 0008 03849 return 03850 03851 #endif 03852 03853 #ifdef PATTERN26 03854 #include "pattern_26.asm" 00001 ;********************************************************************** 057E 00002 table_type_26 ; 256 Led fader 00003 ;********************************************************************** 00004 057E 00EF 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 temp_in,b2l_out_hi 0000003E M temp_in equ b2l_out_hi 00012 dupvar p26_loop, b2l_out_low 0000003F M p26_loop equ b2l_out_low 00013 00014 ; load up 32 inxx vars 057F 304F 00015 movlw in0 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 108 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0580 0084 00016 movwf FSR 0581 1383 00017 bcf STATUS,IRP 00018 0582 3020 00019 movlw 0x20 0583 00BF 00020 movwf p26_loop 00021 0584 00022 t26_loop1 0584 2406 00023 call get_next_pattern_entry 0585 0080 00024 movwf INDF 0586 0A84 00025 incf FSR,f 0587 0BBF 00026 decfsz p26_loop,f 0588 2D84 00027 goto t26_loop1 00028 00029 ; hardcode count to 64 0589 3064 00030 movlw 0x64 058A 00BF 00031 movwf p26_loop 00032 058B 00033 t26_loop2 00034 00035 ; process page 1 (0x20) Led_Gxx vars 058B 30B0 00036 movlw (Led_G00 & 0xff) 058C 0084 00037 movwf FSR 058D 1383 00038 bcf STATUS,7 00039 058E 084F 00040 movfw in0 058F 25DD 00041 call p26_d2b_8bits 0590 0850 00042 movfw in1 0591 25DD 00043 call p26_d2b_8bits 0592 0851 00044 movfw in2 0593 25DD 00045 call p26_d2b_8bits 0594 0852 00046 movfw in3 0595 25DD 00047 call p26_d2b_8bits 00048 00049 ; process page 2 (0x60) Led_Gxx vars 0596 3010 00050 movlw (Led_G40 & 0xff) 0597 0084 00051 movwf FSR 0598 1783 00052 bsf STATUS,7 00053 0599 0853 00054 movfw in4 059A 25DD 00055 call p26_d2b_8bits 059B 0854 00056 movfw in5 059C 25DD 00057 call p26_d2b_8bits 059D 0855 00058 movfw in6 059E 25DD 00059 call p26_d2b_8bits 059F 0856 00060 movfw in7 05A0 25DD 00061 call p26_d2b_8bits 05A1 0857 00062 movfw in8 05A2 25DD 00063 call p26_d2b_8bits 05A3 0858 00064 movfw in9 05A4 25DD 00065 call p26_d2b_8bits 05A5 0859 00066 movfw ina 05A6 25DD 00067 call p26_d2b_8bits 05A7 085A 00068 movfw inb MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 109 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05A8 25DD 00069 call p26_d2b_8bits 05A9 085B 00070 movfw inc 05AA 25DD 00071 call p26_d2b_8bits 05AB 085C 00072 movfw ind 05AC 25DD 00073 call p26_d2b_8bits 05AD 085D 00074 movfw ine 05AE 25DD 00075 call p26_d2b_8bits 05AF 085E 00076 movfw inf 05B0 25DD 00077 call p26_d2b_8bits 00078 00079 ; process page 1 (0x20) Led_Rxx vars 05B1 30D0 00080 movlw (Led_R00 & 0xff) 05B2 0084 00081 movwf FSR 05B3 1383 00082 bcf STATUS,7 00083 05B4 085F 00084 movfw in10 05B5 25DD 00085 call p26_d2b_8bits 05B6 0860 00086 movfw in11 05B7 25DD 00087 call p26_d2b_8bits 05B8 0861 00088 movfw in12 05B9 25DD 00089 call p26_d2b_8bits 05BA 0862 00090 movfw in13 05BB 25DD 00091 call p26_d2b_8bits 00092 00093 00094 00095 ; process page 3 (0x60) Led_Rxx vars 05BC 3090 00096 movlw (Led_R40 & 0xff) 05BD 0084 00097 movwf FSR 05BE 1783 00098 bsf STATUS,7 00099 05BF 0863 00100 movfw in14 05C0 25DD 00101 call p26_d2b_8bits 05C1 0864 00102 movfw in15 05C2 25DD 00103 call p26_d2b_8bits 05C3 0865 00104 movfw in16 05C4 25DD 00105 call p26_d2b_8bits 05C5 0866 00106 movfw in17 05C6 25DD 00107 call p26_d2b_8bits 05C7 0867 00108 movfw in18 05C8 25DD 00109 call p26_d2b_8bits 05C9 0868 00110 movfw in19 05CA 25DD 00111 call p26_d2b_8bits 05CB 0869 00112 movfw in1a 05CC 25DD 00113 call p26_d2b_8bits 05CD 086A 00114 movfw in1b 05CE 25DD 00115 call p26_d2b_8bits 05CF 086B 00116 movfw in1c 05D0 25DD 00117 call p26_d2b_8bits 05D1 086C 00118 movfw in1d 05D2 25DD 00119 call p26_d2b_8bits 05D3 086D 00120 movfw in1e 05D4 25DD 00121 call p26_d2b_8bits MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 110 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05D5 086E 00122 movfw in1f 05D6 25DD 00123 call p26_d2b_8bits 00124 00125 05D7 086F 00126 movf speed,w 05D8 2390 00127 call strobe_delay 00128 05D9 0BBF 00129 decfsz p26_loop,f 05DA 2D8B 00130 goto t26_loop2 00131 05DB 1383 00132 bcf STATUS,7 05DC 2CC4 00133 goto pattern_return 00134 00135 ;********************************************************************** 05DD 00136 p26_d2b_8bits 00137 ;********************************************************************** 00138 05DD 00BE 00139 movwf temp_in 00140 05DE 1BBE 00141 btfsc temp_in,7 05DF 2607 00142 call p26_led_up 05E0 1FBE 00143 btfss temp_in,7 05E1 260B 00144 call p26_led_down 00145 05E2 0A84 00146 incf FSR,f 05E3 1B3E 00147 btfsc temp_in,6 05E4 2607 00148 call p26_led_up 05E5 1F3E 00149 btfss temp_in,6 05E6 260B 00150 call p26_led_down 00151 05E7 0A84 00152 incf FSR,f 05E8 1ABE 00153 btfsc temp_in,5 05E9 2607 00154 call p26_led_up 05EA 1EBE 00155 btfss temp_in,5 05EB 260B 00156 call p26_led_down 00157 05EC 0A84 00158 incf FSR,f 05ED 1A3E 00159 btfsc temp_in,4 05EE 2607 00160 call p26_led_up 05EF 1E3E 00161 btfss temp_in,4 05F0 260B 00162 call p26_led_down 00163 05F1 0A84 00164 incf FSR,f 05F2 19BE 00165 btfsc temp_in,3 05F3 2607 00166 call p26_led_up 05F4 1DBE 00167 btfss temp_in,3 05F5 260B 00168 call p26_led_down 00169 05F6 0A84 00170 incf FSR,f 05F7 193E 00171 btfsc temp_in,2 05F8 2607 00172 call p26_led_up 05F9 1D3E 00173 btfss temp_in,2 05FA 260B 00174 call p26_led_down MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 111 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00175 05FB 0A84 00176 incf FSR,f 05FC 18BE 00177 btfsc temp_in,1 05FD 2607 00178 call p26_led_up 05FE 1CBE 00179 btfss temp_in,1 05FF 260B 00180 call p26_led_down 00181 0600 0A84 00182 incf FSR,f 0601 183E 00183 btfsc temp_in,0 0602 2607 00184 call p26_led_up 0603 1C3E 00185 btfss temp_in,0 0604 260B 00186 call p26_led_down 00187 0605 0A84 00188 incf FSR,f 0606 0008 00189 return 00190 00191 00192 ;********************************************************************** 0607 00193 p26_led_up 00194 ;********************************************************************** 00195 0607 0A80 00196 incf INDF,f 0608 1903 00197 btfsc STATUS,Z 0609 0980 00198 comf INDF,f 060A 0008 00199 return 00200 00201 ;********************************************************************** 060B 00202 p26_led_down 00203 ;********************************************************************** 00204 060B 0880 00205 movf INDF,f 060C 1D03 00206 btfss STATUS,Z 060D 0380 00207 decf INDF,f 060E 0008 00208 return 00209 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 112 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 ;********************************************************************** 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 113 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 114 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 115 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 116 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 117 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 ;********************************************************************** 060F 04168 display_1bit ; 256 Led 16x8x2 matrix 04169 ;********************************************************************** 04170 060F 00EF 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 0610 30B0 04179 movlw (Led_G00 & 0xff) 0611 0084 04180 movwf FSR 0612 1383 04181 bcf STATUS,7 04182 0613 084F 04183 movfw in0 0614 2660 04184 call d2b_8bits 0615 0850 04185 movfw in1 0616 2660 04186 call d2b_8bits 0617 0851 04187 movfw in2 0618 2660 04188 call d2b_8bits 0619 0852 04189 movfw in3 061A 2660 04190 call d2b_8bits MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 118 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04191 04192 ; process page 2 (0x60) Led_Gxx vars 061B 3010 04193 movlw (Led_G40 & 0xff) 061C 0084 04194 movwf FSR 061D 1783 04195 bsf STATUS,7 04196 061E 0853 04197 movfw in4 061F 2660 04198 call d2b_8bits 0620 0854 04199 movfw in5 0621 2660 04200 call d2b_8bits 0622 0855 04201 movfw in6 0623 2660 04202 call d2b_8bits 0624 0856 04203 movfw in7 0625 2660 04204 call d2b_8bits 0626 0857 04205 movfw in8 0627 2660 04206 call d2b_8bits 0628 0858 04207 movfw in9 0629 2660 04208 call d2b_8bits 062A 0859 04209 movfw ina 062B 2660 04210 call d2b_8bits 062C 085A 04211 movfw inb 062D 2660 04212 call d2b_8bits 062E 085B 04213 movfw inc 062F 2660 04214 call d2b_8bits 0630 085C 04215 movfw ind 0631 2660 04216 call d2b_8bits 0632 085D 04217 movfw ine 0633 2660 04218 call d2b_8bits 0634 085E 04219 movfw inf 0635 2660 04220 call d2b_8bits 04221 04222 ; process page 1 (0x20) Led_Rxx vars 0636 30D0 04223 movlw (Led_R00 & 0xff) 0637 0084 04224 movwf FSR 0638 1383 04225 bcf STATUS,7 04226 0639 085F 04227 movfw in10 063A 2660 04228 call d2b_8bits 063B 0860 04229 movfw in11 063C 2660 04230 call d2b_8bits 063D 0861 04231 movfw in12 063E 2660 04232 call d2b_8bits 063F 0862 04233 movfw in13 0640 2660 04234 call d2b_8bits 04235 04236 04237 04238 ; process page 3 (0x60) Led_Rxx vars 0641 3090 04239 movlw (Led_R40 & 0xff) 0642 0084 04240 movwf FSR 0643 1783 04241 bsf STATUS,7 04242 0644 0863 04243 movfw in14 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 119 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0645 2660 04244 call d2b_8bits 0646 0864 04245 movfw in15 0647 2660 04246 call d2b_8bits 0648 0865 04247 movfw in16 0649 2660 04248 call d2b_8bits 064A 0866 04249 movfw in17 064B 2660 04250 call d2b_8bits 064C 0867 04251 movfw in18 064D 2660 04252 call d2b_8bits 064E 0868 04253 movfw in19 064F 2660 04254 call d2b_8bits 0650 0869 04255 movfw in1a 0651 2660 04256 call d2b_8bits 0652 086A 04257 movfw in1b 0653 2660 04258 call d2b_8bits 0654 086B 04259 movfw in1c 0655 2660 04260 call d2b_8bits 0656 086C 04261 movfw in1d 0657 2660 04262 call d2b_8bits 0658 086D 04263 movfw in1e 0659 2660 04264 call d2b_8bits 065A 086E 04265 movfw in1f 065B 2660 04266 call d2b_8bits 04267 04268 065C 086F 04269 movf speed,w 065D 2390 04270 call strobe_delay 04271 065E 1383 04272 bcf STATUS,7 065F 0008 04273 return 04274 04275 ;********************************************************************** 0660 04276 d2b_8bits 04277 ;********************************************************************** 04278 0660 00F4 04279 movwf fcount1 04280 0661 0180 04281 clrf INDF 0662 1BF4 04282 btfsc fcount1,7 0663 0980 04283 comf INDF,f 04284 0664 0A84 04285 incf FSR,f 0665 0180 04286 clrf INDF 0666 1B74 04287 btfsc fcount1,6 0667 0980 04288 comf INDF,f 04289 0668 0A84 04290 incf FSR,f 0669 0180 04291 clrf INDF 066A 1AF4 04292 btfsc fcount1,5 066B 0980 04293 comf INDF,f 04294 066C 0A84 04295 incf FSR,f 066D 0180 04296 clrf INDF MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 120 LOC OBJECT CODE LINE SOURCE TEXT VALUE 066E 1A74 04297 btfsc fcount1,4 066F 0980 04298 comf INDF,f 04299 0670 0A84 04300 incf FSR,f 0671 0180 04301 clrf INDF 0672 19F4 04302 btfsc fcount1,3 0673 0980 04303 comf INDF,f 04304 0674 0A84 04305 incf FSR,f 0675 0180 04306 clrf INDF 0676 1974 04307 btfsc fcount1,2 0677 0980 04308 comf INDF,f 04309 0678 0A84 04310 incf FSR,f 0679 0180 04311 clrf INDF 067A 18F4 04312 btfsc fcount1,1 067B 0980 04313 comf INDF,f 04314 067C 0A84 04315 incf FSR,f 067D 0180 04316 clrf INDF 067E 1874 04317 btfsc fcount1,0 067F 0980 04318 comf INDF,f 04319 0680 0A84 04320 incf FSR,f 0681 0008 04321 return 04322 04323 #endif 04324 04325 #ifdef DISPLAY_1BIT_H 04326 #include display_1bit_h.asm 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 121 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 122 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 123 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 124 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 ;********************************************************************** MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 125 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 04586 04587 return 04588 #endif 04589 04590 ;********************************************************************** 04591 ; IR Tester 04592 ;********************************************************************** 0682 04593 IR_Tester 0682 04594 itop 0682 3002 04595 movlw 0x02 0683 0226 04596 subwf instate,w 0684 1C03 04597 btfss STATUS,C 0685 0103 04598 clrw 0686 00CF 04599 movwf in0 04600 0687 3000 04601 movlw 0x00 0688 00D0 04602 movwf in1 04603 0689 3001 04604 movlw 0x01 068A 260F 04605 call display_1bit 04606 04607 ; 04608 ; Check for push button 04609 ; 068B 04610 ibutton 068B 082D 04611 movf button,w 068C 1903 04612 btfsc STATUS,Z 068D 2EA0 04613 goto iloop1 068E 01A7 04614 clrf max_instate MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 126 LOC OBJECT CODE LINE SOURCE TEXT VALUE 068F 01A6 04615 clrf instate 04616 0690 083D 04617 movf scount,w ; if sending an IR command ignore button 0691 3E00 04618 addlw 0 ; not sure if needed 0692 1D03 04619 btfss STATUS,Z 0693 2E8B 04620 goto ibutton 04621 0694 082D 04622 movf button,w ; 2st 8 bits are the buttons 0695 00D0 04623 movwf in1 0696 01CF 04624 clrf in0 ; next 8 are zero 04625 ; movlw 0x80 04626 ; movwf in2 ; led 17 is on 04627 04628 #ifdef M8X16 0697 082D 04629 movfw button 0698 00D2 04630 movwf in3 04631 #endif 04632 0699 3001 04633 movlw 0x01 069A 260F 04634 call display_1bit 04635 04636 ; send an IR signel 069B 01B5 04637 clrf out_address ; address 0x00 "TV remote" 04638 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 127 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 069C 04687 send_on_off 069C 300C 04688 movlw 0x0c 069D 00B6 04689 movwf out_command ; code 0x0c (on/off) 069E 2322 04690 call rf_command_out 069F 2E8B 04691 goto ibutton 04692 04693 04694 ; 04695 ; Check for IR Command 04696 ; 06A0 04697 iloop1 06A0 1C30 04698 btfss IR_in_good,0 06A1 2E82 04699 goto itop 06A2 01B0 04700 clrf IR_in_good 04701 04702 ; flash all LEDs Red 06A3 30F0 04703 movlw 0xF0 06A4 00CF 04704 movwf in0 06A5 01D0 04705 clrf in1 04706 06A6 307F 04707 movlw 0x7f 06A7 260F 04708 call display_1bit 04709 04710 ; flash all LEDs off 06A8 01CF 04711 clrf in0 06A9 01D0 04712 clrf in1 04713 06AA 303F 04714 movlw 0x3f 06AB 260F 04715 call display_1bit 04716 04717 ; flash all LEDs Red 06AC 30F0 04718 movlw 0xF0 06AD 00CF 04719 movwf in0 06AE 01D0 04720 clrf in1 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 128 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04721 06AF 307F 04722 movlw 0x7f 06B0 260F 04723 call display_1bit 04724 04725 ; display command and address 06B1 0829 04726 movf command,w 06B2 00CF 04727 movwf in0 06B3 082A 04728 movf address,w 06B4 00D0 04729 movwf in1 04730 06B5 30FF 04731 movlw 0xff 06B6 260F 04732 call display_1bit 06B7 30FF 04733 movlw 0xff 06B8 260F 04734 call display_1bit 06B9 01A7 04735 clrf max_instate 06BA 01A6 04736 clrf instate 04737 06BB 2E82 04738 goto itop 04739 04740 #ifdef M3X3 04741 ;********************************************************************** 04742 Dice 04743 ;********************************************************************** 04744 var temp 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 129 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 130 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 ; MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 131 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04880 ;********************************************************************** 06BC 04881 main 04882 ;********************************************************************** 06BC 0185 04883 clrf PORTA 06BD 0181 04884 clrf TMR0 06BE 01CD 04885 clrf pattern 04886 ; movlw 0x05 04887 ; movwf pattern 06BF 01BD 04888 clrf scount 06C0 01AB 04889 clrf toggle 06C1 01AA 04890 clrf address 06C2 01A9 04891 clrf command 06C3 01AC 04892 clrf IR_lhalf 06C4 01A6 04893 clrf instate 06C5 01A7 04894 clrf max_instate 06C6 01B0 04895 clrf IR_in_good 06C7 01A1 04896 clrf dcycle 06C8 01A2 04897 clrf count1 06C9 01A3 04898 clrf count2 06CA 01AD 04899 clrf button 04900 #ifdef PATTERN2 04901 clrf delay1 04902 clrf fad 04903 clrf color 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 06CB 1683 1303 04920 BANKSEL OSCCON 04921 #ifdef __16F886 06CD 3071 04922 movlw b'01110001' ;switch to 8 MHz clock 04923 #else 04924 movlw b'01110000' ;switch to 8 MHz clock 04925 #endif 06CE 048F 04926 iorwf OSCCON,f 04927 04928 #ifdef __16F886 06CF 1683 1703 04929 BANKSEL ANSEL 06D1 0188 04930 clrf ANSEL ;set pins to digital 06D2 0189 04931 clrf ANSELH ;set pins to digital 04932 #else MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 132 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04933 BANKSEL ANSEL 04934 clrf ANSEL ;set pins to digital 04935 #endif 04936 04937 06D3 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 ; |||||||| 06D5 3082 04948 movlw b'10000010' 06D6 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 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. 04976 BANKSEL TRISC 04977 movlw b'11100000' 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 133 LOC OBJECT CODE LINE SOURCE TEXT VALUE 04986 ; C0,C5,C6,C7 - strobe select output 06D7 1683 1303 04987 BANKSEL TRISC 06D9 301C 04988 movlw b'00011100' 06DA 0087 04989 movwf TRISC ; C7,C6,C5,C1,C0 output 06DB 0185 04990 clrf TRISA ; all A output 06DC 0186 04991 clrf TRISB ; all B output 06DD 3008 04992 movlw b'00001000' 06DE 0089 04993 movwf TRISE ; E3 input 04994 #endif 04995 04996 06DF 1283 1303 04997 BANKSEL button 06E1 01AD 04998 clrf button 04999 05000 #ifdef RANDOM 06E2 301D 05001 movlw 0x1D 06E3 00F3 05002 movwf random 05003 #endif 05004 05005 ; enable timer0 interupt 06E4 168B 05006 bsf INTCON,T0IE 06E5 178B 05007 bsf INTCON,GIE 05008 06E6 05009 loop_ddf 05010 05011 05012 ; flash all LEDs on This kills some time, allowing us to sample the button and IR-Rx 05013 #ifdef M8X16 06E6 304F 05014 movlw in0 06E7 0084 05015 movwf FSR 06E8 3020 05016 movlw 0x20 06E9 00F4 05017 movwf fcount1 05018 06EA 30FF 05019 movlw 0xFF 06EB 05020 loop_set_on 06EB 0080 05021 movwf INDF 06EC 0A84 05022 incf FSR,f 06ED 0BF4 05023 decfsz fcount1,f 06EE 2EEB 05024 goto loop_set_on 05025 #else 05026 movlw b'11111111' 05027 05028 movwf in0 05029 movwf in1 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 134 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 06EF 30FF 05084 movlw 0xff ; allways flash once 06F0 260F 05085 call display_1bit 06F1 30FF 05086 movlw 0xff 06F2 260F 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 135 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05091 call display_1bit 05092 movlw 0xff 05093 call display_1bit 05094 #endif 05095 05096 05097 ; Trun all the LEDs off 05098 #ifdef M8X16 06F3 304F 05099 movlw in0 06F4 0084 05100 movwf FSR 06F5 3020 05101 movlw 0x20 06F6 00F4 05102 movwf fcount1 05103 06F7 3000 05104 movlw 0x00 06F8 05105 loop_set_off 06F8 0080 05106 movwf INDF 06F9 0A84 05107 incf FSR,f 06FA 0BF4 05108 decfsz fcount1,f 06FB 2EF8 05109 goto loop_set_off 05110 #else 05111 clrf in0 05112 clrf in1 05113 clrf in2 05114 #ifdef C19 05115 clrf in3 05116 clrf in4 05117 #endif 05118 #ifdef SRGB 05119 clrf in3 05120 clrf in4 05121 clrf in5 05122 #endif 05123 #endif 06FC 30FF 05124 movlw 0xff 06FD 260F 05125 call display_1bit 06FE 30FF 05126 movlw 0xff 06FF 260F 05127 call display_1bit 0700 30FF 05128 movlw 0xff 0701 260F 05129 call display_1bit 05130 0702 244F 05131 call read_demo_mode 05132 0703 082D 05133 movfw button 0704 00D0 05134 movwf in1 0705 30FF 05135 movlw 0xff 0706 260F 05136 call display_1bit 0707 30FF 05137 movlw 0xff 0708 260F 05138 call display_1bit 05139 05140 05141 #ifndef M3X3 05142 ; if button pressed durring powerup run IR_Tester 05143 ; else run pattern driver MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 136 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05144 ; 0709 1C2D 05145 btfss button,0 070A 2C61 05146 goto pattern_driver 070B 2453 05147 call toggle_demo 05148 #ifdef ENABLE_IR 070C 2E82 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 ; 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 137 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 138 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05250 movlw MAX_MODE-1 05251 movwf mode 05252 mode_past_exit 05253 return 05254 05255 05256 #endif 05257 05258 ;********************************************************************** 070D 05259 table_lookup 05260 ;********************************************************************** 070D 0848 05261 movf tbl_hi,w 070E 008A 05262 movwf PCLATH 070F 087B 05263 movf pindex,w 0710 0749 05264 addwf tbl_low,w 0711 1803 05265 btfsc STATUS,0 ; check carry flag 0712 0A8A 05266 incf PCLATH,f 0713 0082 05267 movwf PCL 05268 05269 ;********************************************************************** 0714 05270 jump_address 05271 ;********************************************************************** 05272 ; Portability : clean 05273 ; 05274 var offset_hi 00000075 M offset_hi equ mem 00000076 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 05275 var offset_low 00000076 M offset_low equ mem 00000077 M mem = mem + 1 M if (mem >= mem2) M error 'Too much var space used' M endif 05276 0714 080A 05277 movf PCLATH,w 0715 00CB 05278 movwf pclath_save 0716 0875 05279 movf offset_hi,w 0717 008A 05280 movwf PCLATH 05281 0718 0876 05282 movf offset_low, w 0719 0082 05283 movwf PCL 05284 05285 05286 ;********************************************************************** 071A 05287 MasterTable 05288 ;********************************************************************** 05289 make_mtab NUM_TAB 0000 M local i = 0 M while i <= NUM_TAB 071A 3407 3440 M dt HIGH table0, LOW table0 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 139 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00000001 M i += 1 071C 3407 3453 M dt HIGH table1, LOW table1 00000002 M i += 1 071E 3407 3456 M dt HIGH table2, LOW table2 00000003 M i += 1 0720 3407 348F M dt HIGH table3, LOW table3 00000004 M i += 1 0722 3407 34C7 M dt HIGH table4, LOW table4 00000005 M i += 1 0724 3407 34F1 M dt HIGH table5, LOW table5 00000006 M i += 1 0726 3408 3409 M dt HIGH table6, LOW table6 00000007 M i += 1 0728 3408 3424 M dt HIGH table7, LOW table7 00000008 M i += 1 072A 3408 3465 M dt HIGH table8, LOW table8 00000009 M i += 1 072C 340E 3468 M dt HIGH table9, LOW table9 0000000A M i += 1 072E 3410 346B M dt HIGH table10, LOW table10 0000000B M i += 1 0730 3410 34AE M dt HIGH table11, LOW table11 0000000C M i += 1 0732 3411 3451 M dt HIGH table12, LOW table12 0000000D M i += 1 0734 3411 34D4 M dt HIGH table13, LOW table13 0000000E M i += 1 0736 3412 34D7 M dt HIGH table14, LOW table14 0000000F M i += 1 0738 3413 345A M dt HIGH table15, LOW table15 00000010 M i += 1 073A 3414 345D M dt HIGH table16, LOW table16 00000011 M i += 1 073C 3416 34A0 M dt HIGH table17, LOW table17 00000012 M i += 1 073E 3417 3403 M dt HIGH table18, LOW table18 00000013 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 140 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 141 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 142 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 143 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 144 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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] 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 145 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 146 LOC OBJECT CODE LINE SOURCE TEXT VALUE 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 05632 ORG 0x800 05633 #endif 05634 05635 #ifdef PATTERN27 05636 #include "pattern_27.asm" 05637 #endif 05638 05639 ; 05640 ; These are the pattern tables 05641 ; 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 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 147 LOC OBJECT CODE LINE SOURCE TEXT VALUE 05676 #ifdef C19 05677 #ifdef MONO 05678 #include 05679 #else 05680 #include 05681 #endif 05682 #endif 05683 05684 #ifdef M8X16 05685 #include 00001 ;********************************************************************** 00002 ; Copyright (C) 2009 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 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 ; DUCKON18 (Char table) 00023 ;********************************************************************** 00024 start_pattern 0x19 , 0xF M 0740 M table0 M if (0x19 == 1) || (0x19 == 6) || (0x19 == 0x15) M leng = (endpat0-$-3)/3 ;tbltype1,speed,length M else M if (0x19 == 3) || (0x19 == 0x0b) || (0x19 == 0x10) || (0x19 == 0x13) || (0x19 == 0x14)|| (0x19 == 0x18) M leng = (endpat0-$-3)/2 ;tbltype1,speed,length M else M if (0x19 == 9) || (0x19 == 0x0e) M leng =(endpat0-$-3)/5 ;tbltype1,speed,length M else M if (0x19 == 0x0a) M leng =(endpat0-$-3)/4 ;tbltype1,speed,length M else M if (0x19 == 0x0d) M leng =(endpat0-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x19 == 0x0f) || (0x19 == 0x12)|| (0x19 == 0x17)||(0x19 == 0x1b) MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 148 LOC OBJECT CODE LINE SOURCE TEXT VALUE M leng =(endpat0-$-3)/(6) ;tbltype1,speed,length M else M if (0x19 == 0x11) M leng = (endpat0-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x19 == 0x16) || (0x19 == 0x1a) M leng = (endpat0-$-3)/0x20 ;tbltype1,speed,length M else 00000010 M leng =(endpat0-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0740 3419 340F 3410 M dt 0x19,0xF,(leng) M else M de 0x19,0xF,(leng) M endif 0743 3405 00025 dt 0x05 ; color 1 &2 0744 3420 3420 3444 00026 Dt " D" 0747 3401 00027 dt 0x01 ; color 2 0748 3455 3443 344B 00028 DT "UCKON" 344F 344E 074D 3404 00029 dt 0x04 ; color 1 074E 3431 3438 3420 00030 dt "18 " 3420 3420 00031 end_pattern 0753 M endpat0 00000001 M patternc = patternc + 1 00032 00033 ;********************************************************************** 00034 ; DUCKON18 (Char table) 00035 ;********************************************************************** 00036 start_pattern 0x0c , 0x3F M 0753 M table1 M if (0x0c == 1) || (0x0c == 6) || (0x0c == 0x15) M leng = (endpat1-$-3)/3 ;tbltype1,speed,length M else M if (0x0c == 3) || (0x0c == 0x0b) || (0x0c == 0x10) || (0x0c == 0x13) || (0x0c == 0x14)|| (0x0c == 0x18) M leng = (endpat1-$-3)/2 ;tbltype1,speed,length M else M if (0x0c == 9) || (0x0c == 0x0e) M leng =(endpat1-$-3)/5 ;tbltype1,speed,length M else M if (0x0c == 0x0a) M leng =(endpat1-$-3)/4 ;tbltype1,speed,length MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 149 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (0x0c == 0x0d) M leng =(endpat1-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x0c == 0x0f) || (0x0c == 0x12)|| (0x0c == 0x17)||(0x0c == 0x1b) M leng =(endpat1-$-3)/(6) ;tbltype1,speed,length M else M if (0x0c == 0x11) M leng = (endpat1-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x0c == 0x16) || (0x0c == 0x1a) M leng = (endpat1-$-3)/0x20 ;tbltype1,speed,length M else 00000000 M leng =(endpat1-$-3) M endif M endif M endif M endif M endif M endif M endif M endif M expand M if ($ < 0x2100) 0753 340C 343F 3400 M dt 0x0c,0x3F,(leng) M else M de 0x0c,0x3F,(leng) M endif 00037 end_pattern 0756 M endpat1 00000002 M patternc = patternc + 1 00038 00039 ;********************************************************************** 00040 ; DUCKON 18 - A Duck Oddity June 12-14 2009 00041 ;********************************************************************** 00042 start_pattern 0x19 , 0xF M 0756 M table2 M if (0x19 == 1) || (0x19 == 6) || (0x19 == 0x15) M leng = (endpat2-$-3)/3 ;tbltype1,speed,length M else M if (0x19 == 3) || (0x19 == 0x0b) || (0x19 == 0x10) || (0x19 == 0x13) || (0x19 == 0x14)|| (0x19 == 0x18) M leng = (endpat2-$-3)/2 ;tbltype1,speed,length M else M if (0x19 == 9) || (0x19 == 0x0e) M leng =(endpat2-$-3)/5 ;tbltype1,speed,length M else M if (0x19 == 0x0a) M leng =(endpat2-$-3)/4 ;tbltype1,speed,length M else M if (0x19 == 0x0d) M leng =(endpat2-$-3)/(9+1) ;tbltype1,speed,length MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 150 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (0x19 == 0x0f) || (0x19 == 0x12)|| (0x19 == 0x17)||(0x19 == 0x1b) M leng =(endpat2-$-3)/(6) ;tbltype1,speed,length M else M if (0x19 == 0x11) M leng = (endpat2-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x19 == 0x16) || (0x19 == 0x1a) M leng = (endpat2-$-3)/0x20 ;tbltype1,speed,length M else 00000036 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) 0756 3419 340F 3436 M dt 0x19,0xF,(leng) M else M de 0x19,0xF,(leng) M endif 0759 3401 00043 Dt 0x01 075A 3420 3420 00044 Dt " " 075C 3444 3475 3463 00045 Dt "Duckon 18 - " 346B 346F 346E 3420 3431 3438 3420 342D 3420 0768 3405 00046 Dt 0x05 0769 3432 3430 3430 00047 Dt "2009 A Duck Oddity June 12-14 2009" 3439 3420 3441 3420 3444 3475 3463 346B 3420 344F 3464 3464 3469 3474 3479 3420 3420 3420 344A 3475 346E 3465 3420 3431 3432 342D 3431 3434 3420 3432 3430 3430 3439 078D 3420 3420 00048 Dt " " 00049 end_pattern 078F M endpat2 00000003 M patternc = patternc + 1 00050 00051 ;********************************************************************** 00052 ; I went to Duckon 19 and built this cool blinkie 00053 ;********************************************************************** 00054 start_pattern 0x19 , 0xF MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 151 LOC OBJECT CODE LINE SOURCE TEXT VALUE M 078F M table3 M if (0x19 == 1) || (0x19 == 6) || (0x19 == 0x15) M leng = (endpat3-$-3)/3 ;tbltype1,speed,length M else M if (0x19 == 3) || (0x19 == 0x0b) || (0x19 == 0x10) || (0x19 == 0x13) || (0x19 == 0x14)|| (0x19 == 0x18) M leng = (endpat3-$-3)/2 ;tbltype1,speed,length M else M if (0x19 == 9) || (0x19 == 0x0e) M leng =(endpat3-$-3)/5 ;tbltype1,speed,length M else M if (0x19 == 0x0a) M leng =(endpat3-$-3)/4 ;tbltype1,speed,length M else M if (0x19 == 0x0d) M leng =(endpat3-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x19 == 0x0f) || (0x19 == 0x12)|| (0x19 == 0x17)||(0x19 == 0x1b) M leng =(endpat3-$-3)/(6) ;tbltype1,speed,length M else M if (0x19 == 0x11) M leng = (endpat3-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x19 == 0x16) || (0x19 == 0x1a) M leng = (endpat3-$-3)/0x20 ;tbltype1,speed,length M else 00000035 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) 078F 3419 340F 3435 M dt 0x19,0xF,(leng) M else M de 0x19,0xF,(leng) M endif 0792 3404 00055 Dt 0x04 0793 3420 3420 3449 00056 Dt " I went to Duckon18 and built this " 3420 3477 3465 346E 3474 3420 3474 346F 3420 3444 3475 3463 346B 346F 346E 3431 3438 3420 3461 346E 3464 3420 3462 3475 3469 346C 3474 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 152 LOC OBJECT CODE LINE SOURCE TEXT VALUE 3420 3474 3468 3469 3473 3420 07B7 3405 00057 dt 0x05 07B8 3463 346F 346F 00058 Dt "cool " 346C 3420 07BD 3401 00059 dt 0x01 07BE 3462 346C 3469 00060 Dt "blinkie" 346E 346B 3469 3465 07C5 3420 3420 00061 Dt " " 00062 end_pattern 07C7 M endpat3 00000004 M patternc = patternc + 1 00063 00064 ;********************************************************************** 00065 ; so many blinkies, so little time 00066 ;********************************************************************** 00067 start_pattern 0x19 , 0xF M 07C7 M table4 M if (0x19 == 1) || (0x19 == 6) || (0x19 == 0x15) M leng = (endpat4-$-3)/3 ;tbltype1,speed,length M else M if (0x19 == 3) || (0x19 == 0x0b) || (0x19 == 0x10) || (0x19 == 0x13) || (0x19 == 0x14)|| (0x19 == 0x18) M leng = (endpat4-$-3)/2 ;tbltype1,speed,length M else M if (0x19 == 9) || (0x19 == 0x0e) M leng =(endpat4-$-3)/5 ;tbltype1,speed,length M else M if (0x19 == 0x0a) M leng =(endpat4-$-3)/4 ;tbltype1,speed,length M else M if (0x19 == 0x0d) M leng =(endpat4-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x19 == 0x0f) || (0x19 == 0x12)|| (0x19 == 0x17)||(0x19 == 0x1b) M leng =(endpat4-$-3)/(6) ;tbltype1,speed,length M else M if (0x19 == 0x11) M leng = (endpat4-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x19 == 0x16) || (0x19 == 0x1a) M leng = (endpat4-$-3)/0x20 ;tbltype1,speed,length M else 00000027 M leng =(endpat4-$-3) M endif M endif M endif M endif M endif M endif M endif MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 153 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif M expand M if ($ < 0x2100) 07C7 3419 340F 3427 M dt 0x19,0xF,(leng) M else M de 0x19,0xF,(leng) M endif 07CA 3401 00068 Dt 0x01 07CB 3420 3420 3473 00069 Dt " so many blinkies, " 346F 3420 346D 3461 346E 3479 3420 3462 346C 3469 346E 346B 3469 3465 3473 342C 3420 07DF 3404 00070 dt 0x04 07E0 3473 346F 3420 00071 Dt "so little time." 346C 3469 3474 3474 346C 3465 3420 3474 3469 346D 3465 342E 07EF 3420 3420 00072 Dt " " 00073 end_pattern 07F1 M endpat4 00000005 M patternc = patternc + 1 00074 00075 ;********************************************************************** 00076 ; www.2dkits.com 00077 ;********************************************************************** 00078 start_pattern 0x19 , 0xF M 07F1 M table5 M if (0x19 == 1) || (0x19 == 6) || (0x19 == 0x15) M leng = (endpat5-$-3)/3 ;tbltype1,speed,length M else M if (0x19 == 3) || (0x19 == 0x0b) || (0x19 == 0x10) || (0x19 == 0x13) || (0x19 == 0x14)|| (0x19 == 0x18) M leng = (endpat5-$-3)/2 ;tbltype1,speed,length M else M if (0x19 == 9) || (0x19 == 0x0e) M leng =(endpat5-$-3)/5 ;tbltype1,speed,length M else M if (0x19 == 0x0a) M leng =(endpat5-$-3)/4 ;tbltype1,speed,length M else M if (0x19 == 0x0d) M leng =(endpat5-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x19 == 0x0f) || (0x19 == 0x12)|| (0x19 == 0x17)||(0x19 == 0x1b) M leng =(endpat5-$-3)/(6) ;tbltype1,speed,length M else M if (0x19 == 0x11) M leng = (endpat5-$-3)/(9+4) ;tbltype1,speed,length MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 154 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (0x19 == 0x16) || (0x19 == 0x1a) M leng = (endpat5-$-3)/0x20 ;tbltype1,speed,length M else 00000015 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) 07F1 3419 340F 3415 M dt 0x19,0xF,(leng) M else M de 0x19,0xF,(leng) M endif 07F4 3401 00079 Dt 0x01 07F5 3420 3420 3477 00080 Dt " www." 3477 3477 342E 07FB 3404 00081 dt 0x04 07FC 3432 3464 346B 00082 dt "2dkits" 3469 3474 3473 0802 3401 00083 dt 0x01 0803 342E 3463 346F 00084 dt ".com" 346D 0807 3420 3420 00085 Dt " " 00086 end_pattern 0809 M endpat5 00000006 M patternc = patternc + 1 00087 00088 ;********************************************************************** 00089 ; Duckon18 BLinkies! 00090 ;********************************************************************** 00091 start_pattern 0x19 , 0xF M 0809 M table6 M if (0x19 == 1) || (0x19 == 6) || (0x19 == 0x15) M leng = (endpat6-$-3)/3 ;tbltype1,speed,length M else M if (0x19 == 3) || (0x19 == 0x0b) || (0x19 == 0x10) || (0x19 == 0x13) || (0x19 == 0x14)|| (0x19 == 0x18) M leng = (endpat6-$-3)/2 ;tbltype1,speed,length M else M if (0x19 == 9) || (0x19 == 0x0e) M leng =(endpat6-$-3)/5 ;tbltype1,speed,length M else M if (0x19 == 0x0a) M leng =(endpat6-$-3)/4 ;tbltype1,speed,length M else M if (0x19 == 0x0d) MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 155 LOC OBJECT CODE LINE SOURCE TEXT VALUE M leng =(endpat6-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x19 == 0x0f) || (0x19 == 0x12)|| (0x19 == 0x17)||(0x19 == 0x1b) M leng =(endpat6-$-3)/(6) ;tbltype1,speed,length M else M if (0x19 == 0x11) M leng = (endpat6-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x19 == 0x16) || (0x19 == 0x1a) M leng = (endpat6-$-3)/0x20 ;tbltype1,speed,length M else 00000018 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) 0809 3419 340F 3418 M dt 0x19,0xF,(leng) M else M de 0x19,0xF,(leng) M endif 080C 3401 00092 Dt 0x01 080D 3420 3420 3444 00093 Dt " Duckon18" 3475 3463 346B 346F 346E 3431 3438 0817 3404 00094 dt 0x04 0818 3420 3442 346C 00095 dt " Blinkies!" 3469 346E 346B 3469 3465 3473 3421 0822 3420 3420 00096 Dt " " 00097 end_pattern 0824 M endpat6 00000007 M patternc = patternc + 1 00098 00099 ;********************************************************************** 00100 ; F1 - walker 00101 ;********************************************************************** 00102 start_pattern 0x18 , 0xF M 0824 M table7 M if (0x18 == 1) || (0x18 == 6) || (0x18 == 0x15) M leng = (endpat7-$-3)/3 ;tbltype1,speed,length M else M if (0x18 == 3) || (0x18 == 0x0b) || (0x18 == 0x10) || (0x18 == 0x13) || (0x18 == 0x14)|| (0x18 == 0x18) 0000001F M leng = (endpat7-$-3)/2 ;tbltype1,speed,length MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 156 LOC OBJECT CODE LINE SOURCE TEXT VALUE M else M if (0x18 == 9) || (0x18 == 0x0e) M leng =(endpat7-$-3)/5 ;tbltype1,speed,length M else M if (0x18 == 0x0a) M leng =(endpat7-$-3)/4 ;tbltype1,speed,length M else M if (0x18 == 0x0d) M leng =(endpat7-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x18 == 0x0f) || (0x18 == 0x12)|| (0x18 == 0x17)||(0x18 == 0x1b) M leng =(endpat7-$-3)/(6) ;tbltype1,speed,length M else M if (0x18 == 0x11) M leng = (endpat7-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x18 == 0x16) || (0x18 == 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) 0824 3418 340F 341F M dt 0x18,0xF,(leng) M else M de 0x18,0xF,(leng) M endif 0827 3401 3400 00103 dt b'00000001',b'00000000' ;0 0829 3403 3400 00104 dt b'00000011',b'00000000' ;0 082B 3407 3400 00105 dt b'00000111',b'00000000' ;0 082D 340F 3400 00106 dt b'00001111',b'00000000' ;0 082F 341F 3400 00107 dt b'00011111',b'00000000' ;0 0831 343F 3400 00108 dt b'00111111',b'00000000' ;0 0833 347F 3400 00109 dt b'01111111',b'00000000' ;0 0835 34FF 3400 00110 dt b'11111111',b'00000000' ;0 0837 347F 3480 00111 dt b'01111111',b'10000000' ;0 0839 343F 34C0 00112 dt b'00111111',b'11000000' ;0 083B 341F 34E0 00113 dt b'00011111',b'11100000' ;0 083D 340F 34F0 00114 dt b'00001111',b'11110000' ;0 083F 3407 34F8 00115 dt b'00000111',b'11111000' ;0 0841 3403 34FC 00116 dt b'00000011',b'11111100' ;0 0843 3401 34FE 00117 dt b'00000001',b'11111110' ;0 0845 3400 34FF 00118 dt b'00000000',b'11111111' ;0 0847 3401 34FF 00119 dt b'00000001',b'11111111' ;0 0849 3403 34FF 00120 dt b'00000011',b'11111111' ;0 084B 3407 34FF 00121 dt b'00000111',b'11111111' ;0 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 157 LOC OBJECT CODE LINE SOURCE TEXT VALUE 084D 340F 34FF 00122 dt b'00001111',b'11111111' ;0 084F 341F 34FF 00123 dt b'00011111',b'11111111' ;0 0851 343F 34FF 00124 dt b'00111111',b'11111111' ;0 0853 347F 34FF 00125 dt b'01111111',b'11111111' ;0 0855 34FF 34FF 00126 dt b'11111111',b'11111111' ;0 0857 347F 347F 00127 dt b'01111111',b'01111111' ;0 0859 343F 343F 00128 dt b'00111111',b'00111111' ;0 085B 341F 341F 00129 dt b'00011111',b'00011111' ;0 085D 340F 340F 00130 dt b'00001111',b'00001111' ;0 085F 3407 3407 00131 dt b'00000111',b'00000111' ;0 0861 3403 3403 00132 dt b'00000011',b'00000011' ;0 0863 3401 3401 00133 dt b'00000001',b'00000001' ;0 00134 end_pattern 0865 M endpat7 00000008 M patternc = patternc + 1 00135 ;********************************************************************** 00136 00137 ;********************************************************************** 00138 ; DF1 - walker 00139 ;********************************************************************** 00140 start_pattern 0x16 , 0x1f M 0865 M table8 M if (0x16 == 1) || (0x16 == 6) || (0x16 == 0x15) M leng = (endpat8-$-3)/3 ;tbltype1,speed,length M else M if (0x16 == 3) || (0x16 == 0x0b) || (0x16 == 0x10) || (0x16 == 0x13) || (0x16 == 0x14)|| (0x16 == 0x18) M leng = (endpat8-$-3)/2 ;tbltype1,speed,length M else M if (0x16 == 9) || (0x16 == 0x0e) M leng =(endpat8-$-3)/5 ;tbltype1,speed,length M else M if (0x16 == 0x0a) M leng =(endpat8-$-3)/4 ;tbltype1,speed,length M else M if (0x16 == 0x0d) M leng =(endpat8-$-3)/(9+1) ;tbltype1,speed,length M else M if (0x16 == 0x0f) || (0x16 == 0x12)|| (0x16 == 0x17)||(0x16 == 0x1b) M leng =(endpat8-$-3)/(6) ;tbltype1,speed,length M else M if (0x16 == 0x11) M leng = (endpat8-$-3)/(9+4) ;tbltype1,speed,length M else M if (0x16 == 0x16) || (0x16 == 0x1a) 00000030 M leng = (endpat8-$-3)/0x20 ;tbltype1,speed,length M else M leng =(endpat8-$-3) M endif M endif M endif M endif MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 158 LOC OBJECT CODE LINE SOURCE TEXT VALUE M endif M endif M endif M endif M expand M if ($ < 0x2100) 0865 3416 341F 3430 M dt 0x16,0x1f,(leng) M else M de 0x16,0x1f,(leng) M endif 00141 00142 ;--- 0868 34FF 00143 dt b'11111111' ;0 0869 3400 00144 dt b'00000000' ;1 086A 3400 00145 dt b'00000000' ;2 086B 3400 00146 dt b'00000000' ;3 086C 3400 00147 dt b'00000000' ;4 086D 3400 00148 dt b'00000000' ;5 086E 3400 00149 dt b'00000000' ;6 086F 3400 00150 dt b'00000000' ;7 00151 0870 3400 00152 dt b'00000000' 0871 3400 00153 dt b'00000000' 0872 3400 00154 dt b'00000000' 0873 3400 00155 dt b'00000000' 0874 3400 00156 dt b'00000000' 0875 3400 00157 dt b'00000000' 0876 3400 00158 dt b'00000000' 0877 3400 00159 dt b'00000000' 00160 0878 3400 00161 dt b'00000000' 0879 3400 00162 dt b'00000000' 087A 3400 00163 dt b'00000000' 087B 3400 00164 dt b'00000000' 087C 3400 00165 dt b'00000000' 087D 3400 00166 dt b'00000000' 087E 3400 00167 dt b'00000000' 087F 3400 00168 dt b'00000000' 00169 0880 3400 00170 dt b'00000000' 0881 3400 00171 dt b'00000000' 0882 3400 00172 dt b'00000000' 0883 3400 00173 dt b'00000000' 0884 3400 00174 dt b'00000000' 0885 3400 00175 dt b'00000000' 0886 3400 00176 dt b'00000000' 0887 3400 00177 dt b'00000000' 00178 0888 3400 00179 dt b'00000000' ;0 0889 34FF 00180 dt b'11111111' ;1 088A 3400 00181 dt b'00000000' ;2 088B 3400 00182 dt b'00000000' ;3 088C 3400 00183 dt b'00000000' ;4 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 159 LOC OBJECT CODE LINE SOURCE TEXT VALUE 088D 3400 00184 dt b'00000000' ;5 088E 3400 00185 dt b'00000000' ;6 088F 3400 00186 dt b'00000000' ;7 00187 0890 3400 00188 dt b'00000000' 0891 3400 00189 dt b'00000000' 0892 3400 00190 dt b'00000000' 0893 3400 00191 dt b'00000000' 0894 3400 00192 dt b'00000000' 0895 3400 00193 dt b'00000000' 0896 3400 00194 dt b'00000000' 0897 3400 00195 dt b'00000000' 00196 0898 3400 00197 dt b'00000000' 0899 3400 00198 dt b'00000000' 089A 3400 00199 dt b'00000000' 089B 3400 00200 dt b'00000000' 089C 3400 00201 dt b'00000000' 089D 3400 00202 dt b'00000000' 089E 3400 00203 dt b'00000000' 089F 3400 00204 dt b'00000000' 00205 08A0 3400 00206 dt b'00000000' 08A1 3400 00207 dt b'00000000' 08A2 3400 00208 dt b'00000000' 08A3 3400 00209 dt b'00000000' 08A4 3400 00210 dt b'00000000' 08A5 3400 00211 dt b'00000000' 08A6 3400 00212 dt b'00000000' 08A7 3400 00213 dt b'00000000' 00214 08A8 3400 00215 dt b'00000000' ;0 08A9 3400 00216 dt b'00000000' ;1 08AA 34FF 00217 dt b'11111111' ;2 08AB 3400 00218 dt b'00000000' ;3 08AC 3400 00219 dt b'00000000' ;4 08AD 3400 00220 dt b'00000000' ;5 08AE 3400 00221 dt b'00000000' ;6 08AF 3400 00222 dt b'00000000' ;7 00223 08B0 3400 00224 dt b'00000000' 08B1 3400 00225 dt b'00000000' 08B2 3400 00226 dt b'00000000' 08B3 3400 00227 dt b'00000000' 08B4 3400 00228 dt b'00000000' 08B5 3400 00229 dt b'00000000' 08B6 3400 00230 dt b'00000000' 08B7 3400 00231 dt b'00000000' 00232 08B8 3400 00233 dt b'00000000' 08B9 3400 00234 dt b'00000000' 08BA 3400 00235 dt b'00000000' 08BB 3400 00236 dt b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 160 LOC OBJECT CODE LINE SOURCE TEXT VALUE 08BC 3400 00237 dt b'00000000' 08BD 3400 00238 dt b'00000000' 08BE 3400 00239 dt b'00000000' 08BF 3400 00240 dt b'00000000' 00241 08C0 3400 00242 dt b'00000000' 08C1 3400 00243 dt b'00000000' 08C2 3400 00244 dt b'00000000' 08C3 3400 00245 dt b'00000000' 08C4 3400 00246 dt b'00000000' 08C5 3400 00247 dt b'00000000' 08C6 3400 00248 dt b'00000000' 08C7 3400 00249 dt b'00000000' 00250 08C8 3400 00251 dt b'00000000' ;0 08C9 3400 00252 dt b'00000000' ;1 08CA 3400 00253 dt b'00000000' ;2 08CB 34FF 00254 dt b'11111111' ;3 08CC 3400 00255 dt b'00000000' ;4 08CD 3400 00256 dt b'00000000' ;5 08CE 3400 00257 dt b'00000000' ;6 08CF 3400 00258 dt b'00000000' ;7 00259 08D0 3400 00260 dt b'00000000' 08D1 3400 00261 dt b'00000000' 08D2 3400 00262 dt b'00000000' 08D3 3400 00263 dt b'00000000' 08D4 3400 00264 dt b'00000000' 08D5 3400 00265 dt b'00000000' 08D6 3400 00266 dt b'00000000' 08D7 3400 00267 dt b'00000000' 00268 08D8 3400 00269 dt b'00000000' 08D9 3400 00270 dt b'00000000' 08DA 3400 00271 dt b'00000000' 08DB 3400 00272 dt b'00000000' 08DC 3400 00273 dt b'00000000' 08DD 3400 00274 dt b'00000000' 08DE 3400 00275 dt b'00000000' 08DF 3400 00276 dt b'00000000' 00277 08E0 3400 00278 dt b'00000000' 08E1 3400 00279 dt b'00000000' 08E2 3400 00280 dt b'00000000' 08E3 3400 00281 dt b'00000000' 08E4 3400 00282 dt b'00000000' 08E5 3400 00283 dt b'00000000' 08E6 3400 00284 dt b'00000000' 08E7 3400 00285 dt b'00000000' 00286 08E8 3400 00287 dt b'00000000' ;0 08E9 3400 00288 dt b'00000000' ;1 08EA 3400 00289 dt b'00000000' ;2 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 161 LOC OBJECT CODE LINE SOURCE TEXT VALUE 08EB 3400 00290 dt b'00000000' ;3 08EC 34FF 00291 dt b'11111111' ;4 08ED 3400 00292 dt b'00000000' ;5 08EE 3400 00293 dt b'00000000' ;6 08EF 3400 00294 dt b'00000000' ;7 00295 08F0 3400 00296 dt b'00000000' 08F1 3400 00297 dt b'00000000' 08F2 3400 00298 dt b'00000000' 08F3 3400 00299 dt b'00000000' 08F4 3400 00300 dt b'00000000' 08F5 3400 00301 dt b'00000000' 08F6 3400 00302 dt b'00000000' 08F7 3400 00303 dt b'00000000' 00304 08F8 3400 00305 dt b'00000000' 08F9 3400 00306 dt b'00000000' 08FA 3400 00307 dt b'00000000' 08FB 3400 00308 dt b'00000000' 08FC 3400 00309 dt b'00000000' 08FD 3400 00310 dt b'00000000' 08FE 3400 00311 dt b'00000000' 08FF 3400 00312 dt b'00000000' 00313 0900 3400 00314 dt b'00000000' 0901 3400 00315 dt b'00000000' 0902 3400 00316 dt b'00000000' 0903 3400 00317 dt b'00000000' 0904 3400 00318 dt b'00000000' 0905 3400 00319 dt b'00000000' 0906 3400 00320 dt b'00000000' 0907 3400 00321 dt b'00000000' 00322 0908 3400 00323 dt b'00000000' ;0 0909 3400 00324 dt b'00000000' ;1 090A 3400 00325 dt b'00000000' ;2 090B 3400 00326 dt b'00000000' ;3 090C 3400 00327 dt b'00000000' ;4 090D 34FF 00328 dt b'11111111' ;5 090E 3400 00329 dt b'00000000' ;6 090F 3400 00330 dt b'00000000' ;7 00331 0910 3400 00332 dt b'00000000' 0911 3400 00333 dt b'00000000' 0912 3400 00334 dt b'00000000' 0913 3400 00335 dt b'00000000' 0914 3400 00336 dt b'00000000' 0915 3400 00337 dt b'00000000' 0916 3400 00338 dt b'00000000' 0917 3400 00339 dt b'00000000' 00340 0918 3400 00341 dt b'00000000' 0919 3400 00342 dt b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 162 LOC OBJECT CODE LINE SOURCE TEXT VALUE 091A 3400 00343 dt b'00000000' 091B 3400 00344 dt b'00000000' 091C 3400 00345 dt b'00000000' 091D 3400 00346 dt b'00000000' 091E 3400 00347 dt b'00000000' 091F 3400 00348 dt b'00000000' 00349 0920 3400 00350 dt b'00000000' 0921 3400 00351 dt b'00000000' 0922 3400 00352 dt b'00000000' 0923 3400 00353 dt b'00000000' 0924 3400 00354 dt b'00000000' 0925 3400 00355 dt b'00000000' 0926 3400 00356 dt b'00000000' 0927 3400 00357 dt b'00000000' 00358 0928 3400 00359 dt b'00000000' ;0 0929 3400 00360 dt b'00000000' ;1 092A 3400 00361 dt b'00000000' ;2 092B 3400 00362 dt b'00000000' ;3 092C 3400 00363 dt b'00000000' ;4 092D 3400 00364 dt b'00000000' ;5 092E 34FF 00365 dt b'11111111' ;6 092F 3400 00366 dt b'00000000' ;7 00367 0930 3400 00368 dt b'00000000' 0931 3400 00369 dt b'00000000' 0932 3400 00370 dt b'00000000' 0933 3400 00371 dt b'00000000' 0934 3400 00372 dt b'00000000' 0935 3400 00373 dt b'00000000' 0936 3400 00374 dt b'00000000' 0937 3400 00375 dt b'00000000' 00376 0938 3400 00377 dt b'00000000' 0939 3400 00378 dt b'00000000' 093A 3400 00379 dt b'00000000' 093B 3400 00380 dt b'00000000' 093C 3400 00381 dt b'00000000' 093D 3400 00382 dt b'00000000' 093E 3400 00383 dt b'00000000' 093F 3400 00384 dt b'00000000' 00385 0940 3400 00386 dt b'00000000' 0941 3400 00387 dt b'00000000' 0942 3400 00388 dt b'00000000' 0943 3400 00389 dt b'00000000' 0944 3400 00390 dt b'00000000' 0945 3400 00391 dt b'00000000' 0946 3400 00392 dt b'00000000' 0947 3400 00393 dt b'00000000' 00394 0948 3400 00395 dt b'00000000' ;0 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 163 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0949 3400 00396 dt b'00000000' ;1 094A 3400 00397 dt b'00000000' ;2 094B 3400 00398 dt b'00000000' ;3 094C 3400 00399 dt b'00000000' ;4 094D 3400 00400 dt b'00000000' ;5 094E 3400 00401 dt b'00000000' ;6 094F 34FF 00402 dt b'11111111' ;7 00403 0950 3400 00404 dt b'00000000' 0951 3400 00405 dt b'00000000' 0952 3400 00406 dt b'00000000' 0953 3400 00407 dt b'00000000' 0954 3400 00408 dt b'00000000' 0955 3400 00409 dt b'00000000' 0956 3400 00410 dt b'00000000' 0957 3400 00411 dt b'00000000' 00412 0958 3400 00413 dt b'00000000' 0959 3400 00414 dt b'00000000' 095A 3400 00415 dt b'00000000' 095B 3400 00416 dt b'00000000' 095C 3400 00417 dt b'00000000' 095D 3400 00418 dt b'00000000' 095E 3400 00419 dt b'00000000' 095F 3400 00420 dt b'00000000' 00421 0960 3400 00422 dt b'00000000' 0961 3400 00423 dt b'00000000' 0962 3400 00424 dt b'00000000' 0963 3400 00425 dt b'00000000' 0964 3400 00426 dt b'00000000' 0965 3400 00427 dt b'00000000' 0966 3400 00428 dt b'00000000' 0967 3400 00429 dt b'00000000' 00430 0968 3400 00431 dt b'00000000' ;0 0969 3400 00432 dt b'00000000' ;1 096A 3400 00433 dt b'00000000' ;2 096B 3400 00434 dt b'00000000' ;3 096C 3400 00435 dt b'00000000' ;4 096D 3400 00436 dt b'00000000' ;5 096E 3400 00437 dt b'00000000' ;6 096F 3400 00438 dt b'00000000' ;7 00439 0970 34FF 00440 dt b'11111111' 0971 3400 00441 dt b'00000000' 0972 3400 00442 dt b'00000000' 0973 3400 00443 dt b'00000000' 0974 3400 00444 dt b'00000000' 0975 3400 00445 dt b'00000000' 0976 3400 00446 dt b'00000000' 0977 3400 00447 dt b'00000000' 00448 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 164 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0978 3400 00449 dt b'00000000' 0979 3400 00450 dt b'00000000' 097A 3400 00451 dt b'00000000' 097B 3400 00452 dt b'00000000' 097C 3400 00453 dt b'00000000' 097D 3400 00454 dt b'00000000' 097E 3400 00455 dt b'00000000' 097F 3400 00456 dt b'00000000' 00457 0980 3400 00458 dt b'00000000' 0981 3400 00459 dt b'00000000' 0982 3400 00460 dt b'00000000' 0983 3400 00461 dt b'00000000' 0984 3400 00462 dt b'00000000' 0985 3400 00463 dt b'00000000' 0986 3400 00464 dt b'00000000' 0987 3400 00465 dt b'00000000' 00466 0988 3400 00467 dt b'00000000' ;0 0989 3400 00468 dt b'00000000' ;1 098A 3400 00469 dt b'00000000' ;2 098B 3400 00470 dt b'00000000' ;3 098C 3400 00471 dt b'00000000' ;4 098D 3400 00472 dt b'00000000' ;5 098E 3400 00473 dt b'00000000' ;6 098F 3400 00474 dt b'00000000' ;7 00475 0990 3400 00476 dt b'00000000' 0991 34FF 00477 dt b'11111111' 0992 3400 00478 dt b'00000000' 0993 3400 00479 dt b'00000000' 0994 3400 00480 dt b'00000000' 0995 3400 00481 dt b'00000000' 0996 3400 00482 dt b'00000000' 0997 3400 00483 dt b'00000000' 00484 0998 3400 00485 dt b'00000000' 0999 3400 00486 dt b'00000000' 099A 3400 00487 dt b'00000000' 099B 3400 00488 dt b'00000000' 099C 3400 00489 dt b'00000000' 099D 3400 00490 dt b'00000000' 099E 3400 00491 dt b'00000000' 099F 3400 00492 dt b'00000000' 00493 09A0 3400 00494 dt b'00000000' 09A1 3400 00495 dt b'00000000' 09A2 3400 00496 dt b'00000000' 09A3 3400 00497 dt b'00000000' 09A4 3400 00498 dt b'00000000' 09A5 3400 00499 dt b'00000000' 09A6 3400 00500 dt b'00000000' 09A7 3400 00501 dt b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 165 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00502 09A8 3400 00503 dt b'00000000' ;0 09A9 3400 00504 dt b'00000000' ;1 09AA 3400 00505 dt b'00000000' ;2 09AB 3400 00506 dt b'00000000' ;3 09AC 3400 00507 dt b'00000000' ;4 09AD 3400 00508 dt b'00000000' ;5 09AE 3400 00509 dt b'00000000' ;6 09AF 3400 00510 dt b'00000000' ;7 00511 09B0 3400 00512 dt b'00000000' 09B1 3400 00513 dt b'00000000' 09B2 34FF 00514 dt b'11111111' 09B3 3400 00515 dt b'00000000' 09B4 3400 00516 dt b'00000000' 09B5 3400 00517 dt b'00000000' 09B6 3400 00518 dt b'00000000' 09B7 3400 00519 dt b'00000000' 00520 09B8 3400 00521 dt b'00000000' 09B9 3400 00522 dt b'00000000' 09BA 3400 00523 dt b'00000000' 09BB 3400 00524 dt b'00000000' 09BC 3400 00525 dt b'00000000' 09BD 3400 00526 dt b'00000000' 09BE 3400 00527 dt b'00000000' 09BF 3400 00528 dt b'00000000' 00529 09C0 3400 00530 dt b'00000000' 09C1 3400 00531 dt b'00000000' 09C2 3400 00532 dt b'00000000' 09C3 3400 00533 dt b'00000000' 09C4 3400 00534 dt b'00000000' 09C5 3400 00535 dt b'00000000' 09C6 3400 00536 dt b'00000000' 09C7 3400 00537 dt b'00000000' 00538 09C8 3400 00539 dt b'00000000' ;0 09C9 3400 00540 dt b'00000000' ;1 09CA 3400 00541 dt b'00000000' ;2 09CB 3400 00542 dt b'00000000' ;3 09CC 3400 00543 dt b'00000000' ;4 09CD 3400 00544 dt b'00000000' ;5 09CE 3400 00545 dt b'00000000' ;6 09CF 3400 00546 dt b'00000000' ;7 00547 09D0 3400 00548 dt b'00000000' 09D1 3400 00549 dt b'00000000' 09D2 3400 00550 dt b'00000000' 09D3 34FF 00551 dt b'11111111' 09D4 3400 00552 dt b'00000000' 09D5 3400 00553 dt b'00000000' 09D6 3400 00554 dt b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 166 LOC OBJECT CODE LINE SOURCE TEXT VALUE 09D7 3400 00555 dt b'00000000' 00556 09D8 3400 00557 dt b'00000000' 09D9 3400 00558 dt b'00000000' 09DA 3400 00559 dt b'00000000' 09DB 3400 00560 dt b'00000000' 09DC 3400 00561 dt b'00000000' 09DD 3400 00562 dt b'00000000' 09DE 3400 00563 dt b'00000000' 09DF 3400 00564 dt b'00000000' 00565 09E0 3400 00566 dt b'00000000' 09E1 3400 00567 dt b'00000000' 09E2 3400 00568 dt b'00000000' 09E3 3400 00569 dt b'00000000' 09E4 3400 00570 dt b'00000000' 09E5 3400 00571 dt b'00000000' 09E6 3400 00572 dt b'00000000' 09E7 3400 00573 dt b'00000000' 00574 09E8 3400 00575 dt b'00000000' ;0 09E9 3400 00576 dt b'00000000' ;1 09EA 3400 00577 dt b'00000000' ;2 09EB 3400 00578 dt b'00000000' ;3 09EC 3400 00579 dt b'00000000' ;4 09ED 3400 00580 dt b'00000000' ;5 09EE 3400 00581 dt b'00000000' ;6 09EF 3400 00582 dt b'00000000' ;7 00583 09F0 3400 00584 dt b'00000000' 09F1 3400 00585 dt b'00000000' 09F2 3400 00586 dt b'00000000' 09F3 3400 00587 dt b'00000000' 09F4 34FF 00588 dt b'11111111' 09F5 3400 00589 dt b'00000000' 09F6 3400 00590 dt b'00000000' 09F7 3400 00591 dt b'00000000' 00592 09F8 3400 00593 dt b'00000000' 09F9 3400 00594 dt b'00000000' 09FA 3400 00595 dt b'00000000' 09FB 3400 00596 dt b'00000000' 09FC 3400 00597 dt b'00000000' 09FD 3400 00598 dt b'00000000' 09FE 3400 00599 dt b'00000000' 09FF 3400 00600 dt b'00000000' 00601 0A00 3400 00602 dt b'00000000' 0A01 3400 00603 dt b'00000000' 0A02 3400 00604 dt b'00000000' 0A03 3400 00605 dt b'00000000' 0A04 3400 00606 dt b'00000000' 0A05 3400 00607 dt b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 167 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0A06 3400 00608 dt b'00000000' 0A07 3400 00609 dt b'00000000' 00610 0A08 3400 00611 dt b'00000000' ;0 0A09 3400 00612 dt b'00000000' ;1 0A0A 3400 00613 dt b'00000000' ;2 0A0B 3400 00614 dt b'00000000' ;3 0A0C 3400 00615 dt b'00000000' ;4 0A0D 3400 00616 dt b'00000000' ;5 0A0E 3400 00617 dt b'00000000' ;6 0A0F 3400 00618 dt b'00000000' ;7 00619 0A10 3400 00620 dt b'00000000' 0A11 3400 00621 dt b'00000000' 0A12 3400 00622 dt b'00000000' 0A13 3400 00623 dt b'00000000' 0A14 3400 00624 dt b'00000000' 0A15 34FF 00625 dt b'11111111' 0A16 3400 00626 dt b'00000000' 0A17 3400 00627 dt b'00000000' 00628 0A18 3400 00629 dt b'00000000' 0A19 3400 00630 dt b'00000000' 0A1A 3400 00631 dt b'00000000' 0A1B 3400 00632 dt b'00000000' 0A1C 3400 00633 dt b'00000000' 0A1D 3400 00634 dt b'00000000' 0A1E 3400 00635 dt b'00000000' 0A1F 3400 00636 dt b'00000000' 00637 0A20 3400 00638 dt b'00000000' 0A21 3400 00639 dt b'00000000' 0A22 3400 00640 dt b'00000000' 0A23 3400 00641 dt b'00000000' 0A24 3400 00642 dt b'00000000' 0A25 3400 00643 dt b'00000000' 0A26 3400 00644 dt b'00000000' 0A27 3400 00645 dt b'00000000' 00646 0A28 3400 00647 dt b'00000000' ;0 0A29 3400 00648 dt b'00000000' ;1 0A2A 3400 00649 dt b'00000000' ;2 0A2B 3400 00650 dt b'00000000' ;3 0A2C 3400 00651 dt b'00000000' ;4 0A2D 3400 00652 dt b'00000000' ;5 0A2E 3400 00653 dt b'00000000' ;6 0A2F 3400 00654 dt b'00000000' ;7 00655 0A30 3400 00656 dt b'00000000' 0A31 3400 00657 dt b'00000000' 0A32 3400 00658 dt b'00000000' 0A33 3400 00659 dt b'00000000' 0A34 3400 00660 dt b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 168 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0A35 3400 00661 dt b'00000000' 0A36 34FF 00662 dt b'11111111' 0A37 3400 00663 dt b'00000000' 00664 0A38 3400 00665 dt b'00000000' 0A39 3400 00666 dt b'00000000' 0A3A 3400 00667 dt b'00000000' 0A3B 3400 00668 dt b'00000000' 0A3C 3400 00669 dt b'00000000' 0A3D 3400 00670 dt b'00000000' 0A3E 3400 00671 dt b'00000000' 0A3F 3400 00672 dt b'00000000' 00673 0A40 3400 00674 dt b'00000000' 0A41 3400 00675 dt b'00000000' 0A42 3400 00676 dt b'00000000' 0A43 3400 00677 dt b'00000000' 0A44 3400 00678 dt b'00000000' 0A45 3400 00679 dt b'00000000' 0A46 3400 00680 dt b'00000000' 0A47 3400 00681 dt b'00000000' 00682 0A48 3400 00683 dt b'00000000' ;0 0A49 3400 00684 dt b'00000000' ;1 0A4A 3400 00685 dt b'00000000' ;2 0A4B 3400 00686 dt b'00000000' ;3 0A4C 3400 00687 dt b'00000000' ;4 0A4D 3400 00688 dt b'00000000' ;5 0A4E 3400 00689 dt b'00000000' ;6 0A4F 3400 00690 dt b'00000000' ;7 00691 0A50 3400 00692 dt b'00000000' 0A51 3400 00693 dt b'00000000' 0A52 3400 00694 dt b'00000000' 0A53 3400 00695 dt b'00000000' 0A54 3400 00696 dt b'00000000' 0A55 3400 00697 dt b'00000000' 0A56 3400 00698 dt b'00000000' 0A57 34FF 00699 dt b'11111111' 00700 0A58 3400 00701 dt b'00000000' 0A59 3400 00702 dt b'00000000' 0A5A 3400 00703 dt b'00000000' 0A5B 3400 00704 dt b'00000000' 0A5C 3400 00705 dt b'00000000' 0A5D 3400 00706 dt b'00000000' 0A5E 3400 00707 dt b'00000000' 0A5F 3400 00708 dt b'00000000' 00709 0A60 3400 00710 dt b'00000000' 0A61 3400 00711 dt b'00000000' 0A62 3400 00712 dt b'00000000' 0A63 3400 00713 dt b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 169 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0A64 3400 00714 dt b'00000000' 0A65 3400 00715 dt b'00000000' 0A66 3400 00716 dt b'00000000' 0A67 3400 00717 dt b'00000000' 00718 ;--------------------- Red 0A68 3400 00719 dt b'00000000' 0A69 3400 00720 dt b'00000000' 0A6A 3400 00721 dt b'00000000' 0A6B 3400 00722 dt b'00000000' 0A6C 3400 00723 dt b'00000000' 0A6D 3400 00724 dt b'00000000' 0A6E 3400 00725 dt b'00000000' 0A6F 3400 00726 dt b'00000000' 00727 0A70 3400 00728 dt b'00000000' 0A71 3400 00729 dt b'00000000' 0A72 3400 00730 dt b'00000000' 0A73 3400 00731 dt b'00000000' 0A74 3400 00732 dt b'00000000' 0A75 3400 00733 dt b'00000000' 0A76 3400 00734 dt b'00000000' 0A77 3400 00735 dt b'00000000' 00736 0A78 34FF 00737 dt b'11111111' ;0 0A79 3400 00738 dt b'00000000' ;1 0A7A 3400 00739 dt b'00000000' ;2 0A7B 3400 00740 dt b'00000000' ;3 0A7C 3400 00741 dt b'00000000' ;4 0A7D 3400 00742 dt b'00000000' ;5 0A7E 3400 00743 dt b'00000000' ;6 0A7F 3400 00744 dt b'00000000' ;7 00745 0A80 3400 00746 dt b'00000000' 0A81 3400 00747 dt b'00000000' 0A82 3400 00748 dt b'00000000' 0A83 3400 00749 dt b'00000000' 0A84 3400 00750 dt b'00000000' 0A85 3400 00751 dt b'00000000' 0A86 3400 00752 dt b'00000000' 0A87 3400 00753 dt b'00000000' 00754 0A88 3400 00755 dt b'00000000' 0A89 3400 00756 dt b'00000000' 0A8A 3400 00757 dt b'00000000' 0A8B 3400 00758 dt b'00000000' 0A8C 3400 00759 dt b'00000000' 0A8D 3400 00760 dt b'00000000' 0A8E 3400 00761 dt b'00000000' 0A8F 3400 00762 dt b'00000000' 00763 0A90 3400 00764 dt b'00000000' 0A91 3400 00765 dt b'00000000' 0A92 3400 00766 dt b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 170 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0A93 3400 00767 dt b'00000000' 0A94 3400 00768 dt b'00000000' 0A95 3400 00769 dt b'00000000' 0A96 3400 00770 dt b'00000000' 0A97 3400 00771 dt b'00000000' 00772 0A98 3400 00773 dt b'00000000' ;0 0A99 34FF 00774 dt b'11111111' ;1 0A9A 3400 00775 dt b'00000000' ;2 0A9B 3400 00776 dt b'00000000' ;3 0A9C 3400 00777 dt b'00000000' ;4 0A9D 3400 00778 dt b'00000000' ;5 0A9E 3400 00779 dt b'00000000' ;6 0A9F 3400 00780 dt b'00000000' ;7 00781 0AA0 3400 00782 dt b'00000000' 0AA1 3400 00783 dt b'00000000' 0AA2 3400 00784 dt b'00000000' 0AA3 3400 00785 dt b'00000000' 0AA4 3400 00786 dt b'00000000' 0AA5 3400 00787 dt b'00000000' 0AA6 3400 00788 dt b'00000000' 0AA7 3400 00789 dt b'00000000' 00790 0AA8 3400 00791 dt b'00000000' 0AA9 3400 00792 dt b'00000000' 0AAA 3400 00793 dt b'00000000' 0AAB 3400 00794 dt b'00000000' 0AAC 3400 00795 dt b'00000000' 0AAD 3400 00796 dt b'00000000' 0AAE 3400 00797 dt b'00000000' 0AAF 3400 00798 dt b'00000000' 00799 0AB0 3400 00800 dt b'00000000' 0AB1 3400 00801 dt b'00000000' 0AB2 3400 00802 dt b'00000000' 0AB3 3400 00803 dt b'00000000' 0AB4 3400 00804 dt b'00000000' 0AB5 3400 00805 dt b'00000000' 0AB6 3400 00806 dt b'00000000' 0AB7 3400 00807 dt b'00000000' 00808 0AB8 3400 00809 dt b'00000000' ;0 0AB9 3400 00810 dt b'00000000' ;1 0ABA 34FF 00811 dt b'11111111' ;2 0ABB 3400 00812 dt b'00000000' ;3 0ABC 3400 00813 dt b'00000000' ;4 0ABD 3400 00814 dt b'00000000' ;5 0ABE 3400 00815 dt b'00000000' ;6 0ABF 3400 00816 dt b'00000000' ;7 00817 0AC0 3400 00818 dt b'00000000' 0AC1 3400 00819 dt b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 171 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0AC2 3400 00820 dt b'00000000' 0AC3 3400 00821 dt b'00000000' 0AC4 3400 00822 dt b'00000000' 0AC5 3400 00823 dt b'00000000' 0AC6 3400 00824 dt b'00000000' 0AC7 3400 00825 dt b'00000000' 00826 0AC8 3400 00827 dt b'00000000' 0AC9 3400 00828 dt b'00000000' 0ACA 3400 00829 dt b'00000000' 0ACB 3400 00830 dt b'00000000' 0ACC 3400 00831 dt b'00000000' 0ACD 3400 00832 dt b'00000000' 0ACE 3400 00833 dt b'00000000' 0ACF 3400 00834 dt b'00000000' 00835 0AD0 3400 00836 dt b'00000000' 0AD1 3400 00837 dt b'00000000' 0AD2 3400 00838 dt b'00000000' 0AD3 3400 00839 dt b'00000000' 0AD4 3400 00840 dt b'00000000' 0AD5 3400 00841 dt b'00000000' 0AD6 3400 00842 dt b'00000000' 0AD7 3400 00843 dt b'00000000' 00844 0AD8 3400 00845 dt b'00000000' ;0 0AD9 3400 00846 dt b'00000000' ;1 0ADA 3400 00847 dt b'00000000' ;2 0ADB 34FF 00848 dt b'11111111' ;3 0ADC 3400 00849 dt b'00000000' ;4 0ADD 3400 00850 dt b'00000000' ;5 0ADE 3400 00851 dt b'00000000' ;6 0ADF 3400 00852 dt b'00000000' ;7 00853 0AE0 3400 00854 dt b'00000000' 0AE1 3400 00855 dt b'00000000' 0AE2 3400 00856 dt b'00000000' 0AE3 3400 00857 dt b'00000000' 0AE4 3400 00858 dt b'00000000' 0AE5 3400 00859 dt b'00000000' 0AE6 3400 00860 dt b'00000000' 0AE7 3400 00861 dt b'00000000' 00862 0AE8 3400 00863 dt b'00000000' 0AE9 3400 00864 dt b'00000000' 0AEA 3400 00865 dt b'00000000' 0AEB 3400 00866 dt b'00000000' 0AEC 3400 00867 dt b'00000000' 0AED 3400 00868 dt b'00000000' 0AEE 3400 00869 dt b'00000000' 0AEF 3400 00870 dt b'00000000' 00871 0AF0 3400 00872 dt b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 172 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0AF1 3400 00873 dt b'00000000' 0AF2 3400 00874 dt b'00000000' 0AF3 3400 00875 dt b'00000000' 0AF4 3400 00876 dt b'00000000' 0AF5 3400 00877 dt b'00000000' 0AF6 3400 00878 dt b'00000000' 0AF7 3400 00879 dt b'00000000' 00880 0AF8 3400 00881 dt b'00000000' ;0 0AF9 3400 00882 dt b'00000000' ;1 0AFA 3400 00883 dt b'00000000' ;2 0AFB 3400 00884 dt b'00000000' ;3 0AFC 34FF 00885 dt b'11111111' ;4 0AFD 3400 00886 dt b'00000000' ;5 0AFE 3400 00887 dt b'00000000' ;6 0AFF 3400 00888 dt b'00000000' ;7 00889 0B00 3400 00890 dt b'00000000' 0B01 3400 00891 dt b'00000000' 0B02 3400 00892 dt b'00000000' 0B03 3400 00893 dt b'00000000' 0B04 3400 00894 dt b'00000000' 0B05 3400 00895 dt b'00000000' 0B06 3400 00896 dt b'00000000' 0B07 3400 00897 dt b'00000000' 00898 0B08 3400 00899 dt b'00000000' 0B09 3400 00900 dt b'00000000' 0B0A 3400 00901 dt b'00000000' 0B0B 3400 00902 dt b'00000000' 0B0C 3400 00903 dt b'00000000' 0B0D 3400 00904 dt b'00000000' 0B0E 3400 00905 dt b'00000000' 0B0F 3400 00906 dt b'00000000' 00907 0B10 3400 00908 dt b'00000000' 0B11 3400 00909 dt b'00000000' 0B12 3400 00910 dt b'00000000' 0B13 3400 00911 dt b'00000000' 0B14 3400 00912 dt b'00000000' 0B15 3400 00913 dt b'00000000' 0B16 3400 00914 dt b'00000000' 0B17 3400 00915 dt b'00000000' 00916 0B18 3400 00917 dt b'00000000' ;0 0B19 3400 00918 dt b'00000000' ;1 0B1A 3400 00919 dt b'00000000' ;2 0B1B 3400 00920 dt b'00000000' ;3 0B1C 3400 00921 dt b'00000000' ;4 0B1D 34FF 00922 dt b'11111111' ;5 0B1E 3400 00923 dt b'00000000' ;6 0B1F 3400 00924 dt b'00000000' ;7 00925 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 173 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0B20 3400 00926 dt b'00000000' 0B21 3400 00927 dt b'00000000' 0B22 3400 00928 dt b'00000000' 0B23 3400 00929 dt b'00000000' 0B24 3400 00930 dt b'00000000' 0B25 3400 00931 dt b'00000000' 0B26 3400 00932 dt b'00000000' 0B27 3400 00933 dt b'00000000' 00934 0B28 3400 00935 dt b'00000000' 0B29 3400 00936 dt b'00000000' 0B2A 3400 00937 dt b'00000000' 0B2B 3400 00938 dt b'00000000' 0B2C 3400 00939 dt b'00000000' 0B2D 3400 00940 dt b'00000000' 0B2E 3400 00941 dt b'00000000' 0B2F 3400 00942 dt b'00000000' 00943 0B30 3400 00944 dt b'00000000' 0B31 3400 00945 dt b'00000000' 0B32 3400 00946 dt b'00000000' 0B33 3400 00947 dt b'00000000' 0B34 3400 00948 dt b'00000000' 0B35 3400 00949 dt b'00000000' 0B36 3400 00950 dt b'00000000' 0B37 3400 00951 dt b'00000000' 00952 0B38 3400 00953 dt b'00000000' ;0 0B39 3400 00954 dt b'00000000' ;1 0B3A 3400 00955 dt b'00000000' ;2 0B3B 3400 00956 dt b'00000000' ;3 0B3C 3400 00957 dt b'00000000' ;4 0B3D 3400 00958 dt b'00000000' ;5 0B3E 34FF 00959 dt b'11111111' ;6 0B3F 3400 00960 dt b'00000000' ;7 00961 0B40 3400 00962 dt b'00000000' 0B41 3400 00963 dt b'00000000' 0B42 3400 00964 dt b'00000000' 0B43 3400 00965 dt b'00000000' 0B44 3400 00966 dt b'00000000' 0B45 3400 00967 dt b'00000000' 0B46 3400 00968 dt b'00000000' 0B47 3400 00969 dt b'00000000' 00970 0B48 3400 00971 dt b'00000000' 0B49 3400 00972 dt b'00000000' 0B4A 3400 00973 dt b'00000000' 0B4B 3400 00974 dt b'00000000' 0B4C 3400 00975 dt b'00000000' 0B4D 3400 00976 dt b'00000000' 0B4E 3400 00977 dt b'00000000' 0B4F 3400 00978 dt b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 174 LOC OBJECT CODE LINE SOURCE TEXT VALUE 00979 0B50 3400 00980 dt b'00000000' 0B51 3400 00981 dt b'00000000' 0B52 3400 00982 dt b'00000000' 0B53 3400 00983 dt b'00000000' 0B54 3400 00984 dt b'00000000' 0B55 3400 00985 dt b'00000000' 0B56 3400 00986 dt b'00000000' 0B57 3400 00987 dt b'00000000' 00988 0B58 3400 00989 dt b'00000000' ;0 0B59 3400 00990 dt b'00000000' ;1 0B5A 3400 00991 dt b'00000000' ;2 0B5B 3400 00992 dt b'00000000' ;3 0B5C 3400 00993 dt b'00000000' ;4 0B5D 3400 00994 dt b'00000000' ;5 0B5E 3400 00995 dt b'00000000' ;6 0B5F 34FF 00996 dt b'11111111' ;7 00997 0B60 3400 00998 dt b'00000000' 0B61 3400 00999 dt b'00000000' 0B62 3400 01000 dt b'00000000' 0B63 3400 01001 dt b'00000000' 0B64 3400 01002 dt b'00000000' 0B65 3400 01003 dt b'00000000' 0B66 3400 01004 dt b'00000000' 0B67 3400 01005 dt b'00000000' 01006 0B68 3400 01007 dt b'00000000' 0B69 3400 01008 dt b'00000000' 0B6A 3400 01009 dt b'00000000' 0B6B 3400 01010 dt b'00000000' 0B6C 3400 01011 dt b'00000000' 0B6D 3400 01012 dt b'00000000' 0B6E 3400 01013 dt b'00000000' 0B6F 3400 01014 dt b'00000000' 01015 0B70 3400 01016 dt b'00000000' 0B71 3400 01017 dt b'00000000' 0B72 3400 01018 dt b'00000000' 0B73 3400 01019 dt b'00000000' 0B74 3400 01020 dt b'00000000' 0B75 3400 01021 dt b'00000000' 0B76 3400 01022 dt b'00000000' 0B77 3400 01023 dt b'00000000' 01024 0B78 3400 01025 dt b'00000000' ;0 0B79 3400 01026 dt b'00000000' ;1 0B7A 3400 01027 dt b'00000000' ;2 0B7B 3400 01028 dt b'00000000' ;3 0B7C 3400 01029 dt b'00000000' ;4 0B7D 3400 01030 dt b'00000000' ;5 0B7E 3400 01031 dt b'00000000' ;6 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 175 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0B7F 3400 01032 dt b'00000000' ;7 01033 0B80 34FF 01034 dt b'11111111' 0B81 3400 01035 dt b'00000000' 0B82 3400 01036 dt b'00000000' 0B83 3400 01037 dt b'00000000' 0B84 3400 01038 dt b'00000000' 0B85 3400 01039 dt b'00000000' 0B86 3400 01040 dt b'00000000' 0B87 3400 01041 dt b'00000000' 01042 0B88 3400 01043 dt b'00000000' 0B89 3400 01044 dt b'00000000' 0B8A 3400 01045 dt b'00000000' 0B8B 3400 01046 dt b'00000000' 0B8C 3400 01047 dt b'00000000' 0B8D 3400 01048 dt b'00000000' 0B8E 3400 01049 dt b'00000000' 0B8F 3400 01050 dt b'00000000' 01051 0B90 3400 01052 dt b'00000000' 0B91 3400 01053 dt b'00000000' 0B92 3400 01054 dt b'00000000' 0B93 3400 01055 dt b'00000000' 0B94 3400 01056 dt b'00000000' 0B95 3400 01057 dt b'00000000' 0B96 3400 01058 dt b'00000000' 0B97 3400 01059 dt b'00000000' 01060 0B98 3400 01061 dt b'00000000' ;0 0B99 3400 01062 dt b'00000000' ;1 0B9A 3400 01063 dt b'00000000' ;2 0B9B 3400 01064 dt b'00000000' ;3 0B9C 3400 01065 dt b'00000000' ;4 0B9D 3400 01066 dt b'00000000' ;5 0B9E 3400 01067 dt b'00000000' ;6 0B9F 3400 01068 dt b'00000000' ;7 01069 0BA0 3400 01070 dt b'00000000' 0BA1 34FF 01071 dt b'11111111' 0BA2 3400 01072 dt b'00000000' 0BA3 3400 01073 dt b'00000000' 0BA4 3400 01074 dt b'00000000' 0BA5 3400 01075 dt b'00000000' 0BA6 3400 01076 dt b'00000000' 0BA7 3400 01077 dt b'00000000' 01078 0BA8 3400 01079 dt b'00000000' 0BA9 3400 01080 dt b'00000000' 0BAA 3400 01081 dt b'00000000' 0BAB 3400 01082 dt b'00000000' 0BAC 3400 01083 dt b'00000000' 0BAD 3400 01084 dt b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 176 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0BAE 3400 01085 dt b'00000000' 0BAF 3400 01086 dt b'00000000' 01087 0BB0 3400 01088 dt b'00000000' 0BB1 3400 01089 dt b'00000000' 0BB2 3400 01090 dt b'00000000' 0BB3 3400 01091 dt b'00000000' 0BB4 3400 01092 dt b'00000000' 0BB5 3400 01093 dt b'00000000' 0BB6 3400 01094 dt b'00000000' 0BB7 3400 01095 dt b'00000000' 01096 0BB8 3400 01097 dt b'00000000' ;0 0BB9 3400 01098 dt b'00000000' ;1 0BBA 3400 01099 dt b'00000000' ;2 0BBB 3400 01100 dt b'00000000' ;3 0BBC 3400 01101 dt b'00000000' ;4 0BBD 3400 01102 dt b'00000000' ;5 0BBE 3400 01103 dt b'00000000' ;6 0BBF 3400 01104 dt b'00000000' ;7 01105 0BC0 3400 01106 dt b'00000000' 0BC1 3400 01107 dt b'00000000' 0BC2 34FF 01108 dt b'11111111' 0BC3 3400 01109 dt b'00000000' 0BC4 3400 01110 dt b'00000000' 0BC5 3400 01111 dt b'00000000' 0BC6 3400 01112 dt b'00000000' 0BC7 3400 01113 dt b'00000000' 01114 0BC8 3400 01115 dt b'00000000' 0BC9 3400 01116 dt b'00000000' 0BCA 3400 01117 dt b'00000000' 0BCB 3400 01118 dt b'00000000' 0BCC 3400 01119 dt b'00000000' 0BCD 3400 01120 dt b'00000000' 0BCE 3400 01121 dt b'00000000' 0BCF 3400 01122 dt b'00000000' 01123 0BD0 3400 01124 dt b'00000000' 0BD1 3400 01125 dt b'00000000' 0BD2 3400 01126 dt b'00000000' 0BD3 3400 01127 dt b'00000000' 0BD4 3400 01128 dt b'00000000' 0BD5 3400 01129 dt b'00000000' 0BD6 3400 01130 dt b'00000000' 0BD7 3400 01131 dt b'00000000' 01132 0BD8 3400 01133 dt b'00000000' ;0 0BD9 3400 01134 dt b'00000000' ;1 0BDA 3400 01135 dt b'00000000' ;2 0BDB 3400 01136 dt b'00000000' ;3 0BDC 3400 01137 dt b'00000000' ;4 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 177 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0BDD 3400 01138 dt b'00000000' ;5 0BDE 3400 01139 dt b'00000000' ;6 0BDF 3400 01140 dt b'00000000' ;7 01141 0BE0 3400 01142 dt b'00000000' 0BE1 3400 01143 dt b'00000000' 0BE2 3400 01144 dt b'00000000' 0BE3 34FF 01145 dt b'11111111' 0BE4 3400 01146 dt b'00000000' 0BE5 3400 01147 dt b'00000000' 0BE6 3400 01148 dt b'00000000' 0BE7 3400 01149 dt b'00000000' 01150 0BE8 3400 01151 dt b'00000000' 0BE9 3400 01152 dt b'00000000' 0BEA 3400 01153 dt b'00000000' 0BEB 3400 01154 dt b'00000000' 0BEC 3400 01155 dt b'00000000' 0BED 3400 01156 dt b'00000000' 0BEE 3400 01157 dt b'00000000' 0BEF 3400 01158 dt b'00000000' 01159 0BF0 3400 01160 dt b'00000000' 0BF1 3400 01161 dt b'00000000' 0BF2 3400 01162 dt b'00000000' 0BF3 3400 01163 dt b'00000000' 0BF4 3400 01164 dt b'00000000' 0BF5 3400 01165 dt b'00000000' 0BF6 3400 01166 dt b'00000000' 0BF7 3400 01167 dt b'00000000' 01168 0BF8 3400 01169 dt b'00000000' ;0 0BF9 3400 01170 dt b'00000000' ;1 0BFA 3400 01171 dt b'00000000' ;2 0BFB 3400 01172 dt b'00000000' ;3 0BFC 3400 01173 dt b'00000000' ;4 0BFD 3400 01174 dt b'00000000' ;5 0BFE 3400 01175 dt b'00000000' ;6 0BFF 3400 01176 dt b'00000000' ;7 01177 0C00 3400 01178 dt b'00000000' 0C01 3400 01179 dt b'00000000' 0C02 3400 01180 dt b'00000000' 0C03 3400 01181 dt b'00000000' 0C04 34FF 01182 dt b'11111111' 0C05 3400 01183 dt b'00000000' 0C06 3400 01184 dt b'00000000' 0C07 3400 01185 dt b'00000000' 01186 0C08 3400 01187 dt b'00000000' 0C09 3400 01188 dt b'00000000' 0C0A 3400 01189 dt b'00000000' 0C0B 3400 01190 dt b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 178 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0C0C 3400 01191 dt b'00000000' 0C0D 3400 01192 dt b'00000000' 0C0E 3400 01193 dt b'00000000' 0C0F 3400 01194 dt b'00000000' 01195 0C10 3400 01196 dt b'00000000' 0C11 3400 01197 dt b'00000000' 0C12 3400 01198 dt b'00000000' 0C13 3400 01199 dt b'00000000' 0C14 3400 01200 dt b'00000000' 0C15 3400 01201 dt b'00000000' 0C16 3400 01202 dt b'00000000' 0C17 3400 01203 dt b'00000000' 01204 0C18 3400 01205 dt b'00000000' ;0 0C19 3400 01206 dt b'00000000' ;1 0C1A 3400 01207 dt b'00000000' ;2 0C1B 3400 01208 dt b'00000000' ;3 0C1C 3400 01209 dt b'00000000' ;4 0C1D 3400 01210 dt b'00000000' ;5 0C1E 3400 01211 dt b'00000000' ;6 0C1F 3400 01212 dt b'00000000' ;7 01213 0C20 3400 01214 dt b'00000000' 0C21 3400 01215 dt b'00000000' 0C22 3400 01216 dt b'00000000' 0C23 3400 01217 dt b'00000000' 0C24 3400 01218 dt b'00000000' 0C25 34FF 01219 dt b'11111111' 0C26 3400 01220 dt b'00000000' 0C27 3400 01221 dt b'00000000' 01222 0C28 3400 01223 dt b'00000000' 0C29 3400 01224 dt b'00000000' 0C2A 3400 01225 dt b'00000000' 0C2B 3400 01226 dt b'00000000' 0C2C 3400 01227 dt b'00000000' 0C2D 3400 01228 dt b'00000000' 0C2E 3400 01229 dt b'00000000' 0C2F 3400 01230 dt b'00000000' 01231 0C30 3400 01232 dt b'00000000' 0C31 3400 01233 dt b'00000000' 0C32 3400 01234 dt b'00000000' 0C33 3400 01235 dt b'00000000' 0C34 3400 01236 dt b'00000000' 0C35 3400 01237 dt b'00000000' 0C36 3400 01238 dt b'00000000' 0C37 3400 01239 dt b'00000000' 01240 0C38 3400 01241 dt b'00000000' ;0 0C39 3400 01242 dt b'00000000' ;1 0C3A 3400 01243 dt b'00000000' ;2 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 179 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0C3B 3400 01244 dt b'00000000' ;3 0C3C 3400 01245 dt b'00000000' ;4 0C3D 3400 01246 dt b'00000000' ;5 0C3E 3400 01247 dt b'00000000' ;6 0C3F 3400 01248 dt b'00000000' ;7 01249 0C40 3400 01250 dt b'00000000' 0C41 3400 01251 dt b'00000000' 0C42 3400 01252 dt b'00000000' 0C43 3400 01253 dt b'00000000' 0C44 3400 01254 dt b'00000000' 0C45 3400 01255 dt b'00000000' 0C46 34FF 01256 dt b'11111111' 0C47 3400 01257 dt b'00000000' 01258 0C48 3400 01259 dt b'00000000' 0C49 3400 01260 dt b'00000000' 0C4A 3400 01261 dt b'00000000' 0C4B 3400 01262 dt b'00000000' 0C4C 3400 01263 dt b'00000000' 0C4D 3400 01264 dt b'00000000' 0C4E 3400 01265 dt b'00000000' 0C4F 3400 01266 dt b'00000000' 01267 0C50 3400 01268 dt b'00000000' 0C51 3400 01269 dt b'00000000' 0C52 3400 01270 dt b'00000000' 0C53 3400 01271 dt b'00000000' 0C54 3400 01272 dt b'00000000' 0C55 3400 01273 dt b'00000000' 0C56 3400 01274 dt b'00000000' 0C57 3400 01275 dt b'00000000' 01276 0C58 3400 01277 dt b'00000000' ;0 0C59 3400 01278 dt b'00000000' ;1 0C5A 3400 01279 dt b'00000000' ;2 0C5B 3400 01280 dt b'00000000' ;3 0C5C 3400 01281 dt b'00000000' ;4 0C5D 3400 01282 dt b'00000000' ;5 0C5E 3400 01283 dt b'00000000' ;6 0C5F 3400 01284 dt b'00000000' ;7 01285 0C60 3400 01286 dt b'00000000' 0C61 3400 01287 dt b'00000000' 0C62 3400 01288 dt b'00000000' 0C63 3400 01289 dt b'00000000' 0C64 3400 01290 dt b'00000000' 0C65 3400 01291 dt b'00000000' 0C66 3400 01292 dt b'00000000' 0C67 34FF 01293 dt b'11111111' 01294 ;--- 0C68 3401 01295 dt b'00000001' ;0 0C69 3401 01296 dt b'00000001' ;1 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 180 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0C6A 3401 01297 dt b'00000001' ;2 0C6B 3401 01298 dt b'00000001' ;3 0C6C 3401 01299 dt b'00000001' ;4 0C6D 3401 01300 dt b'00000001' ;5 0C6E 3401 01301 dt b'00000001' ;6 0C6F 3401 01302 dt b'00000001' ;7 01303 0C70 3401 01304 dt b'00000001' 0C71 3401 01305 dt b'00000001' 0C72 3401 01306 dt b'00000001' 0C73 3401 01307 dt b'00000001' 0C74 3401 01308 dt b'00000001' 0C75 3401 01309 dt b'00000001' 0C76 3401 01310 dt b'00000001' 0C77 3401 01311 dt b'00000001' 01312 0C78 3400 01313 dt b'00000000' 0C79 3400 01314 dt b'00000000' 0C7A 3400 01315 dt b'00000000' 0C7B 3400 01316 dt b'00000000' 0C7C 3400 01317 dt b'00000000' 0C7D 3400 01318 dt b'00000000' 0C7E 3400 01319 dt b'00000000' 0C7F 3400 01320 dt b'00000000' 01321 0C80 3400 01322 dt b'00000000' 0C81 3400 01323 dt b'00000000' 0C82 3400 01324 dt b'00000000' 0C83 3400 01325 dt b'00000000' 0C84 3400 01326 dt b'00000000' 0C85 3400 01327 dt b'00000000' 0C86 3400 01328 dt b'00000000' 0C87 3400 01329 dt b'00000000' 01330 0C88 3402 01331 dt b'00000010' ;0 0C89 3402 01332 dt b'00000010' ;1 0C8A 3402 01333 dt b'00000010' ;2 0C8B 3402 01334 dt b'00000010' ;3 0C8C 3402 01335 dt b'00000010' ;4 0C8D 3402 01336 dt b'00000010' ;5 0C8E 3402 01337 dt b'00000010' ;6 0C8F 3402 01338 dt b'00000010' ;7 01339 0C90 3402 01340 dt b'00000010' 0C91 3402 01341 dt b'00000010' 0C92 3402 01342 dt b'00000010' 0C93 3402 01343 dt b'00000010' 0C94 3402 01344 dt b'00000010' 0C95 3402 01345 dt b'00000010' 0C96 3402 01346 dt b'00000010' 0C97 3402 01347 dt b'00000010' 01348 0C98 3400 01349 dt b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 181 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0C99 3400 01350 dt b'00000000' 0C9A 3400 01351 dt b'00000000' 0C9B 3400 01352 dt b'00000000' 0C9C 3400 01353 dt b'00000000' 0C9D 3400 01354 dt b'00000000' 0C9E 3400 01355 dt b'00000000' 0C9F 3400 01356 dt b'00000000' 01357 0CA0 3400 01358 dt b'00000000' 0CA1 3400 01359 dt b'00000000' 0CA2 3400 01360 dt b'00000000' 0CA3 3400 01361 dt b'00000000' 0CA4 3400 01362 dt b'00000000' 0CA5 3400 01363 dt b'00000000' 0CA6 3400 01364 dt b'00000000' 0CA7 3400 01365 dt b'00000000' 01366 0CA8 3404 01367 dt b'00000100' ;0 0CA9 3404 01368 dt b'00000100' ;1 0CAA 3404 01369 dt b'00000100' ;2 0CAB 3404 01370 dt b'00000100' ;3 0CAC 3404 01371 dt b'00000100' ;4 0CAD 3404 01372 dt b'00000100' ;5 0CAE 3404 01373 dt b'00000100' ;6 0CAF 3404 01374 dt b'00000100' ;7 01375 0CB0 3404 01376 dt b'00000100' 0CB1 3404 01377 dt b'00000100' 0CB2 3404 01378 dt b'00000100' 0CB3 3404 01379 dt b'00000100' 0CB4 3404 01380 dt b'00000100' 0CB5 3404 01381 dt b'00000100' 0CB6 3404 01382 dt b'00000100' 0CB7 3404 01383 dt b'00000100' 01384 0CB8 3400 01385 dt b'00000000' 0CB9 3400 01386 dt b'00000000' 0CBA 3400 01387 dt b'00000000' 0CBB 3400 01388 dt b'00000000' 0CBC 3400 01389 dt b'00000000' 0CBD 3400 01390 dt b'00000000' 0CBE 3400 01391 dt b'00000000' 0CBF 3400 01392 dt b'00000000' 01393 0CC0 3400 01394 dt b'00000000' 0CC1 3400 01395 dt b'00000000' 0CC2 3400 01396 dt b'00000000' 0CC3 3400 01397 dt b'00000000' 0CC4 3400 01398 dt b'00000000' 0CC5 3400 01399 dt b'00000000' 0CC6 3400 01400 dt b'00000000' 0CC7 3400 01401 dt b'00000000' 01402 MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 182 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0CC8 3408 01403 dt b'00001000' ;0 0CC9 3408 01404 dt b'00001000' ;1 0CCA 3408 01405 dt b'00001000' ;2 0CCB 3408 01406 dt b'00001000' ;3 0CCC 3408 01407 dt b'00001000' ;4 0CCD 3408 01408 dt b'00001000' ;5 0CCE 3408 01409 dt b'00001000' ;6 0CCF 3408 01410 dt b'00001000' ;7 01411 0CD0 3408 01412 dt b'00001000' 0CD1 3408 01413 dt b'00001000' 0CD2 3408 01414 dt b'00001000' 0CD3 3408 01415 dt b'00001000' 0CD4 3408 01416 dt b'00001000' 0CD5 3408 01417 dt b'00001000' 0CD6 3408 01418 dt b'00001000' 0CD7 3408 01419 dt b'00001000' 01420 0CD8 3400 01421 dt b'00000000' 0CD9 3400 01422 dt b'00000000' 0CDA 3400 01423 dt b'00000000' 0CDB 3400 01424 dt b'00000000' 0CDC 3400 01425 dt b'00000000' 0CDD 3400 01426 dt b'00000000' 0CDE 3400 01427 dt b'00000000' 0CDF 3400 01428 dt b'00000000' 01429 0CE0 3400 01430 dt b'00000000' 0CE1 3400 01431 dt b'00000000' 0CE2 3400 01432 dt b'00000000' 0CE3 3400 01433 dt b'00000000' 0CE4 3400 01434 dt b'00000000' 0CE5 3400 01435 dt b'00000000' 0CE6 3400 01436 dt b'00000000' 0CE7 3400 01437 dt b'00000000' 01438 0CE8 3410 01439 dt b'00010000' ;0 0CE9 3410 01440 dt b'00010000' ;1 0CEA 3410 01441 dt b'00010000' ;2 0CEB 3410 01442 dt b'00010000' ;3 0CEC 3410 01443 dt b'00010000' ;4 0CED 3410 01444 dt b'00010000' ;5 0CEE 3410 01445 dt b'00010000' ;6 0CEF 3410 01446 dt b'00010000' ;7 01447 0CF0 3410 01448 dt b'00010000' 0CF1 3410 01449 dt b'00010000' 0CF2 3410 01450 dt b'00010000' 0CF3 3410 01451 dt b'00010000' 0CF4 3410 01452 dt b'00010000' 0CF5 3410 01453 dt b'00010000' 0CF6 3410 01454 dt b'00010000' 0CF7 3410 01455 dt b'00010000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 183 LOC OBJECT CODE LINE SOURCE TEXT VALUE 01456 0CF8 3400 01457 dt b'00000000' 0CF9 3400 01458 dt b'00000000' 0CFA 3400 01459 dt b'00000000' 0CFB 3400 01460 dt b'00000000' 0CFC 3400 01461 dt b'00000000' 0CFD 3400 01462 dt b'00000000' 0CFE 3400 01463 dt b'00000000' 0CFF 3400 01464 dt b'00000000' 01465 0D00 3400 01466 dt b'00000000' 0D01 3400 01467 dt b'00000000' 0D02 3400 01468 dt b'00000000' 0D03 3400 01469 dt b'00000000' 0D04 3400 01470 dt b'00000000' 0D05 3400 01471 dt b'00000000' 0D06 3400 01472 dt b'00000000' 0D07 3400 01473 dt b'00000000' 01474 0D08 3420 01475 dt b'00100000' ;0 0D09 3420 01476 dt b'00100000' ;1 0D0A 3420 01477 dt b'00100000' ;2 0D0B 3420 01478 dt b'00100000' ;3 0D0C 3420 01479 dt b'00100000' ;4 0D0D 3420 01480 dt b'00100000' ;5 0D0E 3420 01481 dt b'00100000' ;6 0D0F 3420 01482 dt b'00100000' ;7 01483 0D10 3420 01484 dt b'00100000' 0D11 3420 01485 dt b'00100000' 0D12 3420 01486 dt b'00100000' 0D13 3420 01487 dt b'00100000' 0D14 3420 01488 dt b'00100000' 0D15 3420 01489 dt b'00100000' 0D16 3420 01490 dt b'00100000' 0D17 3420 01491 dt b'00100000' 01492 0D18 3400 01493 dt b'00000000' 0D19 3400 01494 dt b'00000000' 0D1A 3400 01495 dt b'00000000' 0D1B 3400 01496 dt b'00000000' 0D1C 3400 01497 dt b'00000000' 0D1D 3400 01498 dt b'00000000' 0D1E 3400 01499 dt b'00000000' 0D1F 3400 01500 dt b'00000000' 01501 0D20 3400 01502 dt b'00000000' 0D21 3400 01503 dt b'00000000' 0D22 3400 01504 dt b'00000000' 0D23 3400 01505 dt b'00000000' 0D24 3400 01506 dt b'00000000' 0D25 3400 01507 dt b'00000000' 0D26 3400 01508 dt b'00000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 184 LOC OBJECT CODE LINE SOURCE TEXT VALUE 0D27 3400 01509 dt b'00000000' 01510 0D28 3440 01511 dt b'01000000' ;0 0D29 3440 01512 dt b'01000000' ;1 0D2A 3440 01513 dt b'01000000' ;2 0D2B 3440 01514 dt b'01000000' ;3 0D2C 3440 01515 dt b'01000000' ;4 0D2D 3440 01516 dt b'01000000' ;5 0D2E 3440 01517 dt b'01000000' ;6 0D2F 3440 01518 dt b'01000000' ;7 01519 0D30 3440 01520 dt b'01000000' 0D31 3440 01521 dt b'01000000' 0D32 3440 01522 dt b'01000000' 0D33 3440 01523 dt b'01000000' 0D34 3440 01524 dt b'01000000' 0D35 3440 01525 dt b'01000000' 0D36 3440 01526 dt b'01000000' 0D37 3440 01527 dt b'01000000' 01528 0D38 3400 01529 dt b'00000000' 0D39 3400 01530 dt b'00000000' 0D3A 3400 01531 dt b'00000000' 0D3B 3400 01532 dt b'00000000' 0D3C 3400 01533 dt b'00000000' 0D3D 3400 01534 dt b'00000000' 0D3E 3400 01535 dt b'00000000' 0D3F 3400 01536 dt b'00000000' 01537 0D40 3400 01538 dt b'00000000' 0D41 3400 01539 dt b'00000000' 0D42 3400 01540 dt b'00000000' 0D43 3400 01541 dt b'00000000' 0D44 3400 01542 dt b'00000000' 0D45 3400 01543 dt b'00000000' 0D46 3400 01544 dt b'00000000' 0D47 3400 01545 dt b'00000000' 01546 0D48 3480 01547 dt b'10000000' ;0 0D49 3480 01548 dt b'10000000' ;1 0D4A 3480 01549 dt b'10000000' ;2 0D4B 3480 01550 dt b'10000000' ;3 0D4C 3480 01551 dt b'10000000' ;4 0D4D 3480 01552 dt b'10000000' ;5 0D4E 3480 01553 dt b'10000000' ;6 0D4F 3480 01554 dt b'10000000' ;7 01555 0D50 3480 01556 dt b'10000000' 0D51 3480 01557 dt b'10000000' 0D52 3480 01558 dt b'10000000' 0D53 3480 01559 dt b'10000000' 0D54 3480 01560 dt b'10000000' 0D55 3480 01561 dt b'10000000' MPASM 5.22 GENERIC_2009.ASM 6-15-2009 20:18:48 PAGE 185 LOC OBJECT CODE LINE