Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions core/config.inc
Original file line number Diff line number Diff line change
Expand Up @@ -68,6 +68,7 @@
.equ WANT_FLOAT , NO

.equ WANT_DEBUGGER, YES
.equ WANT_TRANSPILER, YES

.equ WANT_CASE , YES
.equ WANT_MATCH , YES
Expand Down
2 changes: 1 addition & 1 deletion core/dev/Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ config:

SPEED ?= 115200
AMSHELL=$(AMFORTH)/tools/amforth-shell.py --port $(MODEM) --speed $(SPEED) $1
export AMFORTH_LIB=.:$(AMFORTH)/tests:$(AMFORTH)/lib
export AMFORTH_LIB=.:$(AMFORTH)/tests:$(AMFORTH)/lib:$(AMFORTH)/examples

## Connect via AmShell (needs MODEM)
shell:
Expand Down
8 changes: 5 additions & 3 deletions core/dict_secs.inc
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
# SPDX-License-Identifier: GPL-3.0-only
#
# all secondaries / colon words
# they represend data instead of code
#

.include "words/flash-common.s"
Expand Down Expand Up @@ -185,8 +184,6 @@
.include "words/flag.s"
.include "words/search.s"



# TW testing

.include "words/show.s"
Expand All @@ -198,9 +195,14 @@
.include "words/memmode.s"
.include "words/find.s"

.include "words/output.s"
.include "words/dump.s"
.include "words/testing.s"

.if WANT_TRANSPILER == YES
.include "words/tpile.s"
.endif

.if WANT_DEBUGGER == YES
.include "words/debugger.s"
.include "words/debugger2.s"
Expand Down
5 changes: 4 additions & 1 deletion core/words/bracketchar.s
Original file line number Diff line number Diff line change
@@ -1,9 +1,12 @@
# SPDX-License-Identifier: GPL-3.0-only

IMMED "[char]", BRACKETCHAR /* ( -- )(C: "name" -- ) compile code that will append first letter of "name" to the dictionary */
IMMED "[char]", BRACKETCHAR /* ( -- )(C: "ccc" -- ) compile first letter of "ccc" as literal */
.word XT_COMPILE
.word XT_DOLITERAL
.word XT_CHAR
.if WANT_TRANSPILER == YES
.word XT_TPILE_LIT
.endif
.word XT_COMMA
.word XT_EXIT
END BRACKETCHAR
3 changes: 3 additions & 0 deletions core/words/bracketcompile.s
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ IMMED "[compile]", BRACKETCOMPILE /* ( -- )(C: "name" -- ) compile code that wil
.word XT_COMPILE
.word XT_COMPILE
.word XT_TICK
.if WANT_TRANSPILER == YES
.word XT_TPILE_XT
.endif
.word XT_COMMA
.word XT_EXIT
END BRACKETCOMPILE
3 changes: 3 additions & 0 deletions core/words/colon.s
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ COLON ":", COLON /* ( "name" -- ) create a colon word entry in the dictionary */
.word XT_FLAGDOTCOLON
.word XT_DOTO
.word XT_FLAGDOTHEADER
.if WANT_TRANSPILER == YES
.word XT_TPILE_WORD
.endif
.word XT_DOCREATE
.word XT_COLONNONAME
.word XT_DROP
Expand Down
3 changes: 3 additions & 0 deletions core/words/compile.s
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,9 @@ COLON "compile", COMPILE /* ( -- ) append the XT that follows in the calling wor
.word XT_CELLPLUS
.word XT_TO_R
.word XT_FETCH
.if WANT_TRANSPILER == YES
.word XT_TPILE_XT
.endif
.word XT_COMMA
.word XT_EXIT
END COMPILE
Expand Down
11 changes: 9 additions & 2 deletions core/words/constant.s
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,21 @@ COLON "constant", CONSTANT /* ( -- x )(C: x "name" -- ) create constant "name" w
.word XT_FLAGDOTCON
.word XT_DOTO
.word XT_FLAGDOTHEADER
.if WANT_TRANSPILER == YES
.word XT_TPILE_WORD
.endif
.word XT_DOCREATE
.word XT_REVEAL
.word XT_COMPILE
.word PFA_DOVARIABLE
.if WANT_TRANSPILER == YES
.word XT_TPILE_LIT
.endif
.word XT_COMMA
.word XT_LBRACKET
.word XT_FLASHDOTFLUSH
.if WANT_TRANSPILER == YES
.word XT_TPILE_END
.endif
.word XT_EXIT
END CONSTANT


42 changes: 3 additions & 39 deletions core/words/debugger.s
Original file line number Diff line number Diff line change
Expand Up @@ -66,15 +66,6 @@ The DEBUG register is controlled through the USER variable `debug.next`, which d
# then
# ;
#
Copy link
Copy Markdown
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

moving this to new words/output.s so that the transpiler does not depend on debugger.

# : dbg.d. \# ( n -- ) print n in base 10
# base @ swap #10 base ! . base !
# ;
#
# : dbg.uh. \# ( u -- ) print u in base 16
# base @ swap #16 base ! u. base !
# ;
#
#
# : .bt \# ( u -- ) print return stack (top first) skipping top u cells, use word names
# rdepth over - dup 0 <= if 2drop exit then ( u depth )
# swap cells rp@ + swap 0 ?do ( a )
Expand Down Expand Up @@ -254,34 +245,7 @@ IP2NAME_0001: /* else */
IP2NAME_0006: /* then */
.word XT_EXIT
END IP2NAME
# ----------------------------------------------------------------------
NONAME "dbg.d.", DBGDOTDDOT /* ( n -- ) print n in base 10 */
.word XT_BASE
.word XT_FETCH
.word XT_SWAP
.word XT_DOLITERAL
.word 10
.word XT_BASE
.word XT_STORE
.word XT_DOT
.word XT_BASE
.word XT_STORE
.word XT_EXIT
END DBGDOTDDOT
# ----------------------------------------------------------------------
NONAME "dbg.uh.", DBGDOTUHDOT /* ( u -- ) print u in base 16 */
.word XT_BASE
.word XT_FETCH
.word XT_SWAP
.word XT_DOLITERAL
.word 16
.word XT_BASE
.word XT_STORE
.word XT_UDOT
.word XT_BASE
.word XT_STORE
.word XT_EXIT
END DBGDOTUHDOT

# ----------------------------------------------------------------------
COLON ".bt", DOTBT /* ( u -- ) print return stack (top first) skipping top u cells, use word names */
.word XT_RDEPTH
Expand Down Expand Up @@ -315,15 +279,15 @@ DOTBT_0004: /* else */
.word XT_8XDOT
.word XT_DOBRANCH,DOTBT_0007
DOTBT_0006: /* else */
.word XT_DBGDOTUHDOT
.word XT_UHEXDOT
DOTBT_0007: /* then */
DOTBT_0005: /* then */
.word XT_QDUP
.word XT_DOCONDBRANCH,DOTBT_0008 /* if */
.word XT_DOLITERAL
.word 43
.word XT_EMIT
.word XT_DBGDOTDDOT
.word XT_DECDOT
DOTBT_0008: /* then */
.word XT_CELLPLUS
.word XT_DOLOOP,DOTBT_0003 /* loop */
Expand Down
6 changes: 6 additions & 0 deletions core/words/defer.s
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ COLON "defer", DEFER /* ( "name" -- ) create deferred word "name" */
.word XT_FLAGDOTDEFER
.word XT_DOTO
.word XT_FLAGDOTHEADER
.if WANT_TRANSPILER == YES
.word XT_TPILE_WORD
.endif
.word XT_DOCREATE
.word XT_REVEAL
.word XT_COMPILE
Expand All @@ -12,6 +15,9 @@ COLON "defer", DEFER /* ( "name" -- ) create deferred word "name" */
.word XT_RAMCOMMA
.word XT_LBRACKET
.word XT_FLASHDOTFLUSH
.if WANT_TRANSPILER == YES
.word XT_TPILE_END
.endif
.word XT_EXIT
END DEFER

Expand Down
3 changes: 3 additions & 0 deletions core/words/do-create.s
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
COLON "(create)", DOCREATE /* (C: "name" -- ) parse name, write header, set newest */
.word XT_PARSENAME,XT_WLSCOPE
.word XT_DOCREATE_IN
.if WANT_TRANSPILER == YES
.word XT_TPILE_WXT
.endif
.word XT_EXIT
END DOCREATE

Expand Down
3 changes: 3 additions & 0 deletions core/words/g-mark.s
Original file line number Diff line number Diff line change
Expand Up @@ -18,5 +18,8 @@ GMARK_0001: /* else */
.space 4
# .word -1
GMARK_0002: /* # then */
.if WANT_TRANSPILER == YES
.word XT_TPILE_FWD
.endif
.word XT_EXIT
END GMARK
4 changes: 3 additions & 1 deletion core/words/g-resolve.s
Original file line number Diff line number Diff line change
@@ -1,8 +1,10 @@
# SPDX-License-Identifier: GPL-3.0-only

NONAME ">resolve", GRESOLVE /* ( addr -- ) resolve forward jump at addr to dp */
.if WANT_TRANSPILER == YES
.word XT_TPILE_LABEL
.endif
.word XT_MEMMODE , XT_DOCONDBRANCH , GRESOLVE0

