dsforth: added "NIP" and "TUCK"
[urasm.git] / dsforth / ext_dump.zas
blobf0820e9ae0f2ae413901c84d8786576183c14e58
1 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 ;; memory dumping utility
3 ;; coded by Ketmar
4 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
6 $FORTH_WORD (DUMP-8B)
7 ;; k8
8 ;; ( a -- )
9   DUP LIT 8 + SWAP (DO)
10 dump8b0:
11   I C@ 0 <# # # #> TYPE SPACE
12   (LOOP) dump8b0
13   ;S
14 $FORTH_END_WORD (DUMP-8B)
16 $FORTH_WORD (DUMP-8C)
17 ;; k8
18 ;; ( a -- )
19   DUP LIT 8 + SWAP (DO)
20 dump8c0:
21   I C@  XEMIT
22   (LOOP) dump8c0
23   ;S
24 $FORTH_END_WORD (DUMP-8C)
26 $FORTH_WORD DUMP
27 ;; k8
28 ;; ( a len -- )
29   BASE @ >R HEX
30 dump0:
31   DUP 0> 0BRANCH dumpq
32   ENDCR  SWAP  DUP 0 <# # # # # #> TYPE  LIT 58 EMIT  SPACE
33   DUP (DUMP-8B) SPACE  DUP (DUMP-8C)
34   LIT 8 +  SWAP LIT 8 -
35   BRANCH dump0
36 dumpq:
37   R> BASE !  2DROP  ENDCR
38   ;S
39 $FORTH_END_WORD DUMP
42 $FORTH_WORD DUMP-STACK
43 ;; k8
44 ;; ( -- )
45   SP@ S0 @
46   2DUP = 0BRANCH fword_dump_stack_notempty
47     2DROP
48     (.") ~\x02stack empty\x02~  ;;"
49     ;S
50 fword_dump_stack_notempty:
51   2DUP > 0BRANCH fword_dump_stack_ok
52     2DROP
53     (.") ~\x02stack underflow!\x02~  ;;"
54     ;S
55 fword_dump_stack_ok:
56   (.") ~\x02---\x02~  ;;"
57   SWAP (DO)
58 fword_dump_stack_loop:
59     I @ DUP .
60     (.") ~| ~  ;;"
61     U. ENDCR
62   2 (+LOOP) fword_dump_stack_loop
63   (.") ~\x02---\x02~  ;;"
64   ;S
65 $FORTH_END_WORD DUMP-STACK