2023-09-13 03:27:46 +00:00
|
|
|
dbg" math"
|
|
|
|
:ASM +
|
|
|
|
POP AX POP BX
|
|
|
|
ADD AX BX
|
|
|
|
PUSH AX
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM 1+
|
|
|
|
POP AX INC AX PUSH AX
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM -
|
|
|
|
POP BX POP AX
|
|
|
|
SUB AX BX
|
|
|
|
PUSH AX
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM 1-
|
|
|
|
POP AX DEC AX PUSH AX
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM *
|
|
|
|
POP BX POP AX
|
|
|
|
IMUL BX
|
|
|
|
PUSH AX
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM /mod ( n1 n2 -- quotient remainder )
|
|
|
|
POP BX POP AX
|
|
|
|
XOR DX DX
|
|
|
|
IDIV BX
|
|
|
|
PUSH AX
|
|
|
|
PUSH DX
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:t / /mod drop ;
|
|
|
|
:t % /mod swap drop ;
|
|
|
|
|
2023-10-02 01:54:58 +00:00
|
|
|
:ASM abs ( n -- n )
|
|
|
|
POP AX
|
|
|
|
OR AX AX
|
|
|
|
JNS 0 @>
|
|
|
|
NEG AX
|
|
|
|
0 <:
|
|
|
|
PUSH AX
|
|
|
|
NEXT
|
|
|
|
|
2023-09-13 03:27:46 +00:00
|
|
|
dbg" comparisons"
|
|
|
|
L: TRUE 0xffff w>t
|
|
|
|
L: FALSE 0 w>t
|
2023-09-24 02:44:30 +00:00
|
|
|
L: RETTRUE
|
2023-09-13 03:27:46 +00:00
|
|
|
PUSH TRUE
|
|
|
|
NEXT
|
|
|
|
L: RETFALSE
|
|
|
|
PUSH FALSE
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM not
|
|
|
|
POP AX
|
|
|
|
OR AX AX
|
|
|
|
JZ RETTRUE
|
|
|
|
JMP RETFALSE
|
|
|
|
|
|
|
|
:ASM =
|
|
|
|
POP AX
|
|
|
|
POP BX
|
|
|
|
CMP AX BX
|
|
|
|
JZ RETTRUE
|
|
|
|
JMP RETFALSE
|
|
|
|
|
|
|
|
:ASM <
|
|
|
|
POP AX
|
|
|
|
POP BX
|
|
|
|
CMP BX AX
|
|
|
|
JL RETTRUE
|
|
|
|
JMP RETFALSE
|
|
|
|
|
|
|
|
:ASM >
|
|
|
|
POP AX
|
|
|
|
POP BX
|
|
|
|
CMP BX AX
|
|
|
|
JG RETTRUE
|
|
|
|
JMP RETFALSE
|
|
|
|
|
|
|
|
:ASM and
|
|
|
|
POP AX
|
|
|
|
POP BX
|
|
|
|
OR AX AX
|
|
|
|
JZ RETFALSE
|
|
|
|
OR BX BX
|
|
|
|
JZ RETFALSE
|
|
|
|
JMP RETTRUE
|
|
|
|
|
|
|
|
:ASM or
|
|
|
|
POP AX
|
|
|
|
POP BX
|
|
|
|
OR AX BX
|
|
|
|
JZ RETFALSE
|
|
|
|
JMP RETTRUE
|
|
|
|
|
|
|
|
:t != = not ;
|
|
|
|
:t <= > not ;
|
|
|
|
:t >= < not ;
|
|
|
|
|
|
|
|
dbg" bitwise"
|
|
|
|
:ASM &
|
|
|
|
POP AX
|
|
|
|
POP BX
|
|
|
|
AND AX BX
|
|
|
|
PUSH AX
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM |
|
|
|
|
POP AX
|
|
|
|
POP BX
|
|
|
|
OR AX BX
|
|
|
|
PUSH AX
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM ^
|
|
|
|
POP AX
|
|
|
|
POP BX
|
|
|
|
XOR AX BX
|
|
|
|
PUSH AX
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM << ( val count )
|
|
|
|
POP CX
|
|
|
|
POP AX
|
|
|
|
SHL AX CL
|
|
|
|
PUSH AX
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM >> ( val count )
|
|
|
|
POP CX
|
|
|
|
POP AX
|
|
|
|
SHR AX CL
|
|
|
|
PUSH AX
|
|
|
|
NEXT
|
|
|
|
|
2023-09-18 02:24:14 +00:00
|
|
|
:ASM 2*
|
|
|
|
POP AX
|
|
|
|
SHL AX 1 #
|
|
|
|
PUSH AX
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM 2/
|
|
|
|
POP AX
|
|
|
|
SHR AX 1 #
|
|
|
|
PUSH AX
|
|
|
|
NEXT
|
|
|
|
|
2023-09-13 03:27:46 +00:00
|
|
|
dbg" mem"
|
|
|
|
:ASM @
|
|
|
|
POP BX
|
|
|
|
PUSH @[ BX]
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM b@
|
|
|
|
POP BX
|
|
|
|
MOV AL @[ BX]
|
|
|
|
CBW
|
|
|
|
PUSH AX
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM ub@
|
|
|
|
POP BX
|
|
|
|
MOV AL @[ BX]
|
|
|
|
XOR AH AH
|
|
|
|
PUSH AX
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM @far
|
|
|
|
POP ES POP BX
|
|
|
|
PUSH @[ ES: BX]
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM b@far
|
|
|
|
POP ES POP BX
|
|
|
|
MOV AL @[ ES: BX]
|
|
|
|
CBW
|
|
|
|
PUSH AX
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM !
|
|
|
|
POP BX
|
|
|
|
POP @[ BX]
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM b!
|
|
|
|
POP BX POP AX
|
|
|
|
MOV @[ BX] AL
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM !far
|
|
|
|
POP ES POP BX
|
|
|
|
POP @[ ES: BX]
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM b!far
|
|
|
|
POP ES POP BX POP AX
|
|
|
|
MOV @[ ES: BX] AL
|
|
|
|
NEXT
|
|
|
|
|
|
|
|
:ASM +!
|
|
|
|
POP BX
|
|
|
|
POP AX
|
|
|
|
ADD AX @[ BX]
|
|
|
|
MOV @[ BX] AX
|
|
|
|
NEXT
|
|
|
|
|