| ... | ... |
@@ -54,20 +54,3 @@ found: |
| 54 | 54 |
STH2r ADD2 ( incoming-ptr* / search-key* ) |
| 55 | 55 |
,&loop JMP |
| 56 | 56 |
|
| 57 |
-@strcmp ( a* b* -- a-end* b-end* order nonzero if strings differ |
|
| 58 |
- OR a-end* b-end* 00 00 if strings match ) |
|
| 59 |
- STH2 |
|
| 60 |
- ,&entry JMP |
|
| 61 |
- |
|
| 62 |
- &loop ( a* a b / b* ) |
|
| 63 |
- SUB ,&nomatch JCNk ( a* a-b nonzero / b* ) |
|
| 64 |
- POP2 ( a* / b* ) |
|
| 65 |
- INC2 INC2r |
|
| 66 |
- &entry ( a* / b* ) |
|
| 67 |
- LDAk LDAkr STHr ( a* a b / b* ) |
|
| 68 |
- ORAk ,&loop JCN |
|
| 69 |
- |
|
| 70 |
- &nomatch ( a* a-b flag / b* ) |
|
| 71 |
- STH2r SWP2 ( a* b* a-b flag ) |
|
| 72 |
- JMP2r |
|
| 73 |
- |
| 74 | 57 |
new file mode 100644 |
| ... | ... |
@@ -0,0 +1,28 @@ |
| 1 |
+@strcmp ( a* b* -- a-end* b-end* order nonzero if strings differ |
|
| 2 |
+ OR a-end* b-end* 00 00 if strings match ) |
|
| 3 |
+ STH2 |
|
| 4 |
+ ,&entry JMP |
|
| 5 |
+ |
|
| 6 |
+ &loop ( a* a b / b* ) |
|
| 7 |
+ SUB ,&nomatch JCNk ( a* a-b nonzero / b* ) |
|
| 8 |
+ POP2 ( a* / b* ) |
|
| 9 |
+ INC2 INC2r |
|
| 10 |
+ &entry ( a* / b* ) |
|
| 11 |
+ LDAk LDAkr STHr ( a* a b / b* ) |
|
| 12 |
+ ORAk ,&loop JCN |
|
| 13 |
+ |
|
| 14 |
+ &nomatch ( a* a-b flag / b* ) |
|
| 15 |
+ STH2r SWP2 ( a* b* a-b flag ) |
|
| 16 |
+ JMP2r |
|
| 17 |
+ |
|
| 18 |
+@strlen ( string-ptr* -- length^ ) |
|
| 19 |
+ LIT2r 0000 |
|
| 20 |
+ ,&entry JMP |
|
| 21 |
+ |
|
| 22 |
+ &loop |
|
| 23 |
+ INC2 INC2r |
|
| 24 |
+ &entry |
|
| 25 |
+ LDAk ,&loop JCN |
|
| 26 |
+ POP2 STH2r |
|
| 27 |
+ JMP2r |
|
| 28 |
+ |
| ... | ... |
@@ -423,7 +423,7 @@ include projects/library/file-read-chunks.tal |
| 423 | 423 |
@asma-parse-hex-string ( -- value* 06 if valid hex and length > 2 |
| 424 | 424 |
OR value* 03 if valid hex and length <= 2 |
| 425 | 425 |
OR 00 otherwise ) |
| 426 |
- ;asma/token LDA2 DUP2 ,asma-strlen JSR #02 GTH ROT ROT |
|
| 426 |
+ ;asma/token LDA2 DUP2 ,strlen JSR #0002 GTH2 ROT ROT |
|
| 427 | 427 |
LIT2r 0000 |
| 428 | 428 |
|
| 429 | 429 |
&loop |
| ... | ... |
@@ -446,28 +446,22 @@ include projects/library/file-read-chunks.tal |
| 446 | 446 |
DUP EOR |
| 447 | 447 |
JMP2r |
| 448 | 448 |
|
| 449 |
-@asma-strlen ( string-ptr* -- length ) |
|
| 450 |
- LITr 00 |
|
| 451 |
- |
|
| 452 |
- &loop |
|
| 453 |
- LDAk |
|
| 454 |
- ,¬-end JCN |
|
| 455 |
- POP2 STHr |
|
| 456 |
- JMP2r |
|
| 457 |
- |
|
| 458 |
- ¬-end |
|
| 459 |
- LITr 01 ADDr |
|
| 460 |
- INC2 |
|
| 461 |
- ,&loop JMP |
|
| 462 |
- |
|
| 463 | 449 |
%asma-SHORT-FLAG { #20 }
|
| 464 | 450 |
%asma-RETURN-FLAG { #40 }
|
| 465 | 451 |
%asma-KEEP-FLAG { #80 }
|
| 466 | 452 |
|
| 453 |
+@asma-traverse-tree ( incoming-ptr* -- binary-ptr* 00 if key found |
|
| 454 |
+ OR node-incoming-ptr* 01 if key not found ) |
|
| 455 |
+ ;asma/token LDA2 |
|
| 456 |
+ ( fall through to traverse-tree ) |
|
| 457 |
+ |
|
| 458 |
+include projects/library/binary-tree.tal |
|
| 459 |
+include projects/library/string.tal |
|
| 460 |
+ |
|
| 467 | 461 |
@asma-parse-opcode ( -- byte 00 if valid opcode |
| 468 | 462 |
OR 01 otherwise ) |
| 469 | 463 |
;asma/token LDA2 |
| 470 |
- DUP2 ,asma-strlen JSR #03 LTH ,&too-short JCN |
|
| 464 |
+ DUP2 ,strlen JSR #0003 LTH2 ,&too-short JCN |
|
| 471 | 465 |
|
| 472 | 466 |
( truncate to three chars long ) |
| 473 | 467 |
#0003 ADD2 ( end* / ) |
| ... | ... |
@@ -561,13 +555,6 @@ include projects/library/file-read-chunks.tal |
| 561 | 555 |
|
| 562 | 556 |
include projects/library/heap.tal |
| 563 | 557 |
|
| 564 |
-@asma-traverse-tree ( incoming-ptr* -- binary-ptr* 00 if key found |
|
| 565 |
- OR node-incoming-ptr* 01 if key not found ) |
|
| 566 |
- ;asma/token LDA2 |
|
| 567 |
- ( fall through to traverse-tree ) |
|
| 568 |
- |
|
| 569 |
-include projects/library/binary-tree.tal |
|
| 570 |
- |
|
| 571 | 558 |
( |
| 572 | 559 |
First character routines. |
| 573 | 560 |
The following routines (that don't have a FORTH-like signature) are called |
| ... | ... |
@@ -817,7 +804,7 @@ include projects/library/binary-tree.tal |
| 817 | 804 |
JMP2r |
| 818 | 805 |
|
| 819 | 806 |
&keep-going |
| 820 |
- DUP2k ;asma-strlen JSR2 #00 SWP INC2 ADD2 |
|
| 807 |
+ DUP2k ;strlen JSR2 INC2 ADD2 |
|
| 821 | 808 |
SWP2 ;asma-assemble-token JSR2 asma-IF-ERROR ,&error JCN |
| 822 | 809 |
,¯o-loop JMP |
| 823 | 810 |
|