ADDR B1 B2 B3 B4 X:\public_html\EEL4746\programs\library_old\ PAGE 1 ************************************************************* . ************* * CHICKEN.ASM * Program to play the game "chicken" on the LCD/keypad. ************************************************************* . ************* #include "registers.asm" ; Equates for the HC11 rbase EQU $1000 ; Default base . address of HC11 I/O control registers *------------------------------------------------------------ . ---------- * Internal HC11 I/O registers defined as addresses starting . from rbase. *------------------------------------------------------------ . ---------- * Parallel I/O registers. PORTA EQU rbase+$00 ; Port A Data Register res0 EQU rbase+$01 ; Reserved register #0 PIOC EQU rbase+$02 ; Parallel I/O Control . Register PORTC EQU rbase+$03 ; Port C Data Register PORTB EQU rbase+$04 ; Port B Data Register PORTCL EQU rbase+$05 ; Port C Latched Register res1 EQU rbase+$06 ; Reserved register #1 DDRC EQU rbase+$07 ; Port C Data Direction . Register PORTD EQU rbase+$08 ; Port D Data Register DDRD EQU rbase+$09 ; Port D Data Direction . Register PORTE EQU rbase+$0a ; Port E Data Register * Timer system registers. CFORC EQU rbase+$0b ; Timer Compare Force . Register OC1M EQU rbase+$0c ; Output Compare 1 Mask . Register OC1D EQU rbase+$0d ; Output Compare 1 Data . Register TCNTH EQU rbase+$0e ; Timer Counter Register High . (MSB) TCNTL EQU rbase+$0f ; Timer Counter Register Low . (LSB) TIC1H EQU rbase+$10 ; Timer Input Capture 1 . Register High (MSB) TIC1L EQU rbase+$11 ; Timer Input Capture 1 . Register Low (LSB) TIC2H EQU rbase+$12 ; Timer Input Capture 2 . Register High (MSB) TIC2L EQU rbase+$13 ; Timer Input Capture 2 . Register Low (LSB) TIC3H EQU rbase+$14 ; Timer Input Capture 3 . Register High (MSB) TIC3L EQU rbase+$15 ; Timer Input Capture 3 . Register Low (LSB) TOC1H EQU rbase+$16 ; Timer Output Compare 1 . Register High (MSB) TOC1L EQU rbase+$17 ; Timer Output Compare 1 . Register Low (LSB) TOC2H EQU rbase+$18 ; Timer Output Compare 2 ADDR B1 B2 B3 B4 X:\public_html\EEL4746\programs\library_old\ PAGE 2 . Register High (MSB) TOC2L EQU rbase+$19 ; Timer Output Compare 2 . Register Low (LSB) TOC3H EQU rbase+$1a ; Timer Output Compare 3 . Register High (MSB) TOC3L EQU rbase+$1b ; Timer Output Compare 3 . Register Low (LSB) TOC4H EQU rbase+$1c ; Timer Output Compare 4 . Register High (MSB) TOC4L EQU rbase+$1d ; Timer Output Compare 4 . Register Low (LSB) TI4O5H EQU rbase+$1e ; Timer Input Capture 4/ . Output Compare 5 Register High (MSB) TI4O5L EQU rbase+$1f ; Timer Input Capture 4/ . Output Compare 5 Register Low (LSB) TCTL1 EQU rbase+$20 ; Timer Control Register 1 TCTL2 EQU rbase+$21 ; Timer Control Register 2 TMSK1 EQU rbase+$22 ; Timer Interrupt Mask 1 . Register TFLG1 EQU rbase+$23 ; Timer Interrupt Flag 1 TMSK2 EQU rbase+$24 ; Timer Interrupt Mask 2 . Register TFLG2 EQU rbase+$25 ; Timer Interrupt Flag 2 PACTL EQU rbase+$26 ; Pulse Accumulator Control . Register PACNT EQU rbase+$27 ; Pulse Accumulator Count . Register * Serial Peripheral Interface (SPI) registers. SPCR EQU rbase+$28 ; Serial Peripheral Control . Register SPSR EQU rbase+$29 ; Serial Peripheral Status . Register SPDR EQU rbase+$2a ; Serial Peripheral Data I/O . Register * Serial Communications Interface (SCI) registers. BAUD EQU rbase+$2b ; Baud Rate Register SCCR1 EQU rbase+$2c ; Serial Communications . Control Register 1 SCCR2 EQU rbase+$2d ; Serial Communications . Control Register 2 SCSR EQU rbase+$2e ; Serial Communications . Status Register SCDR EQU rbase+$2f ; Serial Communications Data . Register * Analog-to-Digital (A2D) system registers. ADCTL EQU rbase+$30 ; Analog-to-Digital Control . Status Register ADR1 EQU rbase+$31 ; Analog-to-Digital Results . Register 1 ADR2 EQU rbase+$32 ; Analog-to-Digital Results . Register 2 ADR3 EQU rbase+$33 ; Analog-to-Digital Results . Register 3 ADR4 EQU rbase+$34 ; Analog-to-Digital Results . Register 4 * Miscellaneous control and configuration registers. BPROT EQU rbase+$35 ; Block Protect Register ADDR B1 B2 B3 B4 X:\public_html\EEL4746\programs\library_old\ PAGE 3 EPROG EQU rbase+$36 ; EPROM Programming Control . Register (711E20 only) res2 EQU rbase+$37 ; Reserved register #2 res3 EQU rbase+$38 ; Reserved register #3 OPTION EQU rbase+$39 ; System Configuration . Options Register COPRST EQU rbase+$3a ; Arm/Reset COP Timer . Circuitry Register PPROG EQU rbase+$3b ; EPROM and EEPROM . Programming Control Register HPRIO EQU rbase+$3c ; Highest Priority I Bit . Interrupt and Miscellaneous Reigster INIT EQU rbase+$3d ; RAM and I/O Mapping . Register res4 EQU rbase+$3e ; Reserved register #4 CONFIG EQU rbase+$3f ; System Configuration . Register *---------------------------------------------------------- * Individual register bits. * See datasheet for full descriptions. (Index on pp.38-43.) * * To use these, use BSET, BCLR, BRSET, BRCLR instructions * on the appropriate register address and with an * appropriate mask (logical OR of bits that you want). *---------------------------------------------------------- *---------------- * Parallel Ports * PORTA - Port A Data Register ($1000) PA7 EQU BIT7 ; Port A bit 7, through... PA6 EQU BIT6 PA5 EQU BIT5 PA4 EQU BIT4 PA3 EQU BIT3 PA2 EQU BIT2 PA1 EQU BIT1 PA0 EQU BIT0 ; Port A bit 0. * PIOC - Parallel I/O Control Register ($1002) STAF EQU BIT7 ; Strobe A Interrupt Status Flag STAI EQU BIT6 ; Strobe A Interrupt Enable Mask Bit CWOM EQU BIT5 ; Port C Wired-OR Mode Bit HNDS EQU BIT4 ; Handshake Mode Bit OIN EQU BIT3 ; Output or Input Handshake Select . Bit PLS EQU BIT2 ; Pulsed/Interlocked Handshake . Operation Bit EGA EQU BIT1 ; Active Edge for Strobe A Bit INVB EQU BIT0 ; Invert Strobe B Bit * PORTC - Port C Data Register ($1003) PC7 EQU BIT7 ; Port C bit 7... PC6 EQU BIT6 PC5 EQU BIT5 PC4 EQU BIT4 PC3 EQU BIT3 PC2 EQU BIT2 PC1 EQU BIT1 PC0 EQU BIT0 ; ...through Port C bit 0. ADDR B1 B2 B3 B4 X:\public_html\EEL4746\programs\library_old\ PAGE 4 * PORTB - Port B Data Register ($1004) PB7 EQU BIT7 ; Port B bit 7... PB6 EQU BIT6 PB5 EQU BIT5 PB4 EQU BIT4 PB3 EQU BIT3 PB2 EQU BIT2 PB1 EQU BIT1 PB0 EQU BIT0 ; ...through Port B bit 0. * PORTCL - Port C Latched Register ($1005) PCL7 EQU BIT7 ; Port C, Latched, bit 7... PCL6 EQU BIT6 PCL5 EQU BIT5 PCL4 EQU BIT4 PCL3 EQU BIT3 PCL2 EQU BIT2 PCL1 EQU BIT1 PCL0 EQU BIT0 ; ...through bit 0. * DDRC - Port C Data Direction Register ($1007) DDRC7 EQU BIT7 ; Data direction register for port C . bit 7... DDRC6 EQU BIT6 DDRC5 EQU BIT5 DDRC4 EQU BIT4 DDRC3 EQU BIT3 DDRC2 EQU BIT2 DDRC1 EQU BIT1 DDRC0 EQU BIT0 ; ...through bit 0. * PORTD - Port D Data Register ($1008) PD5 EQU BIT5 ; Port D bit 5... PD4 EQU BIT4 PD3 EQU BIT3 PD2 EQU BIT2 PD1 EQU BIT1 PD0 EQU BIT0 ; ...through bit 0. * DDRD - Port D Data Register ($1009) DDRD5 EQU BIT5 ; Data direction register for port D, . bit 5... DDRD4 EQU BIT4 DDRD3 EQU BIT3 DDRD2 EQU BIT2 DDRD1 EQU BIT1 DDRD0 EQU BIT0 ; ...through bit 0. * PORTE - Port E Data Register ($100a) PE7 EQU BIT7 ; Port E, bit 7... PE6 EQU BIT6 PE5 EQU BIT5 PE4 EQU BIT4 PE3 EQU BIT3 PE2 EQU BIT2 PE1 EQU BIT1 PE0 EQU BIT0 ; ...through bit 0. *----------------- ADDR B1 B2 B3 B4 X:\public_html\EEL4746\programs\library_old\ PAGE 5 * Timer facility * CFORC - Timer Compare Force Register ($100b) FOC1 EQU BIT7 FOC2 EQU BIT6 FOC3 EQU BIT5 FOC4 EQU BIT4 FOC5 EQU BIT3 * OC1M - Output Compare 1 Mask Register ($100c) OC1M7 EQU BIT7 OC1M6 EQU BIT6 OC1M5 EQU BIT5 OC1M4 EQU BIT4 OC1M3 EQU BIT3 * OC1D - Output Compare 1 Data Register ($100d) OC1D7 EQU BIT7 OC1D6 EQU BIT6 OC1D5 EQU BIT5 OC1D4 EQU BIT4 OC1D3 EQU BIT3 * TCTL1 - Timer Control Register 1 ($1020) OM2 EQU BIT7 OL2 EQU BIT6 OM3 EQU BIT5 OL3 EQU BIT4 OM4 EQU BIT3 OL4 EQU BIT2 OM5 EQU BIT1 OL5 EQU BIT0 * TCTL2 - Timer Control Register 2 ($1021) EDG4B EQU BIT7 EDG4A EQU BIT6 EDG1B EQU BIT5 EDG1A EQU BIT4 EDG2B EQU BIT3 EDG2A EQU BIT2 EDG3B EQU BIT1 EDG3A EQU BIT0 * TMSK1 - Timer Interrupt Mask 1 Register ($1022) OC1I EQU BIT7 OC2I EQU BIT6 OC3I EQU BIT5 OC4I EQU BIT4 I4O5I EQU BIT3 IC1I EQU BIT2 IC2I EQU BIT1 IC3I EQU BIT0 * TFLG1 - Timer Interrupt Flag 1 ($1023) OC1F EQU BIT7 OC2F EQU BIT6 OC3F EQU BIT5 OC4F EQU BIT4 ADDR B1 B2 B3 B4 X:\public_html\EEL4746\programs\library_old\ PAGE 6 I4O5F EQU BIT3 IC1F EQU BIT2 IC2F EQU BIT1 IC3F EQU BIT0 * TMSK2 - Timer Interrupt Mask 2 Register ($1024) TOI EQU BIT7 RTII EQU BIT6 PAOVI EQU BIT5 PAII EQU BIT4 PR1 EQU BIT1 PR0 EQU BIT0 * TFLG2 - Timer Interrupt Flag 2 ($1025) TOF EQU BIT7 RTIF EQU BIT6 PAOVF EQU BIT5 PAIF EQU BIT4 * PACTL - Pulse Accumulator Control Register ($1026) DDRA7 EQU BIT7 PAEN EQU BIT6 PAMOD EQU BIT5 PEDGE EQU BIT4 DDRA3 EQU BIT3 I4O5 EQU BIT2 RTR1 EQU BIT1 RTR0 EQU BIT0 *----------------------------------- * Serial Peripheral Interface (SPI) * SPCR - Serial Peripheral Control Register ($1028) SPIE EQU BIT7 SPE EQU BIT6 DWOM EQU BIT5 MSTR EQU BIT4 CPOL EQU BIT3 CPHA EQU BIT2 SPR1 EQU BIT1 SPR0 EQU BIT0 * SPSR - Serial Peripheral Status Register ($1029) SPIF EQU BIT7 WCOL EQU BIT6 MODF EQU BIT4 *--------------------------------------- * Serial Communications Interface (SCI) * BAUD - Baud Rate Register ($102b) TCLR EQU BIT7 SCP2 EQU BIT6 SCP1 EQU BIT5 SCP0 EQU BIT4 RCKB EQU BIT3 SCR2 EQU BIT2 SCR1 EQU BIT1 SCR0 EQU BIT0 ADDR B1 B2 B3 B4 X:\public_html\EEL4746\programs\library_old\ PAGE 7 * SCCR1 - Serial Communications Control Register 1 ($102b) R8 EQU BIT7 T8 EQU BIT6 M EQU BIT4 WAKE EQU BIT3 * SCCR2 - Serial Communications Control Register 2 ($102c) TIE EQU BIT7 TCIE EQU BIT6 RIE EQU BIT5 ILIE EQU BIT4 TE EQU BIT3 RE EQU BIT2 RWU EQU BIT1 SBK EQU BIT0 * SCSR - Serial Communications Status Register ($102e) TDRE EQU BIT7 TC EQU BIT6 RDRF EQU BIT5 IDLE EQU BIT4 OR EQU BIT3 NF EQU BIT2 FE EQU BIT1 * SCDR - Serial Communications Data Register ($102f) R7T7 EQU BIT7 R6T6 EQU BIT6 R5T5 EQU BIT5 R4T4 EQU BIT4 R3T3 EQU BIT3 R2T2 EQU BIT2 R1T1 EQU BIT1 R0T0 EQU BIT0 *----------------------------------- * Analog-to-Digital (A2D) Converter * ADCTL - Analog-to-Digital Control Status Register ($1030) CCF EQU BIT7 SCAN EQU BIT5 MULT EQU BIT4 CD EQU BIT3 CC EQU BIT2 CB EQU BIT1 CA EQU BIT0 * BPROT - Block Protect Register ($1035) PTCON EQU BIT4 BPRT3 EQU BIT3 BPRT2 EQU BIT2 BPRT1 EQU BIT1 BRPT0 EQU BIT0 * EPROG - EPROM Programming Control Register ($1036) MBE EQU BIT7 ELAT EQU BIT6 ADDR B1 B2 B3 B4 X:\public_html\EEL4746\programs\library_old\ PAGE 8 EXCOL EQU BIT5 EXROW EQU BIT4 T1 EQU BIT2 T0 EQU BIT1 PGM EQU BIT0 * OPTION - System Configuration Options Register ($1039) ADPU EQU BIT7 CSEL EQU BIT6 IRQE EQU BIT5 DLY EQU BIT4 CME EQU BIT3 CR1 EQU BIT1 CR0 EQU BIT0 * PPROG - EPROM and EEPROM Programming Control Register . ($103b) ODD EQU BIT7 EVEN EQU BIT6 BYTE EQU BIT4 ROW EQU BIT3 ERASE EQU BIT2 EELAT EQU BIT1 EPGM EQU BIT0 * HPRIO - Highest Priority I Bit Interrupt and Miscellaneous . Register ($103c) RBOOT EQU BIT7 SMOD EQU BIT6 MDA EQU BIT5 IRVNE EQU BIT4 PSEL3 EQU BIT3 PSEL2 EQU BIT2 PSEL1 EQU BIT1 PSEL0 EQU BIT0 * INIT - RAM and I/O Mapping Register ($103d) RAM3 EQU BIT7 RAM2 EQU BIT6 RAM1 EQU BIT5 RAM0 EQU BIT4 REG3 EQU BIT3 REG2 EQU BIT2 REG1 EQU BIT1 REG0 EQU BIT0 * CONFIG - System Configuration Register ($103f) NOSEC EQU BIT3 NOCOP EQU BIT2 ROMON EQU BIT1 EEON EQU BIT0 #include "registers.asm" ; Equates for the HC11 org $2000 ; Locate us in external RAM 2000 7E 02 11 jmp main ; Jump to main routine. #include "random.asm" ; Random-number generator. #include "lcd.asm" ; LCD (Liquid-Crystal ADDR B1 B2 B3 B4 X:\public_html\EEL4746\programs\library_old\ PAGE 9 . Display) code. #include "graphics.asm" ; Game graphics. #include "keypad.asm" ; Keypad code. #include "game.asm" ; Game state. #include "debug.asm" ; For debugging routines. #include "buffalo.asm" ; For SCI routines OUTSTRG0 and . OUTCRLF JUMPINST_SIZE equ 1+ADDRSIZE ; A jump instruction . is a 1-byte opcode plus an address * Buffalo subroutine jumptable addresses * Each location in the jump table contains an appropriate JMP . instruction. * To use, just JSR to the jump table address that you want to . use. Buffalo_utljmp_base org $ffa0 UPCASE rmb JUMPINST_SIZE ; Convert character to . uppercase WCHEK rmb JUMPINST_SIZE ; Test character for . whitespace DCHEK rmb JUMPINST_SIZE ; Check character for . delimiter INITDEV rmb JUMPINST_SIZE ; Initialize I/O device INPUT rmb JUMPINST_SIZE ; Read I/O device OUTPUT rmb JUMPINST_SIZE ; Write I/O device OUTLHLF rmb JUMPINST_SIZE ; Convert left nibble to . ASCII and output OUTRHLF rmb JUMPINST_SIZE ; Convert right nibble to . ASCII and output OUTA rmb JUMPINST_SIZE ; Output ASCII character OUT1BYT rmb JUMPINST_SIZE ; Convert binary byte to 2 . ASCII characters and output OUT1BSP rmb JUMPINST_SIZE ; Convert binary byte to 2 . ASCII characters and output followed by space OUT2BSP rmb JUMPINST_SIZE ; Convert 2 consecutive . binary bytes to 4 ASCII characters and output followed by . space OUTCRLF rmb JUMPINST_SIZE ; Output ASCII carriage . return followed by line feed OUTSTRG rmb JUMPINST_SIZE ; Output ASCII string until . end of transmission ($04) OUTSTRG0 rmb JUMPINST_SIZE ; Same as OUTSTRG except . leading carriage return and line feed is skipped INCHAR rmb JUMPINST_SIZE ; Input ASCII character and . echo back VECINIT rmb JUMPINST_SIZE ; Initialize RAM interrupt . vector table * Buffalo interrupt vector jumptable addresses * Each location in the jump table contains an appropriate JMP . instruction. * To use, store the address of your ISR at the jumptable . address+1. Buffalo_intjmp_base org $00c4 JSCI rmb JUMPINST_SIZE ; Serial Communications . Interface JSPI rmb JUMPINST_SIZE ; Serial Peripheral Interface JPAIE rmb JUMPINST_SIZE ; Pulse Accumulator input . edge JPAO rmb JUMPINST_SIZE ; Pulse Accumulator overflow ADDR B1 B2 B3 B4 X:\public_html\EEL4746\programs\library_old\ PAGE 10 JTOF rmb JUMPINST_SIZE ; Timer overflow JTI4C5 rmb JUMPINST_SIZE ; Timer input capture 4 / . output compare 5 JTOC4 rmb JUMPINST_SIZE ; Timer output compare 4 JTOC3 rmb JUMPINST_SIZE ; Timer output compare 3 JTOC2 rmb JUMPINST_SIZE ; Timer output compare 2 JTOC1 rmb JUMPINST_SIZE ; Timer output compare 1 JTIC3 rmb JUMPINST_SIZE ; Timer input capture 3 JTIC2 rmb JUMPINST_SIZE ; Timer input capture 2 JTIC1 rmb JUMPINST_SIZE ; Timer input capture 1 JRTI rmb JUMPINST_SIZE ; Real-time interrupt JIRQ rmb JUMPINST_SIZE ; IRQ pin (maskable) JXIRQ rmb JUMPINST_SIZE ; XIRQ pin (nonmaskable) JSWI rmb JUMPINST_SIZE ; Software Interrupt JILLOP rmb JUMPINST_SIZE ; Illegal opcode trap JCOP rmb JUMPINST_SIZE ; Computer Operating Properly . watchdog failure JCLM rmb JUMPINST_SIZE ; Clock monitor failure #include "buffalo.asm" ; For SCI routines OUTSTRG0 and . OUTCRLF * Print debug message pointed to by X printmsg: 0100 BD FF CA jsr OUTSTRG0 0103 BD FF C4 jsr OUTCRLF 0106 39 rts mycrlf: 0107 36 psha 0108 86 0D LDAA #CR 010A BD FF AF JSR OUTPUT 010D 86 0A LDAA #LF 010F BD FF AF JSR OUTPUT 0112 32 pula 0113 39 RTS * Print current values of all registers. printregs: 0114 36 psha ; Store all registers 0115 07 tpa 0116 B7 01 E0 staa ccr 0119 32 pula 011A B7 01 D8 staa accA 011D F7 01 D9 stab accB 0120 FD 01 DA std accD 0123 FF 01 DC stx regIX 0126 18 FF 01 DE sty regIY 012A 3C pshx 012B 36 psha 012C CE 01 E1 ldx #aeq 012F BD FF C7 jsr outstrg 0132 CE 01 D8 ldx #accA 0135 BD FF BE jsr out1bsp 0138 CE 01 E4 ldx #beq 013B BD FF CA jsr outstrg0 013E CE 01 D9 ldx #accB 0141 BD FF BE jsr out1bsp 0144 CE 01 E7 ldx #deq 0147 BD FF CA jsr outstrg0 014A CE 01 DA ldx #accD 014D BD FF C1 jsr out2bsp 0150 CE 01 EA ldx #xeq 0153 BD FF CA jsr outstrg0 0156 CE 01 DC ldx #regIX ADDR B1 B2 B3 B4 X:\public_html\EEL4746\programs\library_old\ PAGE 11 0159 BD FF C1 jsr out2bsp 015C CE 01 ED ldx #yeq 015F BD FF CA jsr outstrg0 0162 CE 01 DE ldx #regIY 0165 BD FF C1 jsr out2bsp 0168 CE 01 F0 ldx #ccreq 016B BD FF CA jsr outstrg0 016E CE 01 E0 ldx #ccr 0171 BD FF BE jsr out1bsp 0174 BD FF C4 jsr outcrlf 0177 B6 01 E0 ldaa ccr 017A 06 tap 017B 32 pula 017C 38 pulx 017D 39 rts * Print current value of A accumulator. 017E B7 01 D8 printA: staa accA 0181 36 psha 0182 3C pshx 0183 CE 01 D8 ldx #accA 0186 BD FF BE jsr out1bsp 0189 38 pulx 018A 32 pula 018B 39 rts 018C F7 01 D9 printB: stab accB 018F 36 psha 0190 3C pshx 0191 CE 01 D9 ldx #accB 0194 BD FF BE jsr out1bsp 0197 38 pulx 0198 32 pula 0199 39 rts 019A FD 01 DA printD: std accD 019D 36 psha 019E 3C pshx 019F CE 01 DA ldx #accD 01A2 BD FF C1 jsr out2bsp 01A5 38 pulx 01A6 32 pula 01A7 39 rts 01A8 FF 01 DC printX: stx regIX 01AB 36 psha 01AC 3C pshx 01AD CE 01 DC ldx #regIX 01B0 BD FF C1 jsr out2bsp 01B3 38 pulx 01B4 32 pula 01B5 39 rts 01B6 18 FF 01 DE printY: sty regIY 01BA 36 psha 01BB 3C pshx 01BC CE 01 DE ldx #regIY 01BF BD FF C1 jsr out2bsp 01C2 38 pulx 01C3 32 pula 01C4 39 rts printCCR: 01C5 36 psha ADDR B1 B2 B3 B4 X:\public_html\EEL4746\programs\library_old\ PAGE 12 01C6 07 tpa 01C7 B7 01 E0 staa ccr 01CA 3C pshx 01CB CE 01 E0 ldx #ccr 01CE BD FF BE jsr out1bsp 01D1 38 pulx 01D2 B6 01 E0 ldaa ccr 01D5 06 tap 01D6 32 pula 01D7 39 rts accA: rmb 1 accB: rmb 1 accD: rmb 2 regIX: rmb 2 regIY: rmb 2 ccr: rmb 1 01E1 41 3D aeq: fcc "A=" 01E3 04 fcb EOT 01E4 42 3D beq: fcc "B=" 01E6 04 fcb EOT 01E7 44 3D deq: fcc "D=" 01E9 04 fcb EOT 01EA 58 3D xeq: fcc "X=" 01EC 04 fcb EOT 01ED 59 3D yeq: fcc "Y=" 01EF 04 fcb EOT 01F0 43 43 52 3D ccreq: fcc "CCR=" 01F4 04 fcb EOT * Wait for user to hit enter 01F5 36 pause: psha 01F6 BD FF CD jsr inchar 01F9 32 pula 01FA 39 rts #include "debug.asm" ; For debugging routines. *============================================================ . ====================== * Main program. *============================================================ . ======================= 01FB 73 74 61 72 debug2: fcc "starting main program" . 01FF 74 69 6E 67 . 0203 20 20 61 69 . 0207 6E 20 70 72 . 020B 6F 67 72 00 . 020F 6D 0210 04 fcb EOT * Start of program. main: 0211 CE 01 FB ldx #debug2 0214 BD 01 00 jsr printmsg 0217 BD 21 0F jsr init_LCD ; Initialize the LCD display 021A BD 23 52 jsr init_keypad ; Setup Keypad 021D BD 22 3F jsr store_glyphs ; Store some custom character . glyphs in the CGRAM. 0220 BD 20 8E jsr seedtime ; Seed random number . generator with current time. ADDR B1 B2 B3 B4 X:\public_html\EEL4746\programs\library_old\ PAGE 13 0223 BD 28 C5 jsr init_game ; Initialize everything for a . new game 0226 BD 29 B4 jsr game_loop ; Enter main game loop 0229 39 rts ; game exit, return from main *================================= * END OF PROGRAM: CHICKEN.ASM *================================= Symbol Table ALL1S 00FF CLR_HOM 0001 CA 0001 ETB 0017 SEND_CMD 2223 CB 0002 MULT 0010 CC 0004 CD 0008 NOCOP 0004 LANELENGTH 000E TXD 0002 CR 000D STORE_GLYPH 2255 INITLEVEL 0001 EXPLOSION_CHAR 0007 INCHAR FFCD RANDVAL 2068 EDG1A 0010 ETX 0003 EDG1B 0020 RL_RIGHT 0004 BPRT1 0002 BPRT2 0004 LAY_ROTTEN 2A28 RINDEX 2067 BPRT3 0008 ID_INC 0002 STAF 0080 ENDSTR 00FF OPTION 1039 STAI 0040 US 001F ROW4_END 0067 CONFIG 103F TMPX 219B PORTCL 1005 CAR_R_CHAR 0003 DONE 20F8 FOC1 0080 FOC2 0040 OUTA FFB8 PICK_CHIK 2A2A FOC3 0020 PLS 0004 FOC4 0010 BRPT0 0001 FOC5 0008 PAMOD 0020 DELAY 23BC EDG2A 0004 EDG2B 0008 B_BLINK 0001 Symbol Table X:\public_html\EEL4746\programs\library_old\ PAGE 14 ROTATE 20F3 CHIKLB 2295 ROW1_START 0000 CHIKLF 228D DDRAM_ADDRSET 0080 WRITE_LCD 222A VT 000B CPOL 0008 EM 0019 INITLANES 0001 PEDGE 0010 INITEGGS 000C PAOVF 0020 NOMORE 2206 PAOVI 0020 NROTS 23C9 TIE 0080 SHIFT_DN 2A29 EDG3A 0001 EVEN 0040 IDLE 0010 EDG3B 0002 EXROW 0010 SCORE 23CB FE 0002 FF 000C LANEY0 23CD RTIF 0040 STIRGOOD 20A9 M 0010 RTII 0040 PCL0 0001 PCL1 0002 I4O5 0004 PCL2 0004 COPRST 103A TI4O5H 101E SOH 0001 R6T6 0040 PCL3 0008 KEY_CHECK 2374 PCL4 0010 MYCRLF 0107 CR0 0001 PCL5 0020 CR1 0002 PCL6 0040 TI4O5L 101F BEL 0007 PCL7 0080 JCLM 00FD ROTTENL 22AD FS 001C SCRAMBLE 20BF ROW3_END 0027 BEQ 01E4 PACTL 1026 REG0 0001 PAEN 0040 EDG4A 0040 INITCHICKD 0000 KEY_SCAN 237E ROTTENR 22B5 REG1 0002 EDG4B 0080 Symbol Table X:\public_html\EEL4746\programs\library_old\ PAGE 15 INIT 103D DLE 0010 REG2 0004 INITCHICKF 0000 REG3 0008 R3T3 0008 GET_KEY 2358 ROW_LENGTH 0014 INITCHICKH 0001 TCTL1 1020 DLOOP 223B TCTL2 1021 XEQ 01EA SPIE 0080 INITCHICKL 0000 SPIF 0080 SPE 0040 LSTRL 21EF EGA 0002 CHICK_MOVELF 2A25 WAIT_LCD 2231 CHECKCOLL 2A23 MAXROTS 0003 LCD_OUT 21C1 ANY_KEY 236F EXPL1 22DC EGG 22A5 R0T0 0001 EXPL2 22E4 GS 001D EXPL3 22EC TDRE 0080 OUTLHLF FFB2 SFLAG 0080 EXPL4 22F4 INITCHICKX 0007 TMSK1 1022 ZFLAG 0004 ENDLANES 28C5 INITCHICKY 0003 ODD 0080 DLY 0010 TMSK2 1024 SHOW_GLYPHS 2273 STORE_GLYPHS 223F N_2LINES 0008 RAM0 0010 RAM1 0020 BIT10 0004 RAM2 0040 SCCR1 102C BIT11 0008 UPCASE FFA0 RAM3 0080 SCCR2 102D BIT12 0010 CAN 0018 GAME_LOOP 29B4 BIT13 0020 IC1F 0004 BIT14 0040 BIT15 0080 IC1I 0004 NEXTGL 2243 EEON 0001 Symbol Table X:\public_html\EEL4746\programs\library_old\ PAGE 16 OC1D3 0008 OUTRHLF FFB5 OC1D4 0010 PIOC 1002 OC1D5 0020 RSTR0 230C OC1D6 0040 NO_KEY 23BA RSTR1 2312 OC1D7 0080 RSTR2 2318 TRUCK_L_CHAR 0006 BAUD 102B ROW1 0004 RSTR3 231E ROW2 0008 ROW3 0010 DCHEK FFA6 ROW4 0020 NEXTROW 2263 LCD_CTL B5F0 OC1D 100D PR0 0001 JTOC1 00DF PR1 0002 OC1F 0080 JTOC2 00DC EXCOL 0020 JTOC3 00D9 INIT_LCD 210F ROW2_END 0053 ENT_MOD 0004 JTOC4 00D6 LEVEL 23C6 INITSPEED 0001 LCD_BASE B5F0 IC2F 0002 OC1I 0080 EPGM 0001 RWU 0002 IC2I 0002 TIC1H 1010 OC1M 100C SC_SHIFT 0008 CWOM 0020 PA0 0001 PA1 0002 ADCTL 1030 TIC1L 1011 GLYPH_TABLE 22FC PA2 0004 PA3 0008 PA4 0010 DL_8BIT 0010 PA5 0020 JCOP 00FA VECINIT FFD0 OUTCRLF FFC4 PA6 0040 PA7 0080 BUFFALO_INTJMP_BASE 00C4 CCF 0080 EPROG 1036 OC2F 0040 IC3F 0001 Symbol Table X:\public_html\EEL4746\programs\library_old\ PAGE 17 OC2I 0040 TOC1H 1016 NEGGS 23C8 SHIFT_LEFT 221C TFLG1 1023 TFLG2 1025 CCR 01E0 IC3I 0001 TIC2H 1012 MAIN 0211 INITLIVES 0005 TOC1L 1017 PTCON 0010 PAIF 0010 PB0 0001 TCIE 0040 PB1 0002 TIC2L 1013 JTIC1 00E8 JUMPINST_SIZE 0003 PB2 0004 JTIC2 00E5 PAII 0010 PB3 0008 JTIC3 00E2 SCP0 0010 PB4 0010 SCP1 0020 PB5 0020 JRTI 00EB MOVEHIM 2A17 SCP2 0040 PB6 0040 NLANES 23C7 PB7 0080 NCARS 23D4 LANES 27D5 SBK 0001 CHIKRB 2285 OC3F 0020 CHIKRF 227D CFORC 100B OC3I 0020 TOC2H 1018 WAIT_RELEASE 29F8 JIRQ 00EE PSEL0 0001 PSEL1 0002 TIC3H 1014 PSEL2 0004 TOC2L 1019 PSEL3 0008 PRINTREGS 0114 PC0 0001 PC1 0002 TIC3L 1015 LANE_STR 2333 PC2 0004 PC3 0008 ROW1_END 0013 PC4 0010 PC5 0020 PC6 0040 PC7 0080 CHICKD 23D1 Symbol Table X:\public_html\EEL4746\programs\library_old\ PAGE 18 TOF 0080 NOSEC 0008 CHICKF 23D3 MAXEGGS 000C R7T7 0080 TOI 0080 PRINTCCR 01C5 CHICKH 23D2 STX 0002 CARL 22C4 CSEL 0040 SUB 001A LF 000A RIE 0020 OC4F 0010 MBE 0080 CHICKL 23D0 MAXLEVEL 0009 OC4I 0010 TOC3H 101A JSPI 00C7 CARR 22BC ROW4_START 0054 F_5X10DOTS 0004 TOC3L 101B CFLAG 0001 KEY_ROW 23A1 PD0 0001 ILIE 0010 PD1 0002 CARX 23D5 R4T4 0010 PD2 0004 CARY 24D5 PD3 0008 SCR0 0001 PD4 0010 YEQ 01ED OUT1BSP FFBE CHICKX 23CE SCR1 0002 PD5 0020 XFLAG 0040 CHICKY 23CF SCR2 0004 RBASE 1000 GRASS_STR 2324 COL1 0001 COL2 0002 SEEDTIME 208E END_SWITCH 29F8 COL3 0004 COL4 0008 ROTTEN_CHAR 0002 S_SHIFT 0001 R1T1 0002 DDRA3 0008 ACCA 01D8 RDRF 0020 MODF 0010 OIN 0008 TOC4H 101C ACCB 01D9 HNDS 0010 ACCD 01DA Symbol Table X:\public_html\EEL4746\programs\library_old\ PAGE 19 LCD_DAT B5F1 DDRA7 0080 TOC4L 101D PRINTMSG 0100 PE0 0001 PRINTA 017E PE1 0002 PRINTB 018C PE2 0004 PE3 0008 PRINTD 019A PE4 0010 PE5 0020 PE6 0040 PE7 0080 SMOD 0040 MAXLANES 000A TRUCKL 22D4 ROMON 0002 CHICK_MOVERT 2A26 CHICKEN_CHAR 0000 MDA 0020 JTI4C5 00D3 RANDWORD 2100 JILLOP 00F7 NF 0004 TCLR 0080 WCHEK FFA3 RTR0 0001 TRUCKR 22CC NOFIX 20A2 RTR1 0002 HPRIO 103C KEY_DONE 23B0 SCAN 0020 DC1 0011 PRINTX 01A8 DC2 0012 PRINTY 01B6 DC3 0013 EGG_CHAR 0001 D_DISP 0004 OUTSTRG0 FFCA DC4 0014 ENDBUF 2067 PUT_CHIK 2A31 WAIT_LOOP 2235 SPEED 23CA RET_HOM 0002 LOCMAP 214B CCREQ 01F0 ENQ 0005 OL2 0040 IFLAG 0010 OL3 0010 DDRC0 0001 TAB 0009 CAR_L_CHAR 0004 OL4 0004 DDRC1 0002 OL5 0001 DDRC2 0004 SCSR 102E DDRC3 0008 NOTSTAR 29F8 Symbol Table X:\public_html\EEL4746\programs\library_old\ PAGE 20 LCD_FIX 21E6 ADPU 0080 DDRC4 0010 SPR0 0001 DDRC5 0020 OK 20ED SPR1 0002 CPHA 0004 DDRC6 0040 DDRC7 0080 NOTFLAT 2A04 TRUCK_R_CHAR 0005 DISP_ONOFF 0008 DWOM 0020 SPLAT 229D LCD_AD1 21D8 LCD_AD2 21DC IRVNE 0010 OR 0008 LCD_AD3 21E0 ADR1 1031 LCD_AD4 21E4 ADR2 1032 JPAO 00CD BUFFALO_UTLJMP_BASE FFA0 ROW3_START 0014 ADR3 1033 NLIVES 23C5 SET_LOC 220C ADR4 1034 DEBUG0 2069 JXIRQ 00F1 DEBUG1 299C DEBUG2 01FB LCDSTR 21ED OM2 0080 OM3 0020 DDRD0 0001 OM4 0008 DDRD1 0002 EOT 0004 OM5 0002 DDRD2 0004 CD_SHIFT 0010 DDRD3 0008 ELAT 0040 DDRD4 0010 INIT_GAME 28C5 DDRD5 0020 PORTA 1000 PORTB 1004 ACK 0006 RANDBYTE 20F9 PORTC 1003 PORTD 1008 PORTE 100A BIT0 0001 LAY_EGG 2A27 BIT1 0002 SYN 0016 BIT2 0004 BIT3 0008 BIT4 0010 JTOF 00D0 JSCI 00C4 Symbol Table X:\public_html\EEL4746\programs\library_old\ PAGE 21 PGM 0001 BIT5 0020 CHICK_MOVEUP 29FF BIT6 0040 RANDBUF 2003 BIT7 0080 NOT2 29C6 DDRC 1007 BIT8 0001 DDRD 1009 BIT9 0002 NAK 0015 NOT4 29D8 INIT_KEYPAD 2352 NOT6 29E1 I4O5F 0008 CHICK_MOVEDN 2A24 NOT8 29CF MSTR 0010 CARDIR 26D5 I4O5I 0008 WCOL 0040 GOTOXY 219C RETURN 2A23 PRINTIT 2274 R8 0080 PPROG 103B HFLAG 0020 NOTA 29EA OC1M3 0008 TCNTH 100E NOTB 29F3 CARTYP 25D5 OC1M4 0010 SCDR 102F OUTSTRG FFC7 RBOOT 0080 OC1M5 0020 DEL 007F CLRLANES 2993 OC1M6 0040 VFLAG 0002 OC1M7 0080 TCNTL 100F SPSR 1029 DEQ 01E7 TABLE 2342 BPROT 1035 RCKB 0008 RE 0004 R5T5 0020 FUNC_SET 0020 ERASE 0004 INPUT FFAC C_CURSOR 0002 INITROTS 0001 CLEAR_DISP 2215 PAUSE 01F5 INITLANEY0 0003 PACNT 1027 AEQ 01E1 OUT2BSP FFC1 RS 001E R2T2 0004 JPAIE 00CA Symbol Table X:\public_html\EEL4746\programs\library_old\ PAGE 22 STIRONCE 20B3 RES0 1001 OUT1BYT FFBB ROW 0008 RES1 1006 MAXLIVES 0009 RES2 1037 RES3 1038 STIRLOOP 20B7 RES4 103E IRQE 0020 INVB 0001 ROW2_START 0040 T0 0002 T1 0004 SPCR 1028 SI 000F WAKE 0008 JSWI 00F4 BYTE 0010 ESC 001B SO 000E T8 0040 OUTPUT FFAF BF 0080 NUL 0000 EELAT 0002 MLOOP 29BA READ_LOC 2144 CME 0008 CGRAM_ADDRSET 0040 STIRRING 20AC TC 0040 REGIX 01DC REGIY 01DE TE 0008 INITDEV FFA9 NFLAG 0008 BS 0008 ADDRSIZE 0002 SPDR 102A