Преглед на файлове

forth: add words "AND", "OR", "XOR"

pull/95/head
Virgil Dupras преди 4 години
родител
ревизия
b47a3ee234
променени са 2 файла, в които са добавени 60 реда и са изтрити 2 реда
  1. +4
    -1
      forth/dictionary.txt
  2. +56
    -1
      forth/forth.asm

+ 4
- 1
forth/dictionary.txt Целия файл

@@ -120,7 +120,7 @@ CURRENT -- a Set a to wordref of last added entry.
HERE -- a Push HERE's address
H -- a HERE @

*** Arithmetic ***
*** Arithmetic / Bits ***

+ a b -- c a + b -> c
- a b -- c a - b -> c
@@ -129,6 +129,9 @@ H -- a HERE @
/ a b -- c a / b -> c
MOD a b -- c a % b -> c
/MOD a b -- r q r:remainder q:quotient
AND a b -- c a & b -> c
OR a b -- c a | b -> c
XOR a b -- c a ^ b -> c

*** Logic ***
= n1 n2 -- f Push true if n1 == n2


+ 56
- 1
forth/forth.asm Целия файл

@@ -1618,10 +1618,65 @@ DIVMOD:
push bc
jp next


.db "AND"
.fill 4
.dw DIVMOD
.db 0
AND:
.dw nativeWord
pop hl
pop de
call chkPS
ld a, e
and l
ld l, a
ld a, d
and h
ld h, a
push hl
jp next

.db "OR"
.fill 5
.dw AND
.db 0
OR:
.dw nativeWord
pop hl
pop de
call chkPS
ld a, e
or l
ld l, a
ld a, d
or h
ld h, a
push hl
jp next

.db "XOR"
.fill 4
.dw OR
.db 0
XOR:
.dw nativeWord
pop hl
pop de
call chkPS
ld a, e
xor l
ld l, a
ld a, d
xor h
ld h, a
push hl
jp next

; ( a1 a2 -- b )
.db "SCMP"
.fill 3
.dw DIVMOD
.dw XOR
.db 0
SCMP:
.dw nativeWord


Loading…
Отказ
Запис