Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- * = $0801
- .word (+), 10
- .null $9e, format("%d", main)
- + .word 0
- ; KERNAL routines
- screen = $FFED
- chrout = $FFD2
- ; Temporaries (caller-saved)
- ptr0 = $00
- main:
- ; Switch to ISO text mode.
- lda #$0F
- jsr chrout
- ; Get screen dimensions.
- jsr screen
- ; Print rows.
- lda #<rows_str
- sta ptr0
- lda #>rows_str
- sta ptr0 + 1
- jsr print
- txa
- jsr print_hex
- ; Print space.
- lda #$20
- jsr chrout
- ; Print columns.
- lda #<columns_str
- sta ptr0
- lda #>columns_str
- sta ptr0 + 1
- jsr print
- tya
- jsr print_hex
- rts
- ; Takes a pointer to a null-terminated string in ptr0 and prints it out.
- print:
- pha
- - lda (ptr0)
- beq +
- jsr chrout
- clc
- lda ptr0 ; Low byte
- adc #1
- sta ptr0
- lda ptr0 + 1 ; High byte
- adc #0
- sta ptr0 + 1
- bra -
- + pla
- rts
- ; Takes a byte in A and prints it out as two hex digits.
- print_hex:
- phx
- pha
- ; High nybble
- lsr
- lsr
- lsr
- lsr
- tax
- lda hex_digits, x
- jsr chrout
- ; Low nybble
- pla
- pha
- and #$0F
- tax
- lda hex_digits, x
- jsr chrout
- pla
- plx
- rts
- rows_str:
- .text "Rows: ", 0
- columns_str:
- .text "Columns: ", 0
- hex_digits:
- .text "0123456789ABCDEF" ; This is not null-terminated, because the routine indexes into it.
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement