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