prog8/examples/test.p8

138 lines
2.5 KiB
Lua

%import textio
%import floats
%import syslib
%option enable_floats ; TODO remove this option, only import floats is requires
%zeropage basicsafe
; Note: this program is compatible with C64 and CX16.
; TODO fix abs() and the other builtin funcs
main {
sub start() {
byte bb
word ww
bb = 0
bb = sgn(bb)
txt.print_b(bb)
txt.chrout('\n')
bb = 127
bb = sgn(bb)
txt.print_b(bb)
txt.chrout('\n')
bb = -1
bb = sgn(bb)
txt.print_b(bb)
txt.chrout('\n')
bb = -127
bb = sgn(bb)
txt.print_b(bb)
txt.chrout('\n')
bb = -128
bb = sgn(bb)
txt.print_b(bb)
txt.chrout('\n')
txt.chrout('\n')
ww = 0
ww = sgn(ww)
txt.print_w(ww)
txt.chrout('\n')
ww = 32767
ww = sgn(ww)
txt.print_w(ww)
txt.chrout('\n')
ww = -1
ww = sgn(ww)
txt.print_w(ww)
txt.chrout('\n')
ww = -32767
ww = sgn(ww)
txt.print_w(ww)
txt.chrout('\n')
ww = -32768
ww = sgn(ww)
txt.print_w(ww)
txt.chrout('\n')
main22.testX()
}
}
main22 {
sub start() {
ubyte char
uword ssss
float fl
;char = 1+(lsb(ssss) * 2)
;fl = 2.0*(abs(fl) + 1.0)
char = abs(char)
char = lsb(ssss)
char++
char = msb(ssss)
char++
char = c64.CHRIN()
txt.print_ub(char)
txt.chrout('\n')
char = chrin()
txt.print_ub(char)
txt.chrout('\n')
void getstr()
ssss = getstr()
txt.print_uwhex(ssss, true)
txt.chrout('\n')
; fl = getfloat()
;
; floats.print_f(fl)
; txt.chrout('\n')
testX()
;char=strlen(ssss)
}
sub chrin() -> ubyte {
return 99
}
sub getstr() -> str {
@($d020)++
return "foo"
}
; sub getfloat() -> float {
; return 4.56789
; }
sub mcp(uword from, uword dest, ubyte length) {
txt.print_uw(from)
txt.print_uw(dest)
txt.print_ub(length)
}
asmsub testX() {
%asm {{
stx _saveX
lda #13
jsr txt.chrout
lda _saveX
jsr txt.print_ub
lda #13
jsr txt.chrout
ldx _saveX
rts
_saveX .byte 0
}}
}
}