1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
10 $FORTH_END_CODE_WORD 1+
18 $FORTH_END_CODE_WORD 2+
28 $FORTH_END_CODE_WORD 4+
35 $FORTH_END_CODE_WORD 1-
43 $FORTH_END_CODE_WORD 2-
53 $FORTH_END_CODE_WORD 4-
55 $FORTH_CODE_WORD 256U*
62 $FORTH_END_CODE_WORD 256U*
64 $FORTH_CODE_WORD 256U/
71 $FORTH_END_CODE_WORD 256U/
81 $FORTH_END_CODE_WORD 2U/
91 $FORTH_END_CODE_WORD 2U*
93 $FORTH_CODE_WORD 2UMOD
102 $FORTH_END_CODE_WORD 2UMOD
104 $FORTH_CODE_WORD 256UMOD
110 $FORTH_END_CODE_WORD 256UMOD
112 $FORTH_CODE_WORD USQRT
122 $FORTH_END_CODE_WORD USQRT
124 $FORTH_CODE_WORD ISGN
126 ;; ( 16 -- -1 or 0 or 1 )
132 jp z,i_pushhl ;; zero
139 $FORTH_END_CODE_WORD ISGN
142 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
143 ;; fast 16-bit integer square root
144 ;; 92 bytes, 344-379 cycles (average 362)
145 ;; v2 - 3 t-state optimization spotted by Russ McNulty
146 ;; http://www.retroprogramming.com/2017/07/a-fast-z80-integer-square-root.html
147 ;; k8: NOT TESTED YET!