1
0
mirror of https://gitlab.com/camelot/kickc.git synced 2024-09-29 03:56:15 +00:00
kickc/src/test/ref/summin.asm

53 lines
929 B
NASM
Raw Normal View History

// Commodore 64 PRG executable file
.file [name="summin.prg", type="prg", segments="Program"]
.segmentdef Program [segments="Basic, Code, Data"]
.segmentdef Basic [start=$0801]
.segmentdef Code [start=$80d]
.segmentdef Data [startAfter="Code"]
.segment Basic
2017-11-04 18:53:55 +00:00
:BasicUpstart(main)
.label screen = $400
.segment Code
2017-11-04 18:53:55 +00:00
main: {
.label s1 = 2
.label s3 = 3
// byte s1=sum(1,2)
2017-11-04 18:53:55 +00:00
lda #2
ldx #1
2017-11-04 18:53:55 +00:00
jsr sum
// byte s1=sum(1,2)
sta.z s1
// byte s2=sum(3,4)
2017-11-04 18:53:55 +00:00
lda #4
ldx #3
2017-11-04 18:53:55 +00:00
jsr sum
// byte s2=sum(3,4)
tay
// byte s3=sum(9,13)
2017-11-04 18:53:55 +00:00
lda #$d
ldx #9
2017-11-04 18:53:55 +00:00
jsr sum
// byte s3=sum(9,13)
sta.z s3
2020-02-23 08:44:36 +00:00
// s1+s2
tya
2017-11-04 18:53:55 +00:00
clc
adc.z s1
// byte s4=s1+s2+s3
2017-11-04 18:53:55 +00:00
clc
adc.z s3
2020-02-23 08:44:36 +00:00
// *screen = s4
sta screen
2020-02-23 08:44:36 +00:00
// }
2017-11-04 18:53:55 +00:00
rts
}
// __register(A) char sum(__register(X) char a, __register(A) char b)
2017-08-12 16:30:21 +00:00
sum: {
2020-02-23 08:44:36 +00:00
// a+b
stx.z $ff
2017-08-12 16:30:21 +00:00
clc
adc.z $ff
2020-02-23 08:44:36 +00:00
// }
2017-08-12 16:30:21 +00:00
rts
}