1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-09-30 09:57:11 +00:00
kickc/src/test/ref/chargen.asm

76 lines
1.1 KiB
NASM
Raw Normal View History

2017-11-05 08:44:00 +00:00
.pc = $801 "Basic"
:BasicUpstart(main)
.pc = $80d "Program"
.label PROCPORT = 1
.label CHARGEN = $d000
.label SCREEN = $400
2017-11-05 08:44:00 +00:00
main: {
.label CHAR_A = CHARGEN+8
2017-11-05 08:44:00 +00:00
.label bits = 3
.label sc = 4
.label y = 2
2020-02-23 08:44:36 +00:00
// asm
2017-11-05 08:44:00 +00:00
sei
2020-02-23 08:44:36 +00:00
// *PROCPORT = $32
2017-11-05 08:44:00 +00:00
lda #$32
sta PROCPORT
lda #<SCREEN
sta.z sc
2017-11-05 08:44:00 +00:00
lda #>SCREEN
sta.z sc+1
2017-11-05 08:44:00 +00:00
lda #0
sta.z y
__b1:
2020-02-23 08:44:36 +00:00
// bits = CHAR_A[y]
ldy.z y
lda CHAR_A,y
sta.z bits
2017-11-05 08:44:00 +00:00
ldx #0
__b2:
2020-02-23 08:44:36 +00:00
// bits & $80
lda #$80
and.z bits
2020-02-23 08:44:36 +00:00
// if((bits & $80) != 0)
2017-11-05 08:44:00 +00:00
cmp #0
2020-03-30 18:33:26 +00:00
beq __b4
2017-11-05 08:44:00 +00:00
lda #'*'
jmp __b3
2020-03-30 18:33:26 +00:00
__b4:
2017-11-05 08:44:00 +00:00
lda #'.'
__b3:
2020-02-23 08:44:36 +00:00
// *sc = c
2017-11-05 08:44:00 +00:00
ldy #0
sta (sc),y
2020-02-23 08:44:36 +00:00
// sc++;
inc.z sc
2017-11-05 08:44:00 +00:00
bne !+
inc.z sc+1
2017-11-05 08:44:00 +00:00
!:
2020-02-23 08:44:36 +00:00
// bits = bits*2
asl.z bits
2020-02-23 08:44:36 +00:00
// for(byte x:0..7)
2017-11-05 08:44:00 +00:00
inx
cpx #8
bne __b2
2020-02-23 08:44:36 +00:00
// sc = sc+32
2019-03-18 01:23:29 +00:00
lda #$20
2017-11-05 08:44:00 +00:00
clc
adc.z sc
sta.z sc
2017-11-05 08:44:00 +00:00
bcc !+
inc.z sc+1
2017-11-05 08:44:00 +00:00
!:
2020-02-23 08:44:36 +00:00
// for(byte y:0..7)
inc.z y
lda #8
cmp.z y
bne __b1
2020-02-23 08:44:36 +00:00
// *PROCPORT = $37
2017-11-05 08:44:00 +00:00
lda #$37
sta PROCPORT
2020-02-23 08:44:36 +00:00
// asm
2017-11-05 08:44:00 +00:00
cli
2020-02-23 08:44:36 +00:00
// }
2017-11-05 08:44:00 +00:00
rts
}