2019-02-02 23:14:56 +00:00
|
|
|
%zeropage basicsafe
|
2019-04-04 21:51:22 +00:00
|
|
|
%option enable_floats
|
|
|
|
|
|
|
|
%import c64flt
|
|
|
|
|
2019-03-29 01:13:28 +00:00
|
|
|
|
2019-03-19 00:22:26 +00:00
|
|
|
~ main {
|
|
|
|
|
2019-02-21 00:31:33 +00:00
|
|
|
sub start() {
|
2019-04-04 21:51:22 +00:00
|
|
|
;aggregates()
|
|
|
|
pointers()
|
|
|
|
}
|
2019-03-31 11:54:22 +00:00
|
|
|
|
2019-04-04 21:51:22 +00:00
|
|
|
sub aggregates() {
|
|
|
|
|
|
|
|
; @todo test this in StackVM as well!!
|
|
|
|
|
|
|
|
byte[3] ba = [-5, 0, 20]
|
|
|
|
ubyte[3] uba = [100, 0, 20]
|
|
|
|
word[3] wa = [-5000, 0, 2000]
|
|
|
|
uword[3] uwa = [10000, 0, 2000]
|
|
|
|
float[4] fa = [5.5, 0.0, 20.22,-4.44]
|
|
|
|
|
|
|
|
c64scr.print_ub(any(ba))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64scr.print_ub(any(uba))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64scr.print_ub(any(wa))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64scr.print_ub(any(uwa))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64scr.print_ub(any(fa))
|
|
|
|
c64.CHROUT('\n')
|
|
|
|
|
|
|
|
c64scr.print_ub(all(ba))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64scr.print_ub(all(uba))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64scr.print_ub(all(wa))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64scr.print_ub(all(uwa))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64scr.print_ub(all(fa))
|
|
|
|
c64.CHROUT('\n')
|
|
|
|
|
|
|
|
c64scr.print_b(min(ba))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64scr.print_ub(min(uba))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64scr.print_w(min(wa))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64scr.print_uw(min(uwa))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64flt.print_f(min(fa)) ; @todo fix min(floatarray)
|
|
|
|
c64.CHROUT('\n')
|
|
|
|
|
|
|
|
c64scr.print_b(max(ba))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64scr.print_ub(max(uba))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64scr.print_w(max(wa))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64scr.print_uw(max(uwa))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64flt.print_f(max(fa)) ; @todo fix max(floatarray)
|
|
|
|
c64.CHROUT('\n')
|
|
|
|
|
|
|
|
c64scr.print_uw(sum(ba))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64scr.print_uw(sum(uba))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64scr.print_w(sum(wa))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64scr.print_uw(sum(uwa))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64flt.print_f(sum(fa))
|
|
|
|
c64.CHROUT('\n')
|
|
|
|
|
|
|
|
c64flt.print_f(avg(ba))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64flt.print_f(avg(uba))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64flt.print_f(avg(wa))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64flt.print_f(avg(uwa))
|
|
|
|
c64.CHROUT(' ')
|
|
|
|
c64flt.print_f(avg(fa))
|
|
|
|
c64.CHROUT('\n')
|
|
|
|
|
|
|
|
}
|
2019-04-04 19:02:24 +00:00
|
|
|
|
2019-04-04 21:51:22 +00:00
|
|
|
sub pointers() {
|
2019-04-04 19:02:24 +00:00
|
|
|
|
|
|
|
ubyte[3] array1
|
|
|
|
ubyte[3] array2
|
|
|
|
ubyte[3] array3
|
|
|
|
|
|
|
|
str string1="hello"
|
|
|
|
str string2="bye"
|
|
|
|
|
|
|
|
uword pointer = &array1
|
|
|
|
byte bt
|
|
|
|
|
|
|
|
pointer = &array2
|
|
|
|
pointer = &string1
|
|
|
|
|
2019-04-04 21:51:22 +00:00
|
|
|
;uword[4] pointers = [&array1, &array2, &string1, &string2] ; @todo make it possible to initialize array with pointers
|
2019-04-04 19:02:24 +00:00
|
|
|
|
|
|
|
;ptrsubasm("moet werken") ; @todo rewrite ast into pointer-of expression (and remove special cases from Compiler)
|
|
|
|
;pointersub("moet werken") ; @todo rewrite ast into pointer-of expression (and remove special cases from Compiler)
|
|
|
|
;myprintasm("moet werken3") ; @todo rewrite ast into pointer-of expression (and remove special cases from Compiler)
|
|
|
|
|
|
|
|
ptrsubasm(&array1)
|
2019-04-04 21:51:22 +00:00
|
|
|
ptrsubasm(&array2)
|
2019-04-04 19:02:24 +00:00
|
|
|
ptrsubasm(&string1)
|
2019-04-04 21:51:22 +00:00
|
|
|
ptrsubasm(&string2)
|
2019-04-04 19:02:24 +00:00
|
|
|
pointersub(&array1)
|
2019-04-04 21:51:22 +00:00
|
|
|
pointersub(&array2)
|
2019-04-04 19:02:24 +00:00
|
|
|
pointersub(&string1)
|
2019-04-04 21:51:22 +00:00
|
|
|
pointersub(&string2)
|
2019-04-04 19:02:24 +00:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
sub pointersub(uword arg) {
|
2019-04-04 21:51:22 +00:00
|
|
|
c64scr.print_uwhex(1, arg)
|
|
|
|
c64.CHROUT('\n')
|
2019-04-04 19:02:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
asmsub ptrsubasm(uword arg @ AY) -> clobbers() -> () {
|
2019-04-04 21:51:22 +00:00
|
|
|
%asm {{
|
|
|
|
sec
|
|
|
|
jsr c64scr.print_uwhex
|
|
|
|
lda #13
|
|
|
|
jmp c64.CHROUT
|
|
|
|
}}
|
2019-04-04 19:02:24 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
asmsub myprintasm(str arg @ AY) -> clobbers() -> () {
|
2019-04-04 21:51:22 +00:00
|
|
|
%asm {{
|
|
|
|
sec
|
|
|
|
jsr c64scr.print_uwhex
|
|
|
|
lda #13
|
|
|
|
jmp c64.CHROUT
|
|
|
|
}}
|
2019-02-24 17:52:48 +00:00
|
|
|
}
|
2019-03-16 16:50:59 +00:00
|
|
|
|
2019-01-27 17:33:21 +00:00
|
|
|
}
|