Test 4

* okreslenie, w ktorym cyklu w linii
* rozpoczyna sie przerwanie 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

        ldy #1

test    lda #$c0
        sta $d40e nmien

        ldx #$10
petla   cpx $d40b vcount
        bne petla

        sta $d40a wsync
        sta $d40a

sterta  org *+59

start   lda #0
        lda #1

        tya
        beq gotowe

        inc cykl
        jsr offset

        jmp petla

gotowe  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 #7

        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     pha

        cmp #0
        beq jest

        pla
        rti

jest    lda #$40
        sta $D40E nmien

        ldy #0

rti     pla
        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