Test 5

* okreslenie, w ktorym cyklu w linii
* sygnalizowane jest wystapienie
* przerwania dli

        opt 21
        org $9000

cykl    equ $f0
one     equ $f1
two     equ $f2
pom     equ $f4
x       equ $f5

        lda $230 zapamietaj dlv
        pha
        lda $231
        pha

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

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

        jsr odswiez

klawisz lda $2fc
        cmp #$ff
        beq klawisz

        pha
        lda #$ff
        sta $2fc
        pla

        cmp #$28 R
        bne koniec

        jsr odswiez

test    lda #$c0
        sta $d40e nmien

        ldx #$10
petla   cpx $d40b vcount
        bne petla

        sta $d40a wsync
        sta $d40a

sterta  org *+59

start   lda $d40f nmist

        cmp #$9f
        beq nmi

        inc cykl
        jsr offset

        jmp petla

nmi     lda #$40
        sta $d40e nmien

        ldy #2
        lda cykl
        jsr display

        jmp klawisz

koniec  pla        odtworz dlv
        sta $231
        pla
        sta $230

        rts

odswiez ldx #0
        stx cykl

        jsr offset

        ldy #39
        lda #0
kasuj   sta wynik,y
        dey
        bpl kasuj

        rts

offset  stx x

        ldy #0
        lda cykl

        clc
        adc #5

        lsr @
        tax
        bcc bez_cmp

        lda #$c5     cmp 0
        sta sterta,y
        iny
        lda #0
        sta sterta,y
        iny

        dex
        beq bez_nop

bez_cmp lda #$ea     nop
l1      sta sterta,y
        iny
        dex
        bne l1

bez_nop lda skok,x   jmp start
        sta sterta,y
        iny
        inx
        cpx <ile
        bcc bez_nop

        ldx x

        rts

skok    jmp start
ile     equ *-skok

display sta one
        lda #8
        sta pom
        lda #0
        sta two
        sta two+1
        sed
cnv     asl one
        adc two
        sta two
        rol two+1
        dec pom
        bne cnv
        cld
        pha
        lda two+1
        jsr disp1
        pla
        jmp disp2

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

dli     rti

dlist   dta b($70)
        dta b($70)
        dta b($70)

linia1  dta b($20+$80)

        dta b($42),a(pusta)
        dta b($42),a(wynik)
        dta b($42),a(pusta)

        dta b($70)
        dta b($42),a(info1)
        dta b($41),a(dlist)

info1   dta d'  Start test: R'

pusta   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)

wynik   org *+40

        end

Powrót