small improvements
This commit is contained in:
parent
e6ded70af4
commit
3636782b9b
32
fix16.tal
32
fix16.tal
|
@ -28,9 +28,9 @@
|
|||
( #ff00 -256/256 -1.000 )
|
||||
( #ffff -1/256 -0.004 )
|
||||
( )
|
||||
( many 8.8 operations are equivalent to uin16: )
|
||||
( * addition/subtraction )
|
||||
( * division )
|
||||
( many 8.8 operations are equivalent to unsigned int16: )
|
||||
( * addition )
|
||||
( * subtraction )
|
||||
( or signed int16: )
|
||||
( * comparisons/equality )
|
||||
( )
|
||||
|
@ -46,6 +46,14 @@
|
|||
( that said, if either x or y is whole (i.e. ends in 00) )
|
||||
( then we can just shift that argument right by 8 and use )
|
||||
( MUL2. )
|
||||
( )
|
||||
( similarly with division we have: )
|
||||
( )
|
||||
( x divided by #0100 -> x )
|
||||
( x divided by #0001 -> x * 256, with likely overfow )
|
||||
( #abcd divided by #1000 -> #0abc, rounding with d )
|
||||
( x divided by #0200 -> x >> 1 )
|
||||
( x divided by #0080 -> x << 1 )
|
||||
|
||||
%xyz { ;x16-emit JSR2 #0a #18 DEO }
|
||||
|
||||
|
@ -82,7 +90,7 @@
|
|||
|
||||
%x16-emit-dec { #30 ADD #18 DEO }
|
||||
|
||||
( |0100
|
||||
|0100
|
||||
x16-zero xyz
|
||||
x16-one xyz
|
||||
x16-two xyz
|
||||
|
@ -97,11 +105,23 @@
|
|||
x16-sqrt-3 xyz
|
||||
x16-epsilon xyz
|
||||
#1234 xyz
|
||||
BRK )
|
||||
#7fff xyz
|
||||
#8000 xyz
|
||||
#8001 xyz
|
||||
#ffff xyz
|
||||
BRK
|
||||
|
||||
@x16-emit ( x* -> )
|
||||
DUP2 #8000 EQU2 ,&is-min JCN
|
||||
DUP2 #8000 GTH2 ,&is-neg JCN
|
||||
SWP DUP #64 LTH ,&<100 JCN
|
||||
#64 DIVk DUP x16-emit-dec MUL SUB ,&>=10 JMP
|
||||
&is-min POP2
|
||||
LIT "- #18 DEO LIT "1 #18 DEO LIT "2 #18 DEO LIT "8 #18 DEO
|
||||
LIT ". #18 DEO LIT "0 #18 DEO LIT "0 #18 DEO LIT "0 #18 DEO
|
||||
JMP2r
|
||||
&is-neg
|
||||
LIT "- #18 DEO #ffff EOR2 INC2 ,x16-emit JMP
|
||||
&<100 DUP #0a LTH ,&<10 JCN
|
||||
&>=10 #0a DIVk DUP x16-emit-dec MUL SUB
|
||||
&<10 x16-emit-dec
|
||||
|
@ -123,7 +143,7 @@
|
|||
POP2 POP2r #ff JMP2r ( x<0 y>=0 )
|
||||
&ypxp ;x16-ucmp JMP2 ( x>=0 y>=0 )
|
||||
&yn x16-is-neg ,&ynxn ( y<0 )
|
||||
POP2 POP2r #01 JMP2r ( x>=0 y<0 )
|
||||
POP2 POP2r #01 JMP2r ( x>=0 y<0 )
|
||||
&ynxn SWP2 ;x16-ucmp JMP2 ( x<0 y<0 )
|
||||
|
||||
( unsigned comparison between x and y. )
|
||||
|
|
Loading…
Reference in New Issue