2019-09-09 21:01:04 +00:00
|
|
|
// Example of a struct containing a pointer
|
|
|
|
.pc = $801 "Basic"
|
|
|
|
:BasicUpstart(main)
|
|
|
|
.pc = $80d "Program"
|
2019-11-03 19:11:06 +00:00
|
|
|
.label SCREEN = $400
|
2019-09-09 21:01:04 +00:00
|
|
|
.const SIZEOF_STRUCT_PERSON = 3
|
|
|
|
.const OFFSET_STRUCT_PERSON_NAME = 1
|
|
|
|
main: {
|
|
|
|
ldx #0
|
|
|
|
lda #<persons
|
|
|
|
sta.z print_person.person
|
|
|
|
lda #>persons
|
|
|
|
sta.z print_person.person+1
|
|
|
|
jsr print_person
|
|
|
|
lda #<persons+1*SIZEOF_STRUCT_PERSON
|
|
|
|
sta.z print_person.person
|
|
|
|
lda #>persons+1*SIZEOF_STRUCT_PERSON
|
|
|
|
sta.z print_person.person+1
|
|
|
|
jsr print_person
|
|
|
|
rts
|
|
|
|
}
|
|
|
|
// print_person(struct Person* zeropage(2) person)
|
|
|
|
print_person: {
|
|
|
|
.label i = 4
|
|
|
|
.label person = 2
|
|
|
|
ldy #0
|
|
|
|
lda (person),y
|
|
|
|
tay
|
|
|
|
lda DIGIT,y
|
|
|
|
sta SCREEN,x
|
|
|
|
inx
|
|
|
|
lda #' '
|
|
|
|
sta SCREEN,x
|
|
|
|
inx
|
|
|
|
lda #0
|
|
|
|
sta.z i
|
2019-09-29 21:13:37 +00:00
|
|
|
__b1:
|
2019-09-09 21:01:04 +00:00
|
|
|
ldy #OFFSET_STRUCT_PERSON_NAME
|
|
|
|
lda (person),y
|
|
|
|
sta.z $fe
|
|
|
|
iny
|
|
|
|
lda (person),y
|
|
|
|
sta.z $ff
|
|
|
|
ldy.z i
|
|
|
|
lda ($fe),y
|
|
|
|
cmp #0
|
2019-09-29 21:13:37 +00:00
|
|
|
bne __b2
|
2019-09-09 21:01:04 +00:00
|
|
|
lda #' '
|
|
|
|
sta SCREEN,x
|
|
|
|
inx
|
|
|
|
rts
|
2019-09-29 21:13:37 +00:00
|
|
|
__b2:
|
2019-09-09 21:01:04 +00:00
|
|
|
ldy #OFFSET_STRUCT_PERSON_NAME
|
|
|
|
lda (person),y
|
|
|
|
sta.z $fe
|
|
|
|
iny
|
|
|
|
lda (person),y
|
|
|
|
sta.z $ff
|
|
|
|
ldy.z i
|
|
|
|
lda ($fe),y
|
|
|
|
sta SCREEN,x
|
|
|
|
inx
|
|
|
|
inc.z i
|
2019-09-29 21:13:37 +00:00
|
|
|
jmp __b1
|
2019-09-09 21:01:04 +00:00
|
|
|
}
|
2019-11-03 19:11:06 +00:00
|
|
|
DIGIT: .text "0123456789"
|
|
|
|
.byte 0
|
2019-09-29 21:13:37 +00:00
|
|
|
__0: .text "jesper"
|
2019-09-09 21:01:04 +00:00
|
|
|
.byte 0
|
2019-09-29 21:13:37 +00:00
|
|
|
__1: .text "repsej"
|
2019-09-09 21:01:04 +00:00
|
|
|
.byte 0
|
2019-09-12 23:23:55 +00:00
|
|
|
persons: .byte 4
|
2019-09-29 21:13:37 +00:00
|
|
|
.word __0
|
2019-09-09 21:01:04 +00:00
|
|
|
.byte 7
|
2019-09-29 21:13:37 +00:00
|
|
|
.word __1
|