prog8/testsource/floats.ill
2017-12-25 02:07:17 +01:00

169 lines
4.1 KiB
Plaintext

; floating point tests
output prg, sys
import "c64lib"
~ main_testing {
start
var .float myfloat1 = 1234.56789
var .float myfloat2 = 9876.54321
var .float myfloatneg1 = -555.666
var .float myfloat_large1 = 987654.1111
var .float myfloat_large2 = -123456.2222
var .text myfloatstr = "1234.998877"
var .float myfloatzero = 0
var .float myfloatsmall1 = 1.234
var .float myfloatsmall2 = 2.6677
c64.MOVFM!(#myfloatsmall1)
c64.FCOMP!(#myfloatsmall1)
[$0400]=A
c64.MOVFM!(#myfloatsmall1)
c64.FCOMP!(#myfloatsmall2)
[$0401]=A
c64.MOVFM!(#myfloatsmall2)
c64.FCOMP!(#myfloatsmall1)
[$0402]=A
c64util.FREADS32()
return
}
~ main {
var .float flt_pi = 3.141592653589793
var .float flt_minus32768 = -32768
var .float flt_1 = 1
var .float flt_half_sqr2 = 0.7071067811865476
var .float flt_sqr2 = 1.4142135623730951
var .float flt_minus_half = -.5
var .float flt_log_2 = 0.6931471805599453
var .float flt_10 = 10
var .float flt_1e9 = 1000000000
var .float flt_half = .5
var .float flt_one_over_log_2 = 1.4426950408889634
var .float flt_half_pi = 1.5707963267948966
var .float flt_double_pi = 6.283185307179586
var .float flt_point25 = .25
var .float my_float
memory .word some_address = $ccdd
memory .byte some_addressb = $ccee
var .byte bytevar = $cc
var .word wordvar = $cdef
start
; assign some float values to the memory
AY = #flt_pi
some_address = # flt_pi
some_address = 4123.2342342222
[$c000.word] = # flt_pi
; print some floating points from source and compare them with ROM
c64.MOVFM!(#flt_pi)
c64.FPRINTLN!()
c64.MOVFM!(#c64.FL_PIVAL)
c64.FPRINTLN !()
c64.MOVFM!(#flt_minus32768)
c64.FPRINTLN!()
c64.MOVFM!(#c64.FL_N32768)
c64.FPRINTLN!()
c64.MOVFM!(#flt_1)
c64.FPRINTLN!()
c64.MOVFM!(#c64.FL_FONE)
c64.FPRINTLN!()
c64.MOVFM!(#flt_half_sqr2)
c64.FPRINTLN!()
c64.MOVFM!( # c64.FL_SQRHLF)
c64.FPRINTLN!()
c64.MOVFM!(#flt_sqr2)
c64.FPRINTLN!()
c64.MOVFM!(#c64.FL_SQRTWO)
c64.FPRINTLN!()
c64.MOVFM!(#flt_minus_half)
c64.FPRINTLN!()
c64.MOVFM!(#c64.FL_NEGHLF)
c64.FPRINTLN!()
c64.MOVFM!(#flt_log_2)
c64.FPRINTLN!()
c64.MOVFM!(#c64.FL_LOG2)
c64.FPRINTLN!()
c64.MOVFM!(#flt_10)
c64.FPRINTLN!()
c64.MOVFM!(#c64.FL_TENC)
c64.FPRINTLN!()
c64.MOVFM!(#flt_1e9)
c64.FPRINTLN!()
c64.MOVFM!(#c64.FL_NZMIL)
c64.FPRINTLN!()
c64.MOVFM!(#flt_half)
c64.FPRINTLN!()
c64.MOVFM!(#c64.FL_FHALF)
c64.FPRINTLN!()
c64.MOVFM!(#flt_one_over_log_2)
c64.FPRINTLN!()
c64.MOVFM!(#c64.FL_LOGEB2)
c64.FPRINTLN!()
c64.MOVFM!(#flt_half_pi)
c64.FPRINTLN!()
c64.MOVFM!(#c64.FL_PIHALF)
c64.FPRINTLN!()
c64.MOVFM!(#flt_double_pi)
c64.FPRINTLN!()
c64.MOVFM!(#c64.FL_TWOPI)
c64.FPRINTLN!()
c64.MOVFM!(# flt_point25)
c64.FPRINTLN!()
c64.MOVFM!(#c64.FL_FR4)
c64.FPRINTLN!()
reg_to_float
c64.CHROUT!(13)
A=34
X=99
Y=121
my_float = A
c64.MOVFM(#my_float)
c64.FPRINTLN()
my_float = X
c64.MOVFM(#my_float)
c64.FPRINTLN()
my_float = Y
c64.MOVFM(#my_float)
c64.FPRINTLN()
XY = 56789
;my_float = XY ; @todo support
c64.MOVFM(#my_float)
c64.FPRINTLN()
AX = 33221
;my_float = AX ; @todo support
c64.MOVFM(#my_float)
c64.FPRINTLN()
return
}