›|     ÓÈÏ×ÅÒ äìá ÓÈÉÍÃá    |››|Autor:SERO/SAMAR^VP^AUP^PT|››|Wersja:1.0|Data:25.04.1997|›› opt 21 -do pamieci››*adresy segmentow |dlugosc:›pict1 equ $3010 -Bitplane nr.1 $1e00›pict2 equ $5010 -Bitplane nr.2 $1e00›colm equ $7000 -Shower mapy kolorow nr.1 $1a00›colm2 equ $8a00 -Shower mapy kolorow nr.2 $1a00›dlist equ $a400 -Display list nr.1 $500›dlist2 equ $a900 -Display list nr.2 $500›mem_1col equ $b000 -Mapa kolorow nr.1 $500›mem_2col equ $b500 -Mapa kolorow nr.2 $500›shower equ $ba00 -Adres wyswietlarki $????››*stale SHOWERa›dups equ $d018 -Rejestr na ktorym symulejmy mape kolorow›illin equ 96 -Ilosci lini ekranu/2››› org shower››*--------------------› lda #0 -Wylacz DMA i przerwania.› sta $d40e -Te procedury moga byc wywolane tylko jeden raz dla› sta $d400 -dla danego rysunku.Potem mozna skakac bezposrednio› jsr makedl -do SETGM. Przy takim rozwiazaniu zwalniaja sie› jsr makecm -obszary mapy kolorow - moga byc uzyte do innych› *celow››*Pokaz rysunek w SHIMC›*---------------------›setgm equ *› lda #0 wylacz przerwania› sta $d40e› sei›› sta $d016 zeruj kolory› sta $d017› sta $d018› sta $d019› sta $d01a›› lda #1 ustaw GTIA i DMA› sta $d01b› lda #%100010› sta $d400››gm01 lda $d40b czekaj na poczatek› bne gm01 ekranu›› ldx dlist› stx $d402› sty $d403››gm02 lda $d40b znowu poczekaj na› bne gm02 poczatek ekranu›› ldx #0 wlacz Shower› ldy #0 mapy kolorow› jsr colm›› lda #0 skasuj pozostalosci› sta dups mapy kolorow›› lda #$40 wlacz przerwania› sta $d40e› cli› rts››*Utworz Display List nr1. i 2›*----------------------------›makedl equ *› ldx dlist List nr.1› stx putbyte+1› sty putbyte+2›› ldx pict1 z Bitplanu nr.1› stx $f0› sty $f1›› ldx pict2+40 z Bitplanu nr.2› stx $f2› sty $f3›› lda #$70 Wstaw puste linie› jsr putbyte› lda #$70› jsr putbyte› lda #$70› jsr putbyte›› ldy #illin ile lini/2››d001 lda #$4f Linie nieparzyste› jsr putbyte z bitplanu nr.1› clc› lda $f0› jsr putbyte› adc #80› sta $f0› lda $f1› jsr putbyte› adc #0› sta $f1›› lda #$4f Linie parzyste› jsr putbyte z bitplanu nr.2› clc› lda $f2› jsr putbyte› adc #80› sta $f2› lda $f3› jsr putbyte› adc #0› sta $f3›› dey› bne d001 zapetl›› lda #$41 zakoncz Display liste nr.1› jsr putbyte skokiem do dis.listy nr.2› lda dlist2› jsr putbyte››› ldx dlist2 jak wyzej zrob z› stx putbyte+1 Display list nr.2› sty putbyte+2 z tym ze:›› ldx pict2 sa z Bitplanu nr.2› stx $f0› sty $f1›› ldx pict1+40 sa z Bitplanu nr.1› stx $f2› sty $f3›› lda #$70› jsr putbyte› lda #$70› jsr putbyte› lda #$70› jsr putbyte›› ldy #illin›d002 lda #$4f› jsr putbyte› clc› lda $f0› jsr putbyte› adc #80› sta $f0› lda $f1› jsr putbyte› adc #0› sta $f1›› lda #$4f› jsr putbyte› clc› lda $f2› jsr putbyte› adc #80› sta $f2› lda $f3› jsr putbyte› adc #0› sta $f3›› dey› bne d002››dend lda #$41 zakoncz skokiem› jsr putbyte do Display› lda dlist› jsr putbyte› rts›››*Utworz Shower mapy kolorow na›*podstawie mapy kolorow. Efekt›*ten otrzymuje sie przez cykliczne›*wpisywanie do rejestru DUPS›*($d018 - kolor tla) okreslonych›*wartosci.›*-------------------›makecm equ *› ldx colm› stx putbyte+1› sty putbyte+2›› ldx colm2› stx put2byte+1› sty put2byte+2›› ldx mem_1col› stx getbyte+1› sty getbyte+2›› ldx mem_2col› stx get2byte+1› sty get2byte+2››*starty› ldx #0 Przepisz procedure›i001 lda loop,x docyklowujaca› jsr putbyte SHOWER1 do poczatku› inx 1. linii› cpx cycl2 (=>A2)› jsr putbyte›› ldx #0 Podobnie jak›i002 lda loop,x wyzej tylko dla› jsr put2byte SHOWERa2› inx› cpx SHOWER1› lda >cycl1 (=>A1)› jsr putbyte›› lda #$20 (=JSR A2)› jsr put2byte› lda SHOWER2)› lda >cycl2 (=>A2)› jsr put2byte››*niepar-kolory›i004 ldx #6 szesc obszarow koloru!!!›i005 lda #$a9 (=LDA #n1)› jsr putbyte› jsr getbyte (=#n1) - pobierz kolor z mapy nr.1› jsr putbyte dla SHOWERa1› lda #$8d (=STA Q)-zapisuj kolejno!!!› jsr putbyte› lda dups (=>Q)› jsr putbyte›› lda #$a9 (=LDA #n2)› jsr put2byte› jsr get2byte (=#n2) - pobierz kolor z mapy nr.2› jsr put2byte dla SHOWERa2› lda #$8d (=STA Q)› jsr put2byte› lda dups (=>Q)› jsr put2byte›› dex› bne i005 zapetl szesc kolorow››*linie parzyste-cyklowanie do poczatkow lini› lda #$20 (=JSR A2)› jsr putbyte› lda SHOWER1› lda >cycl2 (=>A2)› jsr putbyte›› lda #$20 (=JSR A1)› jsr put2byte› lda SHOWER2› lda >cycl1 (=>A1)› jsr put2byte››*par-kolory›i006 ldx #6 szesc kolorow!!!›i007 lda #$a9 (=LDA #n2)› jsr putbyte› jsr get2byte (=#n2) - pobierz kolor z mapy nr.2› jsr putbyte dla SHOWERa1› lda #$8d (=STA Q)› jsr putbyte› lda dups (=>Q)› jsr putbyte›› lda #$a9 (=LDA #n1)› jsr put2byte› jsr getbyte (=#n1) - pobierz kolor z mapy nr.1› jsr put2byte dla SHOWERa2› lda #$8d (=STA Q)› jsr put2byte› lda dups (=>Q)› jsr put2byte›› dex› bne i007 zapetl kolory›› dey› beq i008 zapetl linie› jmp i003››*konce›i008 ldx #0 przepisz procedury›i009 lda endloop,x konczace› jsr putbyte› inx› cpx colm2 (>S2) SHOWERa2› jsr putbyte›› lda #$4c (JMP S1)› jsr put2byte› lda colm (>S1) skocz do› jsr put2byte SHOWERa1›› rts››*pobierz bajt›getbyte equ *› lda $c000› inc getbyte+1› bne gtrt› inc getbyte+2›gtrt rts››*pobierz bajt›get2byte equ *› lda $c000› inc get2byte+1› bne g2rt› inc get2byte+2›g2rt rts››*wstaw bajt›putbyte equ *› sta $c000› inc putbyte+1› bne ptrt› inc putbyte+2›ptrt rts››*wstaw bajt›put2byte equ *› sta $c000› inc put2byte+1› bne p2rt› inc put2byte+2›p2rt rts›››*definicje kawalkow procedur›*dla makecm - nie zmieniac -›*CYKLOWANIE!!!!›*---------------------------------››*Procedura startowa›*------------------›loop ldy $d40b czekaj na› bne loop poczatek ekranu› ldy #15›wait cpy $d40b i na 15*2 linie› bne wait› sta $d40a potem jeszcze 2 linie› sta $d40a›lenloop equ *-loop›› nop docyklowanie do› nop poczatku 1. lini› nop dla SHOWERa nr.1› nop (20 cykli)› nop›› nop› nop› nop› nop› nop›lenlp2 equ *-loop››*procedura koncowa›endloop equ *› lda $d20f !sprawdz SHIFT - gdy nacisniety to wroc.› and #%1000 !Mozna tu zastosowac dowolna, ale nie za› bne elcn !dluga procedurke np. wracajaca po okreslonym› rts !czasie itp.››elcn lda #0 koniec mapy kolorow› sta dups› sta $d40a› sta $d40a›lenend equ *-endloop››*cyklowanie1›cycl1 equ *› nop› nop› nop›› nop› nop› nop›› nop› lda $f0 petla opozn.!!!› rts (17+6 cykli)››cycl2 equ *› nop› nop› nop›› lda $f0 j.w.!!!› nop (11+6 cykli)› rts›››