Test 2

* okreslenie, w ktorym cyklu w linii
* pojawia sie nowa wartosc w $d40b

        opt 21
        org $9000

        lda $230 zapamietaj dlv
        pha
        lda $231
        pha

        lda <dlist
        sta $230
        lda >dlist
        sta $231

        lda <dli
        sta $200
        lda >dli
        sta $201

odswiez lda #12
        sta $f0

        lda >$9500
        sta wynik+2

        lda <ekran
        sta dalej+1
        lda >ekran
        sta dalej+2

        lda <pusta
        sta kasuj+1
        lda >pusta
        sta kasuj+2

        ldx #3
        ldy #0

        lda #0
kasuj   sta pusta,y
        iny
        bne kasuj

        inc kasuj+2

        dex
        bne kasuj

        ldx #0
        ldy #4

        lda #$c0
        sta $D40E nmien

klawisz lda $2fc
        cmp #$ff
        beq klawisz

        pha
        lda #$40
        sta $D40E nmien
        lda #$ff
        sta $2fc
        pla

        cmp #$28 R
        beq odswiez

        cmp #$01 J
        bne o1

        ldx nrkodu
        beq odswiez
        dex
        stx nrkodu

        jmp podprog

o1      cmp #$02 ;
        bne koniec

        ldx nrkodu
        cpx #21
        beq odswiez
        inx
        stx nrkodu

        jmp podprog

koniec  pla        odtworz dlv
        sta $231
        pla
        sta $230

        rts

dli     pha
        sta $d40a wsync

********************

        cmp 0

********************

        lda $d40b vcount

wynik   sta $9500,x

        inx
        bne notend

        dec $f0
        bne npage

        lda #$40
        sta $D40E nmien

*       x = 0

wlinii  lda $9500,x
        inx
        jsr wypisz

        txa
        and #$f
        bne wlinii

        ldy #4

        clc
        lda dalej+1
        adc <40
        sta dalej+1
        lda dalej+2
        adc >40
        sta dalej+2

        txa
        bne wlinii

npage   inc wynik+2

notend  pla
        rti

podprog lda <tryb
        sta dalej+1
        lda >tryb
        sta dalej+2
        ldy #0
        lda kod,x
        jsr wypisz

        ldy nrlinii,x
        beq odline1

        lda #$00
        sta linia1

odline1 lda kod,x
        clc
        adc #$80
        sta linia1,y

        cpx #8
        bcc bezadr

        iny
        lda <dane
        sta linia1,y
        iny
        lda >dane
        sta linia1,y
        iny
        lda #0
        sta linia1,y

        jmp odswiez

bezadr  iny
        lda #$00
        sta linia1,y
        iny
        sta linia1,y
        iny
        sta linia1,y

        jmp odswiez

nrkodu  dta b($00)

kod     dta b($00),b($10),b($20)
        dta b($30),b($40),b($50)
        dta b($60),b($70)

        dta b($42),b($43),b($44)
        dta b($45),b($46),b($47)

        dta b($48),b($49),b($4a)
        dta b($4b),b($4c),b($4d)
        dta b($4e),b($4f)

nrlinii dta b($01),b($00),b($01)
        dta b($00),b($01),b($00)
        dta b($01),b($00)

        dta b($00),b($00),b($00)
        dta b($00),b($00),b($00)

        dta b($00),b($00),b($00)
        dta b($00),b($01),b($00)
        dta b($01),b($01)

wypisz  pha
        lsr @
        lsr @
        lsr @
        lsr @
        jsr omin
        pla
omin    and #$F
        ora #'0'-32
        cmp #'9'-32+1
        bcc dalej
        adc #6
dalej   sta ekran,y
        iny
        rts

dlist   dta b($70),b($70),b($70)
linia1  dta b($00)
linia2  dta b($80)
linia3  dta b($00)
        dta b($00)

        dta b($20)
        dta b($42),a(pusta)
        dta b($42),a(ekran)
        dta b($02)
        dta b($02)
        dta b($02)
        dta b($02)
        dta b($02)
        dta b($02)
        dta b($02)
        dta b($02)
        dta b($02)
        dta b($02)
        dta b($02)
        dta b($02)
        dta b($02)
        dta b($02)
        dta b($02)
        dta b($02)
        dta b($70)
        dta b($42),a(info1)
        dta b($70)
        dta b($42),a(info2)
        dta b($41),a(dlist)

dane    dta a($ffff),a($ffff),a($ffff)
        dta a($ffff),a($ffff),a($ffff)
        dta a($ffff),a($ffff),a($ffff)
        dta a($ffff),a($ffff),a($ffff)
        dta a($ffff),a($ffff),a($ffff)
        dta a($ffff),a($ffff),a($ffff)
        dta a($ffff),a($ffff)

info1   dta d'  Refresh:   R'
        dta a(0),a(0),a(0),a(0),a(0)
        dta a(0),a(0),a(0),a(0),a(0)
        dta a(0),a(0)
info2   dta d'  Line code: $'
tryb    dta d'00+$80  J ;'

pusta   org *+65

ekran   dta a(0),a(0),a(0),a(0),a(0)
        dta a(0),a(0),a(0),a(0),a(0)
        dta a(0),a(0),a(0),a(0),a(0)
        dta a(0),a(0),a(0),a(0),a(0)

        end

Powrót