aboutsummaryrefslogtreecommitdiff
path: root/amforth-6.5/avr8/words/icompare.asm
diff options
context:
space:
mode:
Diffstat (limited to 'amforth-6.5/avr8/words/icompare.asm')
-rw-r--r--amforth-6.5/avr8/words/icompare.asm103
1 files changed, 0 insertions, 103 deletions
diff --git a/amforth-6.5/avr8/words/icompare.asm b/amforth-6.5/avr8/words/icompare.asm
deleted file mode 100644
index f0fbab5..0000000
--- a/amforth-6.5/avr8/words/icompare.asm
+++ /dev/null
@@ -1,103 +0,0 @@
-; ( r-addr r-len f-addr f-len -- f)
-; Tools
-; compares string in RAM with string in flash. f is zero if equal like COMPARE
-VE_ICOMPARE:
- .dw $ff08
- .db "icompare"
- .dw VE_HEAD
- .set VE_HEAD = VE_ICOMPARE
-XT_ICOMPARE:
- .dw DO_COLON
-PFA_ICOMPARE:
- .dw XT_TO_R ; ( -- r-addr r-len f-addr)
- .dw XT_OVER ; ( -- r-addr r-len f-addr r-len)
- .dw XT_R_FROM ; ( -- r-addr r-len f-addr r-len f-len )
- .dw XT_NOTEQUAL ; ( -- r-addr r-len f-addr flag )
- .dw XT_DOCONDBRANCH
- .dw PFA_ICOMPARE_SAMELEN
- .dw XT_2DROP
- .dw XT_DROP
- .dw XT_TRUE
- .dw XT_EXIT
-PFA_ICOMPARE_SAMELEN:
- .dw XT_SWAP ; ( -- r-addr f-addr len )
- .dw XT_ZERO
- .dw XT_QDOCHECK
- .dw XT_DOCONDBRANCH
- .dw PFA_ICOMPARE_DONE
- .dw XT_DODO
-PFA_ICOMPARE_LOOP:
- ; ( r-addr f-addr --)
- .dw XT_OVER
- .dw XT_FETCH
-.if WANT_IGNORECASE == 1
- .dw XT_ICOMPARE_LC
-.endif
- .dw XT_OVER
- .dw XT_FETCHI ; ( -- r-addr f-addr r-cc f- cc)
-.if WANT_IGNORECASE == 1
- .dw XT_ICOMPARE_LC
-.endif
- ; flash strings are zero-padded at the last cell
- ; that means: if the flash cell is less $0100, than mask the
- ; high byte in the ram cell
- .dw XT_DUP
- ;.dw XT_BYTESWAP
- .dw XT_DOLITERAL
- .dw $100
- .dw XT_ULESS
- .dw XT_DOCONDBRANCH
- .dw PFA_ICOMPARE_LASTCELL
- .dw XT_SWAP
- .dw XT_DOLITERAL
- .dw $00FF
- .dw XT_AND ; the final swap can be omitted
-PFA_ICOMPARE_LASTCELL:
- .dw XT_NOTEQUAL
- .dw XT_DOCONDBRANCH
- .dw PFA_ICOMPARE_NEXTLOOP
- .dw XT_2DROP
- .dw XT_TRUE
- .dw XT_UNLOOP
- .dw XT_EXIT
-PFA_ICOMPARE_NEXTLOOP:
- .dw XT_1PLUS
- .dw XT_SWAP
- .dw XT_CELLPLUS
- .dw XT_SWAP
- .dw XT_DOLITERAL
- .dw 2
- .dw XT_DOPLUSLOOP
- .dw PFA_ICOMPARE_LOOP
-PFA_ICOMPARE_DONE:
- .dw XT_2DROP
- .dw XT_ZERO
- .dw XT_EXIT
-
-.if WANT_IGNORECASE == 1
-; ( cc1 cc2 -- f)
-; Tools
-; compares two packed characters
-;VE_ICOMPARELC:
-; .dw $ff08
-; .db "icompare-lower"
-; .dw VE_HEAD
-; .set VE_HEAD = VE_ICOMPARELC
-XT_ICOMPARE_LC:
- .dw DO_COLON
-PFA_ICOMPARE_LC:
- .dw XT_DUP
- .dw XT_DOLITERAL
- .dw $00ff
- .dw XT_AND
- .dw XT_TOLOWER
- .dw XT_SWAP
- .dw XT_BYTESWAP
- .dw XT_DOLITERAL
- .dw $00ff
- .dw XT_AND
- .dw XT_TOLOWER
- .dw XT_BYTESWAP
- .dw XT_OR
- .dw XT_EXIT
-.endif