.include "m8def.inc" .NOLIST .LIST .def w = r16 .def delayt = r19 .def delayt1 = r20 .def textx = r14 .def texty = r15 .def nibblex = r12 .def nibbley = r13 ;constants and pins .equ lcd_con = portd .equ lcd_reset= 2 .equ lcd_dc = 4 .equ lcd_sce = 3 .equ vramL = 0x08 .equ vramH = 0x02 .equ b_port = pinb .equ b_u = 1 .equ b_d =0 .equ b_l = 7 .equ b_r = 6 .equ b_1 = 6 .equ b_2 = 7 .equ p_port = portc ;piezo port .equ pez = 0 ;pezo pin ;variable for Softag: .equ stag_stat = 0x0066 ; some status bits ;variables in sram .equ menu_pos = 0xA0 ;variables for 'snakes' .equ snake_len = 0x70 .equ score = 0x71 .equ level = 0x72 .equ s_pointer =0 ;points to snake_pos mem location .def snake_x = r10 .def snake_y = r11 .def snake_dir = r25 ;direction snake is moving .def snake_dir_old = r9 ;direction snake WAS moving .equ snake_posL = 0x80 ;store snake x and y cordinates .equ snake_posH = 0x00 ;variables for 'tetris' .equ tet_boardL = 0x80 ;Tetris board memory map .equ tet_boardH = 0x00 .def blockX = r10 ;multi use block cordinates .def blockY = r11 .def block_no = r9 ;tetris block number .def block_pos = r8 ;rotation angle .def tet_stat = r25 ;status bits reset_vect: rjmp initalise_hw .org $004 rjmp stag_jmp .org $00B rjmp stag_jmp ;---start of code-- .org $013 stag_jmp: jmp stag initalise_hw: ;setup stack LDI R16,HIGH(RAMEND) ; Upper byte OUT SPH,R16 ; to stack pointer LDI R16, LOW(RAMEND) ; Lower byte OUT SPL,R16 ; to stack pointer ;-----setup Rs232 -------------------- clr r16 out UBRRH,r16 ldi r16, 8 ;5600 @ 8 mhz out UBRRL,r16 ldi r16, (1< .DB 0x02, 0x01, 0x51, 0x09, 0x06 ;? .DB 0x32, 0x49, 0x59, 0x51, 0x3E ;@ .DB 0x7E, 0x11, 0x11, 0x11, 0x7E ;A .DB 0x7F, 0x49, 0x49, 0x49, 0x36 ;B .DB 0x3E, 0x41, 0x41, 0x41, 0x22 ;C .DB 0x7F, 0x41, 0x41, 0x22, 0x1C ;D .DB 0x7F, 0x49, 0x49, 0x49, 0x41 ;E .DB 0x7F, 0x09, 0x09, 0x09, 0x01 ;F .DB 0x3E, 0x41, 0x49, 0x49, 0x7A ;G .DB 0x7F, 0x08, 0x08, 0x08, 0x7F ;H .DB 0x00, 0x41, 0x7F, 0x41, 0x00 ;I .DB 0x20, 0x40, 0x41, 0x3F, 0x01 ;J .DB 0x7F, 0x08, 0x14, 0x22, 0x41 ;K .DB 0x7F, 0x40, 0x40, 0x40, 0x40 ;L .DB 0x7F, 0x02, 0x0C, 0x02, 0x7F ;M .DB 0x7F, 0x04, 0x08, 0x10, 0x7F ;N .DB 0x3E, 0x41, 0x41, 0x41, 0x3E ;O .DB 0x7F, 0x09, 0x09, 0x09, 0x06 ;P .DB 0x3E, 0x41, 0x51, 0x21, 0x5E ;Q .DB 0x7F, 0x09, 0x19, 0x29, 0x46 ;R .DB 0x46, 0x49, 0x49, 0x49, 0x31 ;S .DB 0x01, 0x01, 0x7F, 0x01, 0x01 ;T .DB 0x3F, 0x40, 0x40, 0x40, 0x3F ;U .DB 0x1F, 0x20, 0x40, 0x20, 0x1F ;V .DB 0x3F, 0x40, 0x38, 0x40, 0x3F ;W .DB 0x63, 0x14, 0x08, 0x14, 0x63 ;X .DB 0x07, 0x08, 0x70, 0x08, 0x07 ;Y .DB 0x61, 0x51, 0x49, 0x45, 0x43 ;Z .DB 0x00, 0x7F, 0x41, 0x41, 0x00 ;[ .DB 0x55, 0x2A, 0x55, 0x2A, 0x55 ;55 .DB 0x00, 0x41, 0x41, 0x7F, 0x00 ;] .DB 0x04, 0x02, 0x01, 0x02, 0x04 ;^ .DB 0x40, 0x40, 0x40, 0x40, 0x40 ;_ .DB 0x00, 0x01, 0x02, 0x04, 0x00 ;' .DB 0x20, 0x54, 0x54, 0x54, 0x78 ;a .DB 0x7F, 0x48, 0x44, 0x44, 0x38 ;b .DB 0x38, 0x44, 0x44, 0x44, 0x20 ;c .DB 0x38, 0x44, 0x44, 0x48, 0x7F ;d .DB 0x38, 0x54, 0x54, 0x54, 0x18 ;e .DB 0x08, 0x7E, 0x09, 0x01, 0x02 ;f .DB 0x0C, 0x52, 0x52, 0x52, 0x3E ;g .DB 0x7F, 0x08, 0x04, 0x04, 0x78 ;h .DB 0x00, 0x44, 0x7D, 0x40, 0x00 ;i .DB 0x20, 0x40, 0x44, 0x3D, 0x00 ;j .DB 0x7F, 0x10, 0x28, 0x44, 0x00 ;k .DB 0x00, 0x41, 0x7F, 0x40, 0x00 ;l .DB 0x7C, 0x04, 0x18, 0x04, 0x78 ;m .DB 0x7C, 0x08, 0x04, 0x04, 0x78 ;n .DB 0x38, 0x44, 0x44, 0x44, 0x38 ;o .DB 0x7C, 0x14, 0x14, 0x14, 0x08 ;p .DB 0x08, 0x14, 0x14, 0x18, 0x7C ;q .DB 0x7C, 0x08, 0x04, 0x04, 0x08 ;r .DB 0x48, 0x54, 0x54, 0x54, 0x20 ;s .DB 0x04, 0x3F, 0x44, 0x40, 0x20 ;t .DB 0x3C, 0x40, 0x40, 0x20, 0x7C ;u .DB 0x1C, 0x20, 0x40, 0x20, 0x1C ;v .DB 0x3C, 0x40, 0x30, 0x40, 0x3C ;w .DB 0x44, 0x28, 0x10, 0x28, 0x44 ;x .DB 0x0C, 0x50, 0x50, 0x50, 0x3C ;y .DB 0x44, 0x64, 0x54, 0x4C, 0x44 ;z tet_blocks: ;tetris blocks, 7 blocks, angle of each is defined ; # ;### .DB 0x08, 0x0C, 0x08, 0x00 .DB 0x0E, 0x04, 0x00, 0x00 .DB 0x02, 0x06, 0x02, 0x00 .DB 0x00, 0x04, 0x0E, 0x00 ;each image is 4 bytes in a colum ;## ;## .DB 0x00, 0x0C, 0x0C, 0x00 ;4 rotations of (square so no change) .DB 0x00, 0x0C, 0x0C, 0x00 ;increase is clockwise rotation .DB 0x00, 0x0C, 0x0C, 0x00 .DB 0x00, 0x0C, 0x0C, 0x00 ;#### .DB 0x04, 0x04, 0x04, 0x04 .DB 0x00, 0x00, 0x0F, 0x00 .DB 0x04, 0x04, 0x04, 0x04 .DB 0x00, 0x00, 0x0F, 0x00 ;test ;.DB 96, 144, 144, 224 ;.DB 0xff, 0xff, 0xff, 0xff ; ## ;## .DB 0x08, 0x0C, 0x04, 0x00 .DB 0x00, 0x06, 0x0C, 0x00 .DB 0x08, 0x0C, 0x04, 0x00 .DB 0x00, 0x06, 0x0C, 0x00 ;## ; ## .DB 0x00, 0x04, 0x0C, 0x08 .DB 0x00, 0x0C, 0x06, 0x00 .DB 0x00, 0x04, 0x0C, 0x08 .DB 0x00, 0x0C, 0x06, 0x00 ; # ;### .DB 0x08, 0x08, 0x0C, 0x00 .DB 0x00, 0x1C, 0x10, 0x00 .DB 0x0C, 0x04, 0x04, 0x00 .DB 0x02, 0x0E, 0x00, 0x00 ;# ;### .DB 0x0C, 0x08, 0x08, 0x00 .DB 0x00, 0x1C, 0x04, 0x00 .DB 0x04, 0x04, 0x0C, 0x00 .DB 0x08, 0x0E, 0x00, 0x00 ;;#### .DB 0x04, 0x04, 0x04, 0x04 .DB 0x00, 0x00, 0x0F, 0x00 .DB 0x04, 0x04, 0x04, 0x04 .DB 0x00, 0x00, 0x0F, 0x00