2 \ must be preprocessed with yourtarget.pat file, for PSTACK,CONTEXT,INI_THREAD
5 \ R4 to R7 must be saved before use and restored after
6 \ scratch registers Y to S are free for use
7 \ under interrupt, IP is free for use
9 \ PUSHM order : PSP,TOS, IP, S, T, W, X, Y, R7, R6, R5, R4
10 \ example : PUSHM IP,Y
12 \ POPM order : R4, R5, R6, R7, Y, X, W, T, S, IP,TOS,PSP
15 \ ASSEMBLER conditionnal usage after IF UNTIL WHILE : S< S>= U< U>= 0= 0<> 0>=
16 \ ASSEMBLER conditionnal usage before GOTO ?GOTO : S< S>= U< U>= 0= 0<> <0
18 \ FORTH conditionnal usage after IF UNTIL WHILE : 0= 0< = < > U<
21 \ WIPE ; remove all previous apps,
22 RST_STATE ; preserve all previous apps,
23 \ NOECHO ; if an error occurs, comment this line before new download to find it.
27 CODE ? \ adr -- display the content of adr
40 : .S \ -- print <number> of cells and stack contents if not empty
41 $3C EMIT \ -- char "<"
44 $3E EMIT SPACE \ char ">"
45 SP@ PSTACK OVER OVER U< \
55 : WORDS \ -- list all words in all dicts in CONTEXT.
57 \ vvvvvvvv may be skipped vvvvvvvv
62 1 = IF DROP ." monothread"
66 \ ^^^^^^^^ may be skipped ^^^^^^^^
69 BEGIN \ search dictionnary
71 2 + SWAP \ -- CONTEXT+2 CONTEXT
72 @ ?DUP \ -- CONTEXT+2 (VOC_BODY VOC_BODY or 0)
73 WHILE \ -- CONTEXT+2 VOC_BODY dictionnary found
75 \ MOVE all threads of VOC_BODY in PAD
76 DUP PAD INI_THREAD @ DUP + \ -- CONTEXT+2 VOC_BODY VOC_BODY PAD THREAD*2
79 BEGIN \ -- CONTEXT+2 VOC_BODY
80 0 DUP \ -- CONTEXT+2 VOC_BODY ptr MAX
81 \ select the MAX of NFA in threads
82 INI_THREAD @ DUP + 0 DO \ ptr = threads*2
83 DUP I PAD + @ \ -- CONTEXT+2 VOC_BODY ptr MAX MAX NFAx
85 DROP DROP I DUP PAD + @ \ -- CONTEXT+2 VOC_BODY ptr MAX if MAX U< NFAx replace adr and MAX
87 2 +LOOP \ -- CONTEXT+2 VOC_BODY ptr MAX
88 ?DUP \ -- CONTEXT+2 VOC_BODY ptr MAX max NFA = 0 ? end of vocabulary ?
89 WHILE \ -- CONTEXT+2 VOC_BODY ptr MAX
90 \ replace it by its LFA
91 DUP \ -- CONTEXT+2 VOC_BODY ptr MAX MAX
92 2 - @ \ -- CONTEXT+2 VOC_BODY ptr MAX [LFA]
93 ROT \ -- CONTEXT+2 VOC_BODY MAX [LFA] ptr
94 PAD + \ -- CONTEXT+2 VOC_BODY MAX [LFA] thread
95 ! \ -- CONTEXT+2 VOC_BODY MAX
96 \ type it in 16 chars format
97 DUP \ -- CONTEXT+2 VOC_BODY MAX MAX
98 COUNT $7F AND TYPE \ -- CONTEXT+2 VOC_BODY MAX
100 $10 SWAP - SPACES \ -- CONTEXT+2 VOC_BODY
101 \ search next MAX of NFA
103 \ -- CONTEXT+2 VOC_BODY 0
104 DROP DROP \ -- CONTEXT+2
106 \ repeat for each CONTEXT vocabulary
113 CODE MAX \ n1 n2 -- n3 signed maximum
121 CODE MIN \ n1 n2 -- n3 signed minimum
129 : U.R \ u n -- display u unsigned in n width (n >= 2)
131 R> OVER - 0 MAX SPACES TYPE
135 : DUMP \ adr n -- dump memory
139 DO CR \ generate line
140 I 7 U.R SPACE \ generate address
141 I $10 + I \ display 16 bytes
144 I $10 + I \ display 16 chars
145 DO I C@ $7E MIN BL MAX EMIT LOOP
153 ; added : ? SP@ .S WORDS U.R MAX MIN DUMP
154 ; v--- use backspaces before hit "CR" if you want decrease level of app protection