191 lines
2 KiB
Plaintext
191 lines
2 KiB
Plaintext
|
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 ;
|
||
|
|
||
|
dbg" comparisons"
|
||
|
L: TRUE 0xffff w>t
|
||
|
L: FALSE 0 w>t
|
||
|
L: RETTRUE
|
||
|
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
|
||
|
|
||
|
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
|
||
|
|