
               org $480
               opt %10101

* --- system --- *
dliv           equ 512
dmactls        equ 559
dlist          equ 560
nmien          equ 54286
wsync          equ 54282
vcount         equ 54283
chbase         equ 54281
* --- stale --- *
fonts          equ $b800
plansze        equ $a000
* --- strona0 --- *
zero           equ $f0
reals          equ zero *wyraz

pocpr1         equ 52
pocpr2         equ 54
poclw1         equ 56
poclw2         equ 58
pusty          equ 16
dzipr          equ 48
dzilw          equ 50
dzigor         equ 64
pocgo1         equ 60
pocgo2         equ 62
pocpr3         equ 68
prkraj         equ 24
poclw3         equ 66
lwkraj         equ 20
pocgo3         equ 70
pocgo4         equ 72
zapora         equ 38
pradnica       equ 74
pozzap         equ 76
pozpradnica    equ 78

*zapznk         equ fonts+304
*zaiznk         equ fonts+608
*ldorznk        equ fonts+640
*lasznk         equ fonts+656

*           --- program ---      *

               lda <pl1
               sta reals
               lda >pl1
               sta reals+1

               lda #15
               sta 710
               lda #10
               sta 709
               lda #4
               sta 708


               jsr init
               jsr dli_on
               jsr translacja

               lda #3
               sta 730

_change        equ *

               lda #255
               sta 764
loop3          cmp 764
               beq loop3

               lda 764
               cmp #33
               beq _ruch
               jsr _zm
               jmp _change


_ruch          equ *

               lda #0
               sta 77
               jsr _zapora

               ldy #0

loop2          lda screen,y
               jsr _poziomazapora
               lda screen,y
               jsr _dzialka
               lda screen,y
               jsr _pociski
               lda screen,y
               jsr _wlwyl
               iny
               iny
               bne loop2
               jmp _change

_poziomazapora equ *

czestpradu     equ 10

               cmp #pusty
               beq _pozwl
               cmp #pozzap
               bne _wex

               lda screen-2,y
               cmp #pozpradnica
               beq _pozwyl
               cmp #pusty
               bne _wex
               lda #pusty
               jmp wyswietl

_wex           rts

_pozwyl        lda 53770
               cmp #czestpradu
               bcs _wex
               lda #pusty
               jmp wyswietl

_pozwl         lda screen-2,y
               cmp #pozpradnica
               beq _poz2wl
               cmp #pozzap
               bne _wex

               lda #pozzap
               jmp wyswietl

_poz2wl        lda 53770
               cmp #czestpradu
               bcs _wex
               lda #pozzap
               jmp wyswietl

*obsluga ruchu pociskow

_pociski       equ *

               cmp #pocpr1
               beq _poc2p
               cmp #pocpr2
               beq _poc1p
               cmp #poclw2
               beq _pocl1
               cmp #poclw1
               beq _pocl2
               cmp #pocpr3
               beq _poc3p
               cmp #poclw3
               beq _poc3l
               cmp #pocgo3
               beq _poc3g
               cmp #pocgo1
               beq _poc1g
               cmp #pocgo2
               beq _poc2g
               rts

_poc3g         lda #pocgo1
               jmp wyswietl
_poc1g         lda #pocgo2
               jmp wyswietl

_poc3p         lda #prkraj
               jmp wyswietl

_poc2p         lda #pocpr2
               jmp wyswietl

_poc1p         lda #pusty
               jsr wyswietl
               lda screen+2,y
               cmp #pusty
               beq _pop21
               cmp #prkraj
               beq _pop22
               rts

_pop22         iny
               iny
               lda #pocpr3
               jmp wyswietl

_pop21         iny
               iny
               lda #pocpr1
               jmp wyswietl

_pocl1         lda #poclw1
               jmp wyswietl

_pocl2         lda #pusty
               jsr wyswietl
               lda screen-2,y
               cmp #pusty
               beq _pol21
               cmp #lwkraj
               beq _pol22
               rts
_pol21         lda #poclw2
               sta screen-2,y
               ora #1
               sta screen-1,y
               rts

_poc3l         lda #lwkraj
               jmp wyswietl

_pol22         lda #poclw3
               sta screen-2,y
               ora #1
               sta screen-1,y
               rts

_poc2g         lda #pusty
               jsr wyswietl
               lda screen+32,y
               cmp #pusty
               beq _pog22
               rts
_pog22         lda #pocgo3
               sta screen+32,y
               ora #1
               sta screen+33,y
               rts



* obsluga wystrzelenia naboju
* z dzialek                  

_dzialka       equ *

               cmp #dzilw
               beq _lewd
               cmp #dzipr
               beq _prawd
               cmp #dzigor
               beq _gordzi
               rts

_lewd          equ *

               lda screen-2,y
               cmp #pusty
               beq _lew2
_exlw          rts
_lew2          lda 53770
               cmp #10
               bcs _exlw
               lda #poclw2
               sta screen-2,y
               ora #1
               sta screen-1,y
               rts

_prawd         equ *

               lda screen+2,y
               cmp #pusty
               beq _praw2
_expr          rts
_praw2         lda 53770
               cmp #10
               bcs _expr
               lda #pocpr1
               iny
               iny
               jmp wyswietl

_gordzi        equ *

               lda screen+32,y
               cmp #pusty
               beq _gor2
