Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- :BasicUpstart2(main)
- .var brkFile = createFile("breakpoints.txt")
- .macro break() {
- .eval brkFile.writeln("break " + toHexString(*))
- }
- .const kursor = $FFF0
- .const CHROUT = $FFD2
- .const CLEAR = $E544
- .const GETIN = $FFE4
- .const SCNKEY = $FF9F
- .const ekran = $0400
- .const ENTER = $C202
- .const MOVE = $C203
- .const rog_ekranu = 39
- .const od_poczatku = 48
- main:
- INIT:
- lda pozycja_kursoraX_start // pozycja kursora po napisie podaj cyfrę. X = numer wiersza
- sta pozycja_kursoraX // zapisanie w zmiennej
- lda pozycja_kursoraY_start // pozycja kursora po napisie podaj cyfrę. Y = numer kolumny
- sta pozycja_kursoraY // zapisanie w zmiennej
- jsr napis_wyswietl // skok do podprogramu wyświetlającego napis
- skan:
- jsr SCNKEY // skok do procedury kernela skanującej czy wciśnięto klawisz
- jsr GETIN // skok do procedury kernela wrzucającej kod wciśniętego znaku do AKU
- sta klawisz // zapis w zmiennej klawisz wartości z AKU żeby było wiadomo co zostało wciśnięte
- cmp ENTER // czy to enter?
- beq KONIEC // TAK? Skocz do KONIEC, nie.. idź niżej
- cmp #$30 // czy to cyfra 0?
- beq cyfra // TAK? skoczo do procedury cyfra, NIE? idź dalej
- cmp #$31 // czy to cyfra 0?
- beq cyfra // TAK? skoczo do procedury cyfra, NIE? idź dalej
- cmp #$32 // czy to cyfra 0?
- beq cyfra // TAK? skoczo do procedury cyfra, NIE? idź dalej
- cmp #$33 // czy to cyfra 0?
- beq cyfra // TAK? skoczo do procedury cyfra, NIE? idź dalej
- cmp #$34 // czy to cyfra 0?
- beq cyfra // TAK? skoczo do procedury cyfra, NIE? idź dalej
- cmp #$35 // czy to cyfra 0?
- beq cyfra // TAK? skoczo do procedury cyfra, NIE? idź dalej
- cmp #$36 // czy to cyfra 0?
- beq cyfra // TAK? skoczo do procedury cyfra, NIE? idź dalej
- cmp #$37 // czy to cyfra 0?
- beq cyfra // TAK? skoczo do procedury cyfra, NIE? idź dalej
- cmp #$38 // czy to cyfra 0?
- beq cyfra // TAK? skoczo do procedury cyfra, NIE? idź dalej
- cmp #$39 // czy to cyfra 0?
- beq cyfra // TAK? skoczo do procedury cyfra, NIE? idź dalej
- jmp skan // skocz do procedury skanowania klawiatury
- cyfra:
- clc // skasuj flagę C (potrzebne do procedury kernela ustawienia kursora we wskazanym miejscu)
- ldx pozycja_kursoraX // załaduj współrzędną X kursora do rejestru X
- ldy pozycja_kursoraY // załaduj współrzędną Y kursora do rejestru Y
- jsr kursor // wykonaj procedurę kernela ustawiającą kursor we wskazanym w XY miejcu
- lda klawisz // załaduj do AKU ostatnio wciśnięty klawisz
- jsr $ffd2 // wyświetl go we wskazanym miejscu kursora
- // ldx #$00 // chyba zbędne, śmieć źródłowy
- inc pozycja_kursoraY // zwiększ wartość pozycji Y kursora
- inc kolejna_cyfra // zwiększ wartości zmiennej kolejna_cyfra
- lda kolejna_cyfra // załaduj do AKU wartość kolejna_cyfra
- sta ekran+$27 //$0427 // wyślij bezpośrednio na ekran tę cyfrę (z AKU)
- cmp #$3a // czy AKU=3a? (czyli kolejna_cyfra)
- bne skan // NIE? skanuj dalej, TAK - idź dalej
- jsr zliczanie // skok do procedury zliczanie
- jmp skan // skocz do skanowania klawiatury
- KONIEC:
- rts
- zliczanie:
- :break()
- ldx od_poczatku // załaduj '0' do X
- stx ekran+rog_ekranu // wyświetl '0' bezpośrednio na ekran (prawy górny róg)
- lda od_poczatku+1 // załaduj '0' do AKU
- sta ekran-1+rog_ekranu // wyświetl bezpośrednio na ekran -1
- lda od_poczatku
- sta kolejna_cyfra
- rts
- napis:
- .text "podaj cyfre: "
- napis_wyswietl:
- lda #$93
- jsr CHROUT
- lda #13
- sta ENTER
- ldx #$00
- ldx pozycja_kursoraX_start
- ldy pozycja_kursoraY_start
- jsr kursor
- lda #$00
- sta $cc
- petla:
- lda napis,x
- sta ekran,x
- inx
- cpx #13
- bcc petla
- rts
- .pc = $0900
- pozycja_kursoraX:
- .byte 0
- pozycja_kursoraY:
- .byte $0d
- pozycja_kursoraX_start:
- .byte $00
- pozycja_kursoraY_start:
- .byte $0d
- klawisz:
- .byte 0
- BYTECOUNTER:
- .byte 0
- kolejna_cyfra:
- .byte $30
- // od_poczatku:
- // .byte $30
- //rog_ekranu:
- // .byte $27
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement