//------------------------------- // Snakes of Atari Island // // Author: Jakub "JKR" Krzak // Katowice, April 2012 //------------------------------- _scr equ $7000 _scrL12 equ _scr + 12*40 _scrL20 equ _scr + 20*40 _scrL24 equ _scr + 24*40 _scrL25 equ _scr + 25*40 ; first line after the screen memory ; first byte of this line must be 0 DList: ;$70 dta b(112) ;$70 + $80 dta b(240) ;$42, _scr dta b(66) dta a(_scr) ;$10 + $80 dta b(144) ;$10 dta b(16) ;23 times ($02 + $80) :23 dta b(130) ;$10 + $80 dta b(144) DLScrllLine: ;$02 ;+ $10 ; optionally with scroll dta b(2) ;$41, DList dta b(65) dta a(DList) DList2: ;$70 dta b(112) ;$70 + $80 dta b(240) ;$42, _scr ;0 dta b(66) dta a(_scr) ;$10 + $80 dta b(144) ;$10 dta b(16) ;10 times ($02 + $80);1..10 :10 dta b(130) ;$10 ;11 dta b(16) ;$10 + $80 dta b(144) ;$10 dta b(16) ;$10 dta b(16) ;$42 + $80, _scrL12 ;12 dta b(194) dta a(_scrL12) ;6 times ($02 + $80) ;13..18 :6 dta b(130) ;$10 + $80 ;19 dta b(144) ;$10 dta b(16) ;$10 dta b(16) ;$10 dta b(16) ;$42 + $80, _scrL20 ;20 dta b(194) dta a(_scrL20) ;3 times ($02 + $80) ;21..23 :3 dta b(130) ;$10 + $80 dta b(144) DLScrllLine2: ;$02 ;+ $10 ; optionally with scroll ; 24 dta b(2) ;$41, DList2 dta b(65) dta a(DList2) ;Color schemes .array ColorSchemes .byte $B0, $42, $62, $F0 $A0, $42, $62, $F0 $40, $B2, $62, $F0 $30, $B2, $62, $F0 $D0, $42, $62, $F0 $00, $42, $62, $F0 .enda .array FHighlight[25] .byte = 0 .enda .array FHighlightEx[25] .byte = 0 .enda ;------------------------------------------------------------------------- DLI_Proc1 .proc pha txa pha ldx vcnt cpx #0 jne l2 mva _msgBrUpper COL_PF1 l2 sta WSYNC cpx #1 jne l0 mva _bgrndClr COL_BK l0 lda FHighlight,x sta PM_PATRN lda FHighlightEx,x sta PM_PATRN+1 cpx #24 jne l1 mva _msgBrLower COL_PF1 sta WSYNC mva COL_BK_S COL_BK mva COL_PF2_S COL_PF2 jmp ex l1 cpx #1 jne ex mva _bgrndClr COL_PF2 mva COL_PF1_S COL_PF1 ex inc vcnt pla tax pla rti .endp ;------------------------------------------------------------------------- DLI_Proc1A .proc pha txa pha ldx vcnt cpx #0 jne l0 mva _msgBrUpper COL_PF1 l0 sta WSYNC lda FHighlight,x sta PM_PATRN lda FHighlightEx,x sta PM_PATRN+1 cpx #24 jne l1 mva _msgBrLower COL_PF1 sta WSYNC mva COL_PF2_S COL_PF2 jmp ex l1 cpx #0 jne l2 mva _msgBrUpper COL_PF1 jmp ex l2 cpx #1 jne ex mva _bgrndClr COL_PF2 mva COL_PF1_S COL_PF1 ex inc vcnt pla tax pla rti .endp ;------------------------------------------------------------------------- DLI_Proc2 .proc pha lda vcnt cmp #7 jne l1 mva #255 PM_PATRN mva #255 PM_PATRN+1 mva #255 PM_PATRN+2 jmp ex l1 cmp #17 jne l2 mva #0 PM_PATRN mva #0 PM_PATRN+1 mva #0 PM_PATRN+2 jmp ex l2 lda vcnt cmp #1 jne l3 sta WSYNC mva _bgrndClr COL_BK mva _bgrndClr COL_PF2 mva COL_PF1_S COL_PF1 jmp ex l3 cmp #0 jne l4 mva _msgBrUpper COL_PF1 jmp ex l4 cmp #24 jne ex mva _msgBrLower COL_PF1 sta WSYNC mva COL_BK_S COL_BK mva COL_PF2_S COL_PF2 ex inc vcnt pla rti .endp ;------------------------------------------------------------------------- DLI_Proc2A .proc pha lda vcnt cmp #12 jne l1 sta WSYNC mva #255 PM_PATRN mva #255 PM_PATRN+1 jmp ex l1 cmp #20 jne l2 sta WSYNC mva #0 PM_PATRN mva #0 PM_PATRN+1 jmp ex l2 cmp #1 jne l3 sta WSYNC mva _bgrndClr COL_BK mva _bgrndClr COL_PF2 jmp ex l3 cmp #0 jne l4 mva _msgBrUpper COL_PF1 jmp ex l4 cmp #24 jne ex mva _msgBrLower COL_PF1 sta WSYNC mva COL_BK_S COL_BK mva COL_PF2_S COL_PF2 ex inc vcnt pla rti .endp ;------------------------------------------------------------------------- ClearScr .proc fillMemory _scr (_scr + 40*24) 0 rts .endp