_exgor         rts
_gor2          lda 53770
               cmp #10
               bcs _exgor
               lda #pocgo3
               sta screen+32,y
               ora #1
               sta screen+33,y
               rts

* koniec

*procedury obslugi zapory elektrycznej
*poziomej


_wlwyl         equ *

               cmp #zapora
               beq _wylacz
               cmp #pusty
               bne _wlwex

               lda screen-32,y
               cmp #pradnica
               beq _prad
               cmp #zapora
               bne _wlwex
               lda #zapora
               jmp wyswietl

_prad          lda 53770
               cmp #czestpradu
               bcs _wlwex
               lda #zapora
               jmp wyswietl
_wlwex         rts

_wylacz        equ *

               lda screen-32,y
               cmp #pradnica
               beq _pradoff
               cmp #pusty
               bne _wlwex
               lda #pusty
               jmp wyswietl

_pradoff       lda 53770
               cmp #czestpradu
               bcs _wlwex
               lda #pusty
               jmp wyswietl


_zapora        equ *

               pha
               txa
               pha
               tya
               pha
               inc _zapkontrol
               ldy _zapkontrol
               cpy #4
               bne _zaplop
               ldy #0
               sty _zapkontrol
_zaplop        lda fzzap,y
               tay
               ldx #0
_zaplp         lda pozdan,y
               sta zapznk,x
               lda poz2dan,y
               sta zapznk+1024,x
               lda pindan,y
               sta zaiznk,x
               lda pin2dan,y
               sta zaiznk+1024,x
               lda koddoor,y
               sta ldorznk,x
               lda kod2door,y
               sta ldorznk+1024,x
               lda lasdoor,y
               sta lasznk,x
               sta lasznk+1024,x
               iny
               inx
               cpx #16
               bne _zaplp
               pla
               tay
               pla
               tax
               pla
               rts

               org $b400

*         --- podprogramy ---    *

init           equ *

               lda #%101001
               sta dmactls
               lda <displaylist
               sta dlist
               lda >displaylist
               sta dlist+1
               rts

dli_on         equ *

               lda <dli
               sta dliv
               lda >dli
               sta dliv+1
               lda #192
               sta nmien
               rts

wyswietl       equ *

               sta screen,y
               ora #1
               sta screen+1,y
               rts

position       equ *

               pha
               txa
               clc
               adc piontable,y
               asl @
               tay
               pla
               jsr wyswietl
               rts


locate         equ *

               txa
               clc
               adc piontable,y
               asl @
               tay
               lda screen,y
               rts

translacja     equ *

               ldx #0
               ldy #0
trans          lda (reals),y
               sta screen,x
               ora #1
               sta screen+1,x
               inx
               inx
               iny
               cpy #128
               bne trans
               rts

dli            equ *

               pha
               lda vcount
               and #4
               eor #4
               clc
               adc >fonts
               sta wsync
               sta chbase
               pla
               rti

_zm            equ *

               cmp #6
               beq _ch1
               cmp #7
               beq _ch2
               cmp #14
               beq _ch3
               cmp #15
               beq _ch4
               jmp _change

_ch1           ldy #128
               jmp _2change
_ch2           ldy #130
               jmp _2change
_ch3           ldy #132
               jmp _2change
_ch4           ldy #134
               jmp _2change

_2change       lda (reals),y
               tax
               iny
               lda (reals),y
               sta reals+1
               stx reals
               jsr translacja
               jsr _do_zebrania
               jmp _change


_do_zebrania   equ *

               ldy #0
               lda reals
_do_z3         cmp zebtable,y
               beq _do_z2
_do_z4         iny
               iny
               cpy #10
               bne _do_z3
               rts
_do_z2         lda reals+1
               cmp zebtable+1,y
               bne _do_z4


               tya
               pha
               lda reals
               pha
               lda reals+1
               pha

               lda eladrtable,y
               sta reals
               lda eladrtable+1,y
               sta reals+1

               ldy #0
               ldx #0
zb_el          lda (reals),y
               sta fonts,x
               inx
               iny
               cpx #16
               bne zb_el
               ldx #0
zb_el2         lda (reals),y
               sta fonts+1024,x
               inx
               iny
               cpx #16
               bne zb_el2

               pla
               sta reals+1
               pla
               sta reals
               pla


               lsr @
               tay
               lda zebratable,y
               beq _juz_zebrany
               lda pozyc_table,y
               asl @
               tay
               lda #0
               jsr wyswietl
_juz_zebrany   rts

_kasuj_element equ *

               ldy #0
               lda reals
do_z3          cmp zebtable,y
               beq do_z2
do_z4          iny
               iny
               cpy #10
               bne do_z3
               rts
do_z2          lda reals+1
               cmp zebtable+1,y
               bne do_z4

               tya
               lsr @
               tay
               lda #0
               sta zebratable,y
               lda pozyc_table,y
               asl @
               tay
               lda #pusty
               jsr wyswietl
               rts

zebtable       dta a(pl1),a(pl3),a(pl13),a(pl14),a(pl9)
zebratable     dta d'22222'
pozyc_table    dta b(5),b(70),b(33),b(12),b(99)
eladrtable     dta a(fuel),a(fuel),a(bron),a(bron),a(dysk)
fuel           equ 50000
bron           equ 0
dysk           equ 1536

               icl 'D:DANE_ATP.ASM'
               icl 'D:PL1*.*'
               icl 'D:GAMEFONT.ASM'

