mirror of
https://github.com/irmen/prog8.git
synced 2025-02-27 18:29:00 +00:00
90 lines
1.7 KiB
Lua
90 lines
1.7 KiB
Lua
%zeropage basicsafe
|
|
%option enable_floats
|
|
|
|
%import c64flt
|
|
|
|
|
|
~ main {
|
|
|
|
sub start() {
|
|
|
|
ubyte[3] array1
|
|
ubyte[3] array2
|
|
ubyte[3] array3
|
|
|
|
str string1="hello"
|
|
str string2="bye"
|
|
|
|
uword pointer = &array1
|
|
uword pointer2
|
|
uword pointer3
|
|
byte bt
|
|
|
|
pointer2 = &array2
|
|
pointer3 = &string1
|
|
|
|
uword[4] pointers = [&array1, &array2, &string1, &string2]
|
|
|
|
|
|
ptrsubasm("moet werken")
|
|
pointersub("moet werken")
|
|
myprintasm(string1)
|
|
myprintasm(string2)
|
|
myprintasm("moet werken3")
|
|
myprintasm("moet werken3")
|
|
myprintasm("moet werken4")
|
|
|
|
c64scr.print("this print must work\n")
|
|
c64.CHROUT('\n')
|
|
|
|
ptrsubasm(&array1)
|
|
ptrsubasm(&array2)
|
|
ptrsubasm(&string1)
|
|
ptrsubasm(&string2)
|
|
pointersub(&array1)
|
|
pointersub(&array2)
|
|
pointersub(&string1)
|
|
pointersub(&string2)
|
|
c64scr.print_uwhex(1, pointers[0])
|
|
c64.CHROUT(',')
|
|
c64scr.print_uwhex(1, pointers[1])
|
|
c64.CHROUT(',')
|
|
c64scr.print_uwhex(1, pointers[2])
|
|
c64.CHROUT(',')
|
|
c64scr.print_uwhex(1, pointers[3])
|
|
|
|
}
|
|
|
|
sub pointersub(uword arg) {
|
|
c64scr.print_uwhex(1, arg)
|
|
c64.CHROUT('\n')
|
|
}
|
|
|
|
asmsub ptrsubasm(uword arg @ AY) -> clobbers() -> () {
|
|
%asm {{
|
|
sec
|
|
jsr c64scr.print_uwhex
|
|
lda #13
|
|
jmp c64.CHROUT
|
|
}}
|
|
}
|
|
|
|
asmsub myprintasm(str arg @ AY) -> clobbers() -> () {
|
|
%asm {{
|
|
sec
|
|
jsr c64scr.print_uwhex
|
|
lda #13
|
|
jmp c64.CHROUT
|
|
}}
|
|
}
|
|
|
|
}
|
|
|
|
~ test {
|
|
|
|
sub testsub() {
|
|
uword[4] pointers = [&main.start.array1, &main.start.array2, &main.start.string1, &main.start.string2] ; @todo make it possible to initialize array with pointers
|
|
|
|
}
|
|
}
|