.word XT_QSTACK
.word XT_DP
.word XT_SWAP
Expand Down
3 changes: 3 additions & 0 deletions core/words/header.s
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ COLON "header", HEADER /* ( addr u wid -- ffa ) creates header (without CF/PF) f
.word XT_DP,XT_TO_R
.word XT_FLAGDOTHEADER
.word XT_COMMA
.if WANT_TRANSPILER == YES
.word XT_TPILE_NAME
.endif
.word XT_SCOMMA
.word XT_R_FROM /* return the FFA */
.word XT_EXIT
Expand Down
3 changes: 3 additions & 0 deletions core/words/immediate.s
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,9 @@ COLON ":immed", COLONIMMED /* ( -- ) define an immediate word (for mcu that's ca
.word XT_DOXLITERAL
.word XT_FLAGDOTHEADER
.word XT_DEFER_STORE
.if WANT_TRANSPILER == YES
.word XT_TPILE_WORD
.endif
.word XT_DOCREATE
.word XT_COLONNONAME
.word XT_DROP
Expand Down
3 changes: 3 additions & 0 deletions core/words/l-mark.s
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,8 @@

NONAME "<mark", LMARK /* ( -- addr ) remember dp as address of a backward jump */
.word XT_DP
.if WANT_TRANSPILER == YES
.word XT_TPILE_LABEL
.endif
.word XT_EXIT
END LMARK
3 changes: 3 additions & 0 deletions core/words/l-resolve.s
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@

NONAME "<resolve", LRESOLVE /* ( addr -- ) compile addr as a target of backward jump */
.word XT_QSTACK
.if WANT_TRANSPILER == YES
.word XT_TPILE_BACK
.endif
.word XT_COMMA
.word XT_EXIT
END LRESOLVE
3 changes: 3 additions & 0 deletions core/words/literal.s
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
IMMED "literal", LITERAL /* (C: x -- ) compile code that will append x as a literal to the dictionary */
.word XT_COMPILE
.word XT_DOLITERAL
.if WANT_TRANSPILER == YES
.word XT_TPILE_LIT
.endif
.word XT_COMMA
.word XT_EXIT
END LITERAL
37 changes: 37 additions & 0 deletions core/words/output.s
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
#
# : dec. \# ( n -- ) print n in base 10
# base @ swap #10 base ! . base !
# ;
#
# : uhex. \# ( u -- ) print u in base 16
# base @ swap #16 base ! u. base !
# ;
#
# ----------------------------------------------------------------------
COLON "dec.", DECDOT /* ( n -- ) print n in base 10 */
.word XT_BASE
.word XT_FETCH
.word XT_SWAP
.word XT_DOLITERAL
.word 10
.word XT_BASE
.word XT_STORE
.word XT_DOT
.word XT_BASE
.word XT_STORE
.word XT_EXIT
END DECDOT
# ----------------------------------------------------------------------
NONAME "uhex.", UHEXDOT /* ( u -- ) print u in base 16 */
.word XT_BASE
.word XT_FETCH
.word XT_SWAP
.word XT_DOLITERAL
.word 16
.word XT_BASE
.word XT_STORE
.word XT_UDOT
.word XT_BASE
.word XT_STORE
.word XT_EXIT
END UHEXDOT
3 changes: 3 additions & 0 deletions core/words/rec-find.s
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ END R_WORD_INTERPRET
NONAME "rword.compile", R_WORD_COMPILE
.word XT_ZEROLESS
.word XT_DOCONDBRANCH,1f
.if WANT_TRANSPILER == YES
.word XT_TPILE_XT
.endif
.word XT_COMMA
.word XT_EXIT
1:
Expand Down
3 changes: 3 additions & 0 deletions core/words/recurse.s
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
IMMED "recurse", RECURSE /* (C: -- ) compile the XT of the word currently being defined into the dictionary */
.word XT_LATEST
.word XT_FETCH
.if WANT_TRANSPILER == YES
.word XT_TPILE_XT
.endif
.word XT_COMMA
.word XT_EXIT
END RECURSE
3 changes: 3 additions & 0 deletions core/words/semicolon.s
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,9 @@ IMMED "\x3b", SEMICOLON /* ( -- ) finish colon word definition */
/* Compiles (exit) and returns to interpret state */
.word XT_COMPILE
.word XT_EXIT
.if WANT_TRANSPILER == YES
.word XT_TPILE_END
.endif
.word XT_LBRACKET
.word XT_REVEAL
# addition for EOW marker # removed but left for reference
Expand Down
3 changes: 3 additions & 0 deletions core/words/semicoloni.s
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
IMMED "\x3bi", SEMICOLONI /* ( -- ) finish interrupt colon word definition */
.word XT_COMPILE
.word XT_EXITI
.if WANT_TRANSPILER == YES
.word XT_TPILE_END
.endif
.word XT_LBRACKET
.word XT_REVEAL
# addition for EOW marker
Expand Down
3 changes: 3 additions & 0 deletions core/words/sliteral.s
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,9 @@
IMMED "sliteral", SLITERAL /* (C: s -- ) compile code that will append s as a literal to the dictionary */
.word XT_COMPILE
.word XT_DOSLITERAL
.if WANT_TRANSPILER == YES
.word XT_TPILE_SLIT
.endif
.word XT_SCOMMA
.word XT_EXIT
END SLITERAL
Loading
Loading