2022-04-23 00:15:51 +00:00
|
|
|
; Prog8 definitions for floating point handling on the VirtualMachine
|
|
|
|
;
|
|
|
|
; Written by Irmen de Jong (irmen@razorvine.net) - license: GNU GPL 3.0
|
|
|
|
|
|
|
|
%option enable_floats
|
|
|
|
|
|
|
|
floats {
|
|
|
|
|
|
|
|
const float PI = 3.141592653589793
|
|
|
|
const float TWOPI = 6.283185307179586
|
|
|
|
|
|
|
|
sub print_f(float value) {
|
|
|
|
; ---- prints the floating point value (without a newline).
|
2022-04-29 22:10:07 +00:00
|
|
|
%asm {{
|
|
|
|
loadm.f fr0,{floats.print_f.value}
|
|
|
|
syscall 35
|
|
|
|
return
|
|
|
|
}}
|
2022-04-23 00:15:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub pow(float value, float power) -> float {
|
|
|
|
; TODO
|
2022-04-29 20:27:02 +00:00
|
|
|
return -42.42
|
2022-04-23 00:15:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub fabs(float value) -> float {
|
|
|
|
; TODO
|
2022-04-29 20:27:02 +00:00
|
|
|
return -42.42
|
2022-04-23 00:15:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub sin(float angle) -> float {
|
2022-04-29 22:10:07 +00:00
|
|
|
; TODO sin.f instruction
|
|
|
|
%asm {{
|
|
|
|
loadm.f fr0,{floats.sin.angle}
|
|
|
|
sin.f fr0,fr0
|
|
|
|
return
|
|
|
|
}}
|
2022-04-23 00:15:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub cos(float angle) -> float {
|
|
|
|
; TODO
|
2022-04-29 20:27:02 +00:00
|
|
|
return -42.42
|
2022-04-23 00:15:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub tan(float value) -> float {
|
|
|
|
; TODO
|
2022-04-29 20:27:02 +00:00
|
|
|
return -42.42
|
2022-04-23 00:15:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub atan(float value) -> float {
|
|
|
|
; TODO
|
2022-04-29 20:27:02 +00:00
|
|
|
return -42.42
|
2022-04-23 00:15:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub ln(float value) -> float {
|
|
|
|
; TODO
|
2022-04-29 20:27:02 +00:00
|
|
|
return -42.42
|
2022-04-23 00:15:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub log2(float value) -> float {
|
|
|
|
; TODO
|
2022-04-29 20:27:02 +00:00
|
|
|
return -42.42
|
2022-04-23 00:15:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub sqrt(float value) -> float {
|
|
|
|
; TODO
|
2022-04-29 20:27:02 +00:00
|
|
|
return -42.42
|
2022-04-23 00:15:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub rad(float angle) -> float {
|
|
|
|
; -- convert degrees to radians (d * pi / 180)
|
|
|
|
; TODO
|
2022-04-29 20:27:02 +00:00
|
|
|
return -42.42
|
2022-04-23 00:15:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub deg(float angle) -> float {
|
|
|
|
; -- convert radians to degrees (d * (1/ pi * 180))
|
|
|
|
; TODO
|
2022-04-29 20:27:02 +00:00
|
|
|
return -42.42
|
2022-04-23 00:15:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub round(float value) -> float {
|
|
|
|
; TODO
|
2022-04-29 20:27:02 +00:00
|
|
|
return -42.42
|
2022-04-23 00:15:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub floor(float value) -> float {
|
|
|
|
; TODO
|
2022-04-29 20:27:02 +00:00
|
|
|
return -42.42
|
2022-04-23 00:15:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub ceil(float value) -> float {
|
|
|
|
; -- ceil: tr = int(f); if tr==f -> return else return tr+1
|
|
|
|
; TODO
|
2022-04-29 20:27:02 +00:00
|
|
|
return -42.42
|
2022-04-23 00:15:51 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
sub rndf() -> float {
|
|
|
|
; TODO
|
2022-04-29 20:27:02 +00:00
|
|
|
return -42.42
|
2022-04-23 00:15:51 +00:00
|
|
|
}
|
|
|
|
}
|